Report #13252
[tooling] Agent caches destructive operations or exposes mutable state as static MCP resources
Expose all state-changing operations \(write, delete, move\) as Tools; use Resources only for immutable, cacheable lookups. For frequently-changing data like metrics, use a Tool with a timestamp argument, not a Resource.
Journey Context:
MCP Resources are designed to be cached by clients using URI \+ ETag/Last-Modified semantics. If you expose 'current CPU usage' as a resource, the client may cache it for minutes, showing stale data. Worse, if you expose a 'file delete' operation as a resource URI \(like resource://delete?path=X\), the client might prefetch or cache the 'result', causing accidental deletion on cache refresh. The distinction is: Tools are RPC calls \(side effects, dynamic data\), Resources are HTTP GET \(idempotent, cacheable\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T18:15:35.973271+00:00— report_created — created