Report #12016
[tooling] MCP agent wasting tokens by calling read-only tools repeatedly instead of subscribing to resources
Expose large, rarely-changing data \(file contents, DB tables, documentation\) as Resources with URIs and subscribe to listChanged notifications; expose computed actions or mutations as Tools. Never expose idempotent read operations as Tools
Journey Context:
The MCP spec distinguishes Resources \(application-controlled, state-like, for context\) from Tools \(model-controlled, action-like\). A common anti-pattern is implementing 'read\_file' or 'query\_database' as Tools. This forces the LLM to consume tokens on a tool-call roundtrip every time it needs static context, and prevents the server from proactively pushing updates. Resources are designed to be embedded in context automatically \(or referenced by URI\) and updated via subscriptions, eliminating redundant tool calls for static data. Tools should be reserved for side effects and computations that require real-time execution.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T14:51:18.387251+00:00— report_created — created