MCP TypeScript SDK / experimental
experimental
Classes
ExperimentalClientTasks
Defined in: src/experimental/tasks/client.ts:42
Experimental
Experimental task features for MCP clients.
Access via client.experimental.tasks:
const stream = client.experimental.tasks.callToolStream({ name: 'tool', arguments: {} });
const task = await client.experimental.tasks.getTask(taskId);Type Parameters
RequestT
RequestT extends Request = Request
NotificationT
NotificationT extends Notification = Notification
ResultT
ResultT extends Result = Result
Constructors
Constructor
new ExperimentalClientTasks<
RequestT,NotificationT,ResultT>(_client):ExperimentalClientTasks<RequestT,NotificationT,ResultT>
Defined in: src/experimental/tasks/client.ts:47
Experimental
Parameters
_client
Client<RequestT, NotificationT, ResultT>
Returns
ExperimentalClientTasks<RequestT, NotificationT, ResultT>
Methods
callToolStream()
callToolStream<
T>(params,resultSchema?,options?):AsyncGenerator<ResponseMessage<SchemaOutput<T>>,void,void>
Defined in: src/experimental/tasks/client.ts:85
Experimental
Calls a tool and returns an AsyncGenerator that yields response messages. The generator is guaranteed to end with either a 'result' or 'error' message.
This method provides streaming access to tool execution, allowing you to observe intermediate task status updates for long-running tool calls. Automatically validates structured output if the tool has an outputSchema.
Type Parameters
T
T extends ZodObject<{ _meta: ZodOptional<ZodObject<{ io.modelcontextprotocol/related-task: ZodOptional<ZodObject<{ taskId: ZodString; }, $strip>>; progressToken: ZodOptional<ZodUnion<readonly [ZodString, ZodNumber]>>; }, $loose>>; content: ZodDefault<ZodArray<ZodUnion<readonly [ZodObject<{ _meta: ZodOptional<ZodRecord<..., ...>>; annotations: ZodOptional<ZodObject<..., ...>>; text: ZodString; type: ZodLiteral<"text">; }, $strip>, ZodObject<{ _meta: ZodOptional<ZodRecord<..., ...>>; annotations: ZodOptional<ZodObject<..., ...>>; data: ZodString; mimeType: ZodString; type: ZodLiteral<"image">; }, $strip>, ZodObject<{ _meta: ZodOptional<ZodRecord<..., ...>>; annotations: ZodOptional<ZodObject<..., ...>>; data: ZodString; mimeType: ZodString; type: ZodLiteral<"audio">; }, $strip>, ZodObject<{ _meta: ZodOptional<ZodObject<..., ...>>; annotations: ZodOptional<ZodObject<..., ...>>; description: ZodOptional<ZodString>; icons: ZodOptional<ZodArray<...>>; mimeType: ZodOptional<ZodString>; name: ZodString; size: ZodOptional<ZodNumber>; title: ZodOptional<ZodString>; type: ZodLiteral<"resource_link">; uri: ZodString; }, $strip>, ZodObject<{ _meta: ZodOptional<ZodRecord<..., ...>>; annotations: ZodOptional<ZodObject<..., ...>>; resource: ZodUnion<readonly [..., ...]>; type: ZodLiteral<"resource">; }, $strip>]>>>; isError: ZodOptional<ZodBoolean>; structuredContent: ZodOptional<ZodRecord<ZodString, ZodUnknown>>; }, $loose> | ZodUnion<[ZodObject<{ _meta: ZodOptional<ZodObject<{ io.modelcontextprotocol/related-task: ZodOptional<ZodObject<{ taskId: ...; }, $strip>>; progressToken: ZodOptional<ZodUnion<readonly [..., ...]>>; }, $loose>>; content: ZodDefault<ZodArray<ZodUnion<readonly [ZodObject<{ _meta: ...; annotations: ...; text: ...; type: ...; }, $strip>, ZodObject<{ _meta: ...; annotations: ...; data: ...; mimeType: ...; type: ...; }, $strip>, ZodObject<{ _meta: ...; annotations: ...; data: ...; mimeType: ...; type: ...; }, $strip>, ZodObject<{ _meta: ...; annotations: ...; description: ...; icons: ...; mimeType: ...; name: ...; size: ...; title: ...; type: ...; uri: ...; }, $strip>, ZodObject<{ _meta: ...; annotations: ...; resource: ...; type: ...; }, $strip>]>>>; isError: ZodOptional<ZodBoolean>; structuredContent: ZodOptional<ZodRecord<ZodString, ZodUnknown>>; }, $loose>, ZodObject<{ _meta: ZodOptional<ZodObject<{ io.modelcontextprotocol/related-task: ZodOptional<ZodObject<{ taskId: ...; }, $strip>>; progressToken: ZodOptional<ZodUnion<readonly [..., ...]>>; }, $loose>>; toolResult: ZodUnknown; }, $loose>]>
Parameters
params
Tool call parameters (name and arguments)
_meta?
{[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; } = ...
See General fields: _meta for notes on _meta usage.
_meta.io.modelcontextprotocol/related-task?
{ taskId: string; } = ...
If specified, this request is related to the provided task.
_meta.io.modelcontextprotocol/related-task.taskId
string = ...
_meta.progressToken?
string | number = ...
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
arguments?
{[key: string]: unknown; } = ...
Arguments to pass to the tool.
name
string = ...
The name of the tool to call.
task?
{ ttl?: number; } = ...
If specified, the caller is requesting task-augmented execution for this request. The request will return a CreateTaskResult immediately, and the actual result can be retrieved later via tasks/result.
Task augmentation is subject to capability negotiation - receivers MUST declare support for task augmentation of specific request types in their capabilities.
task.ttl?
number = ...
resultSchema?
T = ...
Zod schema for validating the result (defaults to CallToolResultSchema)
options?
Optional request options (timeout, signal, task creation params, etc.)
Returns
AsyncGenerator<ResponseMessage<SchemaOutput<T>>, void, void>
AsyncGenerator that yields ResponseMessage objects
Example
const stream = client.experimental.tasks.callToolStream({ name: 'myTool', arguments: {} });
for await (const message of stream) {
switch (message.type) {
case 'taskCreated':
console.log('Tool execution started:', message.task.taskId);
break;
case 'taskStatus':
console.log('Tool status:', message.task.status);
break;
case 'result':
console.log('Tool result:', message.result);
break;
case 'error':
console.error('Tool error:', message.error);
break;
}
}cancelTask()
cancelTask(
taskId,options?):Promise<{_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; }>
Defined in: src/experimental/tasks/client.ts:226
Experimental
Cancels a running task.
Parameters
taskId
string
The task identifier
options?
Optional request options
Returns
Promise<{ _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; createdAt: string; lastUpdatedAt: string; pollInterval?: number; status: "working" | "input_required" | "completed" | "failed" | "cancelled"; statusMessage?: string; taskId: string; ttl: number | null; }>
getTask()
getTask(
taskId,options?):Promise<{_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; }>
Defined in: src/experimental/tasks/client.ts:171
Experimental
Gets the current status of a task.
Parameters
taskId
string
The task identifier
options?
Optional request options
Returns
Promise<{ _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; createdAt: string; lastUpdatedAt: string; pollInterval?: number; status: "working" | "input_required" | "completed" | "failed" | "cancelled"; statusMessage?: string; taskId: string; ttl: number | null; }>
The task status
getTaskResult()
getTaskResult<
T>(taskId,resultSchema?,options?):Promise<SchemaOutput<T>>
Defined in: src/experimental/tasks/client.ts:187
Experimental
Retrieves the result of a completed task.
Type Parameters
T
T extends AnyObjectSchema
Parameters
taskId
string
The task identifier
resultSchema?
T
Zod schema for validating the result
options?
Optional request options
Returns
Promise<SchemaOutput<T>>
The task result
listTasks()
listTasks(
cursor?,options?):Promise<{[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };nextCursor?:string;tasks:object[]; }>
Defined in: src/experimental/tasks/client.ts:209
Experimental
Lists tasks with optional pagination.
Parameters
cursor?
string
Optional pagination cursor
options?
Optional request options
Returns
Promise<{[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; nextCursor?: string; tasks: object[]; }>
List of tasks with optional next cursor
requestStream()
requestStream<
T>(request,resultSchema,options?):AsyncGenerator<ResponseMessage<SchemaOutput<T>>,void,void>
Defined in: src/experimental/tasks/client.ts:249
Experimental
Sends a request and returns an AsyncGenerator that yields response messages. The generator is guaranteed to end with either a 'result' or 'error' message.
This method provides streaming access to request processing, allowing you to observe intermediate task status updates for task-augmented requests.
Type Parameters
T
T extends AnyObjectSchema
Parameters
request
ClientRequest | RequestT
The request to send
resultSchema
T
Zod schema for validating the result
options?
Optional request options (timeout, signal, task creation params, etc.)
Returns
AsyncGenerator<ResponseMessage<SchemaOutput<T>>, void, void>
AsyncGenerator that yields ResponseMessage objects
ExperimentalMcpServerTasks
Defined in: src/experimental/tasks/mcp-server.ts:41
Experimental
Experimental task features for McpServer.
Access via server.experimental.tasks:
server.experimental.tasks.registerToolTask('long-running', config, handler);Constructors
Constructor
new ExperimentalMcpServerTasks(
_mcpServer):ExperimentalMcpServerTasks
Defined in: src/experimental/tasks/mcp-server.ts:42
Experimental
Parameters
_mcpServer
McpServer
Returns
Methods
registerToolTask()
Call Signature
registerToolTask<
OutputArgs>(name,config,handler):RegisteredTool
Defined in: src/experimental/tasks/mcp-server.ts:79
Experimental
Registers a task-based tool with a config object and handler.
Task-based tools support long-running operations that can be polled for status and results. The handler must implement createTask, getTask, and getTaskResult methods.
Type Parameters
OutputArgs
OutputArgs extends AnySchema | ZodRawShapeCompat | undefined
Parameters
name
string
The tool name
config
Tool configuration (description, schemas, etc.)
_meta?
Record<string, unknown>
annotations?
{ destructiveHint?: boolean; idempotentHint?: boolean; openWorldHint?: boolean; readOnlyHint?: boolean; title?: string; }
annotations.destructiveHint?
boolean = ...
If true, the tool may perform destructive updates to its environment. If false, the tool performs only additive updates.
(This property is meaningful only when readOnlyHint == false)
Default: true
annotations.idempotentHint?
boolean = ...
If true, calling the tool repeatedly with the same arguments will have no additional effect on the its environment.
(This property is meaningful only when readOnlyHint == false)
Default: false
annotations.openWorldHint?
boolean = ...
If true, this tool may interact with an "open world" of external entities. If false, the tool's domain of interaction is closed. For example, the world of a web search tool is open, whereas that of a memory tool is not.
Default: true
annotations.readOnlyHint?
boolean = ...
If true, the tool does not modify its environment.
Default: false
annotations.title?
string = ...
A human-readable title for the tool.
description?
string
execution?
outputSchema?
OutputArgs
title?
string
handler
ToolTaskHandler<undefined>
Task handler with createTask, getTask, getTaskResult methods
Returns
RegisteredTool
RegisteredTool for managing the tool's lifecycle
Example
server.experimental.tasks.registerToolTask('long-computation', {
description: 'Performs a long computation',
inputSchema: { input: z.string() },
execution: { taskSupport: 'required' }
}, {
createTask: async (args, extra) => {
const task = await extra.taskStore.createTask({ ttl: 300000 });
startBackgroundWork(task.taskId, args);
return { task };
},
getTask: async (args, extra) => {
return extra.taskStore.getTask(extra.taskId);
},
getTaskResult: async (args, extra) => {
return extra.taskStore.getTaskResult(extra.taskId);
}
});Call Signature
registerToolTask<
InputArgs,OutputArgs>(name,config,handler):RegisteredTool
Defined in: src/experimental/tasks/mcp-server.ts:92
Experimental
Registers a task-based tool with a config object and handler.
Task-based tools support long-running operations that can be polled for status and results. The handler must implement createTask, getTask, and getTaskResult methods.
Type Parameters
InputArgs
InputArgs extends AnySchema | ZodRawShapeCompat
OutputArgs
OutputArgs extends AnySchema | ZodRawShapeCompat | undefined
Parameters
name
string
The tool name
config
Tool configuration (description, schemas, etc.)
_meta?
Record<string, unknown>
annotations?
{ destructiveHint?: boolean; idempotentHint?: boolean; openWorldHint?: boolean; readOnlyHint?: boolean; title?: string; }
annotations.destructiveHint?
boolean = ...
If true, the tool may perform destructive updates to its environment. If false, the tool performs only additive updates.
(This property is meaningful only when readOnlyHint == false)
Default: true
annotations.idempotentHint?
boolean = ...
If true, calling the tool repeatedly with the same arguments will have no additional effect on the its environment.
(This property is meaningful only when readOnlyHint == false)
Default: false
annotations.openWorldHint?
boolean = ...
If true, this tool may interact with an "open world" of external entities. If false, the tool's domain of interaction is closed. For example, the world of a web search tool is open, whereas that of a memory tool is not.
Default: true
annotations.readOnlyHint?
boolean = ...
If true, the tool does not modify its environment.
Default: false
annotations.title?
string = ...
A human-readable title for the tool.
description?
string
execution?
inputSchema
InputArgs
outputSchema?
OutputArgs
title?
string
handler
ToolTaskHandler<InputArgs>
Task handler with createTask, getTask, getTaskResult methods
Returns
RegisteredTool
RegisteredTool for managing the tool's lifecycle
Example
server.experimental.tasks.registerToolTask('long-computation', {
description: 'Performs a long computation',
inputSchema: { input: z.string() },
execution: { taskSupport: 'required' }
}, {
createTask: async (args, extra) => {
const task = await extra.taskStore.createTask({ ttl: 300000 });
startBackgroundWork(task.taskId, args);
return { task };
},
getTask: async (args, extra) => {
return extra.taskStore.getTask(extra.taskId);
},
getTaskResult: async (args, extra) => {
return extra.taskStore.getTaskResult(extra.taskId);
}
});ExperimentalServerTasks
Defined in: src/experimental/tasks/server.ts:40
Experimental
Experimental task features for low-level MCP servers.
Access via server.experimental.tasks:
const stream = server.experimental.tasks.requestStream(request, schema, options);For high-level server usage with task-based tools, use McpServer.experimental.tasks instead.
Type Parameters
RequestT
RequestT extends Request = Request
NotificationT
NotificationT extends Notification = Notification
ResultT
ResultT extends Result = Result
Constructors
Constructor
new ExperimentalServerTasks<
RequestT,NotificationT,ResultT>(_server):ExperimentalServerTasks<RequestT,NotificationT,ResultT>
Defined in: src/experimental/tasks/server.ts:45
Experimental
Parameters
_server
Server<RequestT, NotificationT, ResultT>
Returns
ExperimentalServerTasks<RequestT, NotificationT, ResultT>
Methods
cancelTask()
cancelTask(
taskId,options?):Promise<{_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; }>
Defined in: src/experimental/tasks/server.ts:320
Experimental
Cancels a running task.
Parameters
taskId
string
The task identifier
options?
Optional request options
Returns
Promise<{ _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; createdAt: string; lastUpdatedAt: string; pollInterval?: number; status: "working" | "input_required" | "completed" | "failed" | "cancelled"; statusMessage?: string; taskId: string; ttl: number | null; }>
createMessageStream()
createMessageStream(
params,options?):AsyncGenerator<ResponseMessage<{[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };content: {_meta?: {[key:string]:unknown; };annotations?: {audience?: ("user"|"assistant")[];lastModified?:string;priority?:number; };text:string;type:"text"; } | {_meta?: {[key:string]:unknown; };annotations?: {audience?: ("user"|"assistant")[];lastModified?:string;priority?:number; };data:string;mimeType:string;type:"image"; } | {_meta?: {[key:string]:unknown; };annotations?: {audience?: ("user"|"assistant")[];lastModified?:string;priority?:number; };data:string;mimeType:string;type:"audio"; };model:string;role:"user"|"assistant";stopReason?:string; }>,void,void>
Defined in: src/experimental/tasks/server.ts:120
Experimental
Sends a sampling request and returns an AsyncGenerator that yields response messages. The generator is guaranteed to end with either a 'result' or 'error' message.
For task-augmented requests, yields 'taskCreated' and 'taskStatus' messages before the final result.
Parameters
params
The sampling request parameters
_meta?
{[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; } = ...
See General fields: _meta for notes on _meta usage.
_meta.io.modelcontextprotocol/related-task?
{ taskId: string; } = ...
If specified, this request is related to the provided task.
_meta.io.modelcontextprotocol/related-task.taskId
string = ...
_meta.progressToken?
string | number = ...
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
includeContext?
"none" | "thisServer" | "allServers" = ...
A request to include context from one or more MCP servers (including the caller), to be attached to the prompt. The client MAY ignore this request.
Default is "none". Values "thisServer" and "allServers" are soft-deprecated. Servers SHOULD only use these values if the client declares ClientCapabilities.sampling.context. These values may be removed in future spec releases.
maxTokens
number = ...
The requested maximum number of tokens to sample (to prevent runaway completions).
The client MAY choose to sample fewer tokens than the requested maximum.
messages
object[] = ...
metadata?
object = ...
Optional metadata to pass through to the LLM provider. The format of this metadata is provider-specific.
modelPreferences?
{ costPriority?: number; hints?: object[]; intelligencePriority?: number; speedPriority?: number; } = ...
The server's preferences for which model to select. The client MAY modify or omit this request.
modelPreferences.costPriority?
number = ...
How much to prioritize cost when selecting a model.
modelPreferences.hints?
object[] = ...
Optional hints to use for model selection.
modelPreferences.intelligencePriority?
number = ...
How much to prioritize intelligence and capabilities when selecting a model.
modelPreferences.speedPriority?
number = ...
How much to prioritize sampling speed (latency) when selecting a model.
stopSequences?
string[] = ...
systemPrompt?
string = ...
An optional system prompt the server wants to use for sampling. The client MAY modify or omit this prompt.
task?
{ ttl?: number; } = ...
If specified, the caller is requesting task-augmented execution for this request. The request will return a CreateTaskResult immediately, and the actual result can be retrieved later via tasks/result.
Task augmentation is subject to capability negotiation - receivers MUST declare support for task augmentation of specific request types in their capabilities.
task.ttl?
number = ...
temperature?
number = ...
toolChoice?
{ mode?: "required" | "none" | "auto"; } = ...
Controls how the model uses tools. The client MUST return an error if this field is provided but ClientCapabilities.sampling.tools is not declared. Default is { mode: "auto" }.
toolChoice.mode?
"required" | "none" | "auto" = ...
Controls when tools are used:
- "auto": Model decides whether to use tools (default)
- "required": Model MUST use at least one tool before completing
- "none": Model MUST NOT use any tools
tools?
object[] = ...
Tools that the model may use during generation. The client MUST return an error if this field is provided but ClientCapabilities.sampling.tools is not declared.
options?
Optional request options (timeout, signal, task creation params, onprogress, etc.)
Returns
AsyncGenerator<ResponseMessage<{[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; content: { _meta?: {[key: string]: unknown; }; annotations?: { audience?: ("user" | "assistant")[]; lastModified?: string; priority?: number; }; text: string; type: "text"; } | { _meta?: {[key: string]: unknown; }; annotations?: { audience?: ("user" | "assistant")[]; lastModified?: string; priority?: number; }; data: string; mimeType: string; type: "image"; } | { _meta?: {[key: string]: unknown; }; annotations?: { audience?: ("user" | "assistant")[]; lastModified?: string; priority?: number; }; data: string; mimeType: string; type: "audio"; }; model: string; role: "user" | "assistant"; stopReason?: string; }>, void, void>
AsyncGenerator that yields ResponseMessage objects
Example
const stream = server.experimental.tasks.createMessageStream({
messages: [{ role: 'user', content: { type: 'text', text: 'Hello' } }],
maxTokens: 100
}, {
onprogress: (progress) => {
// Handle streaming tokens via progress notifications
console.log('Progress:', progress.message);
}
});
for await (const message of stream) {
switch (message.type) {
case 'taskCreated':
console.log('Task created:', message.task.taskId);
break;
case 'taskStatus':
console.log('Task status:', message.task.status);
break;
case 'result':
console.log('Final result:', message.result);
break;
case 'error':
console.error('Error:', message.error);
break;
}
}elicitInputStream()
elicitInputStream(
params,options?):AsyncGenerator<ResponseMessage<{[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };action:"cancel"|"accept"|"decline";content?: {[key:string]:string|number|boolean|string[]; }; }>,void,void>
Defined in: src/experimental/tasks/server.ts:220
Experimental
Sends an elicitation request and returns an AsyncGenerator that yields response messages. The generator is guaranteed to end with either a 'result' or 'error' message.
For task-augmented requests (especially URL-based elicitation), yields 'taskCreated' and 'taskStatus' messages before the final result.
Parameters
params
{ _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; message: string; mode?: "form"; requestedSchema: { properties: {[key: string]: { default?: string; description?: string; enum: string[]; enumNames?: string[]; title?: string; type: "string"; } | { default?: string; description?: string; enum: string[]; title?: string; type: "string"; } | { default?: string; description?: string; oneOf: object[]; title?: string; type: "string"; } | { default?: string[]; description?: string; items: { enum: string[]; type: "string"; }; maxItems?: number; minItems?: number; title?: string; type: "array"; } | { default?: string[]; description?: string; items: { anyOf: object[]; }; maxItems?: number; minItems?: number; title?: string; type: "array"; } | { default?: boolean; description?: string; title?: string; type: "boolean"; } | { default?: string; description?: string; format?: "date" | "uri" | "email" | "date-time"; maxLength?: number; minLength?: number; title?: string; type: "string"; } | { default?: number; description?: string; maximum?: number; minimum?: number; title?: string; type: "number" | "integer"; }; }; required?: string[]; type: "object"; }; task?: { ttl?: number; }; } | { _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; elicitationId: string; message: string; mode: "url"; task?: { ttl?: number; }; url: string; }
The elicitation request parameters
Type Literal
{ _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; message: string; mode?: "form"; requestedSchema: { properties: {[key: string]: { default?: string; description?: string; enum: string[]; enumNames?: string[]; title?: string; type: "string"; } | { default?: string; description?: string; enum: string[]; title?: string; type: "string"; } | { default?: string; description?: string; oneOf: object[]; title?: string; type: "string"; } | { default?: string[]; description?: string; items: { enum: string[]; type: "string"; }; maxItems?: number; minItems?: number; title?: string; type: "array"; } | { default?: string[]; description?: string; items: { anyOf: object[]; }; maxItems?: number; minItems?: number; title?: string; type: "array"; } | { default?: boolean; description?: string; title?: string; type: "boolean"; } | { default?: string; description?: string; format?: "date" | "uri" | "email" | "date-time"; maxLength?: number; minLength?: number; title?: string; type: "string"; } | { default?: number; description?: string; maximum?: number; minimum?: number; title?: string; type: "number" | "integer"; }; }; required?: string[]; type: "object"; }; task?: { ttl?: number; }; }
The elicitation request parameters
_meta?
{[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; } = ...
See General fields: _meta for notes on _meta usage.
_meta.io.modelcontextprotocol/related-task?
{ taskId: string; } = ...
If specified, this request is related to the provided task.
_meta.io.modelcontextprotocol/related-task.taskId
string = ...
_meta.progressToken?
string | number = ...
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
message
string = ...
The message to present to the user describing what information is being requested.
mode?
"form" = ...
The elicitation mode.
Optional for backward compatibility. Clients MUST treat missing mode as "form".
requestedSchema
{ properties: {[key: string]: { default?: string; description?: string; enum: string[]; enumNames?: string[]; title?: string; type: "string"; } | { default?: string; description?: string; enum: string[]; title?: string; type: "string"; } | { default?: string; description?: string; oneOf: object[]; title?: string; type: "string"; } | { default?: string[]; description?: string; items: { enum: string[]; type: "string"; }; maxItems?: number; minItems?: number; title?: string; type: "array"; } | { default?: string[]; description?: string; items: { anyOf: object[]; }; maxItems?: number; minItems?: number; title?: string; type: "array"; } | { default?: boolean; description?: string; title?: string; type: "boolean"; } | { default?: string; description?: string; format?: "date" | "uri" | "email" | "date-time"; maxLength?: number; minLength?: number; title?: string; type: "string"; } | { default?: number; description?: string; maximum?: number; minimum?: number; title?: string; type: "number" | "integer"; }; }; required?: string[]; type: "object"; } = ...
A restricted subset of JSON Schema. Only top-level properties are allowed, without nesting.
requestedSchema.properties
{[key: string]: { default?: string; description?: string; enum: string[]; enumNames?: string[]; title?: string; type: "string"; } | { default?: string; description?: string; enum: string[]; title?: string; type: "string"; } | { default?: string; description?: string; oneOf: object[]; title?: string; type: "string"; } | { default?: string[]; description?: string; items: { enum: string[]; type: "string"; }; maxItems?: number; minItems?: number; title?: string; type: "array"; } | { default?: string[]; description?: string; items: { anyOf: object[]; }; maxItems?: number; minItems?: number; title?: string; type: "array"; } | { default?: boolean; description?: string; title?: string; type: "boolean"; } | { default?: string; description?: string; format?: "date" | "uri" | "email" | "date-time"; maxLength?: number; minLength?: number; title?: string; type: "string"; } | { default?: number; description?: string; maximum?: number; minimum?: number; title?: string; type: "number" | "integer"; }; } = ...
requestedSchema.required?
string[] = ...
requestedSchema.type
"object" = ...
task?
{ ttl?: number; } = ...
If specified, the caller is requesting task-augmented execution for this request. The request will return a CreateTaskResult immediately, and the actual result can be retrieved later via tasks/result.
Task augmentation is subject to capability negotiation - receivers MUST declare support for task augmentation of specific request types in their capabilities.
task.ttl?
number = ...
Type Literal
{ _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; elicitationId: string; message: string; mode: "url"; task?: { ttl?: number; }; url: string; }
The elicitation request parameters
_meta?
{[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; } = ...
See General fields: _meta for notes on _meta usage.
_meta.io.modelcontextprotocol/related-task?
{ taskId: string; } = ...
If specified, this request is related to the provided task.
_meta.io.modelcontextprotocol/related-task.taskId
string = ...
_meta.progressToken?
string | number = ...
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
elicitationId
string = ...
The ID of the elicitation, which must be unique within the context of the server. The client MUST treat this ID as an opaque value.
message
string = ...
The message to present to the user explaining why the interaction is needed.
mode
"url" = ...
The elicitation mode.
task?
{ ttl?: number; } = ...
If specified, the caller is requesting task-augmented execution for this request. The request will return a CreateTaskResult immediately, and the actual result can be retrieved later via tasks/result.
Task augmentation is subject to capability negotiation - receivers MUST declare support for task augmentation of specific request types in their capabilities.
task.ttl?
number = ...
url
string = ...
The URL that the user should navigate to.
options?
Optional request options (timeout, signal, task creation params, etc.)
Returns
AsyncGenerator<ResponseMessage<{[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; action: "cancel" | "accept" | "decline"; content?: {[key: string]: string | number | boolean | string[]; }; }>, void, void>
AsyncGenerator that yields ResponseMessage objects
Example
const stream = server.experimental.tasks.elicitInputStream({
mode: 'url',
message: 'Please authenticate',
elicitationId: 'auth-123',
url: 'https://example.com/auth'
}, {
task: { ttl: 300000 } // Task-augmented for long-running auth flow
});
for await (const message of stream) {
switch (message.type) {
case 'taskCreated':
console.log('Task created:', message.task.taskId);
break;
case 'taskStatus':
console.log('Task status:', message.task.status);
break;
case 'result':
console.log('User action:', message.result.action);
break;
case 'error':
console.error('Error:', message.error);
break;
}
}getTask()
getTask(
taskId,options?):Promise<{_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; }>
Defined in: src/experimental/tasks/server.ts:268
Experimental
Gets the current status of a task.
Parameters
taskId
string
The task identifier
options?
Optional request options
Returns
Promise<{ _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; createdAt: string; lastUpdatedAt: string; pollInterval?: number; status: "working" | "input_required" | "completed" | "failed" | "cancelled"; statusMessage?: string; taskId: string; ttl: number | null; }>
The task status
getTaskResult()
getTaskResult<
T>(taskId,resultSchema?,options?):Promise<SchemaOutput<T>>
Defined in: src/experimental/tasks/server.ts:283
Experimental
Retrieves the result of a completed task.
Type Parameters
T
T extends AnySchema
Parameters
taskId
string
The task identifier
resultSchema?
T
Zod schema for validating the result
options?
Optional request options
Returns
Promise<SchemaOutput<T>>
The task result
listTasks()
listTasks(
cursor?,options?):Promise<{[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };nextCursor?:string;tasks:object[]; }>
Defined in: src/experimental/tasks/server.ts:304
Experimental
Lists tasks with optional pagination.
Parameters
cursor?
string
Optional pagination cursor
options?
Optional request options
Returns
Promise<{[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; nextCursor?: string; tasks: object[]; }>
List of tasks with optional next cursor
requestStream()
requestStream<
T>(request,resultSchema,options?):AsyncGenerator<ResponseMessage<SchemaOutput<T>>,void,void>
Defined in: src/experimental/tasks/server.ts:61
Experimental
Sends a request and returns an AsyncGenerator that yields response messages. The generator is guaranteed to end with either a 'result' or 'error' message.
This method provides streaming access to request processing, allowing you to observe intermediate task status updates for task-augmented requests.
Type Parameters
T
T extends AnySchema
Parameters
request
ServerRequest | RequestT
The request to send
resultSchema
T
Zod schema for validating the result
options?
Optional request options (timeout, signal, task creation params, etc.)
Returns
AsyncGenerator<ResponseMessage<SchemaOutput<T>>, void, void>
AsyncGenerator that yields ResponseMessage objects
InMemoryTaskMessageQueue
Defined in: src/experimental/tasks/stores/in-memory.ts:227
Experimental
A simple in-memory implementation of TaskMessageQueue for demonstration purposes.
This implementation stores messages in memory, organized by task ID and optional session ID. Messages are stored in FIFO queues per task.
Note: This is not suitable for production use in distributed systems. For production, consider implementing TaskMessageQueue with Redis or other distributed queues.
Implements
Constructors
Constructor
new InMemoryTaskMessageQueue():
InMemoryTaskMessageQueue
Experimental
Returns
Methods
dequeue()
dequeue(
taskId,sessionId?):Promise<QueuedMessage|undefined>
Defined in: src/experimental/tasks/stores/in-memory.ts:278
Experimental
Removes and returns the first message from the queue for a specific task.
Parameters
taskId
string
The task identifier
sessionId?
string
Optional session ID for binding the query to a specific session
Returns
Promise<QueuedMessage | undefined>
The first message, or undefined if the queue is empty
Implementation of
dequeueAll()
dequeueAll(
taskId,sessionId?):Promise<QueuedMessage[]>
Defined in: src/experimental/tasks/stores/in-memory.ts:289
Experimental
Removes and returns all messages from the queue for a specific task.
Parameters
taskId
string
The task identifier
sessionId?
string
Optional session ID for binding the query to a specific session
Returns
Promise<QueuedMessage[]>
Array of all messages that were in the queue
Implementation of
enqueue()
enqueue(
taskId,message,sessionId?,maxSize?):Promise<void>
Defined in: src/experimental/tasks/stores/in-memory.ts:261
Experimental
Adds a message to the end of the queue for a specific task. Atomically checks queue size and throws if maxSize would be exceeded.
Parameters
taskId
string
The task identifier
message
The message to enqueue
sessionId?
string
Optional session ID for binding the operation to a specific session
maxSize?
number
Optional maximum queue size - if specified and queue is full, throws an error
Returns
Promise<void>
Throws
Error if maxSize is specified and would be exceeded
Implementation of
InMemoryTaskStore
Defined in: src/experimental/tasks/stores/in-memory.ts:30
Experimental
A simple in-memory implementation of TaskStore for demonstration purposes.
This implementation stores all tasks in memory and provides automatic cleanup based on the ttl duration specified in the task creation parameters.
Note: This is not suitable for production use as all data is lost on restart. For production, consider implementing TaskStore with a database or distributed cache.
Implements
Constructors
Constructor
new InMemoryTaskStore():
InMemoryTaskStore
Experimental
Returns
Methods
cleanup()
cleanup():
void
Defined in: src/experimental/tasks/stores/in-memory.ts:200
Experimental
Cleanup all timers (useful for testing or graceful shutdown)
Returns
void
createTask()
createTask(
taskParams,requestId,request,_sessionId?):Promise<{createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; }>
Defined in: src/experimental/tasks/stores/in-memory.ts:42
Experimental
Creates a new task with the given creation parameters and original request. The implementation must generate a unique taskId and createdAt timestamp.
TTL Management:
- The implementation receives the TTL suggested by the requestor via taskParams.ttl
- The implementation MAY override the requested TTL (e.g., to enforce limits)
- The actual TTL used MUST be returned in the Task object
- Null TTL indicates unlimited task lifetime (no automatic cleanup)
- Cleanup SHOULD occur automatically after TTL expires, regardless of task status
Parameters
taskParams
The task creation parameters from the request (ttl, pollInterval)
requestId
The JSON-RPC request ID
request
The original request that triggered task creation
method
string = ...
params?
{[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; } = ...
params._meta?
{[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; } = ...
See General fields: _meta for notes on _meta usage.
params._meta.io.modelcontextprotocol/related-task?
{ taskId: string; } = ...
If specified, this request is related to the provided task.
params._meta.io.modelcontextprotocol/related-task.taskId
string = ...
params._meta.progressToken?
string | number = ...
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
_sessionId?
string
Returns
Promise<{ createdAt: string; lastUpdatedAt: string; pollInterval?: number; status: "working" | "input_required" | "completed" | "failed" | "cancelled"; statusMessage?: string; taskId: string; ttl: number | null; }>
The created task object
Implementation of
getAllTasks()
getAllTasks():
object[]
Defined in: src/experimental/tasks/stores/in-memory.ts:211
Experimental
Get all tasks (useful for debugging)
Returns
getTask()
getTask(
taskId,_sessionId?):Promise<{createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; } |null>
Defined in: src/experimental/tasks/stores/in-memory.ts:84
Experimental
Gets the current status of a task.
Parameters
taskId
string
The task identifier
_sessionId?
string
Returns
Promise<{ createdAt: string; lastUpdatedAt: string; pollInterval?: number; status: "working" | "input_required" | "completed" | "failed" | "cancelled"; statusMessage?: string; taskId: string; ttl: number | null; } | null>
The task object, or null if it does not exist
Implementation of
getTaskResult()
getTaskResult(
taskId,_sessionId?):Promise<{[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; }; }>
Defined in: src/experimental/tasks/stores/in-memory.ts:122
Experimental
Retrieves the stored result of a task.
Parameters
taskId
string
The task identifier
_sessionId?
string
Returns
Promise<{[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; }>
The stored result
Implementation of
listTasks()
listTasks(
cursor?,_sessionId?):Promise<{nextCursor?:string;tasks:object[]; }>
Defined in: src/experimental/tasks/stores/in-memory.ts:171
Experimental
Lists tasks, optionally starting from a pagination cursor.
Parameters
cursor?
string
Optional cursor for pagination
_sessionId?
string
Returns
Promise<{ nextCursor?: string; tasks: object[]; }>
An object containing the tasks array and an optional nextCursor
Implementation of
storeTaskResult()
storeTaskResult(
taskId,status,result,_sessionId?):Promise<void>
Defined in: src/experimental/tasks/stores/in-memory.ts:89
Experimental
Stores the result of a task and sets its final status.
Parameters
taskId
string
The task identifier
status
"completed" | "failed"
The final status: 'completed' for success, 'failed' for errors
result
The result to store
_meta?
{[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; } = ...
See MCP specification for notes on _meta usage.
_meta.io.modelcontextprotocol/related-task?
{ taskId: string; } = ...
If specified, this request is related to the provided task.
_meta.io.modelcontextprotocol/related-task.taskId
string = ...
_meta.progressToken?
string | number = ...
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
_sessionId?
string
Returns
Promise<void>
Implementation of
updateTaskStatus()
updateTaskStatus(
taskId,status,statusMessage?,_sessionId?):Promise<void>
Defined in: src/experimental/tasks/stores/in-memory.ts:135
Experimental
Updates a task's status (e.g., to 'cancelled', 'failed', 'completed').
Parameters
taskId
string
The task identifier
status
"working" | "input_required" | "completed" | "failed" | "cancelled"
The new status
statusMessage?
string
Optional diagnostic message for failed tasks or other status information
_sessionId?
string
Returns
Promise<void>
Implementation of
Interfaces
BaseQueuedMessage
Defined in: src/experimental/tasks/interfaces.ts:105
Extended by
Properties
timestamp
timestamp:
number
Defined in: src/experimental/tasks/interfaces.ts:109
When the message was queued (milliseconds since epoch)
type
type:
string
Defined in: src/experimental/tasks/interfaces.ts:107
Type of message
BaseResponseMessage
Defined in: src/shared/responseMessage.ts:6
Base message type
Extended by
Properties
type
type:
string
Defined in: src/shared/responseMessage.ts:7
CreateTaskOptions
Defined in: src/experimental/tasks/interfaces.ts:185
Experimental
Task creation options.
Properties
context?
optionalcontext?:Record<string,unknown>
Defined in: src/experimental/tasks/interfaces.ts:200
Experimental
Additional context to pass to the task store.
pollInterval?
optionalpollInterval?:number
Defined in: src/experimental/tasks/interfaces.ts:195
Experimental
Time in milliseconds to wait between task status requests.
ttl?
optionalttl?:number|null
Defined in: src/experimental/tasks/interfaces.ts:190
Experimental
Time in milliseconds to keep task results available after completion. If null, the task has unlimited lifetime until manually cleaned up.
CreateTaskRequestHandlerExtra
Defined in: src/experimental/tasks/interfaces.ts:33
Experimental
Extended handler extra with task store for task creation.
Extends
Properties
_meta?
optional_meta?:object
Defined in: src/shared/protocol.ts:256
Experimental
Metadata from the original request.
Index Signature
[key: string]: unknown
io.modelcontextprotocol/related-task?
optionalio.modelcontextprotocol/related-task?:object
If specified, this request is related to the provided task.
io.modelcontextprotocol/related-task.taskId
taskId:
string
progressToken?
optionalprogressToken?:string|number
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
Inherited from
RequestHandlerExtra._meta
authInfo?
optionalauthInfo?:AuthInfo
Defined in: src/shared/protocol.ts:246
Experimental
Information about a validated access token, provided to request handlers.
Inherited from
RequestHandlerExtra.authInfo
closeSSEStream?
optionalcloseSSEStream?: () =>void
Defined in: src/shared/protocol.ts:294
Experimental
Closes the SSE stream for this request, triggering client reconnection. Only available when using StreamableHTTPServerTransport with eventStore configured. Use this to implement polling behavior during long-running operations.
Returns
void
Inherited from
RequestHandlerExtra.closeSSEStream
closeStandaloneSSEStream?
optionalcloseStandaloneSSEStream?: () =>void
Defined in: src/shared/protocol.ts:301
Experimental
Closes the standalone GET SSE stream, triggering client reconnection. Only available when using StreamableHTTPServerTransport with eventStore configured. Use this to implement polling behavior for server-initiated notifications.
Returns
void
Inherited from
RequestHandlerExtra.closeStandaloneSSEStream
requestId
requestId:
RequestId
Defined in: src/shared/protocol.ts:262
Experimental
The JSON-RPC ID of the request being handled. This can be useful for tracking or logging purposes.
Inherited from
RequestHandlerExtra.requestId
requestInfo?
optionalrequestInfo?:RequestInfo
Defined in: src/shared/protocol.ts:273
Experimental
The original HTTP request.
Inherited from
RequestHandlerExtra.requestInfo
sendNotification
sendNotification: (
notification) =>Promise<void>
Defined in: src/shared/protocol.ts:280
Experimental
Sends a notification that relates to the current request being handled.
This is used by certain transports to correctly associate related messages.
Parameters
notification
Returns
Promise<void>
Inherited from
RequestHandlerExtra.sendNotification
sendRequest
sendRequest: <
U>(request,resultSchema,options?) =>Promise<SchemaOutput<U>>
Defined in: src/shared/protocol.ts:287
Experimental
Sends a request that relates to the current request being handled.
This is used by certain transports to correctly associate related messages.
Type Parameters
U
U extends AnySchema
Parameters
request
resultSchema
U
options?
Returns
Promise<SchemaOutput<U>>
Inherited from
RequestHandlerExtra.sendRequest
sessionId?
optionalsessionId?:string
Defined in: src/shared/protocol.ts:251
Experimental
The session ID from the transport, if available.
Inherited from
RequestHandlerExtra.sessionId
signal
signal:
AbortSignal
Defined in: src/shared/protocol.ts:241
Experimental
An abort signal used to communicate if the request was cancelled from the sender's side.
Inherited from
RequestHandlerExtra.signal
taskId?
optionaltaskId?:string
Defined in: src/shared/protocol.ts:264
Experimental
Inherited from
RequestHandlerExtra.taskId
taskRequestedTtl?
optionaltaskRequestedTtl?:number
Defined in: src/shared/protocol.ts:268
Experimental
Inherited from
RequestHandlerExtra.taskRequestedTtl
taskStore
taskStore:
RequestTaskStore
Defined in: src/experimental/tasks/interfaces.ts:34
Experimental
Overrides
RequestHandlerExtra.taskStore
ErrorMessage
Defined in: src/shared/responseMessage.ts:37
Error message (terminal)
Extends
Properties
error
error:
McpError
Defined in: src/shared/responseMessage.ts:39
type
type:
"error"
Defined in: src/shared/responseMessage.ts:38
Overrides
QueuedError
Defined in: src/experimental/tasks/interfaces.ts:130
Extends
Properties
message
message:
object
Defined in: src/experimental/tasks/interfaces.ts:133
The actual JSONRPC error
error
error:
object
error.code
code:
number
The error type that occurred.
error.data?
optionaldata?:unknown
Additional information about the error. The value of this member is defined by the sender (e.g. detailed error information, nested errors etc.).
error.message
message:
string
A short description of the error. The message SHOULD be limited to a concise single sentence.
id?
optionalid?:string|number
jsonrpc
jsonrpc:
"2.0"
timestamp
timestamp:
number
Defined in: src/experimental/tasks/interfaces.ts:109
When the message was queued (milliseconds since epoch)
Inherited from
type
type:
"error"
Defined in: src/experimental/tasks/interfaces.ts:131
Type of message
Overrides
QueuedNotification
Defined in: src/experimental/tasks/interfaces.ts:118
Extends
Properties
message
message:
object
Defined in: src/experimental/tasks/interfaces.ts:121
The actual JSONRPC notification
jsonrpc
jsonrpc:
"2.0"
method
method:
string
params?
optionalparams?:object
Index Signature
[key: string]: unknown
params._meta?
optional_meta?:object
See MCP specification for notes on _meta usage.
Index Signature
[key: string]: unknown
params._meta.io.modelcontextprotocol/related-task?
optionalio.modelcontextprotocol/related-task?:object
If specified, this request is related to the provided task.
params._meta.io.modelcontextprotocol/related-task.taskId
taskId:
string
params._meta.progressToken?
optionalprogressToken?:string|number
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
timestamp
timestamp:
number
Defined in: src/experimental/tasks/interfaces.ts:109
When the message was queued (milliseconds since epoch)
Inherited from
type
type:
"notification"
Defined in: src/experimental/tasks/interfaces.ts:119
Type of message
Overrides
QueuedRequest
Defined in: src/experimental/tasks/interfaces.ts:112
Extends
Properties
message
message:
object
Defined in: src/experimental/tasks/interfaces.ts:115
The actual JSONRPC request
id
id:
string|number=RequestIdSchema
jsonrpc
jsonrpc:
"2.0"
method
method:
string
params?
optionalparams?:object
Index Signature
[key: string]: unknown
params._meta?
optional_meta?:object
See General fields: _meta for notes on _meta usage.
Index Signature
[key: string]: unknown
params._meta.io.modelcontextprotocol/related-task?
optionalio.modelcontextprotocol/related-task?:object
If specified, this request is related to the provided task.
params._meta.io.modelcontextprotocol/related-task.taskId
taskId:
string
params._meta.progressToken?
optionalprogressToken?:string|number
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
timestamp
timestamp:
number
Defined in: src/experimental/tasks/interfaces.ts:109
When the message was queued (milliseconds since epoch)
Inherited from
type
type:
"request"
Defined in: src/experimental/tasks/interfaces.ts:113
Type of message
Overrides
QueuedResponse
Defined in: src/experimental/tasks/interfaces.ts:124
Extends
Properties
message
message:
object
Defined in: src/experimental/tasks/interfaces.ts:127
The actual JSONRPC response
id
id:
string|number=RequestIdSchema
jsonrpc
jsonrpc:
"2.0"
result
result:
object=ResultSchema
Index Signature
[key: string]: unknown
result._meta?
optional_meta?:object
See MCP specification for notes on _meta usage.
Index Signature
[key: string]: unknown
result._meta.io.modelcontextprotocol/related-task?
optionalio.modelcontextprotocol/related-task?:object
If specified, this request is related to the provided task.
result._meta.io.modelcontextprotocol/related-task.taskId
taskId:
string
result._meta.progressToken?
optionalprogressToken?:string|number
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
timestamp
timestamp:
number
Defined in: src/experimental/tasks/interfaces.ts:109
When the message was queued (milliseconds since epoch)
Inherited from
type
type:
"response"
Defined in: src/experimental/tasks/interfaces.ts:125
Type of message
Overrides
ResultMessage
Defined in: src/shared/responseMessage.ts:29
Final result message (terminal)
Extends
Type Parameters
T
T extends Result
Properties
result
result:
T
Defined in: src/shared/responseMessage.ts:31
type
type:
"result"
Defined in: src/shared/responseMessage.ts:30
Overrides
TaskCreatedMessage
Defined in: src/shared/responseMessage.ts:21
Task created message (first message for task-augmented requests)
Extends
Properties
task
task:
object
Defined in: src/shared/responseMessage.ts:23
createdAt
createdAt:
string
ISO 8601 timestamp when the task was created.
lastUpdatedAt
lastUpdatedAt:
string
ISO 8601 timestamp when the task was last updated.
pollInterval?
optionalpollInterval?:number
status
status:
"working"|"input_required"|"completed"|"failed"|"cancelled"=TaskStatusSchema
statusMessage?
optionalstatusMessage?:string
Optional diagnostic message for failed tasks or other status information.
taskId
taskId:
string
ttl
ttl:
number|null
Time in milliseconds to keep task results available after completion. If null, the task has unlimited lifetime until manually cleaned up.
type
type:
"taskCreated"
Defined in: src/shared/responseMessage.ts:22
Overrides
TaskMessageQueue
Defined in: src/experimental/tasks/interfaces.ts:151
Experimental
Interface for managing per-task FIFO message queues.
Similar to TaskStore, this allows pluggable queue implementations (in-memory, Redis, other distributed queues, etc.).
Each method accepts taskId and optional sessionId parameters to enable a single queue instance to manage messages for multiple tasks, with isolation based on task ID and session ID.
All methods are async to support external storage implementations. All data in QueuedMessage must be JSON-serializable.
Methods
dequeue()
dequeue(
taskId,sessionId?):Promise<QueuedMessage|undefined>
Defined in: src/experimental/tasks/interfaces.ts:169
Experimental
Removes and returns the first message from the queue for a specific task.
Parameters
taskId
string
The task identifier
sessionId?
string
Optional session ID for binding the query to a specific session
Returns
Promise<QueuedMessage | undefined>
The first message, or undefined if the queue is empty
dequeueAll()
dequeueAll(
taskId,sessionId?):Promise<QueuedMessage[]>
Defined in: src/experimental/tasks/interfaces.ts:178
Experimental
Removes and returns all messages from the queue for a specific task. Used when tasks are cancelled or failed to clean up pending messages.
Parameters
taskId
string
The task identifier
sessionId?
string
Optional session ID for binding the query to a specific session
Returns
Promise<QueuedMessage[]>
Array of all messages that were in the queue
enqueue()
enqueue(
taskId,message,sessionId?,maxSize?):Promise<void>
Defined in: src/experimental/tasks/interfaces.ts:161
Experimental
Adds a message to the end of the queue for a specific task. Atomically checks queue size and throws if maxSize would be exceeded.
Parameters
taskId
string
The task identifier
message
The message to enqueue
sessionId?
string
Optional session ID for binding the operation to a specific session
maxSize?
number
Optional maximum queue size - if specified and queue is full, throws an error
Returns
Promise<void>
Throws
Error if maxSize is specified and would be exceeded
TaskRequestHandlerExtra
Defined in: src/experimental/tasks/interfaces.ts:41
Experimental
Extended handler extra with task ID and store for task operations.
Extends
Properties
_meta?
optional_meta?:object
Defined in: src/shared/protocol.ts:256
Experimental
Metadata from the original request.
Index Signature
[key: string]: unknown
io.modelcontextprotocol/related-task?
optionalio.modelcontextprotocol/related-task?:object
If specified, this request is related to the provided task.
io.modelcontextprotocol/related-task.taskId
taskId:
string
progressToken?
optionalprogressToken?:string|number
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
Inherited from
RequestHandlerExtra._meta
authInfo?
optionalauthInfo?:AuthInfo
Defined in: src/shared/protocol.ts:246
Experimental
Information about a validated access token, provided to request handlers.
Inherited from
RequestHandlerExtra.authInfo
closeSSEStream?
optionalcloseSSEStream?: () =>void
Defined in: src/shared/protocol.ts:294
Experimental
Closes the SSE stream for this request, triggering client reconnection. Only available when using StreamableHTTPServerTransport with eventStore configured. Use this to implement polling behavior during long-running operations.
Returns
void
Inherited from
RequestHandlerExtra.closeSSEStream
closeStandaloneSSEStream?
optionalcloseStandaloneSSEStream?: () =>void
Defined in: src/shared/protocol.ts:301
Experimental
Closes the standalone GET SSE stream, triggering client reconnection. Only available when using StreamableHTTPServerTransport with eventStore configured. Use this to implement polling behavior for server-initiated notifications.
Returns
void
Inherited from
RequestHandlerExtra.closeStandaloneSSEStream
requestId
requestId:
RequestId
Defined in: src/shared/protocol.ts:262
Experimental
The JSON-RPC ID of the request being handled. This can be useful for tracking or logging purposes.
Inherited from
RequestHandlerExtra.requestId
requestInfo?
optionalrequestInfo?:RequestInfo
Defined in: src/shared/protocol.ts:273
Experimental
The original HTTP request.
Inherited from
RequestHandlerExtra.requestInfo
sendNotification
sendNotification: (
notification) =>Promise<void>
Defined in: src/shared/protocol.ts:280
Experimental
Sends a notification that relates to the current request being handled.
This is used by certain transports to correctly associate related messages.
Parameters
notification
Returns
Promise<void>
Inherited from
RequestHandlerExtra.sendNotification
sendRequest
sendRequest: <
U>(request,resultSchema,options?) =>Promise<SchemaOutput<U>>
Defined in: src/shared/protocol.ts:287
Experimental
Sends a request that relates to the current request being handled.
This is used by certain transports to correctly associate related messages.
Type Parameters
U
U extends AnySchema
Parameters
request
resultSchema
U
options?
Returns
Promise<SchemaOutput<U>>
Inherited from
RequestHandlerExtra.sendRequest
sessionId?
optionalsessionId?:string
Defined in: src/shared/protocol.ts:251
Experimental
The session ID from the transport, if available.
Inherited from
RequestHandlerExtra.sessionId
signal
signal:
AbortSignal
Defined in: src/shared/protocol.ts:241
Experimental
An abort signal used to communicate if the request was cancelled from the sender's side.
Inherited from
RequestHandlerExtra.signal
taskId
taskId:
string
Defined in: src/experimental/tasks/interfaces.ts:42
Experimental
Overrides
RequestHandlerExtra.taskId
taskRequestedTtl?
optionaltaskRequestedTtl?:number
Defined in: src/shared/protocol.ts:268
Experimental
Inherited from
RequestHandlerExtra.taskRequestedTtl
taskStore
taskStore:
RequestTaskStore
Defined in: src/experimental/tasks/interfaces.ts:43
Experimental
Overrides
RequestHandlerExtra.taskStore
TaskStatusMessage
Defined in: src/shared/responseMessage.ts:13
Task status update message
Extends
Properties
task
task:
object
Defined in: src/shared/responseMessage.ts:15
createdAt
createdAt:
string
ISO 8601 timestamp when the task was created.
lastUpdatedAt
lastUpdatedAt:
string
ISO 8601 timestamp when the task was last updated.
pollInterval?
optionalpollInterval?:number
status
status:
"working"|"input_required"|"completed"|"failed"|"cancelled"=TaskStatusSchema
statusMessage?
optionalstatusMessage?:string
Optional diagnostic message for failed tasks or other status information.
taskId
taskId:
string
ttl
ttl:
number|null
Time in milliseconds to keep task results available after completion. If null, the task has unlimited lifetime until manually cleaned up.
type
type:
"taskStatus"
Defined in: src/shared/responseMessage.ts:14
Overrides
TaskStore
Defined in: src/experimental/tasks/interfaces.ts:211
Experimental
Interface for storing and retrieving task state and results.
Similar to Transport, this allows pluggable task storage implementations (in-memory, database, distributed cache, etc.).
Methods
createTask()
createTask(
taskParams,requestId,request,sessionId?):Promise<{createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; }>
Defined in: src/experimental/tasks/interfaces.ts:229
Experimental
Creates a new task with the given creation parameters and original request. The implementation must generate a unique taskId and createdAt timestamp.
TTL Management:
- The implementation receives the TTL suggested by the requestor via taskParams.ttl
- The implementation MAY override the requested TTL (e.g., to enforce limits)
- The actual TTL used MUST be returned in the Task object
- Null TTL indicates unlimited task lifetime (no automatic cleanup)
- Cleanup SHOULD occur automatically after TTL expires, regardless of task status
Parameters
taskParams
The task creation parameters from the request (ttl, pollInterval)
requestId
The JSON-RPC request ID
request
The original request that triggered task creation
method
string = ...
params?
{[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; } = ...
params._meta?
{[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; } = ...
See General fields: _meta for notes on _meta usage.
params._meta.io.modelcontextprotocol/related-task?
{ taskId: string; } = ...
If specified, this request is related to the provided task.
params._meta.io.modelcontextprotocol/related-task.taskId
string = ...
params._meta.progressToken?
string | number = ...
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
sessionId?
string
Optional session ID for binding the task to a specific session
Returns
Promise<{ createdAt: string; lastUpdatedAt: string; pollInterval?: number; status: "working" | "input_required" | "completed" | "failed" | "cancelled"; statusMessage?: string; taskId: string; ttl: number | null; }>
The created task object
getTask()
getTask(
taskId,sessionId?):Promise<{createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; } |null>
Defined in: src/experimental/tasks/interfaces.ts:238
Experimental
Gets the current status of a task.
Parameters
taskId
string
The task identifier
sessionId?
string
Optional session ID for binding the query to a specific session
Returns
Promise<{ createdAt: string; lastUpdatedAt: string; pollInterval?: number; status: "working" | "input_required" | "completed" | "failed" | "cancelled"; statusMessage?: string; taskId: string; ttl: number | null; } | null>
The task object, or null if it does not exist
getTaskResult()
getTaskResult(
taskId,sessionId?):Promise<{[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; }; }>
Defined in: src/experimental/tasks/interfaces.ts:257
Experimental
Retrieves the stored result of a task.
Parameters
taskId
string
The task identifier
sessionId?
string
Optional session ID for binding the query to a specific session
Returns
Promise<{[key: string]: unknown; _meta?: {[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; }; }>
The stored result
listTasks()
listTasks(
cursor?,sessionId?):Promise<{nextCursor?:string;tasks:object[]; }>
Defined in: src/experimental/tasks/interfaces.ts:276
Experimental
Lists tasks, optionally starting from a pagination cursor.
Parameters
cursor?
string
Optional cursor for pagination
sessionId?
string
Optional session ID for binding the query to a specific session
Returns
Promise<{ nextCursor?: string; tasks: object[]; }>
An object containing the tasks array and an optional nextCursor
storeTaskResult()
storeTaskResult(
taskId,status,result,sessionId?):Promise<void>
Defined in: src/experimental/tasks/interfaces.ts:248
Experimental
Stores the result of a task and sets its final status.
Parameters
taskId
string
The task identifier
status
"completed" | "failed"
The final status: 'completed' for success, 'failed' for errors
result
The result to store
_meta?
{[key: string]: unknown; io.modelcontextprotocol/related-task?: { taskId: string; }; progressToken?: string | number; } = ...
See MCP specification for notes on _meta usage.
_meta.io.modelcontextprotocol/related-task?
{ taskId: string; } = ...
If specified, this request is related to the provided task.
_meta.io.modelcontextprotocol/related-task.taskId
string = ...
_meta.progressToken?
string | number = ...
If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.
sessionId?
string
Optional session ID for binding the operation to a specific session
Returns
Promise<void>
updateTaskStatus()
updateTaskStatus(
taskId,status,statusMessage?,sessionId?):Promise<void>
Defined in: src/experimental/tasks/interfaces.ts:267
Experimental
Updates a task's status (e.g., to 'cancelled', 'failed', 'completed').
Parameters
taskId
string
The task identifier
status
"working" | "input_required" | "completed" | "failed" | "cancelled"
The new status
statusMessage?
string
Optional diagnostic message for failed tasks or other status information
sessionId?
string
Optional session ID for binding the operation to a specific session
Returns
Promise<void>
ToolTaskHandler
Defined in: src/experimental/tasks/interfaces.ts:82
Experimental
Interface for task-based tool handlers.
Type Parameters
Args
Args extends undefined | ZodRawShapeCompat | AnySchema = undefined
Properties
createTask
createTask:
BaseToolCallback<{[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };task: {createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; }; },CreateTaskRequestHandlerExtra>
Defined in: src/experimental/tasks/interfaces.ts:83
Experimental
getTask
getTask:
BaseToolCallback<{_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };createdAt:string;lastUpdatedAt:string;pollInterval?:number;status:"working"|"input_required"|"completed"|"failed"|"cancelled";statusMessage?:string;taskId:string;ttl:number|null; },TaskRequestHandlerExtra>
Defined in: src/experimental/tasks/interfaces.ts:84
Experimental
getTaskResult
getTaskResult:
BaseToolCallback<{[key:string]:unknown;_meta?: {[key:string]:unknown;io.modelcontextprotocol/related-task?: {taskId:string; };progressToken?:string|number; };content: ({_meta?: {[key:string]:unknown; };annotations?: {audience?: ("user"|"assistant")[];lastModified?:string;priority?:number; };text:string;type:"text"; } | {_meta?: {[key:string]:unknown; };annotations?: {audience?: ("user"|"assistant")[];lastModified?:string;priority?:number; };data:string;mimeType:string;type:"image"; } | {_meta?: {[key:string]:unknown; };annotations?: {audience?: ("user"|"assistant")[];lastModified?:string;priority?:number; };data:string;mimeType:string;type:"audio"; } | {_meta?: {[key:string]:unknown; };annotations?: {audience?: ("user"|"assistant")[];lastModified?:string;priority?:number; };description?:string;icons?:object[];mimeType?:string;name:string;size?:number;title?:string;type:"resource_link";uri:string; } | {_meta?: {[key:string]:unknown; };annotations?: {audience?: ("user"|"assistant")[];lastModified?:string;priority?:number; };resource: {_meta?: {[key:string]:unknown; };mimeType?:string;text:string;uri:string; } | {_meta?: {[key:string]:unknown; };blob:string;mimeType?:string;uri:string; };type:"resource"; })[];isError?:boolean;structuredContent?: {[key:string]:unknown; }; },TaskRequestHandlerExtra>
Defined in: src/experimental/tasks/interfaces.ts:85
Experimental
Type Aliases
BaseToolCallback
BaseToolCallback<
SendResultT,ExtraT,Args> =ArgsextendsZodRawShapeCompat? (args,extra) =>SendResultT|Promise<SendResultT> :ArgsextendsAnySchema? (args,extra) =>SendResultT|Promise<SendResultT> : (extra) =>SendResultT|Promise<SendResultT>
Defined in: src/experimental/tasks/interfaces.ts:50
Experimental
Base callback type for tool handlers.
Type Parameters
SendResultT
SendResultT extends Result
ExtraT
ExtraT extends RequestHandlerExtra<ServerRequest, ServerNotification>
Args
Args extends undefined | ZodRawShapeCompat | AnySchema = undefined
CreateTaskRequestHandler
CreateTaskRequestHandler<
SendResultT,Args> =BaseToolCallback<SendResultT,CreateTaskRequestHandlerExtra,Args>
Defined in: src/experimental/tasks/interfaces.ts:64
Experimental
Handler for creating a task.
Type Parameters
SendResultT
SendResultT extends Result
Args
Args extends undefined | ZodRawShapeCompat | AnySchema = undefined
QueuedMessage
QueuedMessage =
QueuedRequest|QueuedNotification|QueuedResponse|QueuedError
Defined in: src/experimental/tasks/interfaces.ts:103
Represents a message queued for side-channel delivery via tasks/result.
This is a serializable data structure that can be stored in external systems. All fields are JSON-serializable.
ResponseMessage
ResponseMessage<
T> =TaskStatusMessage|TaskCreatedMessage|ResultMessage<T> |ErrorMessage
Defined in: src/shared/responseMessage.ts:47
Union type representing all possible messages that can be yielded during request processing. Note: Progress notifications are handled through the existing onprogress callback mechanism. Side-channeled messages (server requests/notifications) are handled through registered handlers.
Type Parameters
T
T extends Result
TaskRequestHandler
TaskRequestHandler<
SendResultT,Args> =BaseToolCallback<SendResultT,TaskRequestHandlerExtra,Args>
Defined in: src/experimental/tasks/interfaces.ts:73
Experimental
Handler for task operations (get, getResult).
Type Parameters
SendResultT
SendResultT extends Result
Args
Args extends undefined | ZodRawShapeCompat | AnySchema = undefined
TaskToolExecution
TaskToolExecution<
TaskSupport> =Omit<ToolExecution,"taskSupport"> &object
Defined in: src/experimental/tasks/interfaces.ts:93
Experimental
Task-specific execution configuration. taskSupport cannot be 'forbidden' for task-based tools.
Type Declaration
taskSupport
taskSupport:
TaskSupportextends"forbidden"|undefined?never:TaskSupport
Type Parameters
TaskSupport
TaskSupport = ToolExecution["taskSupport"]
Functions
assertClientRequestTaskCapability()
assertClientRequestTaskCapability(
requests,method,entityName):void
Defined in: src/experimental/tasks/helpers.ts:62
Experimental
Asserts that task creation is supported for sampling/createMessage or elicitation/create. Used by Server.assertTaskCapability and Client.assertTaskHandlerCapability.
Parameters
requests
TaskRequestsCapability | undefined
The task requests capability object
method
string
The method being checked
entityName
"Server" | "Client"
'Server' or 'Client' for error messages
Returns
void
Throws
Error if the capability is not supported
assertToolsCallTaskCapability()
assertToolsCallTaskCapability(
requests,method,entityName):void
Defined in: src/experimental/tasks/helpers.ts:29
Experimental
Asserts that task creation is supported for tools/call. Used by Client.assertTaskCapability and Server.assertTaskHandlerCapability.
Parameters
requests
TaskRequestsCapability | undefined
The task requests capability object
method
string
The method being checked
entityName
"Server" | "Client"
'Server' or 'Client' for error messages
Returns
void
Throws
Error if the capability is not supported
isTerminal()
isTerminal(
status):boolean
Defined in: src/experimental/tasks/interfaces.ts:287
Experimental
Checks if a task status represents a terminal state. Terminal states are those where the task has finished and will not change.
Parameters
status
"working" | "input_required" | "completed" | "failed" | "cancelled"
The task status to check
Returns
boolean
True if the status is terminal (completed, failed, or cancelled)
takeResult()
takeResult<
T,U>(it):Promise<T>
Defined in: src/shared/responseMessage.ts:60
Type Parameters
T
T extends object
U
U extends AsyncGenerator<ResponseMessage<T>, any, any>
Parameters
it
U
Returns
Promise<T>
toArrayAsync()
toArrayAsync<
T>(it):Promise<AsyncGeneratorValue<T>[]>
Defined in: src/shared/responseMessage.ts:51
Type Parameters
T
T extends AsyncGenerator<unknown, any, any>
Parameters
it
T
Returns
Promise<AsyncGeneratorValue<T>[]>
References
CancelTaskRequest
Re-exports CancelTaskRequest
CancelTaskRequestSchema
Re-exports CancelTaskRequestSchema
CancelTaskResult
Re-exports CancelTaskResult
CancelTaskResultSchema
Re-exports CancelTaskResultSchema
ClientTasksCapabilitySchema
Re-exports ClientTasksCapabilitySchema
CreateTaskResult
Re-exports CreateTaskResult
CreateTaskResultSchema
Re-exports CreateTaskResultSchema
GetTaskPayloadRequest
Re-exports GetTaskPayloadRequest
GetTaskPayloadRequestSchema
Re-exports GetTaskPayloadRequestSchema
GetTaskRequest
Re-exports GetTaskRequest
GetTaskRequestSchema
Re-exports GetTaskRequestSchema
GetTaskResult
Re-exports GetTaskResult
GetTaskResultSchema
Re-exports GetTaskResultSchema
ListTasksRequest
Re-exports ListTasksRequest
ListTasksRequestSchema
Re-exports ListTasksRequestSchema
ListTasksResult
Re-exports ListTasksResult
ListTasksResultSchema
Re-exports ListTasksResultSchema
RelatedTaskMetadata
Re-exports RelatedTaskMetadata
RelatedTaskMetadataSchema
Re-exports RelatedTaskMetadataSchema
ServerTasksCapabilitySchema
Re-exports ServerTasksCapabilitySchema
Task
Re-exports Task
TaskCreationParams
Re-exports TaskCreationParams
TaskCreationParamsSchema
Re-exports TaskCreationParamsSchema
TaskSchema
Re-exports TaskSchema
TaskStatusNotification
Re-exports TaskStatusNotification
TaskStatusNotificationParams
Re-exports TaskStatusNotificationParams
TaskStatusNotificationParamsSchema
Re-exports TaskStatusNotificationParamsSchema
TaskStatusNotificationSchema
Re-exports TaskStatusNotificationSchema