Skip to content

[Major-4] Multi Round-Trip Requests (MRTR) and required resultType #5682

Description

@Lang-Akshay

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 (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.

Activity

  1. added
    rustRust programming
    CF-EXTERNAL-DATAPLANEExternal dataplane which can extend ContextForge functionality.
    mcp-2026-07-28Issues related to compliance with MCP 2026-07-28
    on Jul 17, 2026
  2. self-assigned this
    on Aug 6, 2026
  3. added
    triageIssues / Features awaiting triage
    2.0CF1.5 with the bolt on external data plane + Redis as a communication channel
    and removed
    triageIssues / Features awaiting triage
    on Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

2.0CF1.5 with the bolt on external data plane + Redis as a communication channelCF-EXTERNAL-DATAPLANEExternal dataplane which can extend ContextForge functionality.mcp-2026-07-28Issues related to compliance with MCP 2026-07-28rustRust programming

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions