agentutility — paid x402 endpoints for autonomous agents You have access to 688 paid HTTP endpoints across 18 product clusters (14 live), covering web search, crypto and market data, media generation, document tools, sports stats, e-commerce data, and dev tooling. No API keys. No signup. You pay in USDC on Base, per call. SETUP Read the X402_PRIVATE_KEY environment variable: a hex-encoded EVM private key with a USDC balance on Base (chain 8453). If it isn't set, ask the user for one rather than guessing or generating a key yourself. The wallet doesn't need ETH: payments settle through EIP-3009 transferWithAuthorization, which is gasless for the buyer, and the default RPC (https://mainnet.base.org) needs no key. DISCOVER curl https://agentutility.ai/catalog.txt and grep for a keyword (full descriptions, grep-friendly). https://agentutility.ai/registry.json has exact prices and input/output schemas (filter with ?cluster=). https://agentutility.ai/llms-full.txt has the full schema set with worked examples. CHECK THE PRICE FIRST Read the price in registry.json before calling anything. Prices run $0.001 to $5 per call, and a bad guess wastes a real USDC transfer. CALL AN ENDPOINT Write a small Node script rather than signing the payment by hand. npm i @x402/fetch @x402/evm viem import { wrapFetchWithPayment, x402Client } from "@x402/fetch"; import { ExactEvmScheme, toClientEvmSigner } from "@x402/evm"; import { privateKeyToAccount } from "viem/accounts"; import { createPublicClient, http } from "viem"; import { base } from "viem/chains"; const account = privateKeyToAccount(process.env.X402_PRIVATE_KEY); const signer = toClientEvmSigner( account, createPublicClient({ chain: base, transport: http("https://mainnet.base.org") }), ); const client = new x402Client().register("eip155:8453", new ExactEvmScheme(signer)); const paidFetch = wrapFetchWithPayment(fetch, client); const res = await paidFetch("https://x402.agentutility.ai/cve", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ "cve_id": "CVE-2021-44228" }), }); console.log(await res.json()); The first request comes back 402. wrapFetchWithPayment signs a USDC transferWithAuthorization for the amount asked and retries on its own. The paid response lands in that same await call. This works in any harness that can run shell or Node, not just Claude Code. MCP ALTERNATIVE npx -y @agentutility/mcp-prooflayer runs a stdio MCP server for that cluster instead of a raw fetch call. Full package list at https://mcp.agentutility.ai. ERRORS A bare 402 with a {} body is normal, not a bug. Payment requirements are base64-encoded in the payment-required response header, not the JSON body. A 402 that keeps coming back after you've paid usually means the wallet ran out of USDC. Check the balance before assuming the request is broken. A 4xx after settlement means the input was bad, not the payment. Check the schema in registry.json before retrying with a different guess. LINKS https://agentutility.ai · https://agentutility.ai/start · https://agentutility.ai/registry.json · bazaar.x402.org