Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the 'Read-only' sentence is largely redundant. What the description does add is substantive: prereleases sort before the release, build metadata is ignored, the return is -1/0/1 plus a semver.diff-style change type, and results match GET /api/compare — all behavior not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.