MCP Tasks extension on the 2026-07-28 stateless core
client -> tools/call + per-request io.modelcontextprotocol/tasks capability
server: durably create task, then return resultType: "task" + taskId
tools/list publishes generate_report; the server chooses task mode after the capability check.
working
worker owns lease
input_required
outstanding requests
completed
nested complete result
failed
RPC error
cancelled
worker stopped
polling and input
tasks/get {taskId}
Mcp-Name = taskId; complete snapshot
tasks/update {taskId, inputResponses}
Mcp-Name = taskId; complete acknowledgement
Unique input keys for the entire task lifetime
cancellation and optional push
tasks/cancel {taskId}
Mcp-Name = taskId; cooperative acknowledgement
subscriptions/listen via POST response SSE
notifications/subscriptions/acknowledged
notifications/tasks + subscriptionId metadata
removed experimental assumptions: tasks/status | tasks/result | tasks/list
Persist ownership, expiry, issued input keys, result or error, and worker lease in application storage.