Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive, and closed-world, so the bar is lower. Beyond those, the description adds real behavioral context: empty invocation is valid, no proof is required, and 'Every answer carries the hash recipe so you can recompute it yourself' discloses a return property the agent would not otherwise expect. 'Read-only, no proof' partly restates readOnlyHint, but the added claims are substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.