Tool Schema Converter
Convert tool and function definitions between OpenAI, Anthropic, Gemini and MCP, validate each against its documented shape, and see what wasn’t converted.
Private by design: everything you enter is processed in your browser. It is not sent to our servers.
How to use
- Paste one tool definition, an array of them, or an object with a "tools" array.
- Leave “From” on auto-detect, or choose the source format yourself (needed to tell Gemini’s flat form from OpenAI Responses).
- Choose the target format. The converted JSON appears immediately.
- Read the three lists under the result: what could not be converted, problems found in your input, and problems found in the output.
Worked example
An OpenAI Chat Completions function tool, converted to the MCP shape and to Anthropic’s shape.
OpenAI (Chat Completions) input
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name, e.g. Pune"
}
},
"required": [
"city"
]
},
"strict": true
}
}Result
| Detected source format | openai-chat |
|---|---|
| Not converted (to MCP) | strict: "strict" is not part of the MCP tool shape, so it was dropped. |
| Not converted (to Anthropic) | nothing; strict is kept |
MCP output
{
"name": "get_weather",
"description": "Get the current weather for a city",
"inputSchema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name, e.g. Pune"
}
},
"required": [
"city"
]
}
}The structural change is the field names: OpenAI nests everything under "function" and calls the schema "parameters"; Anthropic calls it "input_schema"; MCP calls it "inputSchema".
How it works
Each tool is read into a neutral form (name, description, JSON Schema, and the optional extras strict, title, outputSchema, annotations) and written out in the target shape. The shapes are the ones shown in each provider’s documentation on the date given under Sources: OpenAI’s function tool (Chat Completions nests it under "function"; the Responses API uses a flat object), Anthropic’s name/description/input_schema, Gemini’s flat function tool with "parameters", and MCP’s name/title/description/inputSchema/outputSchema/annotations.
The JSON Schema itself is copied unchanged. This tool does not rewrite keywords, so a schema that one provider accepts but another restricts is passed through as is; check the target provider’s schema rules.
Anything that exists only in the source is listed under “not converted” instead of being dropped silently: MCP’s title, outputSchema and annotations have no equivalent elsewhere; OpenAI’s and Anthropic’s strict flag is not part of the Gemini or MCP shapes; Anthropic’s input_examples and cache_control are Anthropic-specific; unknown fields are listed too.
Validation checks each tool against the documented shape: required fields, field types, that "required" lists only defined properties, Anthropic’s name rule (letters, digits, underscores and hyphens, 1–128 characters), and duplicate names.
Common errors
Invalid JSON: …- The input is not valid JSON. Remove comments and trailing commas; JSON needs double quotes.
Could not detect the format. Pick the source format explicitly.- The object has none of the recognisable markers (function, input_schema, inputSchema). Choose the source format from the list.
The tools are not all in the same format. Convert them in separate batches or pick the source format explicitly.- Split the array by format and convert each part separately.
Legacy "functionDeclarations" wrappers are not supported. Paste the individual declarations (name, description, parameters) instead.- Take the objects inside functionDeclarations and paste them as an array.
"inputSchema" is required.- MCP tools need an inputSchema; for a tool without arguments use {"type":"object","properties":{}}.
Anthropic requires names to match ^[a-zA-Z0-9_-]{1,128}$.- Rename the tool to use only letters, digits, underscores and hyphens.
Limits
- Only the five shapes listed are supported; server-side or built-in tools (web search, code execution, computer use) are not converted.
- Gemini support covers the flat “type: function” form shown in Google’s current function-calling guide. The older functionDeclarations wrapper is rejected, not translated.
- Auto-detection cannot tell OpenAI Responses from the Gemini flat shape; it reports OpenAI Responses. Select Gemini explicitly if that is your source.
- JSON Schema keyword support differs between providers (for example, restrictions on $ref, unions and additionalProperties in strict modes). This tool does not check those.
- Input is limited to 1,000,000 characters and 500 tools.
Privacy
Your definitions are converted in your browser and never sent anywhere. Share links include the definitions only if they are short. No account is needed, no cookies are set and no analytics run. See thePrivacy Policy. The “Copy share link” button puts your settings after the “#” in the address; browsers do not send that part to servers, and the page’s canonical address never includes it.
FAQ
Is the Gemini format really the same as OpenAI Responses?
The tool object looks alike (type "function", name, description, parameters). Google’s current guide shows exactly that shape. Providers may still differ in which schema keywords they accept.
Why was my "strict" flag dropped?
It is part of the OpenAI and Anthropic shapes but not of the Gemini or MCP shapes shown in their docs, so it is listed under “not converted”.
Does it convert tool calls and results?
No, only tool definitions.
Does it validate my JSON Schema?
It checks the structure around the schema (object type, properties, required) but not every JSON Schema keyword.
What is MCP?
The Model Context Protocol, which servers use to describe tools to AI applications. Its tool definition uses name, title, description, inputSchema, outputSchema and annotations.
Related
Embed this tool
Paste this snippet into your own page or docs to show the tool inline. The embedded view works the same way (everything runs in the visitor’s browser) and carries a small link back to MakeTools.
Sources
- OpenAI: Function calling guide – checked 2026-10-14
- Anthropic: Define tools – checked 2026-10-14
- Google: Gemini API function calling – checked 2026-10-14
- Model Context Protocol: Tools (2025-06-18 specification) – checked 2026-10-14
Page last updated 2026-10-14. Written by Prajyot Mulik; see the editorial policy.