{{ message }}
SEP-2998: Partial Tool Results (Streaming Tool Call Output) - #2998
Open
kuwatly wants to merge 2 commits into
Open
SEP-2998: Partial Tool Results (Streaming Tool Call Output)#2998kuwatly wants to merge 2 commits into
kuwatly wants to merge 2 commits into
Conversation
Proposes an optional, capability-gated notifications/tools/partial_result mechanism so servers can stream ordered, structured chunks during an in-flight tools/call, with the final CallToolResult remaining the sole authoritative response. Enables MCP Apps to stream progressive-UI formats such as A2UI into their iframe within a single long-running tool call, composes with Tasks (SEP-2663) and progress notifications, and stays consistent with the 2026-07-28 baseline (per-request capability declaration, no initialize handshake). Cites and builds on prior art: modelcontextprotocol#383, modelcontextprotocol#651, modelcontextprotocol#776 (closed), modelcontextprotocol#982, SEP-1391, SEP-2133, SEP-2322, SEP-2632, SEP-2663.
PR modelcontextprotocol#2998 opened against modelcontextprotocol/modelcontextprotocol. Renamed the SEP file to its assigned number, updated the header and PR field, and regenerated docs/seps/ and docs/docs.json accordingly.
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Proposes an optional, capability-gated
notifications/tools/partial_resultmechanism so servers can stream ordered, structured chunks during an
in-flight
tools/call, with the finalCallToolResultremaining the soleauthoritative response. Enables MCP Apps to stream progressive-UI formats
such as A2UI into their iframe within a single long-running tool call,
composes with Tasks (SEP-2663) and progress notifications, and stays
consistent with the 2026-07-28 baseline (per-request capability
declaration, no
initializehandshake).Cites and builds on prior art: #383, #651, #776 (closed), #982, SEP-1391,
SEP-2133, SEP-2322, SEP-2632, SEP-2663.
Motivation and Context
tools/callis strictly request → single final response today. This blocksseveral concrete cases: LLM-backed tools that produce token streams but must
buffer everything before returning (#117); MCP Apps iframes, which get
partial input (
ui/notifications/tool-input-partial) but no partialoutput, so a long-running tool can only show a generic spinner and
progressive-UI formats like A2UI can't stream into the app; and
log/monitor-style tools that resort to polling workarounds. Full motivation,
prior-art comparison, and open questions are in the SEP itself.
How Has This Been Tested?
Not yet, this is a Draft SEP at the proposal stage, no reference
implementation exists yet (tracked in the SEP's Reference Implementation
section). Per the SEP process, a prototype is required before the SEP can
reach Accepted, not before opening this PR.
Breaking Changes
None. Fully additive: gated behind a new
partialResultsclient capability,and the final
CallToolResultis always complete and self-contained even ifa client never declares support or drops every partial.
Types of changes
Checklist
seps/TEMPLATE.md;npm run checkpasses)npm run check: schema, docs, and SEP validation all pass)Additional context
This PR was drafted and researched with Claude Code. All cited issues, PRs,
and SEPs, and all schema/capability claims (
ClientCapabilitiesshape, theremoval of
initializein favor of per-request_metacapabilities,server/discover, the Tasks/SEP-2663 and MRTR/SEP-2322 interactions), wereindependently verified against the GitHub API and this repo's own
schema/draft/schema.tsrather than taken from memory. I'm seeking asponsor per the SEP guidelines; no working group currently covers this area,
so I'll be posting in Discord
#generalas well.