Buyer quickstart

Your first paid call, in three minutes

No signup, no API key. Every command below is copy-and-run — 402 is not an error, it is the price tag.

Step 0 · See the price in 60 seconds (zero dependencies)

Install nothing. This returns 402 Payment Required — not an error, it is the x402 price tag.

terminal · copy & run
curl -i https://feegate.org/api/supply/asset/case_status

The accepts object lists every billing element: eip155:8453 (Base mainnet), the USDC contract, amount 60000 (6 decimals = $0.06), and the pay-to address. _feegate.how_to_pay in the same response lists all three payment routes — step 3 gives a runnable command for each.

Step 1 · Get things working for free

The free tier has a daily quota. Verify the pipeline before you pay anything.

Free tool call (daily free quota)
curl https://feegate.org/api/supply/asset/talent_quota
Free dataset search API · 163,501 records · no key required
curl "https://feegate.org/free/api/search?dataset=defillama-protocols&q=uniswap&limit=3"

All 6 free public datasets (x402 paid-resource index, MCP server directory, DeFi TVL, exchange markets…) use this API. There is also a free MCP endpoint: https://feegate.org/free/mcp (tools: free_datasets / free_search / free_get).

Step 2 · Prepare a wallet (the only prerequisite)

USDC only

Base mainnet USDC (contract 0x8335…2913). No ETH needed — signing uses EIP-3009 and gas is sponsored by the facilitator.

How much is enough

$1 = 20 calls ($0.05 GPU market snapshot) or 100 calls ($0.01 RWA headlines). Start as low as 4 cents.

Where to get it

Withdraw USDC on the Base network from any exchange, or use an official bridge.

Step 3 · Your first paid call (pick one route)

A

x402 client (recommended for Agents, signs automatically)

The official x402 libraries handle the whole loop: receive 402 → sign & pay → retry → get data.

client.py
# pip install "mcp<2" "x402==2.25.0" web3
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
from x402.mcp import create_payment_hook
from eth_account import Account

account  = Account.from_key("your private key")  # just needs Base USDC
MCP_URL  = "https://api.feegate.org/mcp/gpu-market"

async with streamablehttp_client(MCP_URL) as (r, w, _):
    async with ClientSession(r, w, hooks=[create_payment_hook(account)]) as s:
        await s.initialize()
        print(await s.call_tool("list_gpu_models", {}))          # free
        print(await s.call_tool("gpu_price", {"gpu": "H100"}))  # $0.05
B

Paid-transaction receipt (zero dependency, shortest path for humans)

Send $0.06 USDC (Base) from any wallet to the payTo address from the 402 response, then resend with the tx hash:

terminal · no libraries
curl -H "X-Payment-Tx: 0xyour-tx-hash" \\
     https://feegate.org/api/supply/asset/case_status

The server only accepts transfer(address,uint256) events on the USDC contract: pay-to must equal the asset payTo, the amount must cover the price, and status=0x1. The third route is RMB credits: Authorization: Bearer fg_….

402 error reference

What you seeWhat it isWhat to do
402 + accepts JSONA normal payment challenge (the price tag)Pay per accepts, then resend the same request
402 + insufficient creditsThe fg_ key ran out of creditsTop up credits, or switch to on-chain USDC
Timeout / proxy errorA local proxy intercepted the requestSet NO_PROXY and retry
MCP _meta errorA hand-written client dropped the parameterPass params["_meta"] through untouched
isError=true, no chargeUpstream source temporarily unavailableYou are not charged (auto-refunded); retry later