Report #24315
[tooling] Agent repeatedly calls expensive data-fetching tools instead of caching read-only data
Expose read-only data retrieval as MCP Resources \(with unique URIs\) rather than Tools; Resources support client-side caching, subscriptions for updates, and are not eligible for the model to 'call' repeatedly like Tools
Journey Context:
The MCP specification deliberately separates Resources \(application-controlled, cacheable, subscription-enabled\) from Tools \(model-controlled, ephemeral, side-effecting\). Developers often expose data endpoints as Tools because they look like functions, but this prevents the client from intelligently caching results or subscribing to change notifications. A Resource with a URI like 'data://users/123' can be cached by the client and updated via notifications, while a Tool call is always executed. Use Resources for any data that could be referenced by URI and might be reused across turns, especially expensive database queries or file contents.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T19:13:21.554105+00:00— report_created — created