{
 "name": "Agent Exchange Utility",
 "description": "Pay-per-call utility data for agents, paid with x402 (USDC on Base); no API key. 9 skills: NWS forecast, hourly forecast and alerts; US Census geocoding and reverse geocoding; RDAP; DNS; one-call domain intel; verifiable random integers from drand.",
 "url": "https://utility.agentexchange.work",
 "version": "1.0.0",
 "protocolVersion": "0.3.0",
 "documentationUrl": "https://utility.agentexchange.work/openapi.json",
 "iconUrl": "https://utility.agentexchange.work/icon.png",
 "provider": {
  "organization": "Agent Exchange",
  "url": "https://network.agentexchange.work"
 },
 "capabilities": {
  "streaming": false,
  "pushNotifications": false,
  "stateTransitionHistory": false,
  "extensions": [
   {
    "uri": "https://x402.org",
    "description": "x402 payments: USDC on Base (eip155:8453) to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c; an unpaid GET answers 402 with the terms",
    "required": true,
    "params": {
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "payTo": "0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c",
     "facilitator": "https://facilitator.payai.network",
     "manifest": "https://utility.agentexchange.work/.well-known/x402"
    }
   }
  ]
 },
 "defaultInputModes": [
  "text/plain"
 ],
 "defaultOutputModes": [
  "application/json"
 ],
 "skills": [
  {
   "id": "weather-forecast",
   "name": "Weather forecast (NWS, 7 days) ($0.005 USDC)",
   "description": "GET https://utility.agentexchange.work/v1/weather/forecast Returns the official US National Weather Service 7-day forecast for a US lat/lon as normalized JSON: about 14 day and night periods (temperature, precipitation probability, wind, short and detailed text), plus city, state, time zone, NWS office and grid. Call it when an agent needs a weather forecast for a US location. Points outside NWS coverage are refused with 400 before payment. Price 5000 USDC atomic units to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c on eip155:8453; unpaid requests answer 402 (x402 v2). Free sample: https://utility.agentexchange.work/samples/weather-forecast.json",
   "tags": [
    "weather",
    "forecast",
    "nws",
    "geo",
    "us"
   ],
   "examples": [
    "GET https://utility.agentexchange.work/v1/weather/forecast?lat=38.8977&lon=-77.0365"
   ],
   "inputModes": [
    "text/plain"
   ],
   "outputModes": [
    "application/json"
   ]
  },
  {
   "id": "weather-hourly",
   "name": "Hourly weather, next 48 h (NWS) ($0.005 USDC)",
   "description": "GET https://utility.agentexchange.work/v1/weather/hourly Returns the next 48 hours of the official US National Weather Service hourly forecast for a US lat/lon as normalized JSON: per hour temperature, dew point, relative humidity, precipitation probability, wind and short text, plus location, time zone and NWS grid. Call it when an agent needs hour-by-hour weather for a US place. Points outside NWS coverage are refused with 400 before payment. Price 5000 USDC atomic units to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c on eip155:8453; unpaid requests answer 402 (x402 v2). Free sample: https://utility.agentexchange.work/samples/weather-hourly.json",
   "tags": [
    "weather",
    "hourly",
    "nws",
    "geo",
    "us"
   ],
   "examples": [
    "GET https://utility.agentexchange.work/v1/weather/hourly?lat=38.8977&lon=-77.0365"
   ],
   "inputModes": [
    "text/plain"
   ],
   "outputModes": [
    "application/json"
   ]
  },
  {
   "id": "weather-alerts",
   "name": "Active weather alerts (NWS) ($0.002 USDC)",
   "description": "GET https://utility.agentexchange.work/v1/weather/alerts Returns the active US National Weather Service watches, warnings and advisories for a point (?lat=&lon=) or a US state, territory or marine area code (?area=TX) as normalized JSON: event, severity, urgency, certainty, headline, area, onset and expiry, description, instructions and UGC/SAME codes. Call it when an agent must know whether severe weather affects a US place now. An empty list is a valid answer. Price 2000 USDC atomic units to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c on eip155:8453; unpaid requests answer 402 (x402 v2). Free sample: https://utility.agentexchange.work/samples/weather-alerts.json",
   "tags": [
    "weather",
    "alerts",
    "nws",
    "warnings",
    "us"
   ],
   "examples": [
    "GET https://utility.agentexchange.work/v1/weather/alerts?area=TX"
   ],
   "inputModes": [
    "text/plain"
   ],
   "outputModes": [
    "application/json"
   ]
  },
  {
   "id": "geo-geocode",
   "name": "US address geocode (Census) ($0.005 USDC)",
   "description": "GET https://utility.agentexchange.work/v1/geo/geocode Geocodes a US street address with the US Census Bureau Geocoder: returns the matched address, lat/lon and Census geographies (state and county FIPS, tract, block group, block, place, county subdivision, congressional district, ZCTA, metro area, school district). Call it when an agent needs coordinates or FIPS codes for a US address. A no-match answer (matched:false) is a valid, charged result; empty input is refused with 400 before payment. Price 5000 USDC atomic units to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c on eip155:8453; unpaid requests answer 402 (x402 v2). Free sample: https://utility.agentexchange.work/samples/geo-geocode.json",
   "tags": [
    "geocoding",
    "address",
    "census",
    "fips",
    "geo"
   ],
   "examples": [
    "GET https://utility.agentexchange.work/v1/geo/geocode?address=1600%20Pennsylvania%20Ave%20NW%2C%20Washington%2C%20DC%2020500"
   ],
   "inputModes": [
    "text/plain"
   ],
   "outputModes": [
    "application/json"
   ]
  },
  {
   "id": "geo-reverse",
   "name": "Reverse geocode to Census geographies ($0.003 USDC)",
   "description": "GET https://utility.agentexchange.work/v1/geo/reverse Maps a lat/lon to US Census geographies with the US Census Bureau Geocoder: state and county FIPS, tract, block group, block, place, county subdivision, congressional district, ZCTA, metro area and school district. Call it when an agent has coordinates and needs the US county, FIPS codes or census tract. Points outside the US answer in_us:false (a valid, charged result). Price 3000 USDC atomic units to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c on eip155:8453; unpaid requests answer 402 (x402 v2). Free sample: https://utility.agentexchange.work/samples/geo-reverse.json",
   "tags": [
    "geocoding",
    "reverse",
    "census",
    "fips",
    "geo"
   ],
   "examples": [
    "GET https://utility.agentexchange.work/v1/geo/reverse?lat=30.2672&lon=-97.7431"
   ],
   "inputModes": [
    "text/plain"
   ],
   "outputModes": [
    "application/json"
   ]
  },
  {
   "id": "domain-rdap",
   "name": "RDAP domain registration ($0.005 USDC)",
   "description": "GET https://utility.agentexchange.work/v1/domain/rdap/:domain Looks up a domain in its registry's RDAP server (found through the IANA bootstrap) and returns normalized JSON: registered yes/no, registrar name and IANA id, creation, last-change and expiry dates, EPP status codes, nameservers and DNSSEC delegation (DS records). Call it for WHOIS-style questions: who is the registrar, when does it expire, is it registered. TLDs without RDAP are refused with 400 before payment. Price 5000 USDC atomic units to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c on eip155:8453; unpaid requests answer 402 (x402 v2). Free sample: https://utility.agentexchange.work/samples/domain-rdap.json",
   "tags": [
    "domains",
    "rdap",
    "whois",
    "registrar",
    "dns"
   ],
   "examples": [
    "GET https://utility.agentexchange.work/v1/domain/rdap/example.com"
   ],
   "inputModes": [
    "text/plain"
   ],
   "outputModes": [
    "application/json"
   ]
  },
  {
   "id": "dns",
   "name": "DNS lookup (DoH) ($0.001 USDC)",
   "description": "GET https://utility.agentexchange.work/v1/dns/:domain Resolves one DNS record type for a name through Cloudflare 1.1.1.1 DNS-over-HTTPS and returns normalized JSON: status (NOERROR, NXDOMAIN), DNSSEC-validated flag, answers with TTL and parsed fields (MX priority and host, joined TXT strings, CAA tag and value, SOA serial). ?type= is A (default), AAAA, MX, NS, TXT, CAA, SOA or CNAME. Call it when an agent needs a live DNS answer. NXDOMAIN is a valid answer. Price 1000 USDC atomic units to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c on eip155:8453; unpaid requests answer 402 (x402 v2). Free sample: https://utility.agentexchange.work/samples/dns.json",
   "tags": [
    "dns",
    "domains",
    "doh",
    "mx",
    "txt"
   ],
   "examples": [
    "GET https://utility.agentexchange.work/v1/dns/example.com?type=MX"
   ],
   "inputModes": [
    "text/plain"
   ],
   "outputModes": [
    "application/json"
   ]
  },
  {
   "id": "domain",
   "name": "Domain intel (RDAP + DNS + email auth) ($0.01 USDC)",
   "description": "GET https://utility.agentexchange.work/v1/domain/:domain One-record domain intelligence: RDAP summary (registrar, created, expiry, status, DNSSEC), DNS A, AAAA, CNAME, MX and NS, email authentication (SPF record and its all-qualifier, DMARC policy and reporting, MTA-STS presence, null MX), and a link to the domain's free Agent Exchange census record. Call it to vet a domain, a sender or a vendor in one request instead of eight lookups. Price 10000 USDC atomic units to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c on eip155:8453; unpaid requests answer 402 (x402 v2). Free sample: https://utility.agentexchange.work/samples/domain.json",
   "tags": [
    "domains",
    "dns",
    "rdap",
    "email",
    "security"
   ],
   "examples": [
    "GET https://utility.agentexchange.work/v1/domain/example.com"
   ],
   "inputModes": [
    "text/plain"
   ],
   "outputModes": [
    "application/json"
   ]
  },
  {
   "id": "fun-random",
   "name": "Verifiable random integers (drand) ($0.001 USDC)",
   "description": "GET https://utility.agentexchange.work/v1/fun/random Returns n random integers between min and max derived from the latest public drand randomness beacon round (League of Entropy), with the round number, signature, randomness and the exact SHA-256 derivation so anyone can reproduce and audit the numbers. Call it for dice, raffles, lotteries, sampling or game moves that must be provably unmanipulated. Optional salt makes results distinct per caller. Price 1000 USDC atomic units to 0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c on eip155:8453; unpaid requests answer 402 (x402 v2). Free sample: https://utility.agentexchange.work/samples/fun-random.json",
   "tags": [
    "random",
    "drand",
    "verifiable",
    "dice",
    "games"
   ],
   "examples": [
    "GET https://utility.agentexchange.work/v1/fun/random?min=1&max=6&n=2"
   ],
   "inputModes": [
    "text/plain"
   ],
   "outputModes": [
    "application/json"
   ]
  }
 ],
 "x402": {
  "payTo": "0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c",
  "network": "eip155:8453",
  "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "facilitator": "https://facilitator.payai.network",
  "manifest": "https://utility.agentexchange.work/.well-known/x402",
  "prices_usdc": {
   "/v1/weather/forecast": 0.005,
   "/v1/weather/hourly": 0.005,
   "/v1/weather/alerts": 0.002,
   "/v1/geo/geocode": 0.005,
   "/v1/geo/reverse": 0.003,
   "/v1/domain/rdap/:domain": 0.005,
   "/v1/dns/:domain": 0.001,
   "/v1/domain/:domain": 0.01,
   "/v1/fun/random": 0.001
  },
  "replay": "an upstream failure after settlement (502 upstream_failed) replays once with the same payment header within 10 minutes"
 }
}