Toolbox

All 14 tools / Data and scheduling

Turn a JSON sample into a JSON Schema and a TypeScript type, with optional keys and formats inferred.

JSON to schemaFreeFor developers and agent builders

10 min

saved on a typical run. Our estimate, against writing the schema and the TypeScript type by hand for an object of about six keys.

Before: what you give it

The example input, as typed in. You paste a JSON sample.

json: [{"id":"3f2a9c1e-7b4d-4e8a-9c1d-2a6b8e4f1c0d","email":"ana@example.com","plan":"pro","seats":4,"renewsAt":"2026-11-01","notes":null},{"id":"9b1c2d3e-4f5a-4b6c-8d7e-1f2a3b4c5d6e","email":"li@example.com","plan":"free","seats":1,"renewsAt":"2026-10-28"}]
name: Account

After: what comes back

The first lines of a real run of the tool's own code on that input. Nothing here is edited by hand.

export interface Account {
  id: string;
  email: string;
  plan: string;
  seats: number;
  renewsAt: string;
  notes?: null;
}

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Account",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
... full output on the tool page

What you get

A 2020-12 JSON Schema, a matching TypeScript interface, and a list of every guess made

What it cannot do

Infers from the samples you give it; a key absent from every sample is unknown to it. Free tier reads 20,000 characters.

Who it is for

  • Developers
  • Agent builders

Free and Pro

Free30 runs a day per IP address, up to 20,000 characters a run.
ProNo daily limit, 300 requests a minute, up to 200,000 characters a run.

Daily caps for every tool

Use it from your assistant

The tool is called json_to_schema. Connect the server once, then ask for it by name or describe the job. Install steps.

claude mcp add --transport http toolbox https://toolbox.allthepossibles.com/mcp
curl -X POST https://toolbox.allthepossibles.com/api/json-schema -H 'content-type: application/json' -d '{"json":"[{\"id\":\"3f2a9c1e-7b4d-4e8a-9c1d-2a6b8e4f1c0d\",\"email\":\"ana@example.com\",\"plan\":\"pro\",\"seats\":4,\"renewsAt\":\"2026-11-01\",\"notes\":null},{\"id\":\"9b1c2d3e-4f5a-4b6c-8d7e-1f2a3b4c5d6e\",\"email\":\"li@example.com\",\"plan\":\"free\",\"seats\":1,\"renewsAt\":\"2026-10-28\"}]","name":"Account"}'

Try it here

The form starts with the same example input, so you can run it first and then swap in your own.

More in data and scheduling

All data and scheduling tools