You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/specification/draft/basic/transports.mdx
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,8 +28,10 @@ In the **stdio** transport:
28
28
to its standard output (`stdout`).
29
29
- Messages are individual JSON-RPC requests, notifications, or responses.
30
30
- Messages are delimited by newlines, and **MUST NOT** contain embedded newlines.
31
-
- The server **MAY** write UTF-8 strings to its standard error (`stderr`) for logging
32
-
purposes. Clients **MAY** capture, forward, or ignore this logging.
31
+
- The server **MAY** write UTF-8 strings to its standard error (`stderr`) for any
32
+
logging purposes including informational, debug, and error messages.
33
+
- The client **MAY** capture, forward, or ignore the server's `stderr` output
34
+
and **SHOULD NOT** assume `stderr` output indicates error conditions.
33
35
- The server **MUST NOT** write anything to its `stdout` that is not a valid MCP message.
34
36
- The client **MUST NOT** write anything to the server's `stdin` that is not a valid MCP
35
37
message.
@@ -202,6 +204,7 @@ servers which want to establish stateful sessions:
202
204
securely generated UUID, a JWT, or a cryptographic hash).
203
205
- The session ID **MUST** only contain visible ASCII characters (ranging from 0x21 to
204
206
0x7E).
207
+
- The client **MUST** handle the session ID in a secure manner, see [Session Hijacking mitigations](/specification/draft/basic/security_best_practices#session-hijacking) for more details.
205
208
2. If an `Mcp-Session-Id` is returned by the server during initialization, clients using
206
209
the Streamable HTTP transport **MUST** include it in the `Mcp-Session-Id` header on
Copy file name to clipboardExpand all lines: docs/specification/draft/basic/utilities/tasks.mdx
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -160,6 +160,7 @@ To create a task, requestors send a request with the `task` field included in th
160
160
"status": "working",
161
161
"statusMessage": "The operation is now in progress.",
162
162
"createdAt": "2025-11-25T10:30:00Z",
163
+
"lastUpdatedAt": "2025-11-25T10:40:00Z",
163
164
"ttl": 60000,
164
165
"pollInterval": 5000
165
166
}
@@ -219,6 +220,7 @@ Requestors **SHOULD** continue polling until the task reaches a terminal status
219
220
"status": "working",
220
221
"statusMessage": "The operation is now in progress.",
221
222
"createdAt": "2025-11-25T10:30:00Z",
223
+
"lastUpdatedAt": "2025-11-25T10:40:00Z",
222
224
"ttl": 30000,
223
225
"pollInterval": 5000
224
226
}
@@ -291,6 +293,7 @@ When a task status changes, receivers **MAY** send a [`notifications/tasks/statu
291
293
"taskId": "786512e2-9e0d-44bd-8f29-789f320fe840",
292
294
"status": "completed",
293
295
"createdAt": "2025-11-25T10:30:00Z",
296
+
"lastUpdatedAt": "2025-11-25T10:50:00Z",
294
297
"ttl": 60000,
295
298
"pollInterval": 5000
296
299
}
@@ -330,13 +333,15 @@ To retrieve a list of tasks, requestors can send a [`tasks/list`](/specification
330
333
"taskId": "786512e2-9e0d-44bd-8f29-789f320fe840",
331
334
"status": "working",
332
335
"createdAt": "2025-11-25T10:30:00Z",
336
+
"lastUpdatedAt": "2025-11-25T10:40:00Z",
333
337
"ttl": 30000,
334
338
"pollInterval": 5000
335
339
},
336
340
{
337
341
"taskId": "abc123-def456-ghi789",
338
342
"status": "completed",
339
343
"createdAt": "2025-11-25T09:15:00Z",
344
+
"lastUpdatedAt": "2025-11-25T10:40:00Z",
340
345
"ttl": 60000
341
346
}
342
347
],
@@ -373,6 +378,7 @@ To explicitly cancel a task, requestors can send a [`tasks/cancel`](/specificati
373
378
"status": "cancelled",
374
379
"statusMessage": "The task was cancelled by request.",
375
380
"createdAt": "2025-11-25T10:30:00Z",
381
+
"lastUpdatedAt": "2025-11-25T10:40:00Z",
376
382
"ttl": 30000,
377
383
"pollInterval": 5000
378
384
}
@@ -448,6 +454,7 @@ While this note is not prescriptive regarding the specific usage of SSE streams,
448
454
### TTL and Resource Management
449
455
450
456
1. Receivers **MUST** include a `createdAt`[ISO 8601](https://datatracker.ietf.org/doc/html/rfc3339#section-5)-formatted timestamp in all task responses to indicate when the task was created.
457
+
1. Receivers **MUST** include a `lastUpdatedAt`[ISO 8601](https://datatracker.ietf.org/doc/html/rfc3339#section-5)-formatted timestamp in all task responses to indicate when the task was last updated.
451
458
1. Receivers **MAY** override the requested `ttl` duration.
452
459
1. Receivers **MUST** include the actual `ttl` duration (or `null` for unlimited) in `tasks/get` responses.
453
460
1. After a task's `ttl` lifetime has elapsed, receivers **MAY** delete the task and its results, regardless of the task status.
@@ -704,6 +711,7 @@ A task represents the execution state of a request. The task state includes:
704
711
-`createdAt`: ISO 8601 timestamp when the task was created
705
712
-`ttl`: Time in milliseconds from creation before task may be deleted
706
713
-`pollInterval`: Suggested time in milliseconds between status checks
714
+
-`lastUpdatedAt`: ISO 8601 timestamp when the task status was last updated
707
715
708
716
### Task Status
709
717
@@ -842,6 +850,7 @@ When the underlying request does not complete successfully, the task moves to th
842
850
"taskId": "786512e2-9e0d-44bd-8f29-789f820fe840",
843
851
"status": "failed",
844
852
"createdAt": "2025-11-25T10:30:00Z",
853
+
"lastUpdatedAt": "2025-11-25T10:40:00Z",
845
854
"ttl": 30000,
846
855
"statusMessage": "Tool execution failed: API rate limit exceeded"
0 commit comments