{"openapi":"3.1.0","info":{"title":"Format Toolkit","version":"0.1.0","description":"Convert, validate, detect, infer-schema and canonicalize structured data — JSON, YAML, XML, CSV, TSV, TOML, NDJSON, INI, .env, .properties, plist, querystring.","x-guidance":"Convert, validate, detect, infer-schema and canonicalize structured data — JSON, YAML, XML, CSV, TSV, TOML, NDJSON, INI, .env, .properties, plist, querystring. Each operation is an HTTP POST to its /v1/<operation> path with a JSON request body (see each operation's requestBody schema) and returns a JSON response. Endpoints are paid per successful call via x402 or MPP (USDC on Base); an unpaid request returns 402 with payment metadata in the WWW-Authenticate header.","contact":{"email":"hello@openverbs.com"}},"x-discovery":{"ownershipProofs":["0xb1401a71756f51464a9962db12f1eb3e9522490cd20010b06d00cf7b7770acfd5f79721f9dfdf2643f8cecd29af3bde9ec133941a386042b32d9886053a70de61b","0xc1c1f11793e18a00fcb7072421f26e89fb75b6aa517fa84370564991f4b10efa024f6f57e4e67eefd20cf46cc01fc5a62d793fa8fbcda04f26c946a3433d73f91b","0x676b474af0ef9ed4809b5d12d2e789b36e52d56215b21f601d71f76620e36ec630347116a7b2b349a3c3681e5db0fbfa76c4169a676b6d6f27864d0e5017284a1c","0xc2ab96522515ed9e9bc4f1a241b774bd48df42e951ddbf7f6aa8fc76f5a96a20421703e1ec402ce7eb1e4eabea3b6e4e4129cf39d56ea91cf4fcf38561fc94fc1c"]},"servers":[{"url":"https://format.openverbs.com"}],"paths":{"/health":{"get":{"summary":"Health check","security":[],"responses":{"200":{"description":"Healthy","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"service":{"type":"string"},"version":{"type":"string"}}}}}}}}},"/v1/convert":{"post":{"summary":"Convert structured data","description":"Transcode a document between json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist and querystring. Any source converts to any target through a JSON hub. Malformed input or a target that cannot represent the structure is rejected before payment. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["convert json to yaml","yaml to json converter","xml to json api","csv to json transform","structured data conversion","transcode document formats"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string","enum":["json","json5","jsonc","yaml","xml","csv","tsv","toml","ndjson","ini","env","properties","plist","querystring"],"description":"Source format of `data`."},"to":{"type":"string","enum":["json","json5","jsonc","yaml","xml","csv","tsv","toml","ndjson","ini","env","properties","plist","querystring"],"description":"Target format to convert to."},"data":{"type":"string","minLength":1,"maxLength":1000000,"description":"The document to convert, as a string in the `from` format."},"options":{"type":"object","additionalProperties":false,"properties":{"pretty":{"type":"boolean","description":"Pretty-print json/xml output. Default true."},"indent":{"type":"integer","minimum":0,"maximum":10,"description":"Indent width for pretty json/xml. Default 2."},"header":{"type":"boolean","description":"For csv/tsv, use the first row as a header. Default true."},"rootName":{"type":"string","minLength":1,"maxLength":64,"description":"Root element name when wrapping a non-object value into xml. Default \"root\"."}}}},"required":["from","to","data"],"additionalProperties":false},"example":{"from":"json","to":"yaml","data":"{\"name\":\"Ada\",\"age\":36}","options":{"pretty":true,"indent":2}}}}},"responses":{"200":{"description":"The converted document as `data`, plus the `from` and `to` formats.","content":{"application/json":{"schema":{"type":"object","description":"The converted document as `data`, plus the `from` and `to` formats."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Transcode a document between json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist and querystring. Any source converts to any target through a JSON hub. Malformed input or a target that cannot represent the structure is rejected before payment.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Transcode a document between json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist and querystring. Any source converts to any target through a JSON hub. Malformed input or a target that cannot represent the structure is rejected before payment.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Transcode a document between json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist and querystring. Any source converts to any target through a JSON hub. Malformed input or a target that cannot represent the structure is rejected before payment.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/validate":{"post":{"summary":"Validate against a JSON Schema","description":"Parse a document (json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist or querystring) and validate it against a JSON Schema. Returns whether it is valid and a list of precise, path-tagged errors. Malformed input or an invalid schema is rejected before payment. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["validate json schema","json schema validation","check yaml against schema","validate structured data","schema validation errors","jsonschema api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","minLength":1,"maxLength":1000000,"description":"The document to validate, as a string in the `from` format."},"from":{"type":"string","enum":["json","json5","jsonc","yaml","xml","csv","tsv","toml","ndjson","ini","env","properties","plist","querystring"],"description":"Source format of `data`. Default json."},"schema":{"type":"object","description":"A JSON Schema to validate the parsed document against."}},"required":["data","schema"],"additionalProperties":false},"example":{"data":"{\"name\":\"Ada\",\"age\":36}","from":"json","schema":{"type":"object","properties":{"name":{"type":"string"},"age":{"type":"number"}},"required":["name","age"],"additionalProperties":false}}}}},"responses":{"200":{"description":"Whether the document is `valid`, the `from` format it was parsed as, and an `errors` array of `{path, message, keyword}`.","content":{"application/json":{"schema":{"type":"object","description":"Whether the document is `valid`, the `from` format it was parsed as, and an `errors` array of `{path, message, keyword}`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse a document (json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist or querystring) and validate it against a JSON Schema. Returns whether it is valid and a list of precise, path-tagged errors. Malformed input or an invalid schema is rejected before payment.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Parse a document (json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist or querystring) and validate it against a JSON Schema. Returns whether it is valid and a list of precise, path-tagged errors. Malformed input or an invalid schema is rejected before payment.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse a document (json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist or querystring) and validate it against a JSON Schema. Returns whether it is valid and a list of precise, path-tagged errors. Malformed input or an invalid schema is rejected before payment.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/detect":{"post":{"summary":"Detect the format of a blob","description":"Sniff which structured format an unknown document is. Because formats overlap, returns every plausible format with a 0–1 score plus the best guess — honest about ambiguity rather than pretending certainty. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["detect data format","identify json yaml csv","sniff document format","guess structured format","blob format detection","format lookup api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","minLength":1,"maxLength":1000000,"description":"The document whose format should be detected."}},"required":["data"],"additionalProperties":false}}}},"responses":{"200":{"description":"The best-guess `format` (or null), its `score`, and the ranked `candidates` array of `{format, score}`.","content":{"application/json":{"schema":{"type":"object","description":"The best-guess `format` (or null), its `score`, and the ranked `candidates` array of `{format, score}`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Sniff which structured format an unknown document is. Because formats overlap, returns every plausible format with a 0–1 score plus the best guess — honest about ambiguity rather than pretending certainty.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Sniff which structured format an unknown document is. Because formats overlap, returns every plausible format with a 0–1 score plus the best guess — honest about ambiguity rather than pretending certainty.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Sniff which structured format an unknown document is. Because formats overlap, returns every plausible format with a 0–1 score plus the best guess — honest about ambiguity rather than pretending certainty.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/infer-schema":{"post":{"summary":"Infer a JSON Schema","description":"Infer a JSON Schema (draft-07) from a sample document in any supported format. Types are inferred, present keys are marked required, and heterogeneous array item schemas are merged. The result validates out of the box with /v1/validate. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["infer json schema","generate schema from sample","json schema inference","sample data schema","derive schema from json","schema discovery api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","minLength":1,"maxLength":1000000,"description":"The sample document to infer a schema from, as a string in the `from` format."},"from":{"type":"string","enum":["json","json5","jsonc","yaml","xml","csv","tsv","toml","ndjson","ini","env","properties","plist","querystring"],"description":"Source format of `data`. Default json."}},"required":["data"],"additionalProperties":false},"example":{"data":"{\"name\":\"Ada\",\"languages\":[\"en\",\"fr\"]}","from":"json"}}}},"responses":{"200":{"description":"The inferred JSON `schema` (draft-07) and the `from` format the sample was parsed as.","content":{"application/json":{"schema":{"type":"object","description":"The inferred JSON `schema` (draft-07) and the `from` format the sample was parsed as."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Infer a JSON Schema (draft-07) from a sample document in any supported format. Types are inferred, present keys are marked required, and heterogeneous array item schemas are merged. The result validates out of the box with /v1/validate.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Infer a JSON Schema (draft-07) from a sample document in any supported format. Types are inferred, present keys are marked required, and heterogeneous array item schemas are merged. The result validates out of the box with /v1/validate.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Infer a JSON Schema (draft-07) from a sample document in any supported format. Types are inferred, present keys are marked required, and heterogeneous array item schemas are merged. The result validates out of the box with /v1/validate.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/canonicalize":{"post":{"summary":"Canonicalize JSON (RFC 8785)","description":"Parse a document (in any format) and re-emit it in the RFC 8785 JSON Canonicalization Scheme form — sorted keys, canonical number/string formatting — plus the SHA-256 of the canonical bytes for stable hashing, signing and dedup. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["canonicalize json","rfc 8785 json","stable json hash","json canonicalization api","sort json keys","hash canonical json"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","minLength":1,"maxLength":1000000,"description":"The document to canonicalize, as a string in the `from` format."},"from":{"type":"string","enum":["json","json5","jsonc","yaml","xml","csv","tsv","toml","ndjson","ini","env","properties","plist","querystring"],"description":"Source format of `data`. Default json."}},"required":["data"],"additionalProperties":false},"example":{"data":"{\"b\":2,\"a\":1}","from":"json"}}}},"responses":{"200":{"description":"The canonical JSON string `data`, its `sha256` (hex), and the `from` format it was parsed as.","content":{"application/json":{"schema":{"type":"object","description":"The canonical JSON string `data`, its `sha256` (hex), and the `from` format it was parsed as."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse a document (in any format) and re-emit it in the RFC 8785 JSON Canonicalization Scheme form — sorted keys, canonical number/string formatting — plus the SHA-256 of the canonical bytes for stable hashing, signing and dedup.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Parse a document (in any format) and re-emit it in the RFC 8785 JSON Canonicalization Scheme form — sorted keys, canonical number/string formatting — plus the SHA-256 of the canonical bytes for stable hashing, signing and dedup.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse a document (in any format) and re-emit it in the RFC 8785 JSON Canonicalization Scheme form — sorted keys, canonical number/string formatting — plus the SHA-256 of the canonical bytes for stable hashing, signing and dedup.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}}},"x-service-info":{"categories":["compute"],"docs":{"homepage":"https://format.openverbs.com","apiReference":"https://format.openverbs.com/openapi.json"}}}