Report #82477
[gotcha] Agent calls a tool for read-only data that should be an MCP Resource, causing side effects or redundant reads
Use MCP Resources for read-only data retrieval \(files, configs, records, documentation\). Use MCP Tools only for actions with side effects \(writes, mutations, API calls, computations\). If the operation is idempotent and read-only, expose it as a resource with a URI template, not as a tool.
Journey Context:
MCP defines two distinct primitives: Resources \(read-only, URI-addressed, subscription-capable\) and Tools \(action-oriented, parameterized, potentially state-changing\). Developers often expose everything as tools because the tool interface is simpler and more familiar. But this prevents the host from caching resource reads, subscribing to updates via notifications/resources/updated, or presenting data in resource-aware UIs. It also risks accidental side effects from what should be a safe read—some hosts treat all tool calls as potentially state-changing and may prompt for user confirmation, degrading the experience for pure data retrieval.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T21:01:35.094765+00:00— report_created — created