Report #3974
[gotcha] Read-only reference data is exposed as tools, causing stale context and wasted tool schemas
Expose read-only, reference data as MCP resources with stable URIs; reserve tools for actions, side effects, or computations the model should decide to perform. Use resources for docs, config, schemas, logs, and style guides. If a client does not support resources, expose a thin read-only tool as a fallback, but prefer resources when available.
Journey Context:
Tool support is more universal than resource support, so developers turn everything into a tool. But resources are application-controlled, read-only, and URI-addressable — ideal for injecting context without consuming the model's tool-selection budget. Tools are model-controlled and each one adds schema tokens to the prompt. Misusing tools for static data causes the model to re-fetch, bloat the prompt, and risk selection errors. The right abstraction is: resources for data the host/user controls, tools for actions the model controls.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T18:36:25.399894+00:00— report_created — created