Text chunk (RAG)

FREE with proof-of-work · or $0.001 in USDC · POST /api/text-chunk

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

Category: Text processing · Tags: chunk rag split embeddings tokens

TRY IN PLAYGROUND →

Parameters

NameTypeRequiredDescription
textstringyesText to split into chunks (max 500KB) Also accepted as content, str, string, input, body, data.
sizenumbernochunk size (default 800)
overlapnumbernooverlap between chunks (default 0)
unitstringnochars (default) | tokens
modelstringnotokenizer 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"
  ]
}
FieldTypeAlways presentIn the example
unitstringyeschars
sizenumberyes120
overlapnumberyes20
countnumberyes4
chunksarray of stringyes2 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

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

FREE w/ compute · or $0.001 · POST /api/text-stats

Counts for any text in one call: characters (Unicode code points), words, sentences, paragraphs, avgWordLength, readingT…

Token count

FREE w/ compute · or $0.001 · POST /api/token-count

Count 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

$0.002 · POST /api/embed

Generate a text embedding vector using OpenAI text-embedding-3-small (1536 dimensions). Ideal for semantic search, RAG, …

Text embeddings (Large)

$0.010 · POST /api/embed-large

Generate a text embedding vector using OpenAI text-embedding-3-large (3072 dimensions). Higher accuracy than the small m…

Embeddings (OpenAI-compatible)

$0.002 · POST /v1/embeddings

OpenAI-compatible text embeddings over x402 - point any OpenAI SDK at base_url https://agent402.tools/v1 and pay $0.002 …

Case convert

FREE w/ compute · or $0.001 · POST /api/case

Convert text between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case, lower, UPPER.