Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds substantial behavioral details beyond annotations: tenant-scoping ('a project not in the caller's workspace 404s'), the non-emptiness constraint on vision_md, the return shape ({project_id, product_vision_md, updated_at, next_step}), and the purpose 'so every run knows what it is building toward'. Annotations (idempotentHint=true, destructiveHint=false) align with the described behavior, and the description enhances understanding without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.