settling on base mainnet
AgentGate sells four data endpoints over the x402 protocol. An agent sends a request, receives payment terms in the response, pays $0.002–$0.005 in USDC on Base, and gets its JSON — one HTTP round-trip. No sign-up, no API keys, no subscription on either side.
Read the machine catalog$ curl agentgate…/api/airport?code=DXB ‹ 402 payment-required · $0.002 › X-PAYMENT eip3009 usdc.base ‹ 200 { "iata": "DXB", "icao": "OMDB", "name": "Dubai International", "lat": 25.2528, "lon": 55.3644 }
Self-contained data — no upstream keys anywhere, so nothing expires. Unpaid calls answer 402 with x402 terms in the payment-required header.
GET /api/extract?url=
Any public web page as clean readable text — title, meta description, OpenGraph, headings, links, word count. HTML noise stripped.
$0.005GET /api/airport?code=DXB
Airport lookup by IATA or ICAO code — name, coordinates, elevation, country, region, city, size, scheduled service.
$0.002GET /api/route?from=JFK&to=LHR
Great-circle distance in km, nautical miles and statute miles, plus an estimated block flight time.
$0.002GET /api/dns?domain=
A / AAAA / CNAME / MX / NS / TXT records with TTLs, and a summary: resolves, mail configured, SPF policy, verification tokens.
$0.002Any x402-capable client works. With the official JavaScript SDK, payment is one wrapper around fetch — the agent's wallet signs a USDC transfer authorization, the PayAI facilitator verifies and settles it on Base, and the response comes back in the same round-trip.
Settlement lands at 0xe9f8…ea47 with no account state kept on either side. The full contract — schemas, prices, payment terms — is machine-readable at /openapi.json and /api.
import { wrapFetchWithPayment } from "@x402/fetch";
const payFetch = wrapFetchWithPayment(fetch, wallet);
const res = await payFetch(
"https://agentgate-x402.netlify.app/api/route?from=JFK&to=LHR"
);
const data = await res.json(); // paid $0.002, settled