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/utilities/tasks.mdx
+10-30Lines changed: 10 additions & 30 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,32 +28,15 @@ Servers declare which server-side requests can be augmented with tasks:
28
28
"tasks": {
29
29
"requests": {
30
30
"tools": {
31
-
"call": true,
32
-
"list": true
33
-
},
34
-
"resources": {
35
-
"read": true,
36
-
"list": true
37
-
},
38
-
"prompts": {
39
-
"get": true,
40
-
"list": true
41
-
},
42
-
"tasks": {
43
-
"get": true,
44
-
"list": true,
45
-
"result": true,
46
-
"delete": true
31
+
"call": true
47
32
}
48
33
}
49
34
}
50
35
}
51
36
}
52
37
```
53
38
54
-
Servers **MAY** support tasks for any subset of their available request types. If a request type is not listed in the `tasks.requests` capability or is set to `false`, requestors **SHOULD NOT** augment those requests with task metadata.
55
-
56
-
The `tasks.requests.tasks` nested capability indicates whether the task management operations themselves (`tasks/get`, `tasks/list`, `tasks/result`, `tasks/delete`) can be augmented with tasks, enabling recursive task tracking for task queries.
39
+
This set of capabilities is exhaustive. If a request type is not present, it does not support task-augmentation.
57
40
58
41
### Client Capabilities
59
42
@@ -69,29 +52,26 @@ Clients declare which client-side requests can be augmented with tasks:
69
52
},
70
53
"elicitation": {
71
54
"create": true
72
-
},
73
-
"roots": {
74
-
"list": true
75
-
},
76
-
"tasks": {
77
-
"get": true,
78
-
"list": true,
79
-
"result": true,
80
-
"delete": true
81
55
}
82
56
}
83
57
}
84
58
}
85
59
}
86
60
```
87
61
88
-
The `tasks.requests.tasks` capability applies when the client is acting as a receiver of task-augmented requests from the server (for example, when a server sends a task-augmented `sampling/createMessage` request to the client).
62
+
This set of capabilities is exhaustive. If a request type is not present, it does not support task-augmentation.
89
63
90
64
### Capability Negotiation
91
65
92
66
During the initialization phase, both parties exchange their `tasks` capabilities to establish which operations support task-based execution. Requestors **MUST** only augment requests with task metadata if the corresponding capability has been declared by the receiver.
93
67
94
-
For example, if a server's capabilities include `tasks.requests.tools.call: true`, then clients may augment `tools/call` requests with task metadata. However, if the server does not declare `tasks.requests.resources.read`, clients should not send task-augmented `resources/read` requests.
68
+
For example, if a server's capabilities include `tasks.requests.tools.call: true`, then clients may augment `tools/call` requests with task metadata. If a client's capabilities include `tasks.requests.sampling.createMessage: true`, then servers may augment `sampling/createMessage` requests with task metadata.
69
+
70
+
### Tool-Level Negotiation
71
+
72
+
Tool calls are given special consideration for the purpose of task augmentation. In the result of `tools/list`, tools declare support for tasks via `annotations.taskHint`.
73
+
74
+
This is to be interpreted as a fine-grained layer in addition to capabilities. If a server's capabilities include `tasks.requests.tools.call: false`, then clients **MUST NOT** attempt to use task augmentation on that server's tools, even if they declare tool-level support via `annotations.taskHint`.
0 commit comments