Keyword extraction

FREE with proof-of-work · or $0.002 in USDC · POST /api/keywords

Top keywords and two-word phrases by frequency (stopwords removed). Send POST /api/keywords with the required field text and pay $0.002 per call over x402 or MPP, or call it free by solving a proof-of-work challenge. It returns a JSON object with keywords and phrases.

Cheap, deterministic signal for routing, tagging, and dedup.

Category: Text processing · Tags: keywords nlp text tagging

TRY IN PLAYGROUND →

Parameters

NameTypeRequiredDescription
textstringyesText to analyze (max 500KB) Also accepted as content, str, string, input, body, data.
limitnumbernoMax keywords (default 15)

Example request

curl -i -X POST https://agent402.tools/api/keywords \
  -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.","limit":10}'

Without payment this returns HTTP 402 Payment Required with the exact price for keywords; any x402 v2 or MPP client pays it and retries.

Example response

{
  "keywords": [
    {
      "term": "request",
      "count": 4
    },
    {
      "term": "payment",
      "count": 4
    },
    {
      "term": "agent",
      "count": 3
    }
  ],
  "phrases": [
    {
      "term": "x402 protocol",
      "count": 2
    },
    {
      "term": "payment terms",
      "count": 2
    }
  ]
}
FieldTypeAlways presentIn the example
keywordsarray of objectsyes3 items in the example
phrasesarray of objectsyes2 items in the example

From an MCP client

catalog.call {
  "slug": "keywords",
  "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.",
    "limit": 10
  }
}

On the hosted connector at https://agent402.tools/mcp, catalog.call runs keywords 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/keywords", {
  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.",
    "limit": 10
  }),
});

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=keywords")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/keywords", { 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.","limit":10}) });

Part of these workflows

Keyword extraction is one step in these 4 skill packs, each sold as a single call:

Related tools

Readability

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

Flesch Reading Ease score and Flesch–Kincaid grade level for English text, plus word/sentence/syllable counts.

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.

Count

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

Count characters, words, lines, and (optionally) occurrences of a substring in text.

Dedupe lines

FREE w/ compute · or $0.001 · POST /api/dedupe-lines

Remove duplicate lines, preserving first-seen order. Returns the deduped text and how many were removed.

Extract entities

FREE w/ compute · or $0.002 · POST /api/extract-entities

Pull emails, URLs, IPv4s, @mentions, and #hashtags out of free text. Returns deduped lists.

Lorem ipsum

FREE w/ compute · or $0.001 · GET /api/lorem

Placeholder text. ?paragraphs=1..20 or ?words=1..2000.