{ "$schema": "http://json-schema.org/draft-07/schema#", "description": "MCP Tasks Extension Schema. Contains only task-related definitions from the MCP 2025-11-25 specification. Base types (Result, JSONRPCRequest, JSONRPCNotification, etc.) are defined in the core MCP schema.", "$comment": "Extension Identifier: io.modelcontextprotocol/tasks. Core MCP types (Result, JSONRPCRequest, etc.) are structurally inlined in this schema for portability. The authoritative definitions are in the core schema at https://github.com/modelcontextprotocol/modelcontextprotocol/tree/main/schema/2025-11-25", "$defs": { "TaskStatus": { "description": "The status of a task.", "enum": ["working", "input_required", "completed", "failed", "cancelled"], "type": "string" }, "TaskMetadata": { "description": "Metadata for augmenting a request with task execution.\nInclude this in the `task` field of the request parameters.", "properties": { "ttl": { "description": "Requested duration in milliseconds to retain task from creation.", "type": "integer" } }, "type": "object" }, "RelatedTaskMetadata": { "description": "Metadata for associating messages with a task.\nInclude this in the `_meta` field under the key `io.modelcontextprotocol/related-task`.", "properties": { "taskId": { "description": "The task identifier this message is associated with.", "type": "string" } }, "required": ["taskId"], "type": "object" }, "Task": { "description": "Data associated with a task.", "properties": { "taskId": { "description": "The task identifier.", "type": "string" }, "status": { "$ref": "#/$defs/TaskStatus", "description": "Current task state." }, "statusMessage": { "description": "Optional human-readable message describing the current task state.\nThis can provide context for any status, including:\n- Reasons for \"cancelled\" status\n- Summaries for \"completed\" status\n- Diagnostic information for \"failed\" status (e.g., error details, what went wrong)", "type": "string" }, "createdAt": { "description": "ISO 8601 timestamp when the task was created.", "type": "string" }, "lastUpdatedAt": { "description": "ISO 8601 timestamp when the task was last updated.", "type": "string" }, "ttl": { "description": "Actual retention duration from creation in milliseconds, null for unlimited.", "type": ["integer", "null"] }, "pollInterval": { "description": "Suggested polling interval in milliseconds.", "type": "integer" } }, "required": ["taskId", "status", "createdAt", "lastUpdatedAt", "ttl"], "type": "object" }, "CreateTaskResult": { "description": "A response to a task-augmented request.", "properties": { "_meta": { "additionalProperties": {}, "description": "See the core MCP specification for notes on `_meta` usage.", "type": "object" }, "task": { "$ref": "#/$defs/Task" } }, "required": ["task"], "type": "object" }, "TaskAugmentedRequestParams": { "description": "Common params for any task-augmented request.", "properties": { "_meta": { "additionalProperties": {}, "description": "See the core MCP specification for notes on `_meta` usage.", "properties": { "progressToken": { "description": "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.", "type": ["string", "integer"] } }, "type": "object" }, "task": { "$ref": "#/$defs/TaskMetadata", "description": "If specified, the caller is requesting task-augmented execution for this request.\nThe request will return a CreateTaskResult immediately, and the actual result can be retrieved later via tasks/result.\n\nTask augmentation is subject to capability negotiation - receivers MUST declare support for task augmentation of specific request types in their capabilities." } }, "type": "object" }, "GetTaskRequest": { "description": "A request to retrieve the state of a task.", "properties": { "id": { "description": "A unique identifier for the request.", "type": ["string", "integer"] }, "jsonrpc": { "const": "2.0", "type": "string" }, "method": { "const": "tasks/get", "type": "string" }, "params": { "properties": { "taskId": { "description": "The task identifier to query.", "type": "string" } }, "required": ["taskId"], "type": "object" } }, "required": ["id", "jsonrpc", "method", "params"], "type": "object" }, "GetTaskResult": { "description": "The response to a tasks/get request.", "allOf": [ { "properties": { "_meta": { "additionalProperties": {}, "description": "See the core MCP specification for notes on `_meta` usage.", "type": "object" } }, "type": "object" }, { "$ref": "#/$defs/Task" } ] }, "GetTaskPayloadRequest": { "description": "A request to retrieve the result of a completed task.", "properties": { "id": { "description": "A unique identifier for the request.", "type": ["string", "integer"] }, "jsonrpc": { "const": "2.0", "type": "string" }, "method": { "const": "tasks/result", "type": "string" }, "params": { "properties": { "taskId": { "description": "The task identifier to retrieve results for.", "type": "string" } }, "required": ["taskId"], "type": "object" } }, "required": ["id", "jsonrpc", "method", "params"], "type": "object" }, "GetTaskPayloadResult": { "description": "The response to a tasks/result request.\nThe structure matches the result type of the original request.\nFor example, a tools/call task would return the CallToolResult structure.", "additionalProperties": {}, "properties": { "_meta": { "additionalProperties": {}, "description": "See the core MCP specification for notes on `_meta` usage.", "type": "object" } }, "type": "object" }, "CancelTaskRequest": { "description": "A request to cancel a task.", "properties": { "id": { "description": "A unique identifier for the request.", "type": ["string", "integer"] }, "jsonrpc": { "const": "2.0", "type": "string" }, "method": { "const": "tasks/cancel", "type": "string" }, "params": { "properties": { "taskId": { "description": "The task identifier to cancel.", "type": "string" } }, "required": ["taskId"], "type": "object" } }, "required": ["id", "jsonrpc", "method", "params"], "type": "object" }, "CancelTaskResult": { "description": "The response to a tasks/cancel request.", "allOf": [ { "properties": { "_meta": { "additionalProperties": {}, "description": "See the core MCP specification for notes on `_meta` usage.", "type": "object" } }, "type": "object" }, { "$ref": "#/$defs/Task" } ] }, "ListTasksRequest": { "description": "A request to retrieve a list of tasks.", "properties": { "id": { "description": "A unique identifier for the request.", "type": ["string", "integer"] }, "jsonrpc": { "const": "2.0", "type": "string" }, "method": { "const": "tasks/list", "type": "string" }, "params": { "properties": { "cursor": { "description": "An opaque token representing the current pagination position.", "type": "string" } }, "type": "object" } }, "required": ["id", "jsonrpc", "method"], "type": "object" }, "ListTasksResult": { "description": "The response to a tasks/list request.", "properties": { "_meta": { "additionalProperties": {}, "description": "See the core MCP specification for notes on `_meta` usage.", "type": "object" }, "nextCursor": { "description": "An opaque token representing the pagination position after the last returned result.\nIf present, there may be more results available.", "type": "string" }, "tasks": { "items": { "$ref": "#/$defs/Task" }, "type": "array" } }, "required": ["tasks"], "type": "object" }, "TaskStatusNotificationParams": { "description": "Parameters for a `notifications/tasks/status` notification.", "allOf": [ { "properties": { "_meta": { "additionalProperties": {}, "description": "See the core MCP specification for notes on `_meta` usage.", "type": "object" } }, "type": "object" }, { "$ref": "#/$defs/Task" } ] }, "TaskStatusNotification": { "description": "An optional notification from the receiver to the requestor, informing them that a task's status has changed. Receivers are not required to send these notifications.", "properties": { "jsonrpc": { "const": "2.0", "type": "string" }, "method": { "const": "notifications/tasks/status", "type": "string" }, "params": { "$ref": "#/$defs/TaskStatusNotificationParams" } }, "required": ["jsonrpc", "method", "params"], "type": "object" }, "TaskServerCapabilities": { "description": "Task-related server capabilities. Include this in the server's capabilities object during initialization.", "properties": { "tasks": { "properties": { "list": { "description": "Whether this server supports tasks/list.", "type": "object" }, "cancel": { "description": "Whether this server supports tasks/cancel.", "type": "object" }, "requests": { "properties": { "tools": { "properties": { "call": { "description": "Whether the server supports task-augmented tools/call requests.", "type": "object" } }, "type": "object" } }, "type": "object" } }, "type": "object" } }, "type": "object" }, "TaskClientCapabilities": { "description": "Task-related client capabilities. Include this in the client's capabilities object during initialization.", "properties": { "tasks": { "properties": { "list": { "description": "Whether this client supports tasks/list.", "type": "object" }, "cancel": { "description": "Whether this client supports tasks/cancel.", "type": "object" }, "requests": { "properties": { "sampling": { "properties": { "createMessage": { "description": "Whether the client supports task-augmented sampling/createMessage requests.", "type": "object" } }, "type": "object" }, "elicitation": { "properties": { "create": { "description": "Whether the client supports task-augmented elicitation/create requests.", "type": "object" } }, "type": "object" } }, "type": "object" } }, "type": "object" } }, "type": "object" }, "ToolTaskSupport": { "description": "Task support declaration for individual tools.\n- \"forbidden\": Tool does not support task-augmented execution (default when absent)\n- \"optional\": Tool may support task-augmented execution\n- \"required\": Tool requires task-augmented execution", "enum": ["forbidden", "optional", "required"], "type": "string" } } }