Paste an OpenAPI 3.0 or 3.1 spec as JSON or YAML. Each operation becomes one tool with merged parameters, resolved references and a clear list of what was left out.
To turn an OpenAPI spec into LLM tools, write one tool per operation, take its name from operationId, its description from summary and description, and put path, query and header parameters plus a JSON request body into one object schema. That is what this page does. The built-in sample has 3 operations: listPets, createPet and GET /pets/{petId}. The last has no operationId, so its name is built from the method and path, which gives get_pets_petId. Its path parameter petId is always required, as the OpenAPI specification says for path parameters. The createPet request body goes under a property called body and is required because the request body is. If a parameter is already called body, the request body is named request_body instead. A query parameter such as limit keeps its schema and gets the parameter's description.
Local references that start with #/ are resolved in place, so components/schemas/NewPet is copied into the tool schema. A reference that points back to a schema already being expanded is cut to a plain object and noted, so a recursive schema never loops. External references and references that do not resolve are left out and noted. OpenAPI 3.0 writes nullable: true, which the tool turns into a type list such as [string, null]. The 3.0 boolean exclusiveMinimum becomes the numeric form used by JSON Schema. example becomes examples, and OpenAPI-only keywords such as xml, externalDocs, discriminator and x- extensions are removed. Header parameters named Accept, Content-Type and Authorization are skipped, because the OpenAPI specification says to ignore them as parameters. Cookie parameters are skipped too.
Tool names are limited to letters, digits, underscore and dash, and cut to 64 characters for OpenAI and 128 for Anthropic and MCP, based on the vendors' documented name rules as of October 2026. MCP also keeps dots, which its specification allows. Two operations that end up with the same name get a suffix such as _2, and the note says which. You can keep only operations with certain tags, skip tags, keep only certain methods, and leave out deprecated operations. The tool limit defaults to 100, and the notes say how many operations were left out. Each OpenAI or Anthropic request has its own limits on how many tools it takes, so check the vendor's current docs for your model.
Only the shape of each call is written. Security schemes, server URLs, response schemas and authentication are not part of the output, so your code still has to send the request and add the credentials. Request bodies that are not JSON, such as multipart forms, are left out with a note. YAML is read in your browser with the same library as the JSON and YAML converter, and a document with more than 50 aliases is refused. The document can be up to 1,500,000 characters. Swagger 2.0 documents must be converted to OpenAPI 3 first. Very large inlined schemas are cut off at a fixed size and noted, because a model works better with a small tool than with a full copy of a big API.
Paste the spec, choose OpenAI Responses or OpenAI Chat, and copy the result. Each operation becomes {type: function, name, description, parameters}, or the same inside a function object for Chat Completions. For 3 operations you get 3 tools.
operationId is used when it exists, with characters outside letters, digits, underscore and dash replaced by an underscore. Without one the name is the lower-case method plus the path, so GET /users/{id}/posts becomes get_users_id_posts. Names are cut to 64 characters for OpenAI.
All path, query and header parameters become properties of one object schema, and the JSON request body becomes a property called body. Path parameters and required parameters are listed in required. A form body such as multipart/form-data is left out with a note.
Use Only these tags, Skip these tags and Only these methods, for example the tag pets and the methods get, post. Deprecated operations are skipped unless you include them. The tool limit, 100 by default, stops very large APIs from producing hundreds of tools.
Yes. Paste YAML that does not start with { or [ and it is read in your browser. A YAML document with more than 50 aliases, or aliases that expand to a very large structure, is refused with a message. Swagger 2.0 files are not accepted.
No. It is processed in your browser, in this tab, and no server receives it. Your choices of target, filters and options are saved in this browser, the spec is not.