Report #103594
[gotcha] Model calls a tool that was removed because the host cached \`tools/list\` and ignored list-changed notifications
Handle \`notifications/tools/list\_changed\` by re-fetching \`tools/list\`. If your transport or client does not support server push, poll \`tools/list\` on a conservative interval. Do not cache the tool manifest indefinitely.
Journey Context:
Servers can declare \`tools.listChanged: true\` and emit notifications when tools are added, removed, or updated. A host that ignores these notifications keeps a stale manifest. The failure mode is confusing: the model plans with a tool that no longer exists and gets an 'Unknown tool' protocol error mid-turn. The simple fix is to invalidate the cache on every notification. In push-unfriendly environments, periodic polling is a pragmatic fallback.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-11T04:39:40.293774+00:00— report_created — created