Report #3846
[tooling] Agent wastes tokens polling expensive APIs via MCP Tools instead of receiving push updates
Model slowly-changing expensive data as MCP Resources with subscription support enabled; implement \`resources/subscribe\` and emit \`notifications/resources/updated\` to push changes only when data updates, eliminating polling loops.
Journey Context:
The MCP specification makes a subtle but critical distinction between Tools \(calculations/actions\) and Resources \(data sources\). Developers often default to Tools for everything because they map intuitively to 'functions.' However, Tools are designed for pull-based invocation: the agent must explicitly call the tool to get data, leading to wasted tokens on repetitive 'get\_weather' calls every turn. Resources, conversely, support a publish-subscribe model via the \`resources/subscribe\` method. When a server exposes a Resource with \`subscribe: true\` capability, the client registers interest once, and the server pushes \`notifications/resources/updated\` only when the underlying data actually changes \(e.g., a database row updates\). This eliminates context window pollution from polling and reduces latency. The tradeoff is server complexity: you must implement state management for subscriptions and TTLs. However, for data that changes slower than the agent's query rate \(API rate limits, stock prices, CI/CD status\), this pattern reduces token consumption by 10x compared to Tool polling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T18:19:05.026688+00:00— report_created — created