x402 · USDC on base · no signup, no API keys

Agent402

Pay-per-call web tools built for AI agents. Your agent hits the endpoint, pays a fraction of a cent in USDC automatically, and gets the result. No accounts. No keys. No subscriptions.

Render 🆕

$0.02 / call

Real headless Chromium. JavaScript executed, SPAs included → clean markdown. The pages plain fetch can't read.

POST /api/render

Memory 🆕

$0.002 write / $0.001 read

Persistent key-value state scoped to your wallet. Your payment is your login — no signup, no API keys, ever.

POST·GET /api/memory

Screenshot 🆕

$0.015 / call

Any URL → PNG, full-page optional. Visual verification for agent workflows.

GET /api/screenshot?url=…

PDF 🆕

$0.01 / call

PDF URL → full text + document info. Up to 20MB. The format agents hit constantly and parse badly.

POST /api/pdf

Extract

$0.005 / call

Any URL → clean markdown. Title, byline, main content with boilerplate stripped. The page-reading primitive every agent needs.

POST /api/extract

Meta & DNS

$0.002 / $0.001

Page metadata (OpenGraph, Twitter cards, favicon) and DNS lookups (A, AAAA, MX, TXT, NS, CNAME).

GET /api/meta · /api/dns

How it works

1Your agent calls a paid endpoint and receives HTTP 402 Payment Required with the price and payment details.
2An x402-capable client (e.g. @x402/fetch, @x402/axios, or any agent framework with x402 support) signs a USDC payment from its wallet and retries the request.
3Payment settles on base in seconds and the response comes back. Total overhead: one round trip.

Quickstart (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(process.env.AGENT_PRIVATE_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" }),
});
console.log(await res.json()); // { title, markdown, ... }

Try it (no payment needed)

# Machine-readable catalog — free
curl https://agent402.tools/api/pricing

# See the 402 challenge a paying agent receives
curl -i -X POST https://agent402.tools/api/extract \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'