Convert an OpenAI function to an Anthropic tool, or any LLM tool definition

Paste one tool or a list in any of five formats. The format is detected, converted to the one you pick, and checked against that vendor's name and schema rules.

How it works

  1. Paste one tool, a list of tools or a request body with a tools list
  2. Choose the format to convert to
  3. Copy the converted tools and read the lint table

How the five formats differ

To convert an OpenAI function to an Anthropic tool, move the schema from function.parameters to input_schema and lift name and description out of the function object. The five shapes carry the same three things, a name, a description and a JSON Schema for the arguments, in different places. OpenAI Chat Completions wraps them as {type: function, function: {name, description, parameters, strict}}. OpenAI Responses puts name, description and parameters beside type. Anthropic uses name, description and input_schema. An MCP tools/list entry uses name, title, description, inputSchema, and may add outputSchema and annotations. Gemini lists functionDeclarations, and the tool writes the schema as parametersJsonSchema. The tool reads each of these, a bare array, an object with a tools list, a JSON-RPC result and a Gemini tools array, and shows which format it found. As of October 2026 these are the field names in each vendor's docs.

What the lint table checks

The lint table is built for the format you convert to. Names are checked against the rule in that vendor's docs: OpenAI Chat Completions allows letters, digits, underscore and dash up to 64 characters, Anthropic the same set up to 128, Gemini adds colon and dot with a limit of 128, and MCP allows letters, digits, underscore, dash and dot up to 128 as a recommendation. A name like search.docs therefore passes for MCP and Gemini and fails for Anthropic and OpenAI Chat; switch on Fix names and it becomes search_docs. The table also reports duplicate names, a missing description, a parameters schema whose top-level type is not object, and a missing required list. Anthropic advises at least 3 to 4 sentences for a description, so a shorter one gets a note. The Gemini API reference marks description as required, so an empty one is an error there. OpenAI Responses has no documented name pattern, so that target has no name check.

Strict schemas and what gets dropped

When a tool carries strict: true, or you switch it on for OpenAI or Anthropic, the schema is also checked against that vendor's strict rules. For OpenAI every object needs additionalProperties false and every property in required; allOf, not and if, then, else are unsupported. For Anthropic additionalProperties must be false and numeric limits such as minimum are unsupported. Each problem is listed with its JSON Pointer path. This tool reports these problems but does not rewrite the schema; the JSON Schema strict mode converter on this site does that. Fields with no home in the target are dropped and noted: an MCP title, outputSchema and annotations do not exist in the OpenAI or Anthropic formats, and strict is not part of MCP or Gemini. A tool with no parameters gets an empty object schema, and for MCP the recommended form with additionalProperties false.

Limits

The converter works on the structure of the definitions. It does not call any API, rename parameters or judge whether a description is good. It reads up to 500 tools and 500,000 characters at once. Entries that are not function tools, such as a hosted search tool with only a type and a name, are skipped and counted in the table. Gemini parameters written in the OpenAPI style, with types such as OBJECT and STRING, are converted to lower-case JSON Schema types, and nullable true becomes a type list that includes null.

Frequently asked questions

How do I convert an OpenAI function to an Anthropic tool?

Paste the OpenAI tool and choose Anthropic. {type: function, function: {name, description, parameters}} becomes {name, description, input_schema}, with the same schema under the new key. A strict flag is carried over as strict.

What characters can an OpenAI or Anthropic tool name use?

OpenAI Chat Completions allows a-z, A-Z, 0-9, underscore and dash, with a maximum length of 64. Anthropic allows the same characters up to 128. A name with a dot or a space, such as search.docs, is rejected by both; the Fix names switch replaces such characters with an underscore.

How do I turn MCP tools into OpenAI or Anthropic tools?

Paste the result of tools/list, or just the tools array, and choose the target. inputSchema moves to parameters or input_schema. The MCP title, outputSchema and annotations have no equivalent there, so each is dropped and listed in the table.

Why does the tool say my schema fails strict mode?

strict: true on OpenAI requires additionalProperties false on each object and every property in required. Anthropic strict requires additionalProperties false and rejects minimum, maximum and similar limits. Each failing path is listed, for example /properties/city: additionalProperties must be false.

What does the Gemini output look like?

The tools are wrapped as {functionDeclarations: [{name, description, parametersJsonSchema}]}. parametersJsonSchema takes plain JSON Schema. The older parameters field takes an OpenAPI-style schema with upper-case types, and Gemini documents the two as mutually exclusive.

Are my tool definitions uploaded?

No. They are processed in your browser, in this tab, and no server receives them. Your choices of target and options are saved in this browser, the tool definitions are not.