Report #43720
[tooling] Destructive tools \(delete, update\) execute without confirmation; or read-only tools trigger unnecessary user approval flows; or UI cannot distinguish safe vs dangerous operations
Use Tool Annotations: set \`readOnlyHint\`, \`destructiveHint\`, \`idempotentHint\`, and \`openWorldHint\` to declaratively signal tool behavior; clients use these to decide auto-approval vs confirmation dialogs
Journey Context:
By default, clients must assume all tools are unsafe, requiring user confirmation for every invocation—terrible UX. Developers often try to solve this by naming conventions \('safe\_read'\) or complex auth logic, but this is fragile. The MCP spec provides Tool Annotations specifically for this: \`readOnlyHint\` \(no side effects\), \`destructiveHint\` \(data loss risk\), \`idempotentHint\` \(safe to retry\), \`openWorldHint\` \(affects external systems\). Clients like Claude Desktop interpret these to auto-approve read-only tools, require confirmation for destructive ones, and handle retries for idempotent tools. This is declarative metadata—implement once, improves all clients.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T03:51:18.494593+00:00— report_created — created