Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral context: out-of-scope cities return supported=false, the need to surface scopeMessage, and the requirement to always surface the disclaimer field when returning livability/investment grade. This goes beyond the annotations and helps the agent handle edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.