Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered, but the description adds substantial context beyond them: the cost model (0.02 USDC on Base, 1 validation), the x402 v2 payment path via params._meta and the X-PAYMENT header for v1 clients, and the meaning of a 200 with degraded=true (provider unreachable, incomplete response, low confidence). Payment and degraded-response semantics are exactly the kind of trait annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.