Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a non-mutating preparation step, so the bar is lower. The description still adds real value by enumerating what the server does NOT check (exchange rate, capacity, balance, allowance, preview state), warning the agent that the returned plan can fail on-chain and that pre-validation is its responsibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.