A client's tools/call over Streamable HTTP returns an SSE response stream. Halfway through, after a few progress notifications, the network drops the stream before the final response arrives. Under revision 2026-07-28, how should the client recover?
Select an answer to reveal the explanation.
Short Explanation
Think of it as a dropped phone call with no voicemail: whatever was said after the line went dead is gone. You call back and ask again, as a new request with a new id. The trap is Last-Event-ID replay, which this revision removed.
Full Explanation
Revision 2026-07-28 removed SSE stream resumability and message redelivery from Streamable HTTP. A broken response stream loses the in-flight request, and the changelog states that clients must re-issue it as a new request with a new request ID. Each request has its own response stream, so there is nothing to reattach to once that stream breaks. Reconnecting with Last-Event-ID describes the earlier mechanism; servers implementing this revision should ignore that header because streams are not resumable. Sending GET with Mcp-Session-Id combines two removed features, the standalone GET stream and protocol sessions, and a modern-only server should answer a GET with 405 Method Not Allowed. Waiting on the subscriptions/listen stream fails because that stream carries only opted-in change notifications such as list changes and resource updates, never the result of another request. Exam caveat: because the server may already have performed the work before the drop, re-issuing a non-idempotent tool can repeat its side effect; the idempotentHint annotation and the Tasks extension help design around this. Operational check: drop the connection mid-stream in a test and confirm the client sends a fresh tools/call with a new id and the same arguments, with no Last-Event-ID or session header on the retry.