# Agent402 > Pay-per-call web tools for AI agents, paid in USDC on Base via the x402 payment protocol (v2). No signup, no API keys: call an endpoint, receive an HTTP 402 challenge with payment requirements in the PAYMENT-REQUIRED header, pay with any x402 v2 client (e.g. @x402/fetch + @x402/evm), and retry to get the result. Base URL: https://agent402.tools ## Paid endpoints - `POST /api/extract` — $0.005/call. Extract the main article content from any public URL as clean markdown. Returns title, byline, excerpt, word count, and markdown. - `GET /api/meta` — $0.002/call. Fetch page metadata for a URL: title, description, OpenGraph, Twitter cards, canonical URL, favicon. - `GET /api/dns` — $0.001/call. DNS lookup for a domain. Supported record types: A, AAAA, MX, TXT, NS, CNAME. - `POST /api/render` — $0.02/call. Render a page in a real headless Chromium browser (JavaScript executed), then extract the main content as clean markdown. Use this for SPAs and JS-heavy sites where plain fetching returns an empty shell. - `GET /api/screenshot` — $0.015/call. Screenshot any public URL in headless Chromium. Returns a PNG image. Query params: ?url=https://…&fullPage=true (optional). - `POST /api/pdf` — $0.01/call. Fetch a PDF from a URL and extract its text content. Returns page count, document info, and the full text (up to 20MB PDFs). - `POST /api/memory` — $0.002/call. Persistent key-value memory for agents, scoped to the paying wallet. Your x402 payment IS your authentication: the wallet that pays owns the namespace. No signup, no API keys. Body: {"key": "…", "value": any JSON} to write, or {"key": "…", "delete": true} to remove. Values up to 64KB. - `GET /api/memory` — $0.001/call. Read from your wallet-scoped memory. ?key=… returns the stored value; omit key to list your keys. Only the wallet that paid for the writes can read them. ## Free endpoints - `GET /api/pricing` — machine-readable catalog (JSON) of all endpoints and prices. - `GET /health` — health check. ## How to pay (JavaScript example) ```js 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", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ url: "https://example.com/article" }), }); ``` ## Notes for agents - Payments settle in seconds on Base (eip155:8453); the payer needs USDC only (gas is sponsored). - `/api/memory` namespaces are owned by the paying wallet: only the wallet that wrote a key can read it. Use it for durable state between runs. - `/api/render` runs a real headless Chromium with JavaScript execution — use it when `/api/extract` returns an empty shell for SPA pages. - All endpoints publish full input/output schemas via the x402 Bazaar discovery extension.