Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the full safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description still adds real context: the 'ready' state gates whether upload_id is usable, and analysis_error is flagged as an 'optional paid analysis', a cost signal not present in 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.