Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, openWorld, not idempotent), the description discloses that the decision is signed, bound to the payment hash, logged, and valid for five minutes, plus the concrete reason vocabulary (pay_to_unknown, pay_to_sanctioned, pay_to_frozen_by_issuer, over_budget ...). That is real behavioral context an agent cannot infer from the schema, and it is consistent with readOnlyHint=true because the tool judges rather than pays.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.