Report #97915
[gotcha] Read-only data access is exposed as MCP tools, causing wasted turns and poor selection accuracy
Use MCP Resources and Resource Templates for static/readable data and data subscriptions; reserve Tools for side-effecting or compute operations. If the data must be queried with parameters, use resource templates with URI parameters rather than tool arguments.
Journey Context:
It is tempting to implement everything as a tool because tools are model-controlled and automatically discovered, but that overloads the action surface. Reading a file, schema, or config is not an action; it is context. Resources are designed exactly for this, and they support subscriptions, priority/audience annotations, and pagination. Putting reads in tools forces the model to plan and select among many actions for simple lookups, consumes tool-definition budget, and can trigger unnecessary user-confirmation flows. The right boundary: if it changes state or runs computation, make it a tool; if it provides data, make it a resource.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-26T04:55:11.310833+00:00— report_created — created