Follow-up from wayfinder map #199, decision #204, research #200.
Today `crates/conduit-mcp` calls `tools/list` once at provider registration (`crates/conduit-api/src/factory/mcp.rs:65-95`) and the transport read loop drops server-initiated notifications. This means any upstream MCP peer that dynamically adds/removes tools mid-session (Instrumenta being the near-term case) cannot inform Conduit.
Change proposal:
- Handle `notifications/tools/list_changed` in `crates/conduit-mcp/src/transport.rs` read loop.
- Expose a callback the API layer wires to re-run `register_tools` for the affected provider id, mutating the `Providers` registry outside of definition writes.
- Consider the same for `prompts/list_changed` and `resources/list_changed` while touching the read loop.
Not blocking Instrumenta v1 — Instrumenta will advertise all tools regardless. Standalone MCP hosts that honor dynamic lists will still work with Instrumenta today.
Follow-up from wayfinder map #199, decision #204, research #200.
Today `crates/conduit-mcp` calls `tools/list` once at provider registration (`crates/conduit-api/src/factory/mcp.rs:65-95`) and the transport read loop drops server-initiated notifications. This means any upstream MCP peer that dynamically adds/removes tools mid-session (Instrumenta being the near-term case) cannot inform Conduit.
Change proposal:
Not blocking Instrumenta v1 — Instrumenta will advertise all tools regardless. Standalone MCP hosts that honor dynamic lists will still work with Instrumenta today.