Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does: comma-separated codes are accepted but return flat rows with no per-symbol status and invalid codes are silently dropped ('sh600519,sz999999 returns only 1 row with no hint'), HK and sector codes work but return missing fields, ETF calls only populate code/name/listedDate, and results are a static 24-hour cache. This is exactly the failure-mode context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.