Kalshi Eye MCP Server
# Kalshi Eye MCP server
<!-- mcp-name: io.github.KalshiEye/kalshieye-mcp -->
An [MCP](https://modelcontextprotocol.io) server that lets AI assistants such as Claude and Cursor search the [Kalshi Eye](https://kalshieye.com) archive of prediction market data. It can find Kalshi, Polymarket and Limitless markets, show how a market's price moved, check what was recorded, and list the order book files you can download.
It needs a Kalshi Eye API key: create one at [API keys](https://kalshieye.com/app/api/) (a free account works) and set it as `KALSHIEYE_API_KEY`.
## Install
Claude Code:
```bash
claude mcp add kalshieye -e KALSHIEYE_API_KEY=clab_your_key -- uvx kalshieye-mcp
```
Claude Desktop, Cursor and other clients (`claude_desktop_config.json`, `.cursor/mcp.json`, ...):
```json
{
"mcpServers": {
"kalshieye": {
"command": "uvx",
"args": ["kalshieye-mcp"],
"env": { "KALSHIEYE_API_KEY": "clab_your_key" }
}
}
}
```
Without a key, or with a placeholder, every tool answers with how to get one. Listing files and download links cover the datasets your plan includes.
`uvx` comes with [uv](https://docs.astral.sh/uv/). With pip instead: `pip install kalshieye-mcp`, then use `kalshieye-mcp` as the command.
## Tools
| Tool | What it does |
|---|---|
| `search` | Find series, events and markets by keyword, venue, category or status. Series lead and come a page at a time (`series_total`, `has_more`, `offset`); events and markets are the 10 best whose words hold the query, with `events_found` / `markets_found` (exact up to 10,000, then `*_found_exact: false`) and `more_events` / `more_markets`, the paged calls that list every match |
| `get_series` | One series: what it is, how often it runs, markets in the catalog, and days of data files |
| `list_markets` | A series' markets, or the markets on every venue holding each word of `q` (`venue` narrows it), newest first, with status and result. A page at a time: `total` (with `q`, exact up to 10,000, then `total_exact: false`), and `next_cursor` (with `q`) or `next_offset`, passed back until it is null |
| `list_events` | Every event on every venue whose title, series name or category holds each word of the query, newest first, a page at a time (`next_cursor`), with `total` and `total_exact` |
| `get_market` | One market's terms, status, result, and how much of it was recorded |
| `market_price_history` | The recorded YES bid/ask path, up to about 240 points over the market's busiest stretch; `path_source` is `life`, `busiest` or `window` |
| `list_datasets` | Every dataset: what it holds, columns, plan, days available |
| `dataset_series` | Which series have files in a dataset, with days, rows and size, up to 500 a page with `total` and `next_offset` |
| `recording_status` | Whether recording is running, and the recorded share of recent days by venue |
| `list_files` | Daily Parquet files for a dataset, date range and series, page by page |
| `download_links` | Signed download URLs for up to 100 of those files (counts toward the monthly allowance) |
Things to ask:
- "Which bitcoin markets does Kalshi Eye record, and since when?"
- "What were the last few hours of the Bills vs Rams market on October 12 like?"
- "How much of the Fed decision series is in the order book files?"
- "Is the recorder running, and how complete was last week?"
## Notes
- Kalshi is recorded since October 12, 2026; Polymarket, Limitless and Chainlink prices since October 15, 2026. Each UTC day is published the next morning.
- Prices are dollars between 0 and 1. A Kalshi YES ask is 1 minus the best NO bid. Times are UTC.
- Free data without any key: a [one-day sample on Hugging Face](https://huggingface.co/datasets/KalshiEye/kalshi-order-book-sample) and [runnable examples](https://github.com/KalshiEye/kalshieye-examples). The Python client for downloading files is [`kalshieye`](https://pypi.org/project/kalshieye/).
- `KALSHIEYE_BASE_URL` points the server at another deployment (default `https://kalshieye.com`).
Kalshi Eye is independent and is not affiliated with Kalshi, Polymarket or Limitless. MIT licensed.
TDQS
Scored across 10 tools
Each tool has a distinguishable target: search (keyword discovery), get_series/list_markets/get_market (drill-down by series ticker or market ticker), and a separate archive tier (list_datasets, dataset_series, list_files, download_links). The only mild overlaps are get_series vs dataset_series and search vs list_markets, but descriptions disambiguate them clearly.
Most tools follow verb_noun (download_links, get_series, list_markets, get_market, list_datasets, list_files), but there are notable deviations: the bare verb 'search' and noun-only names like market_price_history, dataset_series, and recording_status. Still readable, but the pattern isn't uniform.
Ten tools is well-scoped for a market data archive: discovery, metadata, file listing, and download each earn their place with no redundant surface.
The full pipeline is covered: search/discover markets and series, inspect datasets, list daily Parquet files, and obtain signed download URLs, plus a recorder health check. Minor gaps exist—events are only reachable via search, and there is no direct query tool beyond price history and raw file download.