Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the readOnly/idempotent annotations by disclosing freshness semantics ('prices and stock are read again on every call') and error behavior ('an unknown basket_id, or a basket never filled, comes back as an empty basket ... rather than an error'). Those are exactly the non-obvious traits an agent needs to interpret an empty result correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.