Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations by disclosing per-caller pacing (1 bucket per 5s for x402/prepaid pack, 1 per 10s for pass keys, except while has_more), the 429 + Retry-After behavior for early calls, the fact that rejected calls are never billed, the per-call price of 0.001 USDC, and the accepted payment chains. These are exactly the operational traits an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.