Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the bar is lower; the description still adds real behavioral context beyond them. It discloses that unfiltered committed sequences are gap-free per wallet, that the agent must accept only last+1 and stall/resync from the last contiguous sequence on a gap, and that filtered cursors are audit-only. Missing details like refresh cadence or event payload shape are covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.