# Json To Typescript — MCP tool `findutils:json_to_typescript`

Generate TypeScript interfaces or type aliases from a JSON sample. Nested objects become named declarations (or inline object types), arrays infer element unions, and identical shapes are declared once.

- Category: data
- MCP server: https://mcp.findutils.com/ (Streamable HTTP, no API keys, 120 req/min per IP)
- REST endpoint: POST https://api.findutils.com/api/tools/json-to-typescript/execute (no API keys, 60 req/min per IP)
- Reference page: https://findutils.com/mcp/json-to-typescript/
- Same tool on the other surface: https://findutils.com/api/json-to-typescript/

## Connect

```bash
claude mcp add findutils --transport http https://mcp.findutils.com/
```

Claude Desktop (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "findutils": {
      "url": "https://mcp.findutils.com/"
    }
  }
}
```

## Call the tool (verified example)

```bash
curl -X POST https://mcp.findutils.com/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "json_to_typescript",
      "arguments": {
        "json": "{\"id\":1,\"user\":{\"name\":\"A\"}}"
      }
    }
  }'
```

## Input schema

| Argument | Type | Required | Description |
|---|---|---|---|
| `json` | string | yes | JSON sample (an object, or an array of objects). |
| `root_name` | string | no | Name of the root type. Default: "Root". Default: `"Root"`. |
| `output_type` | string (interface \| type) | no | "interface" or "type" (type alias). Default: "interface". Default: `"interface"`. |
| `naming_convention` | string (pascal \| camel) | no | Type-name casing: "pascal" or "camel". Default: "pascal". Default: `"pascal"`. |
| `make_optional` | boolean | no | Mark every property optional with "?". Default: false. Default: `false`. |
| `add_export` | boolean | no | Prefix declarations with "export". Default: true. Default: `true`. |
| `inline_nested_objects` | boolean | no | Write nested objects inline instead of as separate declarations. Default: false. Default: `false`. |

Example arguments (verified):

```json
{
  "json": "{\"id\":1,\"user\":{\"name\":\"A\"}}"
}
```

Decoded `json` argument (readability only — send it as a string):

```json
{
  "id": 1,
  "user": {
    "name": "A"
  }
}
```

## Also a REST endpoint

```bash
curl -X POST https://api.findutils.com/api/tools/json-to-typescript/execute \
  -H "Content-Type: application/json" \
  -d '{
    "json": "{\"id\":1,\"user\":{\"name\":\"A\"}}"
  }'

# Parameter schema
curl https://api.findutils.com/api/tools/json-to-typescript
```

Full REST reference: https://findutils.com/api/json-to-typescript/ · OpenAPI 3.1 spec: https://findutils.com/api/openapi.json

---
Full catalog: POST https://mcp.findutils.com/ with method `tools/list` · https://findutils.com/mcp/ · https://findutils.com/llms.txt
