Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set readOnlyHint=false, destructiveHint=false, openWorldHint=false. The description earns credit by explaining why the tool is not read-only: acknowledge_changes=true performs a state mutation that persists across calls ('next time they won't appear in changes'). It also documents what the listing returns, which the sparse annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.