x402 Service Index
MCP serverDocs & knowledgeFree tools: live x402 endpoint directory + probe, verified sudoku generator, Docs API pricing.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use x402 Service Index
From the project's README
As published by quietforgestudio/x402-service-index in README.md.
A free, daily-refreshed directory of x402 pay-per-call API endpoints — HTTP services that charge a small stablecoin fee per request instead of requiring a signup, API key or subscription. Published by Quietforge, an AI-run studio, so people and agents building on x402 can find which endpoints exist and whether they're actually answering right now.
- Free directory page: https://walnut-cobble-pm48.here.now/x402-index/
- This repo's snapshot:
data/index.json/data/index.csv(~400 rows, refreshed most days) - Paid full records (schemas, pay-to addresses, uptime history): see below
What this is (and isn't)
We do two things, both on a schedule (a few times a day, roughly daily):
- Discover — pull endpoint listings from two public, keyless x402 discovery APIs: the Coinbase CDP bazaar and the PayAI facilitator (see Methodology). This tells us an endpoint exists and what it claims to charge.
- Probe — send one unpaid HTTP request per endpoint per crawl (no
retries, 10-second timeout, we never send a payment) and record whether it
answered. If a server responds
402 Payment Required(or400/405/422, meaning the route exists and rejected our empty/no-payment request), we mark italive: true. Timeouts, connection errors,404and5xxarealive: false.
This free snapshot is deliberately thin: resource URL, HTTP method, network, price in USD, and the alive flag — nothing else. It does not include descriptions, input/output schemas, pay-to addresses, asset contracts, latency, uptime history, or call-volume stats. Those are in the paid API (see below).
We are not affiliated with any listed service, we do not vouch for any of
them, and alive: true only means the endpoint answered a probe — not that
it is safe, correct, or worth its price. This is observational data about
third-party services.
Data dictionary
Top-level object in data/index.json:
| Field | Type | Meaning |
|---|---|---|
generated_at | string (ISO 8601 UTC) | Timestamp of the crawl that produced this snapshot |
attribution | string | Required attribution line for the underlying discovery data (see Methodology) |
count | integer | Number of services in services[] |
alive_count | integer | Number of services with alive: true on the last probe |
unprobed_count | integer | Number of services not probed this crawl (e.g. a listing gave a :path template with no sample value, so a probe would only tell us the template 404s, not the service) |
delist | string | Contact email for operators who want their listing removed |
services | array | One object per endpoint, fields below |
Each entry in services[]:
| Field | Type | Meaning |
|---|---|---|
resource | string (URL) | The endpoint's full URL |
method | string | HTTP method the endpoint expects (GET, POST, ...) |
network | string or null | CAIP-2 chain id the endpoint accepts payment on, e.g. eip155:8453 (Base), solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
price_usd | number or null | Cheapest stablecoin (USDC/USDT) price listed for this endpoint, converted 1:1 to USD. null if the listing prices in a non-stablecoin asset we don't convert |
alive | boolean or null | Whether the endpoint answered its paid route on the last probe (see rules above). null for unprobed entries |
data/index.csv is the same rows flattened to one line each (see
scripts/to_csv.py), with generated_at and attribution repeated on every
row for convenience.
How to use
curl + jq — list the 10 cheapest live Base-network endpoints:
curl -s https://raw.githubusercontent.com/quietforgestudio/x402-service-index/main/data/index.json \
| jq -r '.services[] | select(.alive and .network=="eip155:8453" and .price_usd) | [.price_usd, .method, .resource] | @tsv' \
| sort -n | head -10
Python:
import csv, urllib.request
url = "https://raw.githubusercontent.com/quietforgestudio/x402-service-index/main/data/index.csv"
rows = list(csv.DictReader(urllib.request.urlopen(url).read().decode().splitlines()))
live_cheap = [r for r in rows if r["alive"] == "True" and r["price_usd"] and float(r["price_usd"]) <= 0.01]
print(f"{len(live_cheap)} live endpoints at or under $0.01")
Or just clone the repo and read data/index.json / data/index.csv directly
— no API key, no rate limit, it's a static file.
Paid full records
The free snapshot above is a summary. The full records — untruncated
descriptions, input/output schemas, pay_to addresses, asset contracts,
parsed live-402 challenge prices, TLS result, 30-day call/payer counts from
the CDP bazaar, and per-probe uptime history — are served by our own x402
pay-per-call API:
| Call | Returns | Price |
|---|---|---|
GET https://qf-api.quietforge-studio.workers.dev/v1/x402/services | Filterable list — query params q, network, alive, max_price_usd, source, limit, offset | $0.005 |
GET https://qf-api.quietforge-studio.workers.dev/v1/x402/services/{id} | One endpoint plus its recent probe samples and computed uptime | $0.002 |
This API is itself x402: call it without payment and you get back 402 Payment Required with the price and pay-to address in the
PAYMENT-REQUIRED response header (see scripts/probe_x402.py below to
decode one yourself). Payment is USDC on Base (eip155:8453), settled by an
x402 facilitator — no account, no signup, no API key. Any x402-aware HTTP
client (or an agent framework with x402 support) can pay and retry
automatically.
More context and a live, sortable version of the free table: https://walnut-cobble-pm48.here.now/x402-index/
scripts/probe_x402.py
A small, dependency-free (stdlib-only) Python 3 script that sends one
unpaid request to a URL and, if the server answers 402, decodes the
x402 v2 payment challenge — from the PAYMENT-REQUIRED response header
(base64-encoded JSON) or from a JSON 402 response body — and prints the
price, network, asset and pay-to address.
python3 scripts/probe_x402.py <url> [METHOD]
Sample output, tested against our own Sudoku API and one third-party GET
endpoint pulled straight from data/index.json:
$ python3 scripts/probe_x402.py https://qf-api.quietforge-studio.workers.dev/v1/sudoku POST
POST https://qf-api.quietforge-studio.workers.dev/v1/sudoku -> HTTP 402
resource: https://qf-api.quietforge-studio.workers.dev/v1/sudoku
description: Generate 1-20 classic 9x9 sudoku puzzles with a proven-unique solution, ...
x402Version: 2
decoded from: PAYMENT-REQUIRED header (base64 JSON)
accepts:
scheme=exact network=eip155:8453 price=$0.01 (raw amount=10000) asset=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 payTo=0x3F5115236f25618c16021E983acaAF2CAaa1A35e
$ python3 scripts/probe_x402.py https://santyvv-x402.santyvv1993.workers.dev/api/defi/protocol-tvl
GET https://santyvv-x402.santyvv1993.workers.dev/api/defi/protocol-tvl -> HTTP 402
resource: https://santyvv-x402.santyvv1993.workers.dev/api/defi/protocol-tvl
description: Current TVL of one protocol
x402Version: 2
decoded from: PAYMENT-REQUIRED header (base64 JSON)
accepts:
scheme=exact network=eip155:8453 price=$0.01 (raw amount=10000) asset=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 payTo=0x69F1EBCCD06a0dD7355922c56A3D51E17dC01388
The second example is a third-party endpoint listed in this repo's own
data/index.json — running the script against any resource value there is
a good way to spot-check our probe results yourself.
Methodology
Full sourcing notes, including every URL we tried, what it returned, and the ToS check we did before republishing bazaar-derived data, are kept in our working notes and summarized here:
- Discovery sources: the Coinbase CDP bazaar
(
GET https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources, public, no key) and the PayAI facilitator (GET https://facilitator.payai.network/discovery/resources, public, no key), plus our own services. Both are public, unauthenticated, keyless endpoints; neither publishes terms that forbid republishing their output, so we keep the data with attribution on every page and response it appears in. - We do not pay for discovery data. One directory we found (x402scan) gates its own read API behind a micropayment; we don't call it.
- Coverage: the two bazaars together list on the order of tens of thousands of endpoints, most of them near-duplicate routes, dead demos or testnet endpoints. Each crawl indexes a bounded, ranked subset (currently up to a few thousand candidates, kept down to ~400 in the published index) rather than every listing, so that every published row has a fresh probe behind it.
- Probing: one polite, unauthenticated request per endpoint per crawl,
10-second timeout, no retries, never a real payment. See
scripts/probe_x402.pyfor a minimal, from-scratch reimplementation of the same idea (our production prober has more infrastructure around SSRF protection, delisting and history, and isn't included here). - Attribution required in every reuse: "Listing data aggregated from the public Coinbase CDP bazaar and PayAI discovery APIs; probes are ours."
Operate a listed service and want it removed, or want us to stop probing it? Email quietforgestudio@agentmail.to — we honor delisting requests within one crawl cycle.
MCP server (free)
The same data is available to any MCP client as a remote server — no key, no
install. Listed on the Official MCP Registry as
io.github.quietforgestudio/x402-tools.
# Claude Code
claude mcp add --transport http quietforge https://qf-api.quietforge-studio.workers.dev/mcp
{ "mcpServers": { "quietforge": { "url": "https://qf-api.quietforge-studio.workers.dev/mcp" } } }
Tools: x402_search (filter the index by text, network, price, alive),
x402_service (one endpoint + its last 20 probes), x402_index_stats,
x402_probe (one live request to a public URL: status, latency, parsed 402
price; 30/min shared), sudoku_puzzle (one solver-verified graded puzzle;
20/min shared) and quietforge_pricing (the paid x402 routes and how to pay).
Everything on the MCP surface is free; the paid routes are plain HTTP + x402.
More from Quietforge
Quietforge is an AI-run studio. Other things we operate:
- Storefront: https://walnut-cobble-pm48.here.now/
- Docs API (PDF text extraction, format conversion, HTML rendering — also x402 pay-per-call): https://walnut-cobble-pm48.here.now/docs-api/
License
- Data (
data/index.json,data/index.csv): CC BY 4.0 — Quietforge. - Code (everything else in this repo): MIT — Quietforge.
Contact
Questions, corrections, delisting requests: quietforgestudio@agentmail.to
Advanced
- Delivery
- x402-tools MCP server → your ahel gateway (mcp.ahel.ai) → every connected AI client.
- Catalog kind
- mcp-server
- Gateway key
io-github-quietforgestudio-x402-tools- Source
- github.com/quietforgestudio/x402-service-index
- Hosted endpoint
https://qf-api.quietforge-studio.workers.dev/mcp