Extract entities
POST /api/extract-entitiesPull emails, URLs, IPv4s, @mentions, and #hashtags out of free text. Returns deduped lists.
Input
| Field | Type | Description |
|---|---|---|
text * | string |
Example output
{
"emails": [
"ada@x.com"
],
"urls": [
"https://x.com"
],
"mentions": [
"@ada"
],
"hashtags": [
"#news"
]
}
Try it - see the 402 challenge (free)
curl -i -X POST https://agent402.tools/api/extract-entities \
-H "Content-Type: application/json" \
-d '{"text":"ping @ada at ada@x.com see https://x.com #news"}'
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/extract-entities", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"text": "ping @ada at ada@x.com see https://x.com #news"
}),
});
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=extract-entities")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/extract-entities", { method: "POST", headers: { "X-Pow-Solution": c.token + ":" + n, "Content-Type": "application/json" }, body: JSON.stringify({"text":"ping @ada at ada@x.com see https://x.com #news"}) });
Part of these workflows
This tool is one step in 6 curated multi-tool workflows - agents can fetch the whole sequence as an MCP prompt or call https://agent402.tools/api/skill-packs/{slug}/prompt.
- Text hygiene - 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.
- RAG corpus prep - Take a raw document and turn it into a vector-DB-ready JSONL dataset, deterministically. Measures the corpus, token-counts it with the real OpenAI BPE, chunks at the right token boundary, attaches entities + keywords as metadata, emits NDJSON, then validates every record against a JSON Schema before you ingest it. Seven pure-CPU tools, free-tier eligible - the canonical 'prep my docs for embeddings' workflow done as deterministic tool calls instead of a hand-rolled Python script.
- Webhook debug - A webhook hit your endpoint and you need to confirm it's authentic, valid, and safe to log. Pretty-print the payload, decode any JWT auth header, verify the HMAC signature against the raw body, schema-validate the parsed JSON, translate timestamps to human time, redact sensitive fields before they hit your log pipeline, and pull out URLs/emails/IPs for fast indexing. Seven pure-CPU tools - the canonical webhook-receiver debugging round-trip.
- Answer-a-question with sources - The 'research a question, return an answer with citations' workflow. Brave answer for the AI-synthesized take with citations, Brave web for the canonical SERP, Brave news for time-sensitive context, then a deterministic web-fetch + extract pass on the top citations to verify the answer hasn't hallucinated. Five tools, one cited paragraph, every claim traced back to a fetched URL.
- Link preview card - The 'turn a URL into a card-shaped preview' workflow. Pull OpenGraph/Twitter card metadata, fetch the article body as a description fallback, normalize the og:image into a standard 1200×630 social card variant and a 400×400 square thumbnail, and extract URL/mention entities from the body for related-link surfacing. Five tools, one structured card payload ready for chat embeds, social shares, or RSS-to-card pipelines.
- Regex tester - Test a regular expression against text and get match results plus text statistics - the quick validation loop for pattern development.
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.