POST /api/skill/text-hygieneBundled execution of the Text hygiene workflow — Turn a wall of dirty text — chat logs, scraped pages, user-generated content, log dumps — into something safe to store, search, and pipe into the next step. Measure first, redact PII before anything else touches the data, then dedupe, sort, extract entities, surface keywords, and grade the readability of what's left. One x402 payment runs 7 underlying tools (text-stats, redact, dedupe-lines, sort-lines, extract-entities, keywords, readability); partial-success per step.
| Field | Type | Description |
|---|---|---|
text * | string | The raw text dump to clean (max 500KB) |
{
"pack": "text-hygiene",
"args": {
"text": "support log dump"
},
"steps": [
{
"slug": "text-stats",
"ok": true,
"result": {}
},
{
"slug": "redact",
"ok": true,
"result": {}
},
{
"slug": "dedupe-lines",
"ok": true,
"result": {}
},
{
"slug": "sort-lines",
"ok": true,
"result": {}
},
{
"slug": "extract-entities",
"ok": true,
"result": {}
},
{
"slug": "keywords",
"ok": true,
"result": {}
},
{
"slug": "readability",
"ok": true,
"result": {}
}
],
"summary": "7/7 steps succeeded"
}
curl -i -X POST https://agent402.tools/api/skill/text-hygiene \
-H "Content-Type: application/json" \
-d '{"text":"support log dump"}'
The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:
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/skill/text-hygiene", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"text": "support log dump"
}),
});
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=skill-text-hygiene")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/skill/text-hygiene", { method: "POST", headers: { "X-Pow-Solution": c.token + ":" + n, "Content-Type": "application/json" }, body: JSON.stringify({"text":"support log dump"}) });
POST /api/skill/security-auditBundled execution of the Security audit workflow — Enumerate a domain's external attack surface in one workflow: certs, …
POST /api/skill/email-deliverabilityBundled execution of the Email deliverability workflow — Diagnose why a domain's email lands in spam: SPF posture, DMARC…
POST /api/skill/financial-researchBundled execution of the Financial research workflow — Pull SEC filings, real-time quotes, historical prices, and macro …