Coming Soon
Observations, forecasts, satellite, and settlement. All the data behind every Kalshi and Polymarket weather contract. Built for AI agents and quants.
$ mostlyright.snapshot("Chicago") # "Will Chicago hit 68°F today?" # THE MARKETS Kalshi 0.62 62% yes settles at Midway Polymarket 0.59 59% yes settles at O'Hare # THE FORECAST — 4-model ensemble NBM 68°F GFS 66°F HRRR 69°F ECMWF 67°F # LIVE AT BOTH SETTLEMENT STATIONS Midway (KMDW) 66.2°F dewpoint 54°F humidity 65% O'Hare (KORD) 65.8°F dewpoint 54°F humidity 66% # HOW IT SETTLES Window tonight, midnight → midnight CT Source NWS Climate Daily (~10 AM CT tomorrow) Reproducible every query pinned to a data_version token
The Problem
Market prices live in one API, weather sits in another. Satellites publish NetCDF, forecasts arrive as GRIB. You spend months on engineering before you make a single trade.
ASOS sensors record in Fahrenheit. Live APIs serve Celsius. Historical archives round to tenths of Celsius. Satellite reports in Kelvin. You reconcile four units for every single reading.
Kalshi's NYC high-temp settles on Central Park ASOS. Polymarket settles on Wunderground LaGuardia. They cover the same city but use different data. Every new market takes days of research.
NOAA publishes satellite data for free. It arrives as 3.7 million NetCDF files across two GOES satellites. A new scan every five minutes, each one a binary blob designed for climate researchers. You reproject the grid, deduplicate overlapping scans, validate against ground stations, and reconcile units. All of that before you get one clean number.
Weather
Kalshi and Polymarket run weather contracts across 60+ cities. Both settle on official station data. We pull every source into one API, reconcile the units automatically, and match each reading to the right settlement station.
Source-priority dedup removes duplicates before they reach your model. Live data returns the same shape as historical, so backtests just work in production.
Settlement windows follow Local Standard Time. Climate records stay held until the NWS publishes. Every reading passes validation before it ships. Bad data, zeros, and NaNs get caught at ingest, not in your backtest.
Markets
We normalize Kalshi and Polymarket into one consistent schema. Query tables directly for raw data, or call snapshot() and get everything an agent needs in a single response.
Built for agents
as_tools() exports every SDK method as an Anthropic-compatible tool definition. Your agent discovers what's available, pulls market and weather context in one call, and backtests against point-in-time snapshots. TOON encoding compresses a full year of daily data small enough to fit in a single prompt.
Without Mostly Right
# scrape AWC METAR text, parse manually
# pull IEM CSV for gap-fill, dedup somehow
# pull NCEI GHCNh for historical backfill
# parse NWS CLI for settlement records
# stream GOES NetCDF from S3, project per pixel
# wire it to Kalshi and Polymarket
# convert units, handle nulls and sentinels
# hope the live data matches the historical
# discover at trade time that it doesn't With Mostly Right
from mostlyright import MostlyRightClient client = MostlyRightClient() # Temporally-honest query snap = client.snapshot("NYC", as_of="2024-07-04T18:00:00Z") snap.observations # filtered to LST window snap.climate # CLI record, or None snap.version # reproducibility token # Agent-native context # Anthropic-compatible tool definitions tools = client.as_tools() # ~60% fewer tokens than JSON toon = client.snapshot("NYC", format="toon")
What's Next
We built this SDK because we trade these markets ourselves. Weather is the first vertical we ship. Every vertical that follows gets the same depth: the same source discipline, the same settlement-grade accuracy, and the same agent-ready schemas. We only ship a vertical when we understand it well enough to trade it.
Game results, player stats, and injury reports from official league feeds. NFL, NBA, MLB, NHL, and soccer. Every resolution traces back to its primary source so your agent never trades on unverified data.
FOMC decisions, jobs reports, CPI, GDP. We parse the original filings and PDFs so your agent gets structured data, not documents. Every release pinned to its publication time so backtests match what the market actually saw.
Match results, tournament brackets, and player performance from league APIs and broadcast feeds. CS2, League of Legends, Dota 2, Valorant. Nested brackets, inconsistent schemas, and paginated results turned into flat, queryable tables.
Oil, gas, metals, and agriculture from EIA, USDA, and CME. Price reports and inventory data normalized into the same schema your agent already uses for weather. Same SDK, same settlement discipline.
You find the edge.
We handle everything else.
Waitlist gets first SDK access and a free API tier.