Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses that the call is stateless, capped at 32 KB and 60 RPM, supports a '?demo=true' free path or L402 payment of 15 sats, and returns HTTP 400 on invalid input. Rate limits, auth/billing paths and error behavior are exactly the operational context annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.