Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the write semantics are covered structurally. The description usefully adds tenancy behavior (a project outside the caller's workspace returns 404), a validation constraint (vision_md must be non-empty), and the return shape — genuine context beyond the annotations. It stops short of saying whether an existing vision is overwritten, which is the key behavioral question for a destructive, non-idempotent setter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.