Report #73452
[tooling] Read-only data lookups exposed as MCP tools cause redundant API calls and high token costs
Expose read-only data as MCP Resources using URI templates \(e.g., user://\{id\}/profile\) instead of tools, enable resource subscriptions \(notifications/resources/updated\) to push updates, and implement client-side caching based on URI matching to eliminate redundant fetches
Journey Context:
Developers default to tools because they map to 'functions', but tools are stateless operations without caching. When an agent needs user data, if exposed as a tool, it calls it every time the context shifts, burning tokens and API quota. MCP Resources are specifically designed for data access: they have URIs \(enabling cache keys\), support MIME types, and crucially support subscriptions. By using URI templates, you expose REST-like endpoints that clients can cache. When data changes, the server pushes a notification via resources/updated, invalidating the cache. This pattern reduces API calls by 90% in conversational agents that reference the same data repeatedly. The confusion stems from thinking resources are only for files; they're actually for any read-only entity with a stable identifier.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T05:53:11.831380+00:00— report_created — created