{"uid":"cap_MfVj70dbGaZVs_2VlaiPT","slug":"penniless-data-utilities-text-diff-904a7781","name":"Penniless Data Utilities – Text Diff","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/diff","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":["old","new"],"properties":{"new":{"type":"string","description":"Changed text"},"old":{"type":"string","description":"Original text"},"context":{"type":"number","description":"Context lines per hunk (default 3)"}},"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,"added":1,"removed":1,"unified":"@@ -1,3 +1,3 @@\n a\n-b\n+B\n c","identical":false}},"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_Z8sH0FwMfkhwQeAj19p_y","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":"Computes a unified line-level diff between two text inputs, returning added/removed line counts and a unified diff string","exampleAgentPrompt":"Can you diff these two versions of my config file and show me exactly which lines were added or removed in unified diff format? Original: 'a\\nb\\nc' and updated: 'a\\nB\\nc'","exampleUseCases":[{"title":"Detect code review changes","prompt":"I have two versions of a function — the original and a colleague's edit. Can you give me a unified diff showing exactly which lines changed between them?"},{"title":"Verify prompt template update","prompt":"Compare these two prompt templates for me: the old one and the new one I just edited. Show me all the lines that were added or removed in unified patch format."},{"title":"Check if config files differ","prompt":"I've got two copies of a YAML config — one from staging and one from production. Are they identical, and if not, what are the exact line-level differences?"}],"resultDescription":"Returns a JSON object with: ok (boolean success flag), added (count of added lines), removed (count of removed lines), unified (the full unified diff string with @@ hunks), and identical (boolean indicating whether the two inputs were the same)","failureModes":["Missing required body fields returns an error with ok: false","Non-text or unparseable body content may result in a processing error","Insufficient USDC balance or failed x402 micropayment causes a 402 Payment Required response before the computation runs","Very large inputs may be truncated or timeout at the edge worker"],"whenToPreferThis":"Choose this endpoint when you need a deterministic, low-cost ($0.001 USDC) line-level diff with no LLM involvement — ideal for comparing config files, code snippets, prompt templates, or any plain text where you want an exact unified diff output. Prefer it over AI-based summarization when you need a precise machine-readable patch format rather than a natural language summary of changes.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T06:43:09.779Z","isFirstParty":false}