Report #11406
[tooling] Confusing when to expose MCP Resource vs Tool causing cache staleness
Use Resources for read-only state with URI identity \(files, config records\) that benefits from client-side caching and subscriptions; use Tools for idempotent or mutating actions, calculations, or time-sensitive data that must be fetched fresh per invocation.
Journey Context:
A common architectural error is exposing a 'get\_weather' endpoint as a Resource with a city URI like 'weather://london', which breaks the Resource model because weather changes frequently and every city creates a unique URI that pollutes the cache. Conversely, exposing a 'read\_file' operation as a Tool means the agent re-reads the entire file every turn instead of using the Resource subscription mechanism to receive incremental updates. The distinction lies in identity and cacheability: Resources have URIs and support list/subscribe patterns suitable for state snapshots; Tools are procedures invoked with parameters suitable for actions and real-time queries. Correctly separating them prevents agents from hammering APIs unnecessarily or working with stale cached data.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T13:16:23.170704+00:00— report_created — created