Each paid call costs a fixed amount in USDC on Base mainnet, paid inline over HTTP with x402 v2. There is no account, API key, subscription or minimum. Prices are fixed; there is no time-limited offer.
/sample/airport-status (JFK), /sample/disruptions (top 3), /sample/tfr-corridor (Washington DC box): live data, fixed inputs, no payment.https://faa-x402.quietworklabs.workers.dev/mcp: the first 5 calls per day per client per tool are free (best effort, counted per IP), then the same per-call price via x402.| Route | Price (USDC) | Free sample |
|---|---|---|
GET /v1/airport-status?code=JFK | $0.002 | sample |
GET /v1/disruptions?minSeverity=2 | $0.003 | sample |
GET /v1/tfr-corridor?bbox=minLon,minLat,maxLon,maxLat | $0.005 | sample |
The FAA publishes NAS Status and TFR data free at nasstatus.faa.gov and tfr.faa.gov. You pay for parsing, fusion (altitude band and valid_until per TFR polygon), filtering and agent-ready packaging, not for exclusive data. Not affiliated with the FAA. Not for operational flight planning.
PAYMENT-REQUIRED header (base64 JSON; the same JSON is in the body). It lists scheme: exact, network: eip155:8453 (Base mainnet), asset = USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, amount in USDC base units (6 decimals, so 2000 = $0.002) and payTo: 0x076e653F4f458201B866B6B46A50F5796C345fb7.transferWithAuthorization (EIP-3009) for exactly that amount and retries the same request with a PAYMENT-SIGNATURE header.https://facilitator.payai.network) verifies and settles on Base. The facilitator submits the transaction, so the payer needs USDC only, not ETH for gas.PAYMENT-RESPONSE header containing the settlement transaction. Unpaid or failed settlements are not charged.// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.BUYER_KEY as `0x${string}`); // a wallet with a little USDC on Base
const pay = wrapFetchWithPayment(fetch, new x402Client().register("eip155:8453", new ExactEvmScheme(account)));
const r = await pay("https://faa-x402.quietworklabs.workers.dev/v1/airport-status?code=EWR");
console.log(r.status, await r.json());
See the 402 yourself: curl -i "https://faa-x402.quietworklabs.workers.dev/v1/airport-status?code=JFK"
POST JSON-RPC to https://faa-x402.quietworklabs.workers.dev/mcp (Streamable HTTP, stateless). Tools: airport_status, us_airport_disruptions, tfr_corridor. After the free quota, an unpaid tools/call returns the x402 payment requirements in structuredContent; resend with the signed payload in params._meta["x402/payment"] (the @x402/mcp client does this). The receipt comes back in result._meta["x402/payment-response"].
x-payment-info)Built and operated with AI automation by Quietwork Labs; no staffed on-call team. Questions: quietworklabs@outlook.com.