Skip to content

SEP-2694: Resumable Task Event Streams - #2694

Draft
rynowak wants to merge 1 commit into
modelcontextprotocol:mainfrom
rynowak:rynowak/pastoral-neptune
Draft

rynowak wants to merge 1 commit into
modelcontextprotocol:mainfrom
rynowak:rynowak/pastoral-neptune

Conversation

@rynowak

@rynowak rynowak commented May 6, 2026

Copy link
Copy Markdown

Summary

Draft SEP proposing tasks/stream and notifications/tasks/event for resumable, sequenced task event delivery.

  • Defines a client-initiated tasks/stream request that starts or resumes streaming events for a task
  • Delivers events as notifications/tasks/event with task-scoped sequence numbers and vendor-prefixed event types
  • Clients resume after disconnect with an after cursor; servers replay retained events or return events_gone
  • Positions as the resumable delivery channel complementary to subscriptions/listen (SEP-2575), which explicitly defers durable delivery
    to the tasks primitive

Two requirements distinguish this from prior streaming work

  1. Resumability: clients can resume after a specific task event sequence number
  2. Extensibility: servers can emit vendor-prefixed event types with arbitrary JSON payloads

Relationship to other proposals

  • SEP-2663 (Tasks Extension): foundation — this SEP builds on top
  • SEP-2679 (partial results): complementary — partial content can be carried as a prefixed event type
  • SEP-2669 (steer/pause/resume): complementary — this SEP provides the observability channel for interaction methods
  • SEP-2575 (subscriptions/listen): complementary reliability tiers — subscriptions/listen is fire-and-forget; tasks/stream is resumable

Motivation and Context

Tasks (SEP-1686 / SEP-2663) support long-running work but provide no standard way to observe intermediate execution — tool calls,
assistant deltas, subagent lifecycle, artifacts. Clients are limited to polling tasks/get for coarse status or receiving fire-and-forget
notifications/tasks/status that can't be replayed after disconnect. SEP-2575 explicitly removed resumable SSE streams, stating that
durable delivery should use the tasks primitive — but no such mechanism exists yet. This SEP fills that gap.

How Has This Been Tested?

We have a private implementation of this. No public reference implementation yet.

##Breaking Changes

None. This SEP is additive. Servers that don't support tasks/stream return -32601. Existing task clients and servers are unchanged.

Types of changes

  • New feature (non-breaking change which adds functionality)

Additional context

Open questions

  1. Should the events_gone error code be standardized across MCP?
  2. How should multiple clients streaming the same task interact with retention policies?
  3. Should notifications/tasks/partial (SEP-2679) remain separate alongside prefixed task events?
  4. Should task event streaming remain a separate tasks/stream request, or be folded into subscriptions/listen with task-scoped resume
    extensions?

@rynowak rynowak changed the title Add SEP-0000: Resumable Task Event Streams Add SEP-2694: Resumable Task Event Streams May 6, 2026
@rynowak
rynowak requested review from a team as code owners May 6, 2026 23:38
Draft SEP proposing tasks/stream and notifications/tasks/event for
resumable, sequenced task event delivery with cursor-based replay.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@rynowak
rynowak force-pushed the rynowak/pastoral-neptune branch from cbdb4e5 to 3fa0008 Compare May 6, 2026 23:46
@dend dend changed the title Add SEP-2694: Resumable Task Event Streams SEP-2694: Resumable Task Event Streams May 7, 2026
@dend dend added proposal SEP proposal without a sponsor. SEP labels May 7, 2026
@Necmttn

Necmttn commented Jun 22, 2026

Copy link
Copy Markdown

For agent clients, I would make the event identity strong enough to reconstruct a transcript after resume: task_id, session_id, turn_id if known, tool_call_id when the event is tool-related, monotonic sequence, and a source event type.

That keeps task streams usable for more than UI progress. A client can import the stream into its local history, dedupe after reconnect, and link partial results, artifacts, subagent events, and tool results back to the same task without guessing from timestamps.

Generated with ax - https://github.com/Necmttn/ax

@sep-automation-bot

Copy link
Copy Markdown

Friendly Reminder

Hi @rynowak!

This SEP proposal has been inactive for 95 days.

We wanted to check in:

  • Are you still working on this proposal?
  • Is there anything blocking progress?
  • Do you need help finding a sponsor?

If this proposal is no longer being pursued, please let us know and we can close it. Otherwise, any update on the current status would be appreciated!


This is an automated message from the SEP lifecycle bot.

@dsp-ant
dsp-ant marked this pull request as draft November 6, 2026 15:06
@dsp-ant dsp-ant added the wg-support-needed Needs support from a working or interest group before it can progress. label Nov 6, 2026 — with Claude

dsp-ant commented Nov 6, 2026

Copy link
Copy Markdown
Member

Hey @rynowak,

thank you for putting this up. We are changing how we are handling contributions (yet to be documented well). For SEPs to be accepted, they will have to go through a working group, in this case the Tasks and Events Working Group. I took the freedom to move this to draft for now. It can be opened again once we have moved this through the Tasks and Events Working Group.


Generated by Claude Code

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

proposal SEP proposal without a sponsor. SEP wg-support-needed Needs support from a working or interest group before it can progress.

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

4 participants