Skip to content
clusters: prooflayer · edgemarket · edgefinance · synthforge · mediakit · wordmint · webprobe · locale · comppoint · rollforge · bestiary · statline · matchpoint · retail · agentops · browserworkflow · modelrouter · compose
$ man agentutility-start

start

Fund a wallet, pick an on-ramp, call an endpoint. That's the whole setup for 688 live endpoints across 14 product clusters. No signup, no dashboard, no API key.

§ 0   walletthe only prerequisite

You need one thing: an EVM private key holding USDC on Base (chain 8453, token 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913). That's it. No ETH for gas. x402 payments settle through EIP-3009 transferWithAuthorization, which is gasless for the buyer. You sign a message, the facilitator submits the transaction and pays the gas itself. No RPC key either; every snippet on this page defaults to the public https://mainnet.base.org endpoint.

A dollar of USDC covers hundreds of calls. Prices across the 688-endpoint catalog run $0.001 – $5 per call, so even the pricier composites leave room for a long test session.

§ I   claude codeinstall the catalog as a skill
mkdir -p ~/.claude/skills/agentutility && curl -fsSL https://agentutility.ai/skill.md -o ~/.claude/skills/agentutility/SKILL.md

The skill teaches Claude how to discover endpoints, check a price before calling one, and run the payment pattern against any of the 688 endpoints in the catalog.

§ II   any agentno Claude, no MCP client, no problem
curl https://agentutility.ai/prompt.txt

Paste the output into the agent's system prompt. It works for any harness that can run shell or Node.

§ III   mcpone stdio server per cluster
claude mcp add prooflayer -e X402_PRIVATE_KEY=0x... -- npx -y @agentutility/mcp-prooflayer

There are 14 live clusters, each shipping as its own package. Cursor and Claude Desktop configs live at /mcp/.

§ IV   code~60 seconds, any Node project
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());

That's the whole flow. The first request gets a 402, wrapFetchWithPayment signs a USDC transferWithAuthorization for the amount the server asked for, and retries automatically. The paid response comes back in the same await paidFetch(...) call. Nothing else to wire up.

§ V   raw protocolcurl-level detail

Want to see the 402 handshake byte by byte before you trust a library with it? /docs walks the raw HTTP exchange. Schemas and prices for every endpoint live at /registry.json.

SEE ALSO
agentutility · docs · mcp · skill.md · prompt.txt · bazaar.x402.org