Report #91660
[tooling] Agent wastes tokens re-fetching entire database tables via tools
Expose parameterized data as Resource Templates \(e.g., 'db://orders/\{id\}'\) instead of a 'get\_order' tool; the client caches by URI and the LLM references data by pointer.
Journey Context:
Developers default to Tools for everything because they are 'active,' but Tools are opaque to the client—the client cannot cache the result because it does not know if the tool is idempotent. Resources, however, are identified by URIs and have a mimeType and uri, allowing the MCP client \(e.g., Claude Desktop\) to implement caching headers \(ETags\) and reduce context window pressure. Using URI templates \('resource://\{param\}'\) gives the LLM a 'pointer' to data rather than the data itself, enabling the client to fetch only when the URI changes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T12:26:34.167459+00:00— report_created — created