Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation only tells the agent this is non-mutating; the description layers on the substantive semantics that matter: the vote is resized rather than cleared, fees are not discarded, no NFT is burned, and the added stake inherits the existing lock end so it cannot be withdrawn early. That is exactly the kind of consequence-level detail an agent cannot derive from annotations or schema, and it is consistent with a prepare-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.