Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that read_file cannot decode the binary zip format, that failure surfaces as isError with an honest note, and warns against inventing content. It omits permission or size/pagination constraints, but the failure mode and the anti-hallucination rule are the important behavioral facts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.