Structured output schema checker
Check a JSON Schema against OpenAI strict mode, Claude strict tools or Gemini, get an auto-fixed version, and convert tool definitions between providers and MCP.
Runs in your browser. Nothing you paste is uploaded.
Checking…
Auto-fixed schema
Validate a model output against this schema
Formats: OpenAI Responses tool · OpenAI Chat Completions tool · Anthropic Messages tool · Gemini API function (Interactions) · MCP tools/list entry (2026-07-28) (checked 2026-11-02). Gemini's older functionDeclarations format is accepted as input.
21 rules from the official OpenAI, Anthropic and Google docs, last checked 2026-11-02.
How to use it
- Paste a JSON Schema, an OpenAI
response_format, or a tool definition (OpenAI, Anthropic or MCP). The schema is pulled out automatically. - Pick the provider. Each finding quotes the official limit; copy the auto-fixed schema, then fix anything marked “fix by hand”.
- Paste a real model output to validate it, or switch to Convert tool definitions to move tools between OpenAI, Anthropic, Gemini and MCP.
How the checker works
The checker walks every subschema and applies the rules for the provider you pick. Every rule quotes the provider’s own docs with the date we checked it. Errors are things the docs say get rejected. Warnings won’t fail the request, but the schema won’t do what it says: Gemini, for example, strips maxLength and ignores it.
The auto-fix only makes documented changes: it sets additionalProperties: false, makes optional fields required-but-nullable for OpenAI strict mode, moves unsupported Claude constraints into the description (like Anthropic’s SDK helpers), and removes constraints Gemini ignores. Validate those constraints in your code after parsing.
Request-wide limits, such as Claude’s 24 optional parameters across all strict tools in a request, are checked per schema here, so add them up if you send several strict tools.
Sources
- OpenAI: Structured model outputs, supported schemas and function calling strict mode (checked 2026-11-02)
- Anthropic: Structured outputs, JSON Schema limitations and schema complexity limits (checked 2026-11-02)
- Google: Gemini API structured output and function calling (checked 2026-11-02)
- MCP: Tools specification, 2026-07-28 (checked 2026-11-02)
FAQ
Why does OpenAI say my schema is invalid for strict mode?
The usual causes: an object without additionalProperties: false, a property missing from required, a root that isn’t an object or uses anyOf, or allOf/not/if. To keep a field optional in strict mode, keep it in required and make its type nullable, for example ["string", "null"].
What JSON Schema features does Claude's strict mode not support?
Recursive schemas, numeric constraints (minimum, maximum, multipleOf), minLength/maxLength, array constraints beyond minItems of 0 or 1, external $ref, complex enums and allOf with $ref. There are also request-wide limits: 20 strict tools, 24 optional parameters and 16 union-typed parameters.
I'm replacing forced tool_choice on Claude Sonnet 5.5 with strict tools. What do I need?
Mark the tool strict: true and make its schema strict-compatible: additionalProperties: false on every object and only supported keywords. Check it here with the Claude target, then use the request migration linter for the rest of the request.
Does Gemini enforce minLength and maxLength?
No. Google’s docs say minLength, maxLength, minProperties, maxProperties, uniqueItems and contains aren’t enforced; the API strips them. minItems and maxItems are enforced. Validate the rest in your code.
How do I convert an OpenAI function to an Anthropic tool or MCP tool?
Use the Convert tab. OpenAI’s parameters becomes Anthropic’s input_schema and MCP’s inputSchema. The converter warns about fields that don’t carry over, such as MCP annotations or Anthropic cache_control.