WebMCP tool safety annotations contradict themselves
WEBMCP-005 · v1.0
What it detects
A WebMCP tool declares safety hints that contradict each other or the tool's own name — for example readOnlyHint together with destructiveHint, or a read-only claim on a tool named as a delete operation.
Why it matters
Agents use these hints to decide what they may call without asking a user first, so a self-contradicting declaration leaves no safe interpretation. Only hints a page actually declares are considered — declaring nothing is never a finding.
How to fix
- Review the flagged tools (in the finding's `examples`) and make each tool's annotations describe what it actually does: `readOnlyHint: true` only where the tool cannot change any state, `destructiveHint: true` where its effect is irreversible. - Never set `readOnlyHint` and `destructiveHint` true on the same tool — an agent has no way to resolve that, and the safe reading (assume destructive) discards the benefit of annotating at all. - If a tool declared read-only is named like a mutation (`delete_`, `remove_`, `cancel_`), rename the tool or correct the hint: an agent reads the name alongside the annotation. - Verify: re-run the scan and confirm no WebMCP tool reports an annotation conflict.
References
Last reviewed: 2026-09-01 · rule v1.0