Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that the call writes an approval draft but 'does not change delivery', and names the returned handles (approval_ref, plan_digest) required for the confirm step. With readOnlyHint=false and destructiveHint=false already declared, this adds the crucial nuance that the write is a draft, not a live mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.