Agent402 / tools / skill-text-hygiene

Skill: Text hygiene

FREE with proof-of-work · or $0.009 in USDC · POST /api/skill/text-hygiene

Bundled 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.

TRY IN PLAYGROUND →

Input

FieldTypeDescription
text *stringThe raw text dump to clean (max 500KB)

Example output

{
  "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"
}

Try it - see the 402 challenge (free)

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:

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";
import { metaTitle, metaDescription } from "./seo-meta.js";

const client = new x402Client();
client.setSpendControls?.(false); // @x402/core 2.23+ refuses anything over $1 or off the pegged-asset list by default; keep your own ceiling in code instead
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"
  }),
});

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=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"}) });

Related tools

Skill: Earnings deep-dive

$0.042 · POST /api/skill/earnings-deep-dive

Bundled execution of the Earnings deep-dive workflow - Everything you need before a company reports: the upcoming earnin…

try in playground →

Skill: Options analytics

$0.026 · POST /api/skill/options-analytics

Bundled execution of the Options analytics workflow - Price a European option on a live stock: pull the current quote, e…

try in playground →

Skill: Fixed-income desk

$0.017 · POST /api/skill/fixed-income-desk

Bundled execution of the Fixed-income desk workflow - Read the rate environment and price a bond in one workflow: the li…

try in playground →