Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial behavior beyond that: the q matching semantics (ticker-prefix first, then name substring, then brand-name matching with the spacex→SPCX example), currency and country field semantics (null for crypto), and critically the next_report_date null semantics — that null means 'no confirmed date' rather than 'no report', with the ~5-week lead-time context. This prevents a real mis-invocation failure mode where an agent treats null as a fact. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.