Report #21098
[tooling] Writing verbose natural language safety warnings in tool descriptions, wasting tokens and relying on unreliable LLM parsing
Populate the \`annotations\` object in Tool definitions with boolean flags \(\`readOnlyHint\`, \`destructiveHint\`, \`openWorldHint\`\) to signal tool behavior; this allows clients to apply safety policies without LLM inference
Journey Context:
Developers often write tool descriptions like 'WARNING: This permanently deletes data' or 'Safe read-only operation'. This consumes tokens on every tool call and requires the LLM to parse safety semantics from prose, which is unreliable. The MCP specification defines a structured \`annotations\` field on Tools containing machine-readable hints: \`readOnlyHint\` \(safe to call without side effects\), \`destructiveHint\` \(may delete/destroy data, trigger confirmations\), \`openWorldHint\` \(calls external APIs with latency/cost\), and \`timeoutHint\` \(estimated duration\). Clients like Claude Desktop use these to auto-approve read-only tools while requiring user confirmation for destructive ones, completely bypassing the need for the LLM to reason about safety. This significantly speeds up agent loops by removing safety-checking from the LLM's reasoning path and moving it to deterministic client policy.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T13:49:36.235108+00:00— report_created — created