JSON Tools for AI Developers · Runs locally

For AI developers JSON Workbench

Natural language generation · Schema · Zod · OpenAPI · Function Calling · MCP · 30+ tools

JSON to OpenAPI

When the live response exists and the docs come later, writing components.schemas by hand is slow.

Paste the response JSON, fill in a model name, click Generate OpenAPI, and you get a YAML draft.

The auto draft has no descriptions, error codes, or auth. You still have to fix required and nullable fields for the real contract.

Generation stays local. User data in the response never leaves the browser.

It does not generate full paths

This page infers a model from a response. Paths, methods, query, and error codes go into your docs repo by hand.

Keep it separate from Structured Output

OpenAPI is for humans and codegen. Structured Output constrains model output. Core properties can be shared; don't mix the wrappers.

How to use it

  1. Paste an API Response JSON and a model name, for example User.
  2. Click Generate OpenAPI.
  3. Copy the YAML, then add description, example, and error codes.
  4. Compare a second response against the Schema; use Validate if you need to.
  5. Export Zod or Structured Output from the same core structure when you need them.

When to use it

  • Add an OpenAPI 3.1 model for an already-shipping API.
  • Infer a first-draft doc from one success response.
  • Share a YAML when you align fields with frontend.
  • Docs and codegen share the same model name.

Keep in mind

  • Output follows 3.1 style. Tweak it to match your project's version.
  • Missing paths does not mean the docs are done.
  • The response is not uploaded.

FAQ

Is this OpenAPI 3.1?

Output follows 3.1-style Schema YAML. Tweak it to match your project's version.

Does it generate full paths?

This page infers a model from a response. Paths, methods, and parameters are yours to add.

How is this different from Structured Output?

OpenAPI is for API docs and codegen. Structured Output constrains model output.

Is the response uploaded?

No.

What is the model name for?

It becomes the name in components. Change it to User / Order to match your domain.

Can it generate a request body?

Paste request JSON as the input. Generate success responses and request bodies separately, then assemble them.

How is nullable expressed?

Don't generate from null-only samples. Use a real value, then mark nullable by hand.

How does this work with To code?

Use OpenAPI for docs. Use To code or an open-source codegen for TS / Go types in the repo.