Product
Live data Historical data Chrome extension
Datasets
Weather Markets
Docs
Quickstart API reference
Company
About Our mission

Live data that matches the research.

Build against historical rows, then call the live method with the same core fields and meanings. Every live row names its source. If latest() receives no rows, it raises NoLiveDataError instead of returning an archive row.

matched archive contract source + freshness explicit Python + TypeScript
// shipping example · weather
weather.latest.py
1import asyncio
2from mostlyright import weather
3
4# newest report; missing data raises instead of going stale
5now = asyncio.run(weather.live.latest("KNYC"))

Live is a mode, not a separate dataset

The subject stays the same. Only the clock and upstream source change.

The same fields and units

Historical and live rows share parser semantics, core fields, units, and identifiers within each dataset.

The current source, named

Every row identifies the feed that produced it. If training and live data use different feeds, the mismatch is explicit.

No silent fallback

If the live source returns no rows, latest() raises NoLiveDataError. It does not replace current data with an archive row.

Build on history, then call the live method

Build features, joins, and validation on historical rows. Switch to live data with the same core fields and explicit source metadata.

The same fields: identifiers, event time, values, and units keep the same meaning.
Source ids included: archive and live rows state which feed produced them.
Honest failure: unavailable live data raises instead of changing modes.
dataset schema
HISTORICAL
schema
dataset.*.v1
clock
as of cutoff
source
archive.*
LIVE
schema
dataset.*.v1
clock
current
source
live.*
same parser · same core fields · different source ids

Watch current observations meet the forecast

Weather is the first supported dataset: live station observations, model forecasts, and historical reports use the same parser and core measurement fields.

KNYC · today observed → forecast

Develop on history. Operate on live data.

01
Choose a dataset

Choose a dataset with historical and live methods.

02
Develop against history

Build and test features against historical rows.

03
Read live data

Call the live method. It returns the same core fields plus explicit source and freshness metadata.

Use the same core fields in historical and live rows.

Read the docs
// request access

Request early access

Mostly Right is currently available by request. Tell us a bit about you and what you are building, and we will be in touch.

I'm a

One email from the team. No spam.