MCP TypeScript SDK (V2)
    Preparing search index...

    Interface for task-based tool handlers.

    Task-based tools split a long-running operation into three phases: createTask, getTask, and getTaskResult.

    registerToolTask for registration.

    interface ToolTaskHandler<Args extends AnySchema | undefined = undefined> {
        createTask: BaseToolCallback<
            {
                _meta?: {
                    "io.modelcontextprotocol/related-task"?: { taskId: string };
                    progressToken?: string | number;
                    [key: string]: unknown;
                };
                task: {
                    createdAt: string;
                    lastUpdatedAt: string;
                    pollInterval?: number;
                    status: | "working"
                    | "input_required"
                    | "completed"
                    | "failed"
                    | "cancelled";
                    statusMessage?: string;
                    taskId: string;
                    ttl: number
                    | null;
                };
                [key: string]: unknown;
            },
            CreateTaskServerContext,
        >;
        getTask: BaseToolCallback<
            {
                _meta?: {
                    "io.modelcontextprotocol/related-task"?: { taskId: string };
                    progressToken?: string | number;
                    [key: string]: unknown;
                };
                createdAt: string;
                lastUpdatedAt: string;
                pollInterval?: number;
                status: | "working"
                | "input_required"
                | "completed"
                | "failed"
                | "cancelled";
                statusMessage?: string;
                taskId: string;
                ttl: number
                | null;
            },
            TaskServerContext,
        >;
        getTaskResult: BaseToolCallback<
            {
                _meta?: {
                    "io.modelcontextprotocol/related-task"?: { taskId: string };
                    progressToken?: string | number;
                    [key: string]: unknown;
                };
                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;
                        };
                        resource: | {
                            _meta?: { [key: string]: unknown };
                            mimeType?: string;
                            text: string;
                            uri: string;
                        }
                        | {
                            _meta?: { [key: string]: unknown };
                            blob: string;
                            mimeType?: string;
                            uri: string;
                        };
                        type: "resource";
                    }
                    | {
                        _meta?: { [key: string]: unknown };
                        annotations?: {
                            audience?: ("user" | "assistant")[];
                            lastModified?: string;
                            priority?: number;
                        };
                        description?: string;
                        icons?: {
                            mimeType?: string;
                            sizes?: string[];
                            src: string;
                            theme?: "light"
                            | "dark";
                        }[];
                        mimeType?: string;
                        name: string;
                        title?: string;
                        type: "resource_link";
                        uri: string;
                    }
                )[];
                isError?: boolean;
                structuredContent?: { [key: string]: unknown };
                [key: string]: unknown;
            },
            TaskServerContext,
        >;
    }

    Type Parameters

    • Args extends AnySchema | undefined = undefined
    Index

    Properties

    createTask: BaseToolCallback<
        {
            _meta?: {
                "io.modelcontextprotocol/related-task"?: { taskId: string };
                progressToken?: string | number;
                [key: string]: unknown;
            };
            task: {
                createdAt: string;
                lastUpdatedAt: string;
                pollInterval?: number;
                status: | "working"
                | "input_required"
                | "completed"
                | "failed"
                | "cancelled";
                statusMessage?: string;
                taskId: string;
                ttl: number
                | null;
            };
            [key: string]: unknown;
        },
        CreateTaskServerContext,
    >

    Called on the initial tools/call request.

    Creates a task via ctx.task.store.createTask(...), starts any background work, and returns the task object.

    getTask: BaseToolCallback<
        {
            _meta?: {
                "io.modelcontextprotocol/related-task"?: { taskId: string };
                progressToken?: string | number;
                [key: string]: unknown;
            };
            createdAt: string;
            lastUpdatedAt: string;
            pollInterval?: number;
            status: | "working"
            | "input_required"
            | "completed"
            | "failed"
            | "cancelled";
            statusMessage?: string;
            taskId: string;
            ttl: number
            | null;
        },
        TaskServerContext,
    >

    Handler for tasks/get requests.

    getTaskResult: BaseToolCallback<
        {
            _meta?: {
                "io.modelcontextprotocol/related-task"?: { taskId: string };
                progressToken?: string | number;
                [key: string]: unknown;
            };
            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;
                    };
                    resource: | {
                        _meta?: { [key: string]: unknown };
                        mimeType?: string;
                        text: string;
                        uri: string;
                    }
                    | {
                        _meta?: { [key: string]: unknown };
                        blob: string;
                        mimeType?: string;
                        uri: string;
                    };
                    type: "resource";
                }
                | {
                    _meta?: { [key: string]: unknown };
                    annotations?: {
                        audience?: ("user" | "assistant")[];
                        lastModified?: string;
                        priority?: number;
                    };
                    description?: string;
                    icons?: {
                        mimeType?: string;
                        sizes?: string[];
                        src: string;
                        theme?: "light"
                        | "dark";
                    }[];
                    mimeType?: string;
                    name: string;
                    title?: string;
                    type: "resource_link";
                    uri: string;
                }
            )[];
            isError?: boolean;
            structuredContent?: { [key: string]: unknown };
            [key: string]: unknown;
        },
        TaskServerContext,
    >

    Handler for tasks/result requests.