Text chunk (RAG)
POST /api/text-chunkSplit text into overlapping chunks for RAG ingestion - by characters (default) or by exact LLM tokens. Send POST /api/text-chunk with the required field text and pay $0.001 per call over x402 or MPP, or call it free by solving a proof-of-work challenge. It returns a JSON object with unit, size, overlap, count and chunks.
Returns the chunks plus offsets. Deterministic, no model needed.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
text | string | yes | Text to split into chunks (max 500KB) Also accepted as content, str, string, input, body, data. |
size | number | no | chunk size (default 800) |
overlap | number | no | overlap between chunks (default 0) |
unit | string | no | chars (default) | tokens |
model | string | no | tokenizer model when unit=tokens (default gpt-4o) |
Example request
curl -i -X POST https://agent402.tools/api/text-chunk \
-H "Content-Type: application/json" \
-d '{"text":"The x402 protocol lets an agent pay for a single request. A server answers with payment terms, the agent signs a stablecoin authorization, and the request is retried with the payment attached. Payment settles on chain, so the server needs no account and the agent needs no subscription. The x402 protocol prices each request on its own, and payment terms travel with the request itself.","size":120,"overlap":20,"unit":"chars"}'
Without payment this returns HTTP 402 Payment Required with the exact price for text-chunk; any x402 v2 or MPP client pays it and retries.
Example response
{
"unit": "chars",
"size": 120,
"overlap": 20,
"count": 4,
"chunks": [
"The x402 protocol lets an agent pay for a single request. A server answers with payment terms, the agent signs a stablec",
"gent signs a stablecoin authorization, and the request is retried with the payment attached. Payment settles on chain, s"
]
}
| Field | Type | Always present | In the example |
|---|---|---|---|
unit | string | yes | chars |
size | number | yes | 120 |
overlap | number | yes | 20 |
count | number | yes | 4 |
chunks | array of string | yes | 2 items in the example |
From an MCP client
catalog.call {
"slug": "text-chunk",
"params": {
"text": "The x402 protocol lets an agent pay for a single request. A server answers with payment terms, the agent signs a stablecoin authorization, and the request is retried with the payment attached. Payment settles on chain, so the server needs no account and the agent needs no subscription. The x402 protocol prices each request on its own, and payment terms travel with the request itself.",
"size": 120,
"overlap": 20,
"unit": "chars"
}
}
On the hosted connector at https://agent402.tools/mcp, catalog.call runs text-chunk free (rate-limited, no wallet). Local install: npx -y agent402-mcp.
Errors and behavior
textis required. An input the tool rejects returns an HTTP 4xx whose body carrieserror,tool,expected,requiredandexample, so the caller can correct it.- A paid call that ends in any status of 400 or above is not charged over x402, MPP or a prepaid credits key: settlement is cancelled when the tool fails. The exception is a Tempo push credential, a transfer the buyer sent before the call: it settles before the tool runs, so if the tool then fails the payment is recorded as a refund owed to the paying wallet.
- Free tier: no outbound network call leaves the server for this tool, so proof-of-work (16 leading zero bits of sha256) pays for it.
- A
GETorHEADto /api/text-chunk returns the same 402 quote, so the price can be read without a body. - An
Idempotency-Keyheader makes a retried paid call replay the first 200 instead of charging again (an answer larger than 1 MB is not replayed).
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();
client.setSpendControls?.(false); // keep your own spending ceiling in code
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/text-chunk", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"text": "The x402 protocol lets an agent pay for a single request. A server answers with payment terms, the agent signs a stablecoin authorization, and the request is retried with the payment attached. Payment settles on chain, so the server needs no account and the agent needs no subscription. The x402 protocol prices each request on its own, and payment terms travel with the request itself.",
"size": 120,
"overlap": 20,
"unit": "chars"
}),
});
No wallet? Pay with compute
Fetch a challenge, solve the sha256 puzzle (16 leading zero bits, a fraction of a second of CPU), 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-chunk")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/text-chunk", { method: "POST", headers: { "X-Pow-Solution": c.token + ":" + n, "Content-Type": "application/json" }, body: JSON.stringify({"text":"The x402 protocol lets an agent pay for a single request. A server answers with payment terms, the agent signs a stablecoin authorization, and the request is retried with the payment attached. Payment settles on chain, so the server needs no account and the agent needs no subscription. The x402 protocol prices each request on its own, and payment terms travel with the request itself.","size":120,"overlap":20,"unit":"chars"}) });
Related tools
Text statistics
POST /api/text-statsCounts for any text in one call: characters (Unicode code points), words, sentences, paragraphs, avgWordLength, readingT…
Token count
POST /api/token-countCount exact LLM tokens for a string using the real OpenAI BPE (o200k_base for gpt-4o/o-series, cl100k_base for gpt-4/gpt…
Text embeddings
POST /api/embedGenerate a text embedding vector using OpenAI text-embedding-3-small (1536 dimensions). Ideal for semantic search, RAG, …
Text embeddings (Large)
POST /api/embed-largeGenerate a text embedding vector using OpenAI text-embedding-3-large (3072 dimensions). Higher accuracy than the small m…
Embeddings (OpenAI-compatible)
POST /v1/embeddingsOpenAI-compatible text embeddings over x402 - point any OpenAI SDK at base_url https://agent402.tools/v1 and pay $0.002 …
Case convert
POST /api/caseConvert text between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case, lower, UPPER.