What’s actually changing
The specification changelog states it directly:
“Moved experimental tasks to official extension
io.modelcontextprotocol/tasks; replaced blockingtasks/resultwith polling viatasks/getand newtasks/update”
The extension introduces three methods: tasks/get, tasks/update, and tasks/cancel, plus a polymorphic-result discriminator (resultType: "task") and a Task shape carrying status, any in-progress server-to-client requests, and a final result or error. Reads (tasks/get) and writes (tasks/update) are kept separate deliberately, so polling stays idempotent and cacheable rather than mutating state as a side effect of checking on it.
Structural Comparison Matrix
| Operational Aspect | Before (experimental core) | After (io.modelcontextprotocol/tasks extension) |
|---|---|---|
| Namespace | Experimental core protocol | Formal extension, io.modelcontextprotocol/tasks |
| Getting a result | Blocking tasks/result call | Poll tasks/get until terminal status |
| Updating a task | Not separated from reads | Dedicated tasks/update call |
| Canceling a task | Not present | New tasks/cancel method |
Fix it: rewrite blocking waits into a polling loop
{
"jsonrpc": "2.0",
"id": 1,
"method": "tasks/result",
"params": { "taskId": "task_abc123" }
}{
"jsonrpc": "2.0",
"id": 1,
"method": "tasks/get",
"params": { "taskId": "task_abc123" }
}Respect the server's pollIntervalMs
Don’t hardcode a polling interval on the client. The server communicates its
expected pollIntervalMs, and polling faster than that wastes requests
without getting the result any sooner, while polling much slower delays how
quickly the client notices completion.
Client code written around a single blocking tasks/result call needs a real control-flow rewrite: a loop that calls tasks/get, checks the returned status, and exits once that status is terminal, carrying either the final result or an error, rather than treating one call as sufficient.
Confirmed version
Sourced from the official Model Context Protocol specification changelog, 2026-07-28 revision, published 2026-07-28, and the Tasks extension’s own specification (SEP-2663) for the method names and polling pattern. Browse more posts like this in the AI Productivity archive.







