Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint in annotations, the description adds substantial behavioral context: shared-agent scoping for `campaigns`/`senders`, `stale` meaning, `classify_running` progress semantics, and `criteria` null = all with automatic tagging. These are traits an agent cannot infer from the annotation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.