Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, and the second sentence ('Adding a tag the contact already has succeeds') largely restates that idempotency rather than adding new behavior. It does confirm observable semantics concretely, but omits mutation side effects, auth requirements, and any return indication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.