Text diff
POST /api/text-diffLine-by-line diff of two texts (LCS). Returns unified-style ops and change counts. Up to 2000 lines per side.
Input
| Field | Type | Description |
|---|---|---|
a * | string | Original text |
b * | string | New text |
Example output
{
"added": 1,
"removed": 1,
"unchanged": 1,
"diff": [
{
"op": " ",
"line": "line1"
},
{
"op": "-",
"line": "line2"
},
{
"op": "+",
"line": "line2 changed"
}
]
}
Try it - see the 402 challenge (free)
curl -i -X POST https://agent402.tools/api/text-diff \
-H "Content-Type: application/json" \
-d '{"a":"line1\nline2","b":"line1\nline2 changed"}'
The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:
Paid call (JavaScript agent)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/text-diff", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"a": "line1\nline2",
"b": "line1\nline2 changed"
}),
});
No wallet? Pay with compute
This is a pure-CPU tool, so an agent without a wallet can pay with proof-of-work instead of USDC: fetch a challenge, solve the sha256 puzzle (16 leading zero bits - a fraction of a second of CPU, no money, no AI tokens), and resend with the X-Pow-Solution header.
import { createHash } from "node:crypto";
const lz = (b) => { let t = 0; for (const x of b) { if (!x) { t += 8; continue; } t += Math.clz32(x) - 24; break; } return t; };
const c = await (await fetch("https://agent402.tools/api/pow/challenge?slug=text-diff")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/text-diff", { method: "POST", headers: { "X-Pow-Solution": c.token + ":" + n, "Content-Type": "application/json" }, body: JSON.stringify({"a":"line1\nline2","b":"line1\nline2 changed"}) });
Part of these workflows
This tool is one step in 2 curated multi-tool workflows - agents can fetch the whole sequence as an MCP prompt or call https://agent402.tools/api/skill-packs/{slug}/prompt.
- Markdown to HTML round-trip - Markdown to HTML and back - a round-trip conversion that proves fidelity and gives you both formats from one input.
- Feed watch - Monitor an RSS/Atom feed in one call: parse the feed, read the top story in full, extract the keywords driving the cycle, and diff the item list against your last run to isolate what's new.
Related tools
Slugify
POST /api/slugifyTurn any text into a URL-safe slug (lowercase, hyphenated, diacritics stripped).
Case convert
POST /api/caseConvert text between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case, lower, UPPER.
Text statistics
POST /api/text-statsCharacters, words, sentences, paragraphs, average word length, reading time, and an LLM token estimate for any text.