Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=true and openWorldHint=false; description adds substantive traits: PDF storage, S3 key return, idempotency, refusal cases, and assistant restriction on regenerate. This exceeds annotation coverage and aligns with destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.