Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does most of it well: it discloses the deterministic grammar-based parsing model, the no-lookup failure behavior (null instead of a guess), the 50-name-per-call cap, the response shape, and the `{error, reason}` case including the specific `no_java` server-dependency failure. The one uncovered behavioral trait is the `api_key` parameter — nothing says whether it is required, optional, or what it authenticates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.