A forecast for half a cent.
Trading bots pay per call over x402, in AUSD. No account, no API key.
- 1
Agent asks
GET /api/paid/forecast?city=NYC - 2
Gets 402
Payment Required: 0.005 AUSD
- 3
Signs
A gasless AUSD transfer (ERC-3009). No ETH needed.
- 4
Gets the forecast
Settled on Base Sepolia. Data comes back with the tx hash.
Try it live
Our demo agent pays real testnet AUSD and gets the forecast.
Technical details+
Endpoints
GET /api/paid/forecast?city=NYC: 0.005 AUSD, one cityGET /api/paid/board: 0.05 AUSD, all 49 citiesGET /api/board: free, what the site uses
Payment
x402 v1, scheme exact, network base-sepolia, asset AUSD 0xa9012a055bd4e0eDfF8Ce09f960291C09D5322dC, EIP-712 domain Agora Dollar / 1. Highwater checks signature, recipient, amount, validity window, nonce and balance, then submits the transfer from its relayer.
Response fields
| observedMax | Highest temperature reported so far today (°F) |
| median, range80 | Median and 80% range of the final official high (°F) |
| distribution | Probability of each whole-degree final high |
| contracts[].fair | Probability that each Gemini contract settles YES |
| contracts[].status | live, locked (≥ 97%) or dead (already impossible) |
| contracts[].quote | Highwater's two-sided quote |
| contracts[].market, edge | Gemini's current book, and a flag when it is 5¢ or more from fair |
Client
import { wrapFetchWithPayment, decodeXPaymentResponse } from "x402-fetch";
// wallet: a viem wallet client on Base Sepolia holding AUSD
const pay = wrapFetchWithPayment(fetch, wallet, 10_000n); // cap: 0.01 AUSD per call
const r = await pay("https://highwater-tau.vercel.app/api/paid/forecast?city=NYC");
const forecast = await r.json();
const receipt = decodeXPaymentResponse(r.headers.get("x-payment-response")!);From the repository
npx tsx --env-file=.env.local scripts/fund-agent.ts
npx tsx --env-file=.env.local scripts/agent.ts <baseUrl> NYC CHI MIAModel
Floor from every METAR since local-standard midnight, rounded down. 82 ensemble members (GFS + ECMWF) shifted by today's observed error (6h half-life), with error of 0.5°F + 0.1°F per hour (max 4°F). Blends from forecast-only at 9:00 to the full nowcast at 12:00. Parameters: backtest 2026-09-10 to 2026-10-10, 12 stations, 371 days.