A client wants to be told whenever a server's tool list changes, and the server declared the tools capability with listChanged set to true. What must the client do under revision 2026-07-28?
Select an answer to reveal the explanation.
Short Explanation
Change notifications in 2026-07-28 are like a newsletter: you only get it if you sign up. You open subscriptions/listen and tick toolsListChanged. The old 'server just pushes' and GET-stream habits are the traps.
Full Explanation
In revision 2026-07-28, change notifications are opt-in. The client opens a long-lived subscriptions/listen request whose notifications filter names the event types it wants, such as toolsListChanged, promptsListChanged, resourcesListChanged or resource subscriptions. The server first sends notifications/subscriptions/acknowledged, reflecting the subset of the filter it agreed to honour, and then delivers matching notifications, each tagged in _meta with io.modelcontextprotocol/subscriptionId equal to the listen request's id. The listChanged flag in the server's tools capability only indicates that the server can honour the filter. Expecting the server to push notifications to every client ignores the opt-in model; notifications go only to clients that requested them. resources/subscribe is a legacy method replaced by subscriptions/listen, and in any case tools/list is a method rather than a resource URI. An HTTP GET stream carrying server-sent requests describes earlier revisions; Streamable HTTP is now POST only, and servers do not initiate JSON-RPC requests. Exam caveat: notifications are best effort and may be lost across reconnects, so clients should still refresh lists periodically. Operational check: open the listen request, confirm the acknowledgment includes toolsListChanged, change a tool on the server, and verify a tagged notifications/tools/list_changed arrives followed by a successful tools/list refresh.