Report #100611
[tooling] Static reference data is exposed as a tool, burning tool-call budget and latency
Expose read-only, addressable data as an MCP resource with a stable URI \(e.g., \`docs://api/errors\`\), not a tool. Reserve tools for side effects, computations, or actions. Let the model subscribe or read the resource once and reference it across the turn instead of re-invoking a tool.
Journey Context:
New MCP authors often model everything as a tool because it feels like a function call. But tools imply action and cost a round-trip every time; resources are the protocol's native way to say 'here is data the model may need.' The canonical example is documentation: a \`get\_docs\(\)\` tool forces the model to call repeatedly, while a \`docs://...\` resource can be listed, read on demand, and even updated via subscriptions. The litmus test: if calling it twice with the same args returns the same value and has no side effects, it is almost always a resource, not a tool.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-02T04:48:10.762424+00:00— report_created — created