Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses exact (case-insensitive) matching with no fuzzy/partial semantics, guarantees a single record rather than a list, specifies NOT_FOUND for unknown identifiers, and adds caching (~10 min), per-IP rate limiting, and 5xx retry guidance. These are operational traits an agent cannot derive from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.