SimpleFunctions

World State API for AI agents.

Event probability state, not headlines.

The world state API returns a compact world model built from prediction markets, government data, economic indicators, and traditional market anchors. Roughly 800 tokens. One curl. No auth. Refreshed every 15 minutes.

Cyberpunk oil painting — humanoid robot turning to gaze at the viewer over its shoulder, neon Tokyo street at night

The world watching you back — what an agent reads, in one snapshot.

Numbers an agent can act on.

Web search returns narratives. News APIs return fragments. World state returns calibrated odds.

Prediction markets force participants to settle on real outcomes with real money, so probabilities ship as numbers instead of paragraphs an agent has to interpret.

SourceReturnsWeakness

Web search

documents, narratives, recency-mixed

no calibration, no probability

News API

titles, sources, dates

no probability, no liquidity context

Market data API

prices, volume, orderbook

no compressed agent context

SimpleFunctions world state

probability state + regime + gov/econ + next actions

should be interpreted, not blindly trusted

Live output — exactly what your agent gets

~1,767 tokens · refresh every 15 min · cached at edge
GET /api/agent/worldtext/markdown
# World (2026-05-17 22:45 UTC)
Regime: Broad up-skew — markets resolving toward higher probability
SimpleFunctions Index: Disagree 52 | GeoRisk 0 | Breadth +0.36 | Activity 14
Baseline: last 12h

## [divergence] Dogecoin price? overshooting a new country buy Bitcoin by...? — 50¢ gap [Crypto]
- lhs: {"name":"Will a new country buy Bitcoin by...?: June 30, 2026","Δ":"29c"}
- rhs: {"name":"Dogecoin price  on May 22, 2026?: $0.105 or above","Δ":"60c"}
- gap: -50
- theme: Crypto
- triggerTicker: 0xabbcf4b109800ea512cbe08aa5efe734131855da2847fcb497d763778de4f654
- laggingTicker: KXDOGED-26MAY2217-T0.1049999
  → why? · `GET https://simplefunctions.dev/api/agent/world?op=explain&item=s-uwpmp3`
  → Will a new country buy Bitcoin by...?: June 30, 2026 spread · `GET https://simplefunctions.dev/api/agent/world?op=dispersion`
  → 6h path · `GET https://simplefunctions.dev/api/agent/world?op=history&dt=6h`

## [divergence] NJ-05 House Election Winner lagging CT-05 House Election Winner — 41¢ gap [US Elections]
- lhs: {"name":"CT-05 House Election Winner: Democratic Party","Δ":"30c"}
- rhs: {"name":"NJ-05 House Election Winner: Republican Party","Δ":"19c"}
- gap: 41
- theme: US Elections
- triggerTicker: 0x40b2475e802d01b929cddd1124b8199d04989f1678bcf41d53fa75d7d917333d
- laggingTicker: 0x8a2a7457c9a8be976d0fb615b952542db4911e45987e1300d4ec3b5a3008174f
  → why? · `GET https://simplefunctions.dev/api/agent/world?op=explain&item=s-xn5ysa`
  → CT-05 House Election Winner: Democratic Party spread · `GET https://simplefunctions.dev/api/agent/world?op=dispersion`
  → 6h path · `GET https://simplefunctions.dev/api/agent/world?op=history&dt=6h`

## [divergence] Anthropic release Mythos? overshooting OpenAI release GPT-6? — 29¢ gap [AI / LLM]
- lhs: {"name":"Will OpenAI release GPT-6 before Sep 1, 2026?: Before Sep 1, 2026","Δ":"-30c"}
- rhs: {"name":"Will Anthropic release Mythos before Dec 1, 2026?: Before Dec 1, 2026","Δ":"55c"}
- gap: -29
- theme: AI / LLM
- triggerTicker: KXGPT-OPEN-26SEP01
- laggingTicker: KXCLAUDE-MYTH-26DEC01
  → why? · `GET https://simplefunctions.dev/api/agent/world?op=explain&item=s-qfy2vt`
  → Will OpenAI release GPT-6 before Sep 1, 2026?: Before Sep 1, 2026 spread · `GET https://simplefunctions.dev/api/agent/world?op=dispersion`
  → 6h path · `GET https://simplefunctions.dev/api/agent/world?op=history&dt=6h`

## [consensus_break] at least 3 judges be confirmed in May?: 5 markets deeply split (σ=45¢, range 93¢)
- seriesKey: KXJUDGECOUNT
- markets: [{"ticker":"KXJUDGECOUNT-26MAY-0","title":"Will at least 1 judges be confirmed in May 2026?: At least 1","price":96},{"ticker":"KXJUDGECOUNT-26MAY-1","title":"Will at least 2 ju...
- dispersion: 45
- range: 93
- implication: markets disagree on resolution level
  → full spread · `GET https://simplefunctions.dev/api/agent/world?op=dispersion`
  → why disagree? · `GET https://simplefunctions.dev/api/agent/world?op=explain&item=s-4ed4u4`

## [consensus_break] Euro area GDP growth rate QoQ flash for Q1 b…: 3 markets deeply split (σ=44¢, range 93¢)
- seriesKey: KXEZGDPQOQF
- markets: [{"ticker":"KXEZGDPQOQF-26JUN05-T-0.1","title":"Will Euro area GDP growth rate QoQ flash for Q1 2026 be above -0.1%?: Above -0.1%","price":97},{"ticker":"KXEZGDPQOQF-26JUN05-T0....
- dispersion: 44
- range: 93
- implication: markets disagree on resolution level
  → full spread · `GET https://simplefunctions.dev/api/agent/world?op=dispersion`
  → why disagree? · `GET https://simplefunctions.dev/api/agent/world?op=explain&item=s-9zo5cd`

## [consensus_break] Italy GDP growth rate YoY for Q1 be above 0.…: 5 markets deeply split (σ=43¢, range 93¢)
- seriesKey: KXITGDPYOYA
- markets: [{"ticker":"KXITGDPYOYA-26MAY29-T0.0","title":"Will Italy GDP growth rate YoY for Q1 2026 be above 0.0%?: Above 0.0%","price":96},{"ticker":"KXITGDPYOYA-26MAY29-T0.4","title":"W...
- dispersion: 43
- range: 93
- implication: markets disagree on resolution level
  → full spread · `GET https://simplefunctions.dev/api/agent/world?op=dispersion`
  → why disagree? · `GET https://simplefunctions.dev/api/agent/world?op=explain&item=s-1m2jsy`

## [resolving_soon] 93% no in 5h — average **gas prices** be above?
- ticker: KXAAAGASD-26MAY18-4.565
- venue: kalshi
- title: Will average **gas prices** be above $4.565?: Above 4.565
- price: 7
- settlesInHours: 5
- impliedProbability: 0.07
- ifYes: resolves TRUE, pays 100¢
- ifNo: resolves FALSE, pays 0¢
  → price path · `GET /api/public/market/KXAAAGASD-26MAY18-4.565`
  → nearby resolutions · `GET https://simplefunctions.dev/api/agent/world?op=catalyst`
  → siblings · `GET https://simplefunctions.dev/api/agent/world?op=trail&from=KXAAAGASD-26MAY18-4.565`

## [resolving_soon] 95% yes in 15h — In the Grey Rotten Tomatoes score?
- ticker: KXRT-INT-35
- venue: kalshi
- title: In the Grey Rotten Tomatoes score?: Above 35
- price: 95
- settlesInHours: 15
- impliedProbability: 0.95
- ifYes: resolves TRUE, pays 100¢
- ifNo: resolves FALSE, pays 0¢
  → price path · `GET /api/public/market/KXRT-INT-35`
  → nearby resolutions · `GET https://simplefunctions.dev/api/agent/world?op=catalyst`
  → siblings · `GET https://simplefunctions.dev/api/agent/world?op=trail&from=KXRT-INT-35`

## [resolving_soon] 95% yes in 15h — Obsession Rotten Tomatoes score?
- ticker: KXRT-OBS-93
- venue: kalshi
- title: Obsession Rotten Tomatoes score?: Above 93
- price: 95
- settlesInHours: 15
- impliedProbability: 0.95
- ifYes: resolves TRUE, pays 100¢
- ifNo: resolves FALSE, pays 0¢
  → price path · `GET /api/public/market/KXRT-OBS-93`
  → nearby resolutions · `GET https://simplefunctions.dev/api/agent/world?op=catalyst`
  → siblings · `GET https://simplefunctions.dev/api/agent/world?op=trail&from=KXRT-OBS-93`

## [regime_shift] regime shifting: GeoRisk 20→0 (-20)
- baselineAt: 2026-05-17T11:00:00.071Z
- driver: geopolitics
- primaryMover: GeoRisk
- moves: [{"k":"GeoRisk","from":20,"to":0,"Δ":-20,"unit":""}]
- atBaseline: {"disagreement":48,"geoRisk":20,"breadth":0.35,"activity":14}
- now: {"disagreement":52,"geoRisk":0,"breadth":0.36,"activity":14}
  → drill into geopolitics · `GET https://simplefunctions.dev/api/agent/world/geopolitics`
  → 24h path · `GET https://simplefunctions.dev/api/agent/world?op=history&dt=24h`

## Zoom
- **Iran** — 204 markets → `GET https://simplefunctions.dev/api/agent/world/iran`
- **Oil & Energy** — 434 markets → `GET https://simplefunctions.dev/api/agent/world/oil`
- **Fed & Rates** — 1113 markets → `GET https://simplefunctions.dev/api/agent/world/fed-rate`
- **Recession** — 642 markets → `GET https://simplefunctions.dev/api/agent/world/recession`
- **2026 Elections** — 3017 markets → `GET https://simplefunctions.dev/api/agent/world/election-2026`
- **Crypto** — 1062 markets → `GET https://simplefunctions.dev/api/agent/world/bitcoin`
- **Ukraine/Russia** — 291 markets → `GET https://simplefunctions.dev/api/agent/world/ukraine`
- **China/Taiwan** — 340 markets → `GET https://simplefunctions.dev/api/agent/world/china`

---
Path: https://simplefunctions.dev/api/agent/world
Op: snapshot · Generated in 5473ms

Four endpoints. Same world, different resolutions.

Full snapshot, incremental delta, focused topics, or cross-market anomaly. All free, all no auth.

API reference
/api/agent/world

Full panoramic snapshot. Six topics, anchor contracts, prediction index, traditional markets.

~800 tokens
/api/agent/world/delta?since=1h

Only what changed since timestamp. For agents in long-running sessions that need periodic refresh.

~30–50 tokens
/api/agent/world?focus=energy,geo

Same token budget, concentrated on fewer topics. More contracts, more depth per topic.

~800 tokens, focused
/.well-known/ai-world-state

Discovery document advertising endpoints, formats, refresh cadence, and licensing.

JSON manifest

How agents should consume world state

Snapshot at session start, reason against the numbers, monitor for change, drill into the next-action endpoints. Treat the state as context, not as a guarantee.

Snapshot

Call /api/agent/world at session start to seed the agent with the current event probability state.

Reason

Use salient markets, regime signals, and traditional anchors as context, not as a guarantee.

Monitor

During long sessions, call /api/agent/world/delta?since=1h to wake only on change.

Drill

Follow nextActions into market inspect, gov/econ query, screen, or index history.

31× improvement in world awareness.

The World Awareness Benchmark (WAB) is a 44-question battery covering recession odds, oil prices, geopolitical risk, and election probabilities. Same model, with and without world state context.

Read the paper

Baseline (no world state)

2.3%

+ 800 tokens of world state

70.5%

Geo

+50pp

Econ

+80pp

Energy

+71pp

Elections

+60pp

Markets

+75pp

Calibrated by real money.

Prediction market participants vote with real money on real outcomes. Wrong forecasts lose money. The settlement mechanism produces probability numbers more reliable than analyst reports or news summaries on the same questions.

SimpleFunctions distills 35,890 indicator-scored markets into a single world state. Anchor contracts always appear. Sports, weather, and daily closes are filtered out.

35,890

markets distilled

~800

tokens / snapshot

15 min

refresh cadence

6

rotating topics

Sources: Kalshi (CFTC-regulated), Polymarket, Databento, public econ/gov data.

World awareness in three lines.

Drop the world state into a system prompt, an MCP tool, or a periodic context refresh. No auth. No setup.

# pip install simplefunctions-ai
from simplefunctions import world

state = world()  # ~800 tokens, calibrated by real money
messages = [
    {"role": "system", "content": f"You are a helpful assistant.\n\n{state}"},
    {"role": "user", "content": "Should I be worried about oil prices?"}
]

Ecosystem

FAQ

What is a world state API?

A world state API returns a compact, calibrated description of the live state of the world that an AI agent can read in one call. SimpleFunctions returns event probabilities, regime signals, geopolitical risk, market movers, and gov/econ anchors as a single ~800-token markdown or JSON object.

Why not use web search for world awareness?

Web search returns narratives, dates, and headlines. It does not return calibrated numbers. Prediction-market-implied probabilities are forced to settle on real outcomes, so the world state ships numbers an agent can act on, not paragraphs it has to interpret.

Why prediction markets as the source?

Participants vote with real money on real outcomes. The settlement mechanism punishes wrong forecasts and rewards calibration. That produces probability numbers that, in aggregate, are usually more reliable than analyst reports or news summaries on the same questions.

What topics are included in the world state?

Six rotating topics: geopolitics, macro/economy, energy, elections, crypto/systemic risk, and tech. Anchor contracts (recession probability, Fed actions, geopolitical risk) always appear. Sports, weather, and daily closes are filtered out.

How often is the world state refreshed?

Every 15 minutes. Calls to /api/agent/world return cached output within the window so identical requests stay free and fast.

Can I get only what changed since my last call?

Yes. /api/agent/world/delta?since=1h returns a compact diff so long-running agents can wake on change without re-ingesting the full snapshot.

Can I focus the world state on one or two topics?

Yes. /api/agent/world?focus=energy,geo concentrates the same token budget on fewer topics, returning more contracts and more depth per topic.

Is there a standard discovery URL for AI tools?

Yes. /.well-known/ai-world-state advertises the world state endpoints, formats, refresh cadence, and licensing so MCP clients, Claude Code, Codex, and other agents can auto-configure.

Can this be used inside MCP, Claude Code, or Codex agents?

Yes. The endpoint is plain HTTP markdown/JSON and works as an MCP tool, a system prompt block, or a periodic context refresh inside any agent loop.

Is the world state API free?

Yes. /api/agent/world, /api/agent/world/delta, /api/agent/world?focus=, and /.well-known/ai-world-state are public, no-auth endpoints with generous rate limits.

Related surfaces