Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=true in annotations, the description carries real behavioral weight: it enumerates the exact return vocabulary and commits to a 'never guesses when data is missing' policy, which tells the agent how to treat the `unknown` case. It omits latency, caching, or data-coverage limits, but the tri-state contract is the important disclosure and it is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.