Skip to content

JSON to Types

by gumballtools.com · remote · no sign-in to list tools · v0.1.0 · published by com.gumballtools

Convert JSON samples into TypeScript interfaces and Zod schemas, with inference caveats.

Changes · 1

1 tool: 1 change things.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http json-to-types https://json-to-types.gumballtools.com/api/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "json_to_types" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "json_to_types" says "type": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

1 tool

Changes things 1Claude Code: ask
  • json_to_typesConvert a JSON sample into TypeScript interfaces and a matching Zod schema, and report where a single sample cannot establish the real type.1 finding

    Why it is in this group

    • The name "json_to_types" says "type": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "json_to_types" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "json_to_types" says "type": a word for a change.

      What this check looks for
    Description, as the server wrote 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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http json-to-types https://json-to-types.gumballtools.com/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [],
    "ask": [
      "mcp__json-to-types__json_to_types"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as json-to-types. Review it before you use it.