Reference data for prediction markets: graded resolution clarity, cross-venue links, provenance.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
Institutional reference layer for prediction market data. Structures, classifies, grades, and links markets across Polymarket and Kalshi so research, risk, and data teams can use them like any other asset class.
Live now: clearmarket.fyi Β· REST api.clearmarket.fyi/v1 Β· MCP api.clearmarket.fyi/mcp Β· daily wire feed at /signals. Open and read-only β no key required.
Coverage: the live Kalshi + Polymarket universe (untraded placeholder slots excluded; counts on the site refresh with each ingest). Every market carries a Resolution Clarity Grade (RCG A/B/C) and full source provenance β the resolution source is named where the venue commits to one, and where it doesn't, that absence is classified and graded (that gap is the point). Markets listing the same question on both venues carry cross-venue links. Prices refresh hourly.
v0.2 Β· June 2026
No key, no signup β open and read-only.
MCP (agent clients β Claude Desktop, Cursor, VS Code): streamable HTTP at https://api.clearmarket.fyi/mcp, six read-only tools (list_events, get_event, get_market, list_upcoming_catalysts, list_signals, get_signal). get_market accepts a ClearMarket id, a venue-native id/ticker, or a market URL (best-effort β Kalshi URLs resolve; for Polymarket pass the conditionId); get_event takes detail=concise for a lean grade/price view of large multi-market events. Agent manifest at /AGENTS.md. One-click install:
β¦or add it by hand:
Every URL also ships a parallel .json, embedded JSON-LD, and a row in /llms.txt β agents never have to scrape HTML.
Polymarket and Kalshi publish market data that is useful for retail trading but not ingestion-ready for institutional research or risk. Three gaps a buyer hits immediately:
Institutions solving any of these gaps in-house end up with one-off parses that do not generalize. ClearMarket ships a normalized schema, an enrichment pipeline, and machine-readable specimens you can diff against.
Polymarket on the April 2026 Fed rate decision (1 of 4 directional markets):
Kalshi on the same Fed decision (1 of 11 strike markets):
Empty resolutionSource. Rules buried in prose. No catalyst calendar. And nothing telling you these are two of fifteen markets pricing the same Fed meeting.
Two single-venue events β one Kalshi, one Polymarket β each graded, each on the FOMC catalyst calendar, with the Federal Reserve named as the source. The matching questions are linked across venues by a shared question_id, and each market's also_on surfaces its twin on the other venue with a live price.
Full record at samples/fed-apr-2026/specimen.json β a legacy combined-bundle specimen captured before the single-venue split; the live API now serves these as two single-venue events linked by question_id.
The live product (site, REST API, MCP, daily wire feed) serves the full live universe. This repo is the open schema + enrichment pipeline + reference specimens behind it:
events, markets, marks, resolution_log)enhance.py) that transforms raw Polymarket + Kalshi API pulls into ClearMarket-shaped records, with AI-drafted editorial enrichmentcftc-anprm/) β the cross-venue resolution-divergence analysis filed with the Commission (RIN 3038-AF65)All specimens validate against the JSON Schemas. All records carry per-field field_provenance flagging whether a value came from the platform API, ClearMarket editorial, a derived computation, an imputed proxy, or a known venue limitation.
| Specimen | Platforms | Events | Markets | What it demonstrates |
|---|---|---|---|---|
samples/iran/ | Polymarket | 9 | 9 | Thematic family (9 related questions, shared tag iran-conflict). UMA Optimistic Oracle with subjective resolution. Full 4-side CLOB prices for open markets; resolved_at timestamps for already-settled children. |
samples/fed-apr-2026/ | Polymarket + Kalshi | 1 | 15 | Legacy combined bundle (pre single-venue split): 4 UMA-resolved Polymarket directional markets + 11 staff-resolved Kalshi strike markets under one event_id. The live API now models these as two single-venue events linked by question_id. |
samples/netanyahu/ | Polymarket | 4 | 4 | Thematic family with deadline variants. Same subjective UMA pattern as Iran. |
samples/sp500-2026/ | Kalshi | 1 | 27 | Strike ladder. 27 binary markets resolving to one closing value. Editorial refinement of Kalshi's loose source naming ("for example, Google Finance") to the authoritative calculator (S&P Dow Jones Indices). |
| Total | 15 | 55 |
Open any samples/<id>/specimen.json for the full bundle. The top-level _meta.editorial_review_notes block lists every AI-drafted field and the rules that govern them.
ClearMarket is the independent enrichment layer above those feeds. It parses what the platforms don't publish in structured form: canonical questions, authoritative data sources, parsed resolution structures, cross-platform linkage, thematic families, and per-field provenance.
Two products sit on top of the same schema (a third is on the roadmap):
| Product | What it does | Buyer |
|---|---|---|
| CM Data (live) | The reference layer: grade resolution clarity (RCG A/B/C), name resolution sources, link the same claim across venues, per-field provenance. Markit-shape, licensable. | Data distributors (Bloomberg, ICE, Tradeweb, VettaFi), research/risk desks, AI agents. |
| CM Signal (live) | Daily wire feed on top of CM Data β news-cycle, volume-spike, cross-venue divergence, and benchmark-drift bulletins, published to web + JSON + MCP. | Analysts and desks tracking prediction-market-implied signal. |
| Rate (roadmap) | Quantify dispute risk via historical UMA patterns. Requires UMA subgraph reader. | Swap desks pricing tail risk, middle-office counterparties sizing collateral. |
Three steps. The first two are deterministic Python; the third is the editorial layer that platforms do not ship.
Every paying consumer read hits cached storage. Zero LLM cost at read time.
What AI drafts vs. what the platform ships, per record:
Markets table, AI-drafted fields:
underlying_reference: a one-sentence identification of the real-world data sourceresolution_source: only when the platform API ships empty (Polymarket only; Kalshi is always authoritative via settlement_sources)Events table, AI-drafted fields:
editorial_notes: 2-3 sentence institutional framingtags: 4-6 tags mixing thematic, attribute, and entityquestion: canonical grammar rewrite of raw platform prose when neededEverything else is either a deterministic transform (Python), a derived field (computed at serve time), a platform API value, or flagged with null_by_venue_limitation if the venue does not expose it.
settlement_sources. No UMA-style subjective default ever. Kalshi has structured settlement metadata; use it.close_at or resolve_at for the authoritative date. The AI does not infer future years from present-day reasoning.These rules are enforced in enhance.py system prompts and the per-specimen configuration, not by hoping the model gets it right.
Four tables. Full definitions in schema/.
| Table | Role | Rows | PK | Key FKs |
|---|---|---|---|---|
events | Canonical tradable questions. Editorial layer. | One per canonical question. | event_id (CM-prefixed 12-char stable ID) | primary_market_id β markets |
markets | Per-platform contracts. Raw platform data + editorial fill. | One per market per platform. | market_id (BIGSERIAL) | event_id β events (nullable) |
marks | Daily pricing snapshots. One per market per UTC date. | High cardinality. | mark_id | market_id β markets |
resolution_log | Append-only lifecycle audit trail. | Thin in v0.1; expanded in v0.3 via UMA subgraph reader. | log_id | market_id β markets |
GET /events?tag=<name>.arbitration_model is who arbitrates (UMA oracle, Kalshi staff, platform auto, etc.). source_type is what data is cited (central bank, regulated data vendor, media consensus, subjective, etc.). Previously conflated; split makes it possible to filter for "UMA-resolved but with a named central-bank source" (e.g., Poly Fed markets).resolution_proposer enum on markets captures UMA's MOOV2 upgrade (August 2025, a managed whitelist of 37 proposers), distinct from Kalshi's platform-staff model or permissionless proposals.field_provenance on every row. Per-field flag with five values: platform_api, clearmarket_editorial, derived, imputed, null_by_venue_limitation. Lets a consumer audit which fields are raw vs. enriched at field granularity.spread, mid, venues_covered, also_on, current_primary_mark: all reshaped from the normalized tables on demand.llms.txt)enhance.py) with CLOB + LLM enrichmentfield_provenance on every recordresolution_log ships empty. UMA subgraph reader lands in v0.3; Kalshi lifecycle events are editorial-gated. Shipping zero rows beats shipping thin rows that oversell the capability.open_interest_usd is null for Polymarket. Requires on-chain subgraph; v0.2+.size fields are top-of-book only. Full-book depth requires a dedicated crawler; deferred to v0.2.liquidity field dropped entirely. Kalshi ships liquidity_dollars as top-of-book; Polymarket ships liquidityNum as full-book. They are not comparable. Revisit with an own-crawler for both.resolution_triggers parsing of rules prose is deferred. The raw rules text ships today; LLM-parsed structured triggers, thresholds, and exclusions are next.| Version | What lands | Status |
|---|---|---|
| v0.1 | Schema + Enhancement Script + reference specimens | Shipped Apr 2026 |
| v0.2 | Live site + REST API + MCP, RCG grading, cross-venue linking, CM Signal wire feed, hourly prices | Shipped Jun 2026 |
| v0.3 | resolution_log via UMA subgraph reader, dispute-risk Rate surface, full-book depth, Polymarket open interest | Planned |
The script fetches Polymarket CLOB order books live on first run (cached locally thereafter). It skips CLOB fetches for resolved/closed markets. LLM calls are cached by input hash; re-runs hit cache and cost zero.
Run python3 enhance.py --no-llm to skip LLM enrichment and produce structurally valid specimens with rule-based editorial defaults only.
This release uses public data from Polymarket and Kalshi. Editorial enrichment uses Claude Haiku 4.5 from Anthropic. Schema design draws on conventions from Markit, Bloomberg Open Symbology (BSYM), and Refinitiv PermID.
Live. The site, REST API, and MCP server are public over the full universe, and CM Signal wires publish daily. Feedback welcome via GitHub issues or direct contact.
Built by: Jeremy Dietz. Ran Digital Products at the Toronto Stock Exchange. VP Product at Coinsquare, the first fully regulated crypto exchange in Canada. Independently built Catalyst Signal, an AI research platform covering 220+ public equities. Now building ClearMarket.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/clearmarket)<a href="https://allmcps.com/mcp/clearmarket"><img src="https://allmcps.com/api/badge/clearmarket?style=directory" alt="ClearMarket on AllMCPs" /></a>