Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false), and the description adds real behavioral detail: which types are rejected, the size cap, and a side effect (attaching an import note to a contact). It stops short of describing failure modes or what the returned asset looks like, but the output schema covers returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.