Report #55605
[gotcha] Agent repeatedly calls tools to fetch reference data that should be a resource, wasting tokens and latency
Use MCP Resources for data that the application or user controls access to \(reference docs, config files, data snapshots\). Use Tools for actions with side effects or computations. Expose frequently-needed static or semi-static data as resources that the client can prefetch or cache, rather than as tools the model must explicitly call. This reduces unnecessary tool-call round-trips and token consumption.
Journey Context:
MCP defines two distinct primitives: Resources \(application-controlled, URI-addressed data\) and Tools \(model-controlled actions\). In practice, many implementations expose everything as tools because it's simpler and the model can 'just call them.' But this has a hidden cost: every tool call is a full round-trip through the model's reasoning, consuming tokens for the call and response. If the model needs to reference a file's contents three times in a conversation, that's three tool calls vs. one resource read that stays in context. Resources are also cacheable and can be proactively subscribed to via the spec's subscription mechanism. The gotcha is that the resource/tool distinction isn't just architectural aesthetics—it directly impacts token efficiency and latency. Tools that are really data lookups should be resources.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T23:49:35.555841+00:00— report_created — created