{"version":1,"x402Version":2,"x402Versions":[1,2],"name":"Penniless Data Utilities","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","openapi":"https://penniless-json-repair.sjaman.workers.dev/openapi.json","llms":"https://penniless-json-repair.sjaman.workers.dev/llms.txt","mcp":"https://penniless-json-repair.sjaman.workers.dev/mcp","mpp":{"enabled":true,"paymentServer":{"scheme":"exact","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37","price":"$0.001","asset":"USDC","assetAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}},"resources":[{"url":"https://penniless-json-repair.sjaman.workers.dev/repair/json","method":"POST","description":"Repairs malformed LLM JSON: strips Markdown fences and prose wrappers, fixes trailing commas, converts Python literals (True/False/None) and single/unquoted keys, removes comments, recovers balanced JSON from truncated output. Body {input} -> {ok, repaired, applied}.","accepts":[{"scheme":"exact","price":"$0.001","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37"}]},{"url":"https://penniless-json-repair.sjaman.workers.dev/yaml/tojson","method":"POST","description":"Converts a YAML subset (block maps, sequences, nested indentation, scalars, comments) into JSON with no runtime dependency. Body {input} -> {ok, value, warnings}.","accepts":[{"scheme":"exact","price":"$0.001","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37"}]},{"url":"https://penniless-json-repair.sjaman.workers.dev/cron/nextrun","method":"POST","description":"Computes the next UTC fire time for a 5-field cron expression (supports steps, ranges, lists, and month/weekday names). Body {expr, after?} -> {ok, next, epochMs}.","accepts":[{"scheme":"exact","price":"$0.001","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37"}]},{"url":"https://penniless-json-repair.sjaman.workers.dev/diff","method":"POST","description":"Produces a unified diff plus added/removed counts between two texts (LCS line diff, configurable context lines). Body {old, new, context?} -> {ok, identical, added, removed, hunks, unified}.","accepts":[{"scheme":"exact","price":"$0.001","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37"}]},{"url":"https://penniless-json-repair.sjaman.workers.dev/text/extract","method":"POST","description":"Extracts clean text, title, headings, links, URLs, and emails from HTML or plain text. Body {input, numbers?, codeBlocks?} -> {ok, source, title, headings, links, urls, emails, text}.","accepts":[{"scheme":"exact","price":"$0.001","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37"}]},{"url":"https://penniless-json-repair.sjaman.workers.dev/domain/whois","method":"POST","description":"Structured WHOIS via RDAP for any domain: registrar, IANA id, statuses, expiry/registration dates, nameservers, DNSSEC. Body {domain} -> {ok, found, domain, registrar, status[], events{}, nameservers[], dnssec}.","accepts":[{"scheme":"exact","price":"$0.001","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37"}]},{"url":"https://penniless-json-repair.sjaman.workers.dev/dns/lookup","method":"POST","description":"JSON DNS-over-HTTPS lookup for A, AAAA, CNAME, MX, TXT, NS, SOA, PTR, SRV, CAA. Body {domain, type?} -> {ok, domain, type, status, answers[]}.","accepts":[{"scheme":"exact","price":"$0.001","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37"}]},{"url":"https://penniless-json-repair.sjaman.workers.dev/github/repo-stats","method":"POST","description":"Popularity and metadata for any public GitHub repo: stars, forks, open issues, watchers, language, license, topics, last push. Body {repo} -> {ok, found, stars, forks, openIssues, language, license, pushedAt}.","accepts":[{"scheme":"exact","price":"$0.001","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37"}]},{"url":"https://penniless-json-repair.sjaman.workers.dev/email/validate","method":"POST","description":"Email deliverability check: RFC-style syntax plus live MX probe of the domain. Body {email} -> {ok, valid, formatValid, domainHasMx, mx[]}.","accepts":[{"scheme":"exact","price":"$0.001","network":"eip155:8453","payTo":"0x3D98800c64C345950E1eAaa076D88C12d1BF5F37"}]},{"url":"https://penniless-json-repair.sjaman.workers.dev/diagnose","method":"POST","description":"Free preview: classifies what is wrong with a malformed JSON payload without returning the repaired output.","accepts":[]}]}