MCP server
Point Claude, Cursor or any MCP client at one URL. It gets 21 read-only tools over the same data the REST API serves, gated by the same plan — and an ask tool that reasons over all of it. Your existing key; no SDK, no adapters.
What you skip
OpenMarkets handles
- Ten venue integrations normalized to one schema, so the agent calls one tool and gets one shape
- One header for every tool: the same X-API-Key, the same plan, the same revocation
- Schema discovery — the client learns what each tool accepts and returns without being told
- Pagination, filtering and cursors inside every listing tool
You do
- Paste the URL and the key into your client
- Ask
Connect a client
The same endpoint works for every MCP-compatible client over Streamable HTTP. Paste once; restart the client; ask it to list_leagues to check.
{
"mcpServers": {
"openmarkets": {
"url": "https://api.openmarkets.ai/mcp",
"headers": {
"X-API-Key": "om_data_live_…"
}
}
}
}
{
"mcpServers": {
"openmarkets": {
"url": "https://api.openmarkets.ai/mcp",
"headers": {
"X-API-Key": "om_data_live_…"
}
}
}
}
{
"openmarkets": {
"url": "https://api.openmarkets.ai/mcp",
"headers": {
"X-API-Key": "om_data_live_…"
}
}
}
entitlement_required on Free, exactly as REST does — so a richer plan unlocks more with no config change.What to ask
| Prompt | Tools it reaches for |
|---|---|
| Show me the widest spreads on tonight’s NBA games across every venue. | list_contests · get_contest_liquidity |
| What’s the consensus fair value on LeBron over 25.5 points? | list_contest_markets · get_contest_liquidity |
| Which NBA games are live right now, and what are the scores? | list_contests · get_contest_state |
| Where is the deepest book on the Chiefs moneyline? | get_contest_liquidity · get_position_depth |
| Chart how the Lakers moneyline moved over the last six hours. | get_contest_price_history |
| Where’s the sharpest edge in tonight’s slate, and why? | ask |
The 21 tools
Every read endpoint in the REST reference is mirrored as a tool, with the same entitlement. The agent discovers them, calls them and composes them on its own.
| Catalog | |
|---|---|
| list_leagues | Supported leagues (NBA, NFL, PGA, …). |
| get_league | One league by id. |
| list_contests | Games, matches, tournaments. Filter by league, status, window. |
| get_contest | One contest by id. |
| list_contest_markets | Market types available on a contest. |
| list_markets | The catalog of market types. |
| get_market | One market by id. |
| list_participants | Teams or athletes in a league, with logos. |
| get_participant | One team or athlete by id. |
| list_partners | Supported venues with their order grid. |
| get_partner | One venue descriptor by id. |
| Liquidity, live state, history | |
|---|---|
| get_contest_liquidity | Per-venue best prices, consensus and fair values for every position on a contest. |
| get_position_depth | Full order-book levels across venues for one position. depth:read. |
| get_contest_state | Live period, clock and score for an in-progress contest. gamestate:read. |
| get_contest_price_history | Price history from ticks to daily; resolution auto-selected from the window. pricing:history. |
| Assistant | |
|---|---|
| ask | A natural-language question reasoned over the live data. Spends reasoning credits. |
| Your account | |
|---|---|
| get_account_balances | Real-money and practice balances, by currency. |
| list_opportunities | Your grouped orders, with legs. |
| get_opportunity | One opportunity and its legs. |
| list_account_positions | Rolled-up positions across your connected venues. |
| list_account_history | The raw venue history behind those positions. |
ask spends reasoning credits from your workspace's monthly allowance (every plan has one); the other twenty are metered like REST requests. Writes — placing an order, linking a venue — are deliberately not tools. An agent that trades does it through POST /auth/orders/buy with an execution key, or on a user's behalf through AI Connect and Connect.