Agent Exchange Utility

Utility data for agents, paid per call

9 GET routes for the lookups agents make all day: US weather forecasts and alerts, US address geocoding and Census geographies, RDAP domain registration, DNS records, one-call domain intel and verifiable random numbers. Each call is paid with x402 in USDC on Base, from $0.001 to $0.01. No account, no API key.

RouteReturnsPriceFree
GET /v1/weather/forecast
Weather forecast (NWS, 7 days)
US National Weather Service 7-day forecast for a lat/lon: about 14 day/night periods with temperature, precipitation chance, wind and text forecast.
Example: /v1/weather/forecast?lat=38.8977&lon=-77.0365
$0.005sample
GET /v1/weather/hourly
Hourly weather, next 48 h (NWS)
US National Weather Service hourly forecast for the next 48 hours at a lat/lon: temperature, dew point, humidity, precipitation chance, wind.
Example: /v1/weather/hourly?lat=38.8977&lon=-77.0365
$0.005sample
GET /v1/weather/alerts
Active weather alerts (NWS)
Active US National Weather Service watches, warnings and advisories for a lat/lon or a US state / marine area code.
Example: /v1/weather/alerts?area=TX
$0.002sample
GET /v1/geo/geocode
US address geocode (Census)
US street address to lat/lon plus state, county, tract, block, place, congressional district and ZCTA from the US Census Geocoder.
Example: /v1/geo/geocode?address=1600%20Pennsylvania%20Ave%20NW%2C%20Washington%2C%20DC%2020500
$0.005sample
GET /v1/geo/reverse
Reverse geocode to Census geographies
Lat/lon to US state, county, tract, block, place, congressional district and ZCTA (US Census Geocoder geographies).
Example: /v1/geo/reverse?lat=30.2672&lon=-97.7431
$0.003sample
GET /v1/domain/rdap/:domain
RDAP domain registration
Normalized RDAP record from the registry: registrar, created/updated/expiry dates, status codes, nameservers, DNSSEC.
Example: /v1/domain/rdap/example.com
$0.005sample
GET /v1/dns/:domain
DNS lookup (DoH)
One DNS record type for a name (A, AAAA, MX, NS, TXT, CAA, SOA, CNAME) via DNS-over-HTTPS, normalized with parsed fields.
Example: /v1/dns/example.com?type=MX
$0.001sample
GET /v1/domain/:domain
Domain intel (RDAP + DNS + email auth)
One call: RDAP summary, A/AAAA/MX/NS, SPF, DMARC and MTA-STS presence, and a link to the domain's Agent Exchange census record.
Example: /v1/domain/example.com
$0.01sample
GET /v1/fun/random
Verifiable random integers (drand)
Random integers in [min,max] derived from the latest drand beacon round, with the round, randomness and derivation so anyone can reproduce them.
Example: /v1/fun/random?min=1&max=6&n=2
$0.001sample

Worked example: one DNS lookup for $0.001

1. Ask without paying. Every paid route answers 402 Payment Required before it looks at the parameters, with the terms in the body and the same JSON, base64, in the PAYMENT-REQUIRED header:

curl -i "https://utility.agentexchange.work/v1/dns/example.com?type=MX"

HTTP/2 402
payment-required: eyJ4NDAyVmVyc2lvbiI6Mi…
content-type: application/json

{
 "x402Version": 2,
 "error": "Payment required",
 "resource": {
  "url": "https://utility.agentexchange.work/v1/dns/example.com?type=MX",
  "serviceName": "DNS record lookup",
  "mimeType": "application/json"
 },
 "accepts": [
  {
   "scheme": "exact",
   "network": "eip155:8453",
   "amount": "1000",
   "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
   "payTo": "0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c",
   "maxTimeoutSeconds": 300,
   "extra": {
    "name": "USD Coin",
    "version": "2"
   }
  }
 ],
 "extensions": {
  "bazaar": {
   "info": {
    "input": {
     "type": "http",
     "method": "GET",
     "pathParams": {
      "domain": "example.com"
     },
     "queryParams": {
      "type": "MX"
     }
    }
   },
   "routeTemplate": "/v1/dns/:domain"
  }
 },
 "message": "Pay $0.001 USDC on Base and retry with PAYMENT-SIGNATURE (v2) or X-PAYMENT (v1).",
 "price": "$0.001"
}

2. Sign an EIP-3009 transferWithAuthorization for amount (1000 atomic units = $0.001 USDC) to payTo on Base. Any x402 client does this for you, for example @x402/fetch: await fetchWithPayment("https://utility.agentexchange.work/v1/dns/example.com?type=MX").

3. Resend the identical GET with PAYMENT-SIGNATURE (x402 v2) or X-PAYMENT (v1). The facilitator (PayAI) verifies and settles; the answer is 200 with a PAYMENT-RESPONSE receipt and JSON like the real sample:

{
 "name": "example.com",
 "type": "MX",
 "status": "NOERROR",
 "dnssec_validated": true,
 "answers": [
  {
   "name": "example.com",
   "type": "MX",
   "ttl": 267,
   "data": "0 .",
   "parsed": {
    "priority": 0,
    "exchange": ".",
    "null_mx": true
   }
  }
 ],
 "route": "dns",
 "price_usdc": 0.001,
 "payment": {
  "transaction": "0x…",
  "network": "eip155:8453",
  "payer": "0x…"
 }
}

Rules that protect the buyer

Sources