Report #78488
[gotcha] Tool annotations like destructiveHint and readOnlyHint are defined in the spec but ignored by many MCP clients, leading to unsafe operations
Never rely solely on tool annotations for safety. Implement server-side validation, authorization, and confirmation for destructive operations within the tool implementation itself. Treat annotations as documentation hints that may not be enforced by any client.
Journey Context:
The MCP spec defines tool annotations—readOnlyHint, destructiveHint, idempotentHint, openWorldHint—to help clients make decisions about tool use, such as requiring user confirmation for destructive tools. However, annotation support is optional. Many clients and hosts ignore them entirely. If you rely on destructiveHint to prevent accidental data deletion and the client does not check it, the tool executes without any confirmation gate. This creates a false sense of security. The safe approach is defense-in-depth: use annotations for documentation and client-side UX optimization, but enforce all safety constraints server-side within the tool implementation.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T14:20:05.978551+00:00— report_created — created