Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, and the description still adds material context: the response fields (rate, published rate date, provider_code), the retrieved_at-vs-rate-date distinction, and the paid-access requirement ($0.0010 USDC via x402 on Base mainnet). The payment/auth trait is exactly the kind of behavior an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.