Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that the row becomes WITHDRAWN rather than erased, that the amount leaves the pledged total, that nothing is refunded because no money moved, that there is no gas cost, that the signature window is 5 minutes, and that the house never holds a key. The readOnlyHint is consistent because the tool only returns MESSAGE_TO_SIGN/BODY_JSON and the mutation lands in submit_backing_withdraw, which the description makes explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.