Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly/idempotent/destructive/openWorld); the description adds substantial behavior beyond that: bytes never traverse the API, no serverless size ceiling, 25 MB cap, 1-30 day retention, unguessable key, size signed into the URL, $0.005/call over x402 on Base, prepaid x-credit-token header, and no API key required. That is rich operational context an agent cannot get from the structured fields. One mild tension with readOnlyHint=true exists since the signed slot is intended for a write, but the call itself only mints URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.