You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Major-4] Multi Round-Trip Requests (MRTR) and required resultType #5682
Spec link:https://modelcontextprotocol.io/specification/draft/changelog Comprised of: Major change 7 (MRTR pattern) + Major change 8 (required resultType) — SEP-2322 — plus Minor change 11 (remove notifications/elicitation/complete and elicitationId, a direct consequence of MRTR)
What the spec says
MRTR replaces server-initiated requests such as roots/list, sampling/createMessage, and elicitation/create.
Servers return an InputRequiredResult (resultType: "input_required") whose inputRequests field carries the requests for additional information needed to process the request. Clients respond with inputResponses on a retry of the original request.
All results now carry a required resultType field: "complete" for ordinary results, "input_required" for MRTR interim results. Clients MUST treat results from earlier-protocol servers that omit the field as "complete".
notifications/elicitation/complete and the elicitationId field of URL-mode elicitation requests (both introduced in 2025-11-25) are removed: under MRTR the client learns the outcome of an out-of-band interaction by retrying the original request, so a server-initiated completion signal no longer fits. Servers needing to correlate an elicitation across retries encode their own identifier in requestState.
Gateway work
Handle input_required results from modern upstreams; surface inputRequests to modern clients; forward retries carrying inputResponses to the correct upstream.
Stamp resultType on all gateway-emitted results; normalize legacy upstream results (missing field) to "complete".
Bridge design (the hard part): legacy upstream server-initiated requests (elicitation/create, sampling/createMessage, roots/list) ↔ modern client MRTR retry loop. Document per-feature feasibility and limitations; coordinate scope with [Deprecated-1] Roots, Sampling, and Logging deprecation #5690 (Sampling/Roots are deprecated, which may allow scoping bridging out).
Remove notifications/elicitation/complete handling; pass requestState through opaquely and unmodified across retries.
Acceptance criteria
MRTR round-trips work end-to-end modern↔modern through the gateway.
All gateway results carry a valid resultType; legacy results normalized to "complete".
requestState passes through untouched across retries.
Bridging limitations for legacy server-initiated requests documented.
Part of #5677
Spec link: https://modelcontextprotocol.io/specification/draft/changelog
Comprised of: Major change 7 (MRTR pattern) + Major change 8 (required
resultType) — SEP-2322 — plus Minor change 11 (removenotifications/elicitation/completeandelicitationId, a direct consequence of MRTR)What the spec says
roots/list,sampling/createMessage, andelicitation/create.InputRequiredResult(resultType: "input_required") whoseinputRequestsfield carries the requests for additional information needed to process the request. Clients respond withinputResponseson a retry of the original request.resultTypefield:"complete"for ordinary results,"input_required"for MRTR interim results. Clients MUST treat results from earlier-protocol servers that omit the field as"complete".notifications/elicitation/completeand theelicitationIdfield of URL-mode elicitation requests (both introduced in 2025-11-25) are removed: under MRTR the client learns the outcome of an out-of-band interaction by retrying the original request, so a server-initiated completion signal no longer fits. Servers needing to correlate an elicitation across retries encode their own identifier inrequestState.Gateway work
input_requiredresults from modern upstreams; surfaceinputRequeststo modern clients; forward retries carryinginputResponsesto the correct upstream.resultTypeon all gateway-emitted results; normalize legacy upstream results (missing field) to"complete".elicitation/create,sampling/createMessage,roots/list) ↔ modern client MRTR retry loop. Document per-feature feasibility and limitations; coordinate scope with [Deprecated-1] Roots, Sampling, and Logging deprecation #5690 (Sampling/Roots are deprecated, which may allow scoping bridging out).notifications/elicitation/completehandling; passrequestStatethrough opaquely and unmodified across retries.Acceptance criteria
resultType; legacy results normalized to"complete".requestStatepasses through untouched across retries.