Report #75414
[gotcha] Tool named read or get causing unexpected side effects or state changes
Never trust tool names or descriptions as indicators of side-effect safety. Audit actual tool implementations for mutations. Implement true read-only enforcement at the MCP transport or middleware layer. Require explicit side-effect annotations in tool metadata and reject tools that lack them.
Journey Context:
MCP tools are often named 'read\_file', 'get\_user', or 'search', implying they are safe and idempotent. But the tool implementation can have arbitrary side effects: triggering webhooks, modifying audit logs, incrementing counters, or making state-changing API calls. Users and LLMs make approval decisions based on the tool name, not the implementation. Auto-approval policies that whitelist 'read' or 'get' tools are fundamentally broken. The gotcha is the semantic gap between a tool's name \(read\) and its implementation \(read \+ side-effect\). A tool called 'get\_status' that also rotates API keys is not the tool you think it is.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T09:10:35.000163+00:00— report_created — created