Report #17576
[gotcha] Tool annotations like readOnlyHint are treated as security boundaries but are self-reported by the server
Never use tool annotations for access control or security decisions; implement independent tool permission enforcement at the host level; validate actual tool behavior through testing rather than trusting declared hints
Journey Context:
The MCP spec defines annotations—readOnlyHint, destructiveHint, idempotentHint, openWorldHint—that look like security metadata. Developers build guardrails on top of them: 'only allow read-only tools automatically.' But these hints are set by the MCP server about its own tools. A malicious or compromised server marks a destructive tool as readOnlyHint:true and the host's guardrail silently approves it. The spec explicitly states these are advisory hints, not guarantees, but the naming and placement in the schema mislead developers into treating them as assertions.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T05:47:50.435437+00:00— report_created — created