APIs your agent can pay for itself

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.

from $0.005 per call
6 endpoints
USDC · Base
x402 “exact” scheme
Failed scans never charged
Machine-readable catalog at /.well-known/x402

Endpoints

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:

How a paid call works

x402 revives the HTTP status code that was reserved for this since 1997 — 402 Payment Required:

Call the endpoint

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.

Sign the payment

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.

Retry with the payment header

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.

Get result + receipt

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.

Usage

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}).

Machine discovery

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": [ … ], … } ] }

FAQ

Why pay per call?

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.

Am I charged for failures?

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.

Why USDC on Base?

Sub-cent fees, ~2s finality, and native USDC with EIP-3009 gasless transfer authorizations — the de-facto standard pairing for x402 payments.

Is there a subscription?

No accounts here at all. If you want monitoring and alerts instead of one-off calls, see AgentReady and MCP Pulse below.

Which x402 version?

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.

Rate limits?

Please self-limit to a few requests per minute per target. Abusive traffic gets blocked.