Skip to content

Tool calls fail with "invalid outputSchema: unsupported dialect" — outputSchema declares draft-07 but client validator expects 2020-12 #577

Description

@timhargreaves

Note: While the text below is AI generated, it was done so at my direction due to a bug I am personally experiencing; it is not an automated detector or reporter.

Summary

Every tool call against the Todoist MCP server fails before it runs, with a client-side schema validation error. The tool's outputSchema declares "$schema": "http://json-schema.org/draft-07/schema#", but the connecting client's default validator only supports JSON Schema 2020-12 and rejects the draft-07 dialect tag outright. The server is unreachable through this client until the schema is fixed.

Environment

  • MCP client: Claude (Cowork mode, desktop app), MCP tool-loading layer
  • Server: Todoist MCP (mcp__todoist__* tools, connected via the Claude Connectors Directory / official Todoist connector)
  • Date observed: 2026-08-17

Steps to reproduce

  1. Connect the Todoist MCP server to a client that validates outputSchema against JSON Schema 2020-12 by default.
  2. Call any Todoist tool, e.g. find-tasks, find-sections, get-overview, search, or user-info.
  3. The call fails immediately, without reaching the server logic.

Expected behavior

The tool call executes normally and returns task/project/label data.

Actual behavior

Every tool called returns the same class of error before any request is sent, e.g.:

Error: Tool 'find-tasks' has an invalid outputSchema: JSON Schema declares an unsupported dialect ("$schema": "http://json-schema.org/draft-07/schema#"). The default validator supports JSON Schema 2020-12 only; pass a pre-configured Ajv instance to AjvJs

The same error, with the tool name substituted, was reproduced on at least: find-tasks, find-sections, get-overview, search, user-info. This suggests every tool in the server shares the same (or a similarly generated) outputSchema header and is equally affected — the server is unusable through this client, not just one tool.

Suspected cause

The server's tool outputSchema objects include an explicit "$schema": "http://json-schema.org/draft-07/schema#" field. MCP has been moving toward standardizing on JSON Schema 2020-12 as the default/expected dialect for embedded schemas (tool inputSchema/outputSchema, elicitation requestedSchema) — see modelcontextprotocol/modelcontextprotocol SEP-1613. Clients built against that expectation validate the dialect tag strictly and reject draft-07, even though the actual schema shape may be otherwise compatible.

Suggested fix

Either:

  • Remove the explicit "$schema": "http://json-schema.org/draft-07/schema#" field from tool outputSchema definitions (letting it default), or
  • Update the schemas to declare/target JSON Schema 2020-12 ("$schema": "https://json-schema.org/draft/2020-12/schema"), or
  • Regenerate the schemas with a 2020-12-compliant schema generator/version.

Impact

Total: no Todoist tool is callable through an affected client until this is fixed. There is no workaround on the client side — retrying does not help, since the failure happens during schema validation before the request is dispatched.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions