Validate, repair, format, query, diff, convert, and canonicalize JSON in one call.
Every AI agent and developer runs into broken or confusing JSON constantly. This tool handles all the most common JSON headaches in one place: check if JSON is valid (with exact error location), fix near-JSON that has typos or formatting mistakes, pretty-print or minify, pull out specific values using a path expression, compare two JSON documents and see exactly what changed, convert to and from YAML or CSV, produce a byte-stable canonical form for hashing or signing, validate against a schema, and get size and structure statistics. Same input always gives the same output — fully predictable, no side effects.
https://json-suite.underscoredone.com/json$0.01 per request — pay via x402/USDC. No account needed.
Send the 'op' field to choose what to do. Use 'data_raw' (a plain string) only for 'validate' and 'repair' — these two need the original broken text. Use 'data' (actual parsed JSON) for all other operations: format, canonicalize, convert, query, diff, patch, schema, stats. For 'diff' and 'patch', put the first document in 'data' and the second in 'options.data_b'. For 'query', put your JSONPath expression (e.g. '$.items[*].id') in 'options.jsonpath' or a JSON Pointer (e.g. '/items/0/id') in 'options.pointer'. For 'convert', set 'options.to' to 'yaml', 'csv', 'ndjson', or 'json'. For 'schema', put the JSON Schema object in 'options.schema'. For 'format', set 'options.indent' (number, default 2) and 'options.sort_keys' (true/false). For 'canonicalize', no extra options needed — output is RFC 8785 JCS bytes as a string. The 'repair' operation is heuristic: it always returns 'fixes_applied' so you can audit what changed. Check the 'valid' field first in every response. On a 400 error, read 'detail' for a plain-English explanation of what went wrong.
| Name | Type | Required | Description |
|---|---|---|---|
op | string | yes | What you want to do. Choose one of: validate, repair, format, canonicalize, convert, query, diff, patch, schema, stats. |
data | /null | no | The JSON value you want to work with — can be an object, array, string, number, or anything valid. Required for all operations except validate and repair. |
data_raw | string/null | no | The raw text you want to validate or repair. Use this instead of data only for validate and repair, because those need to see the original broken text exactly as-is. |
options | object/null | no | Extra settings for the chosen operation. For example: indent, sort_keys, jsonpath, pointer, to (for convert), schema, data_b (for diff/patch). All optional — sensible defaults are used. |
{
"op": "query",
"data": {
"order": {
"id": "A-1029",
"items": [
{
"sku": "BIL-CUE-07",
"qty": 2
},
{
"sku": "BIL-CHALK-01",
"qty": 5
}
]
}
},
"options": {
"jsonpath": "$.order.items[*].sku"
}
}{
"op": "validate",
"data_raw": "{}"
}{
"op": "repair",
"data_raw": "{name:'Ada', role:'Engineer', active:true,}",
"options": {
"pretty": true
}
}{
"op": "diff",
"data": {
"config": {
"version": 3,
"retries": 5,
"timeout": 30,
"features": [
"auth",
"logging",
"metrics"
]
},
"users": [
{
"id": 1,
"role": "admin"
},
{
"id": 2,
"role": "viewer"
}
]
},
"options": {
"data_b": {
"config": {
"version": 4,
"retries": 5,
"timeout": 60,
"features": [
"auth",
"logging"
]
},
"users": [
{
"id": 1,
"role": "admin"
},
{
"id": 2,
"role": "editor"
}
]
}
}
}{
"api_version": "1.0.0",
"op": "query",
"valid": true,
"matches": [
{
"path": "$.order.items[0].sku",
"value": "BIL-CUE-07"
},
{
"path": "$.order.items[1].sku",
"value": "BIL-CHALK-01"
}
],
"match_count": 2
}
| Status | Meaning |
|---|---|
400 | Bad request — your input failed validation or could not be processed. Check the detail field for specifics. |
402 | Payment required. Send a signed USDC payment on Base Mainnet using the x402 protocol. |
422 | Unprocessable — a required field is missing or the wrong type. Check the detail field for specifics. |