Report #54175
[tooling] Client uses stale tool list after server adds or removes tools at runtime
Initialize with capabilities.tools.listChanged: true and emit notifications/tools/list\_changed when the tool set changes; clients must then call tools/list to refresh. Do the same for resources with capabilities.resources.listChanged.
Journey Context:
Most implementations treat tools as static after initialization, but servers may load plugins, disable tools based on auth, or add dynamic endpoints. Without listChanged capability, clients cache indefinitely, leading to 'tool not found' errors or missing new capabilities. The notification pattern is lightweight and follows LSP-like conventions. Essential for hot-reload development and multi-tenant servers where permissions change dynamically.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T21:25:46.187885+00:00— report_created — created