Convert JSON samples into TypeScript interfaces and Zod schemas, with inference caveats.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Convert a JSON sample into TypeScript interfaces and a matching Zod schema, and report where a single sample cannot establish the real type. Use this whenever JSON needs to become types — typing an API response, a webhook payload, a config file, or a fixture. Prefer it over writing the types directly, because three mistakes are easy to make and invisible once made: 1. ARRAYS. Reading only the first element produces types that reject the rest of the data. This merges every element into a union. 2. NULL VS ABSENT. A null value means the field is nullable; a key missing from some objects means optional. Different types, routinely conflated. 3. EMPTY CONTAINERS. Nothing can be inferred from [] or {}. This emits unknown and says so instead of inventing a plausible shape. It is also far cheaper in output tokens than generating types inline for a large payload, and the result is deterministic. Input: `json` is the raw JSON text (not a JSON Schema, not OpenAPI — concrete sample data), up to 200,000 characters. `rootName` optionally names the top-level interface and defaults to "Root". Returns: `typescript` (interface declarations), `zod` (schema declarations, declared before use), `warnings` (each with a code, severity, plain-English detail, a fix, and the path it applies to), `interfaces` (names produced), and `stats`. Read the warnings before trusting the output — they are the part a model generating types inline cannot give you.
Raw JSON text — concrete sample data, not a JSON Schema and not an OpenAPI document. Up to 200000 characters. Include several array elements if the shapes vary; only the variety matters, not the volume.
Name for the top-level interface. Must be a valid TypeScript identifier. Defaults to "Root".
Convert a JSON sample into TypeScript interfaces and a matching Zod schema, and report where a single sample cannot establish the real type. Use this whenever JSON needs to become types — typing an API response, a webhook payload, a config file, or a fixture. Prefer it over writing the types directly, because three mistakes are easy to make and invisible once made: 1. ARRAYS. Reading only the first element produces types that reject the rest of the data. This merges every element into a union. 2. NULL VS ABSENT. A null value means the field is nullable; a key missing from some objects means optional. Different types, routinely conflated. 3. EMPTY CONTAINERS. Nothing can be inferred from [] or {}. This emits unknown and says so instead of inventing a plausible shape. It is also far cheaper in output tokens than generating types inline for a large payload, and the result is deterministic. Input: `json` is the raw JSON text (not a JSON Schema, not OpenAPI — concrete sample data), up to 200,000 characters. `rootName` optionally names the top-level interface and defaults to "Root". Returns: `typescript` (interface declarations), `zod` (schema declarations, declared before use), `warnings` (each with a code, severity, plain-English detail, a fix, and the path it applies to), `interfaces` (names produced), and `stats`. Read the warnings before trusting the output — they are the part a model generating types inline cannot give you.
| Argument | Type | Description |
|---|---|---|
| json* | string | Raw JSON text — concrete sample data, not a JSON Schema and not an OpenAPI document. Up to 200000 characters. Include several array elements if the shapes vary; only the variety matters, not the volume. |
| rootName | string | Name for the top-level interface. Must be a valid TypeScript identifier. Defaults to "Root". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"json"
],
"properties": {
"json": {
"type": "string",
"description": "Raw JSON text — concrete sample data, not a JSON Schema and not an OpenAPI document. Up to 200000 characters. Include several array elements if the shapes vary; only the variety matters, not the volume."
},
"rootName": {
"type": "string",
"description": "Name for the top-level interface. Must be a valid TypeScript identifier. Defaults to \"Root\"."
}
}
}