tasks conformance command, but inside your own test runner or CI pipeline.
Tasks conformance provokes and then polls a real task, so it requires a
persistent connection. It is not available in hosted mode.
Import
Basic usage
execution.taskSupport, which the 2026-07-28 ToolSchema strips, so without toolName the task-dependent checks cannot run and run() returns outcome: "incomplete" with passed: false:
MCPTasksConformanceConfig
MCPTasksConformanceConfig extends the standard MCPServerConfig, so it accepts the same HTTP and stdio connection settings as MCPClientManager.
Additional properties:
Example with a focused check set:
Check ids
Result shape
run() returns an MCPTasksConformanceResult.
The
discovery object includes:
Each
MCPTasksCheckResult includes:
idcategorytitledescriptionstatus—"passed","failed", or"skipped"skipReason— set wheneverstatusis"skipped":"not-applicable"(the check cannot apply to this server, so it does not hold the run back) or"could-not-run"(the check applies but was never exercised, which makes the runincomplete)durationMs- optional
details - optional
warnings - optional
error
CI reporting
Use the shared reporting helpers to produce JUnit XML or JSON artifacts:toConformanceReport accepts protocol, OAuth, apps, and tasks results and normalizes them into a single report shape, so the SDK and CLI JUnit output are byte-identical for the same result.
Notes
- Declaration hygiene is asserted against captured outbound JSON-RPC bytes, not re-derived from intent.
- The
tasks-undeclared-creation-refusedandtasks-undeclared-capability-rejectedchecks apply to the extension wire only and are skipped on the legacy wire. tasks-undeclared-capability-rejectedneeds a live task to probe with, and its probes run after every check that reads that task so a wrongly-acceptedtasks/updateortasks/cancelcannot corrupt the rest of the run. A server with nosubscriptions/listen(-32601) gets that sub-probe reported as a warning rather than a failure.- The
tasks-mcp-name-routingcheck applies to HTTP transports only and is skipped for stdio servers. - Checks that require a created task report
skipReason: "could-not-run"when no probe tool resolves, when the named tool is not listed, when the probed call produced no task, or when the task never became readable. Any of those makes the runincomplete; a skip can never add up to a pass. - CLI exit codes:
0forpassed,1forfailed,3forincomplete(2stays reserved for usage errors).

