Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, non-destructive, and closed-world, but the description adds critical behavior: incomplete scenarios return needs_input with no numeric comparison, and complete scenarios return contribution, maximum CPA, and ROAS. It also enforces a strict null-vs-zero/default-currency rule for unknown inputs. This goes well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.