Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnly=false, destructive=false, idempotent=false); the description adds substantial context beyond them: chain verification rules (confirmed, pays payer, value >= amount), state transitions (REFUND_PENDING -> REFUNDED/PARTIALLY_REFUNDED), error semantics (422 refund_rejected, 400 over-total), and that the platform fee is not returned. 'readOnlyHint=false' is consistent because the tool mutates order state even though the API itself only reads the chain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.