Documentation
Clink Forge sells machine-purchasable government and civic data over the x402 payment protocol: no account, no API key, no subscription. An agent asks, gets a price, pays a fraction of a cent in USDC on Base, and receives data with a cryptographic provenance chain and a verifiable Ed25519 attestation. Two ways in: MCP for agents, plain HTTP for everything else.
01Connect over MCP
Every data product is an MCP tool. Listed in the official
MCP Registry
as com.clinkforge/clink-forge; in Claude, add it as a custom
connector with the URL above.
Calling a tool is free until you pay — the pricing is built into the flow:
- Call any tool without the optional
paymentargument: you get the exact x402 payment requirements back as the tool result. That is a free price quote — you are never charged for asking. - Sign an x402 payment for those requirements with your wallet
(any x402 client library builds this — an EIP-3009
transferWithAuthorizationfor USDC on Base). - Call the tool again with the encoded payment header value as the
paymentargument. Settlement happens on-chain; the result is the data, its provenance chain, a payment receipt with the transaction hash, and the attestation.
Free MCP methods (initialize, tools/list,
ping) never require payment. Tool schemas are also published at
/v1/meta/mcp/tools.
02Pay per call over HTTP
Every product lives at GET /v1/p/<slug>. An unpaid
request returns 402 Payment Required with the terms in both
protocol generations: the x402 v1 JSON body and the canonical v2
PAYMENT-REQUIRED header.
# 1 — ask the price (free)
curl -i "https://api.clinkforge.com/v1/p/kev-status-by-cve?id=CVE-2021-44228"
# → 402 with accepts[]: scheme "exact", USDC on Base, amount, payTo
# 2 — sign those requirements with an x402 client, then retry
curl -H "X-PAYMENT: <signed>" \
"https://api.clinkforge.com/v1/p/kev-status-by-cve?id=CVE-2021-44228"
# → 200 with the data; X-PAYMENT-RESPONSE carries the settlement
Skip the plumbing — official clients, ~15 lines
The official x402 client libraries handle the 402 handshake, EIP-3009 signing, and retry automatically. Both examples below are tested against this production API and live in the quickstart repo — you need only a wallet key with a little USDC on Base.
# Python — pip install "x402[httpx,evm]"
signer = EthAccountSigner(Account.from_key(os.environ["WALLET_PRIVATE_KEY"]))
client = x402Client()
client.register("eip155:*", ExactEvmScheme(signer=signer))
async with x402HttpxClient(client) as http:
r = await http.get("https://api.clinkforge.com/v1/p/kev-status-by-cve",
params={"id": "CVE-2021-44228"})
// JavaScript — npm install x402-fetch viem
const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY);
const wallet = createWalletClient({ account, chain: base, transport: http() });
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay(
"https://api.clinkforge.com/v1/p/kev-status-by-cve?id=CVE-2021-44228");
The paid response envelope:
{
"product": "kev-status-by-cve", "product_version": 1,
"row_count": 1,
"data": [{ "...": "...", "_record_id": "CVE-2021-44228" }],
"provenance": [{ "authority": "CISA", "source_url": "...",
"observed_at": "...", "hash": "sha256..." }],
"attestation": { "signing_key_id": "...", "signature": "base64...", "...": "..." },
"payment_receipt": { "settlement_ref": "0x...", "amount_usd": 0.01 }
}
Fair-failure rules, enforced in code: a wrong parameter returns
422 before any money moves; if fulfillment fails after
you paid, you receive a long-lived replay voucher instead of losing the
payment; a transient failure retries free with the short-lived
x-paid-token. An unhealthy product refuses to sell —
503, never a payment challenge.
03Verify what you bought
Every paid response is signed. Verification is free and needs no account:
POST /v1/verify/attestationwith the response'sattestationobject →{"valid": true}GET /v1/meta/keys— the Ed25519 public keys.- The
result_digestcovers the response minusattestation,payment_receiptandcached;provenance[].hashis the SHA-256 of the upstream snapshot the rows came from.
04Catalog & discovery
| Surface | What it is |
|---|---|
| /llms.txt | The whole catalog in plain text — products, parameters, prices. |
| /v1/meta/products | Catalog as JSON with live health per product. |
| /v1/meta/openapi.json | OpenAPI description of every endpoint and schema. |
| /.well-known/x402.json | x402 discovery manifest (v2 payment requirements per service). |
Prices are per call, typically $0.001–$0.05. Sources are official
government and public-data feeds (CISA, FDA, FDIC, Treasury, NWS, Census,
BEA, EIA, HUD, NOAA, Companies House and more), ingested on fixed cadences
with append-only bitemporal storage — as_of reads and
reproducible replays included.
05Support
Questions, keys, or a dataset you wish we sold: admin@clinkforge.com. Service status is visible live on every discovery surface; unhealthy products always fail closed.