No account. No API key. No credit-card form. Your AI agent hits the endpoint, gets an HTTP 402 with the price, pays from $0.005 in USDC on Base, and gets the result — all in one automated round-trip via the open x402 protocol.
Six payable endpoints, built on scanners battle-tested on their free sister sites, callable by autonomous agents that carry a wallet instead of a login:
x402 revives the HTTP status code that was reserved for this since 1997 — 402 Payment Required:
Your agent sends a normal GET request. The server replies 402 with the price both ways at once: the PAYMENT-REQUIRED header (base64, x402 v2, CAIP-2 network eip155:8453) and a JSON body (legacy v1) — price in atomic USDC units, receiving address, asset contract.
The agent signs an EIP-3009 USDC transferWithAuthorization for exactly the quoted amount ($0.005–$0.02 depending on the endpoint) — an off-chain signature, no gas needed from the agent.
Same request plus PAYMENT-SIGNATURE (v2) or X-PAYMENT (v1) — a base64 payment payload. We verify it with an x402 facilitator, run the scan, and settle on-chain only after the scan succeeds.
The JSON result arrives with a PAYMENT-RESPONSE header (mirrored as X-PAYMENT-RESPONSE for v1 clients) — the base64 settlement receipt including the on-chain transaction hash.
See the price first (no payment needed for the quote):
# The 402 response IS the price quote (served in both protocol versions at once) curl -i "https://x402.agiscorecard.com/api/scan?url=example.com" # HTTP/2 402 # payment-required: eyJ4NDAyVmVyc2lvbiI6Miw… ← x402 v2: base64 PaymentRequired # → decodes to { "x402Version": 2, # "resource": { "url": …, "mimeType": "application/json" }, # "accepts": [{ "scheme": "exact", "network": "eip155:8453", # "amount": "5000", ← $0.005 (USDC has 6 decimals) # "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", # "payTo": "0x…", "maxTimeoutSeconds": 60, … }] } # # body (legacy x402 v1 clients read this instead): # { "x402Version": 1, "accepts": [{ "network": "base", # "maxAmountRequired": "5000", … }] }
Pay automatically from JavaScript with the current official client (x402 v2, @x402/fetch):
// npm install @x402/fetch @x402/evm viem import { wrapFetchWithPaymentFromConfig } from "@x402/fetch"; import { ExactEvmScheme } from "@x402/evm"; import { privateKeyToAccount } from "viem/accounts"; const account = privateKeyToAccount(process.env.AGENT_PRIVATE_KEY); const payFetch = wrapFetchWithPaymentFromConfig(fetch, { schemes: [{ network: "eip155:8453" /* Base mainnet (CAIP-2) */, client: new ExactEvmScheme(account) }], }); // 402 → sign → retry → 200, handled for you: const res = await payFetch("https://x402.agiscorecard.com/api/scan?url=example.com"); const data = await res.json(); // settlement receipt: res.headers.get("PAYMENT-RESPONSE") (base64 JSON, incl. tx hash)
Legacy v1 clients (npm x402-fetch + a viem wallet client) keep working unchanged — they read the v1 JSON body of the same 402, send X-PAYMENT, and get their receipt in X-PAYMENT-RESPONSE.
Wallet needs a few cents of USDC on Base — that's it. Until the receiving wallet goes live, append &demo=1 to try any endpoint free (result arrives wrapped in {"demo":true}).
Agents shouldn't need to read landing pages. The full catalog — paths, methods, prices in atomic units, network, and whether payments are live — is served as JSON:
curl "https://x402.agiscorecard.com/.well-known/x402" # { "x402Version": 2, "x402Versions": [1, 2], # "network": "eip155:8453", "networkV1": "base", "payToConfigured": true, # "endpoints": [ # { "path": "/api/scan", "method": "GET", "price": { "amount": "5000", "usd": "$0.005" }, "accepts": [ … ], … }, # { "path": "/api/mcp-check", "method": "GET", "price": { "amount": "5000", "usd": "$0.005" }, "accepts": [ … ], … }, # { "path": "/api/wellknown", "method": "GET", "price": { "amount": "5000", "usd": "$0.005" }, "accepts": [ … ], … }, # { "path": "/api/llms-extract", "method": "GET", "price": { "amount": "5000", "usd": "$0.005" }, "accepts": [ … ], … }, # { "path": "/api/scan-batch", "method": "GET", "price": { "amount": "20000", "usd": "$0.02" }, "accepts": [ … ], … }, # { "path": "/api/mcp-index", "method": "GET", "price": { "amount": "10000", "usd": "$0.01" }, "accepts": [ … ], … } ] }
Agents can't fill signup forms or manage API-key vaults at scale. A wallet + x402 turns any HTTP call into a self-contained transaction: quote, pay, result.
No. We verify your payment first, run the scan, and only settle on-chain after a successful result. Failed or unreachable targets cost you nothing.
Sub-cent fees, ~2s finality, and native USDC with EIP-3009 gasless transfer authorizations — the de-facto standard pairing for x402 payments.
No accounts here at all. If you want monitoring and alerts instead of one-off calls, see AgentReady and MCP Pulse below.
Both. v2 (current — x402Version: 2, CAIP-2 network eip155:8453, @x402/fetch) and legacy v1 (base, x402-fetch) are served from the same 402 — modern and older agents both pay out of the box.
Please self-limit to a few requests per minute per target. Abusive traffic gets blocked.