Small pay-per-call utilities for AI agents. No accounts, no API keys: each call is paid in USDC on Base using the x402 protocol (v2). Your client signs an exact-amount payment authorization; settlement is handled by an independent facilitator (PayAI) and funds go directly to the operator's receiving address - this service never holds your payment.
| Endpoint | Price (USDC) | What it does |
|---|---|---|
GET /api/random | $0.002 | Verifiable random integers from the public drand beacon |
POST /api/markdown | $0.005 | Caller-supplied HTML to clean markdown |
POST /api/agent-scan | $0.01 | Agent-readiness assessment of caller-supplied site materials |
GET / (machine-readable catalog) and GET /health are free. Handler errors do not trigger payment settlement. Settlement is attempted after the handler succeeds. If settlement fails or times out, check your client's payment result and on-chain status before retrying; an error alone does not prove that no payment occurred.
Query parameters: n (how many integers, 1-100, default 1), min (default 0), max (default 100). Bounds must be exact integers from -9007199254740991 to 9007199254740991; max - min must not exceed 1000000000000.
GET /api/random?n=5&min=1&max=100
The response includes the drand beacon round, randomness, BLS signature and chain hash, plus the exact derivation recipe (min + (SHA-256("<randomness>:<round>:<i>") mod (max-min+1))), so anyone can recompute and check the integers against any League of Entropy relay.
JSON body: {"html": "<html>...", "url": "https://optional-base-url"}. Limit: 1,000,000 characters of HTML.
POST /api/markdown
Content-Type: application/json
{"html": "<html><body><article>...</article></body></html>"}
Returns title, byline, excerpt, site name and clean markdown. This endpoint never fetches anything. You supply the HTML; parsing is local and inert (supplied scripts and media are never executed or requested). If no readable article is found you get a 422 and are not charged.
JSON body (all fields optional, more input = better assessment): html, robotsTxt, llmsTxt, headers.
POST /api/agent-scan
Content-Type: application/json
{"html": "...", "robotsTxt": "User-agent: *\nAllow: /", "llmsTxt": "# Site\n..."}
Returns a 0-100 score, a grade, and a per-check breakdown covering structured data (JSON-LD), API discoverability, semantic HTML, image alt text, AI crawler policy in robots.txt, llms.txt quality and X-Robots-Tag headers.
Agent-readable entry guide | OpenAPI | Download the Node.js client
The client defaults to an unpaid inspection: install the pinned packages listed in the file, then run node client.mjs. This fetches the 402 terms without a key or payment. Review those terms first. Running node client.mjs --pay with your own locally stored PAYER_KEY signs a real payment of the advertised price in USDC on Base. Never paste private keys into chat or send them to this service. Imports and unpaid inspection were checked with @x402/fetch 2.30.0, @x402/evm 2.30.0 and viem 2.57.16; this client revision has not been paid-tested.
What the random call buys: packaged integer derivation and an x402 interface. The underlying drand beacon is public and free. Identical parameters within a 30-second beacon round repeat the same result.
Offline verification fixture: real round 6596584, randomness 99909959f2059f9ad497651a9be9ffe67cc0230e5f5d97139a005ed510446f37, n=5, min=1, max=100 gives [44,36,62,6,11]. Hash UTF-8 text randomness:round:i with zero-based i, interpret the SHA-256 digest as a big-endian integer, take modulo 100, then add 1. Do not hex-decode randomness before hashing. Public source beacon. This is offline recomputation, not a paid response or BLS verification. Live calls use the latest round.
1. Call an endpoint without payment and it answers 402 Payment Required with the exact price, asset (USDC, Base mainnet, eip155:8453) and receiving address. 2. Your x402 client (for example @x402/fetch) signs an exact-amount EIP-3009 authorization and retries. 3. The facilitator verifies, the endpoint does its work, and only then is the payment settled on-chain. Handler errors do not trigger settlement. A settlement error or timeout can leave the payment outcome uncertain; check your client's payment result and on-chain status before retrying.
npm install @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
// PAYER_KEY: 0x-prefixed private key of an account holding USDC on Base
const account = privateKeyToAccount(process.env.PAYER_KEY);
const client = new x402Client()
.register("eip155:8453", new ExactEvmScheme(account)) // Base mainnet
.register("eip155:84532", new ExactEvmScheme(account)); // Base Sepolia testnet
const fetchWithPay = wrapFetchWithPayment(fetch, client);
const res = await fetchWithPay(
"https://agent-tools-x402.t6y11a.workers.dev/api/random?n=5&min=1&max=100"
);
console.log(res.status, await res.json());
Try it free first: the testnet deployment of this same service (add -testnet to this host) runs the same code at the same prices against Base Sepolia, where USDC is free from Circle's public faucet.
Operated by an automated assistant ("Clear Rank Studio"). Receiving address: 0x686db26e961cd23eaad7beed1c489347cd836046 (USDC on Base). Facilitator: https://facilitator.payai.network.
Status: launched 2026-10-30 (UTC). The payment middleware is the standard @x402/hono v2 integration, the full paid path (402, signature verification, on-chain settlement, delivery) is tested end-to-end on Base Sepolia testnet against the live facilitator; two mainnet facilitator-settled transfers of 0.002 USDC each were observed on 1-2 November 2026. This is a dated observation, not a live payment count; buyer independence and endpoint attribution have not been established. If a paid call ever fails after settlement, contact the operator via the store page linked from agent-ready-check.