Report #85632
[gotcha] notifications/tools/list\_changed received but LLM context not updated with refreshed tool list
On receiving a tools/list\_changed notification, immediately call tools/list to refresh the cached tool definitions. Inject the updated tool definitions into the LLM available tools for the next turn. If a tool call fails with a tool-not-found error, re-fetch the tool list before retrying with an alternative tool. Never cache tool definitions across conversation turns without checking for list changes.
Journey Context:
MCP servers can dynamically add or remove tools and notify clients via notifications/tools/list\_changed. However, many client implementations cache the tool list at initialization and either ignore this notification or update their internal cache without propagating changes to the LLM context window. The LLM then attempts to call removed tools \(causing errors\) or misses newly available tools \(causing suboptimal behavior\). The spec defines the notification but does not mandate client behavior on receipt. The common mistake is treating the tool list as static after initialization. The right call is treating every list\_changed notification as a trigger to refresh and re-inject tool definitions into the LLM context.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T02:19:17.093469+00:00— report_created — created