{"uid":"cap_ulD84Xa8i2Poa1f6WnSnK","slug":"penniless-data-utilities-json-repair-df510e4e","name":"Penniless Data Utilities – JSON Repair","description":"Deterministic, dependency-free data utilities served over x402 micropayments (USDC on Base). None of these call another AI model.\nKeyword: JSON repair\nKeyword: malformed JSON\nKeyword: broken JSON from LLM\nKeyword: fix JSON output\nKeyword: JSON sanitizer\nKeyword: truncated JSON recovery\nKeyword: YAML to JSON\nKeyword: convert YAML\nKeyword: parse YAML config\nKeyword: cron next run\nKeyword: cron parser\nKeyword: when does cron run next\nKeyword: unified diff\nKeyword: line diff\nKeyword: text diff\nKeyword: HTML to text\nKeyword: extract links\nKeyword: extract emails\nKeyword: scrape text\nKeyword: whois lookup\nKeyword: domain registration\nKeyword: registrar\nKeyword: domain expiry date\nKeyword: RDAP\nKeyword: dns lookup\nKeyword: MX records\nKeyword: TXT records\nKeyword: A record\nKeyword: DNS over HTTPS\nKeyword: github repo stats\nKeyword: github stars\nKeyword: repository popularity\nKeyword: OSS project metadata\nKeyword: email validation\nKeyword: verify email address\nKeyword: check MX deliverability\nKeyword: email syntax\nUse case: repair a JSON code block wrapped in Markdown fences\nUse case: turn a docker-compose or CI YAML file into JSON\nUse case: compute the next UTC fire time of a cron expression\nUse case: produce a unified diff between two versions of a file\nUse case: strip HTML tags and pull out links, emails, and headings\nUse case: look up a domain's registrar, status and expiry before purchase\nUse case: check when a domain registration lapses\nUse case: resolve A, AAAA, MX, TXT or NS records for a hostname\nUse case: find a domain's mail servers and SPF TXT record\nUse case: compare GitHub repository stars, forks and activity for market research\nUse case: check whether an email address is well-formed and its domain accepts mail","url":"https://penniless-json-repair.sjaman.workers.dev/repair/json","method":"POST","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","required":["input"],"properties":{"input":{"type":"string","description":"Malformed JSON text"}},"additionalProperties":false},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":{"type":"json","example":{"ok":true,"applied":["fences","unquoted-keys","single-quotes"],"repaired":{"foo":"bar"}}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.001","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.001/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.001","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.001","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_uPybwuVOCJS3jFMVmHyDz","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.001","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Repairs malformed, truncated, or syntactically broken JSON strings deterministically without calling any AI model","exampleAgentPrompt":"This JSON came back from an LLM and it won't parse — it has single quotes, unquoted keys, and a markdown code fence wrapping it. Can you run it through the JSON repair utility to get a clean, valid JSON object back?","exampleUseCases":[{"title":"Fix LLM JSON pipeline output","prompt":"The language model returned JSON wrapped in triple backticks with single quotes instead of double quotes and it keeps breaking my parser — can you repair it so I get a proper JSON object I can work with?"},{"title":"Recover truncated API response","prompt":"My API call got cut off mid-response and the JSON is incomplete. Can you pass it to the JSON repair service and tell me what it was able to recover and what fixes it applied?"},{"title":"Sanitize agent-generated config","prompt":"An agent wrote me a JSON config file but it used unquoted keys and trailing commas everywhere. Can you fix it deterministically so it passes JSON.parse without any AI guessing what the values should be?"}],"resultDescription":"Returns a JSON object with an `ok` boolean indicating success, an `applied` array listing the specific repair transformations used (e.g. 'fences', 'unquoted-keys', 'single-quotes'), and a `repaired` field containing the fully parsed, valid JSON object after repair.","failureModes":["Input is so severely malformed or truncated that no valid structure can be recovered — returns ok: false","Input is not JSON-like at all (e.g. plain prose) — repair cannot be applied","Payment of 0.001 USDC via x402 not provided or rejected — returns 402 Payment Required","Request body missing required 'input' field — returns validation error"],"whenToPreferThis":"Choose this endpoint when you need deterministic, rule-based JSON repair without invoking an AI model — ideal for production pipelines where reproducibility matters and LLM-based fixing would be overkill, expensive, or unpredictable. It is especially well-suited for fixing common LLM output artifacts like markdown code fences, single-quoted strings, and unquoted keys.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T06:44:02.105Z","isFirstParty":false}