Skip to content

Commit 932668b

Browse files
1 parent 104a270 commit 932668b

2 files changed

Lines changed: 11 additions & 6 deletions

File tree

‎docs/specification/draft/tasks.mdx‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,9 @@ Servers **MUST** return standard JSON-RPC errors for the following protocol erro
798798
- Servers **MUST** return this error for `tasks/get`.
799799
- Servers **SHOULD** return this error for `tasks/update` and `tasks/cancel`.
800800
- Internal errors: `-32603` (Internal error)
801+
- Missing required client capabilities: `-32003` (Missing Required Client Capability)
802+
- Servers **MUST** return this error for non-declaring clients requesting task notifications on `subscriptions/listen`.
803+
- Servers **MUST** return this error for non-declaring clients issuing `tasks/get`, `tasks/update`, and `tasks/cancel` requests.
801804

802805
Servers **SHOULD** provide informative error messages to describe the cause of errors.
803806

‎seps/2663-tasks-extension.md‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,9 @@ Servers **MUST** return standard JSON-RPC errors for the following protocol erro
798798
- Servers **MUST** return this error for `tasks/get`.
799799
- Servers **SHOULD** return this error for `tasks/update` and `tasks/cancel`.
800800
- Internal errors: `-32603` (Internal error)
801+
- Missing required client capabilities: `-32003` (Missing Required Client Capability)
802+
- Servers **MUST** return this error for non-declaring clients requesting task notifications on `subscriptions/listen`.
803+
- Servers **MUST** return this error for non-declaring clients issuing `tasks/get`, `tasks/update`, and `tasks/cancel` requests.
801804

802805
Servers **SHOULD** provide informative error messages to describe the cause of errors.
803806

@@ -942,13 +945,12 @@ The two flows maintain separate state despite sharing field names. The MRTR phas
942945

943946
## Backward Compatibility
944947

945-
The experimental tasks feature in the `2025-11-25` release is **not wire-compatible** with this extension. Specifically:
948+
The experimental tasks feature in the `2025-11-25` release is **not wire-compatible** with this extension. Implementations that need to interoperate with both surfaces can shim at the SDK level by implementing the experimental and extension flows in parallel and dispatching on the negotiated protocol version and the client capability the peer declared. The following table summarizes the expected behavior for each permutation:
946949

947-
- `tasks/result` is removed. Clients calling `tasks/result` against a server with this extension in the `2026-06-30` specification **MUST** receive `-32601` (Method Not Found).
948-
- The `task` parameter on `CallToolRequest` is removed. Servers receiving requests with a `task` parameter under this extension in the `2026-06-30` specification **MUST** ignore it (treat the field as unknown) rather than using it as an opt-in.
949-
- The `tasks.requests.*` and `tasks.cancel`/`tasks.list` capability declarations are not part of this extension. A server that previously advertised these **MUST** migrate to declaring `io.modelcontextprotocol/tasks` as of the `2026-06-30` specification and **MUST NOT** continue to advertise the legacy capabilities under any protocol version that includes this extension.
950-
951-
Implementations that need to bridge legacy clients can shim at the SDK level: a server can implement both the experimental and extension surfaces in parallel, dispatching based on which capability and protocol version the client negotiated.
950+
| Protocol Version | `tasks.*` (legacy) | `io.modelcontextprotocol/tasks` |
951+
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
952+
| `2025-11-25` | Legacy experimental tasks per the `2025-11-25` specification. The client opts into task augmentation per request via the `task` parameter on `CallToolRequest`; the server uses `tasks/result`, `tasks/get`, `tasks/cancel`, and (where supported) `tasks/list` per that specification. This extension does not apply. | This extension is not defined under the `2025-11-25` protocol version. Servers **MUST NOT** treat this capability as enabling tasks under that protocol version; requests proceed as if the client had declared no task capability at all. |
953+
| `2026-06-30` | The legacy capability is not part of this extension. Servers **MUST** treat clients declaring only the legacy capability as non-declaring with respect to this extension. Servers that simultaneously support the `2025-11-25` Tasks specification alongside this extension **SHOULD** continue to permit `tasks/get` and `tasks/cancel` requests from such clients to operate on tasks created under that flow. | The canonical case. Full task lifecycle as specified in this document, with the following wire-level differences from the `2025-11-25` experimental feature:<ul><li>`tasks/result` is removed; clients calling it **MUST** receive `-32601` (Method Not Found).</li><li>The `task` parameter on `CallToolRequest` is removed; servers **MUST** ignore it (treat the field as unknown) rather than using it as an opt-in.</li><li>The `tasks.requests.*`, `tasks.cancel`, and `tasks.list` capability declarations are not part of this extension. Servers that previously advertised these **MUST** migrate to declaring `io.modelcontextprotocol/tasks`, and **MUST NOT** continue to advertise the legacy capabilities under any protocol version that includes this extension.</li></ul> |
952954

953955
A server that returns the standard `CallToolResult` shape — i.e., never elects to create a task — remains fully spec-compliant under this extension. Clients that have negotiated the extension **MUST** handle both result shapes for any augmented request.
954956

0 commit comments

Comments
 (0)