MCP Tasks Extension Validator
Validate a Model Context Protocol Task/status object, a tasks/get, tasks/cancel, or tasks/list message, a task-creation request, or a tasks capability negotiation object against the official Tasks extension shape. Runs entirely in your browser.
π Runs entirely in your browser β no data is ever sent anywhereWhat the Tasks extension is for
MCP's Tasks extension lets a server hand back a durable task handle instead of blocking the connection on a slow operation β a CI run, a batch job, or a step waiting on human approval. The caller polls tasks/get (or waits for a notifications/tasks/status push) until the task reaches a terminal status, then fetches the actual output with a separate tasks/result request. It's shipped in the official TypeScript SDK's experimental tasks module, marked explicitly as experimental and subject to change β the shape checked here reflects the current SDK, not a settled, unchangeable spec.
What this tool checks
Paste a bare Task/status object (taskId, status, ttl, createdAt, lastUpdatedAt, plus optional pollInterval/statusMessage) and it checks every field's type and the five valid status values (working, input_required, completed, failed, cancelled) β including that ttl is present and either a number or null, since treating it as optional and omitting it is a common but invalid shortcut. It also catches a natural misunderstanding: putting the actual result or error directly on the task object, when the schema requires fetching a completed task's payload separately via tasks/result. It recognizes and validates the full family of related shapes too β a wrapped CreateTaskResult ({ task: {...} }), a ListTasksResult ({ tasks: [...] }), tasks/get / tasks/result / tasks/cancel / tasks/list requests, a notifications/tasks/status notification, a request that asks for task-backed execution via params.task, the io.modelcontextprotocol/related-task _meta key, and a capabilities.tasks negotiation object (flagging the common mistake of passing true instead of an empty object {} for a support flag, following MCP's own capability-presence convention).
Frequently asked questions
What is the MCP Tasks extension?
A mechanism that lets an MCP server represent a slow operation as a pollable task instead of blocking the request β the server returns a task handle immediately, the client polls its status (or receives push notifications), and fetches the final result separately once the task reaches a terminal state (completed, failed, or cancelled).
Why does my parser reject ttl: null?
It shouldn't β ttl on a Task/status object is required to be present but is allowed to be null (meaning no fixed expiry). The common bug this catches is the opposite: omitting the ttl key entirely because it looks optional, which is invalid β the key must be present even when its value is null.
Why is there no "result" field directly on my task object?
That's intentional, not a bug in your data β the Task/status object only ever carries status metadata (taskId, status, timestamps). The actual output of a completed task is fetched with a separate tasks/result request. If your server puts the result directly on the task object, a strict client following the schema won't know where to find it.
Is the Tasks extension a finished, stable spec?
No β it ships in the official SDK's experimental namespace and its own source carries an explicit warning that the shape may change without notice. This tool validates against the extension as currently implemented; treat a flagged field as a signal to double-check the latest SDK, not an unappealable verdict.
Is my pasted data sent anywhere?
No. Parsing and validation both run locally in your browser with plain JavaScript β nothing you paste is transmitted or stored.
Related AI tools
Token Counter
Count tokens for GPT-5, GPT-4o, and older OpenAI models as you type, using the exact same tokenizer OpenAI's API uses.
Citations Viewer
Paste a Claude Citations API response to see the answer text with each cited passage highlighted and matched to its source document, location, and quoted text.
Signature Validator
Paste a Gemini 3 request or response to check its function-calling turns for missing thoughtSignature fields, functionResponse ordering mistakes, and missing id echoes β the exact structural issues that cause a 400 error or silently broken multi-turn tool use.
MCP Validator
Paste a Model Context Protocol tool definition β a single tool object, an array, or a full tools/list response β to check it against the spec: missing name or inputSchema, a name most clients will reject, a required property that doesn't exist, malformed annotations, and more.
Bracketly is free and open-source. If this tool saved you time, consider supporting it.
β Buy me a coffee