Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/non-destructive annotations by disclosing that decimals()/symbol() are read live from the contract, that ENS is resolved via two independent resolvers with agreement required, that unsupported chains are rejected rather than mis-answered, and that each call costs 0.005 USDC. These are exactly the operational facts an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.