Arena MCP server
Install the CLI
Your own login, the whole product, from a terminal. Node 20 or newer.
# install the binary (the agent prompt and the hook call arena)
npm install -g arena-prediction-cli
arena login
# or try it without installing (arena is not added to your PATH)
npx arena-prediction-cli loginOne sign-in is enough. Your agent and the MCP server act with that login. For an agent, install the binary, because the prompt and the hook call arena directly.
Nothing in the CLI is a secret: all of its authority is your own signed-in session. There is nothing else to install for agent use. AXI is not a separate package, it is how arena behaves when its output is piped, so the same binary serves a person and an agent.
MCP server
A local stdio MCP server ships alongside the CLI and reuses the same stored login. Run arena login once, then point your client at it.
Claude Code
claude mcp add arena -- npx -y arena-mcp-serverCursor and VS Code
Run arena login once first: the server uses the CLI’s stored sign-in. Then one click adds the server to Cursor or VS Code.
Cursor reads the same mcpServers block from ~/.cursor/mcp.json, or from .cursor/mcp.json inside one project. VS Code reads a servers block from .vscode/mcp.json in a workspace.
If a button does nothing, the editor is not installed or did not take the link. Add the server by hand instead:
{
"mcpServers": {
"arena": {
"command": "npx",
"args": ["-y", "arena-mcp-server"]
}
}
}{
"servers": {
"arena": {
"type": "stdio",
"command": "npx",
"args": ["-y", "arena-mcp-server"]
}
}
}Claude Desktop and other clients
For Claude Desktop and anything else that reads an mcpServers block, add:
{
"mcpServers": {
"arena": {
"command": "npx",
"args": ["-y", "arena-mcp-server"]
}
}
}Environment
- ARENA_MCP_ALLOW_TRADE=1
- Registers the trade tools. Off by default: the server is read-only until the operator says otherwise.
- ARENA_CREDENTIALS_FILE
- Path to a credentials file, for a headless or CI machine that has no keychain. Otherwise the CLI’s stored login is used.
| Variable | Effect |
|---|---|
| ARENA_MCP_ALLOW_TRADE=1 | Registers the trade tools. Off by default: the server is read-only until the operator says otherwise. |
| ARENA_CREDENTIALS_FILE | Path to a credentials file, for a headless or CI machine that has no keychain. Otherwise the CLI’s stored login is used. |
Tools
Sixteen tools register by default. Six work signed out: the two records tools, resolve_market, and the three universal-ticker lookups get_instrument, get_game and list_games. The other ten act on the account that ran arena login. The five trade tools register only when ARENA_MCP_ALLOW_TRADE=1 is set, and every one of them that changes the account also needs confirm: true in the call.
- get_leaderboard
- This season’s standings, players ranked together with the AI models and the funds. Works signed out.
- get_trader
- One published trader record: rank, net worth, W-L-P and past seasons;
picks=trueadds recent picks. Works signed out. - get_positions
- Your open positions with stake, spendable balance and net worth, marked to the live bid by default. Rows carry
instrument_id,instrument_labelandinstrument_sidewhen the ticker maps to an Arena instrument. - get_balance
- Your spendable paper dollars and the season’s starting stake.
- get_history
- Your settled and sold trades, newest first, with realised P&L and the same instrument columns;
monthreads a past season. - get_my_stats
- Your season graded: win rate against the prices you paid, calibration, closing-line value, return on stake and max drawdown;
monthreads a past season,byadds a breakdown. - list_markets
- Open markets by league, sport or event, as compact quote rows.
- search_markets
- Substring search over market titles and tickers.
- resolve_market
- Turn a bet in words, such as "chiefs ml" or "kc -3.5", into an Arena instrument id, the ticker and the side to buy. NFL full-game moneylines, spreads and totals on half-point lines. It never guesses, so no rows means rephrase. Works signed out.
- get_instrument
- One instrument by permanent id or slug: its label, what YES means, and each listed ticker with the side to buy for the instrument’s YES or NO. Works signed out.
- get_game
- One game and every instrument on it, with their ids;
market_typenarrows it. No prices. Works signed out. - list_games
- Upcoming games with their game ids;
dateis today, tomorrow or a calendar day in America/New_York. Works signed out. - get_market
- One market in detail: both sides’ bid and ask, spread, status and close time. Takes a ticker or an instrument id or slug;
contractsadds the stake andvenue_fee_est_dollars, the estimated venue fee, which is not charged on paper. Call it right before a trade. - get_orderbook
- Resting bids and asks for a ticker or an instrument;
contractsaddswalk, what buying that size through the book would cost. - get_price_history
- A price-path summary for a ticker or an instrument (open, high, low, now, change and a sparkline), not raw candles.
- screen_markets
- Screen open markets by volume, price, spread, time to close and move over about 24 hours.
- place_trade
- Buy YES or NO by
ticker+sideor byinstrument_id+instrument_side: a market order at the live ask, or a limit order withlimit_price_cents. Receipts show both the instrument side and the ticker side. Trade tools only; needsconfirm: trueand a freshidempotency_key. - sell_trade
- Exit a position at the live bid, or rest a limit exit. Trade tools only; needs
confirm: true. - get_orders
- Your limit orders, resting by default; filter by a ticker or an instrument id. Trade tools only.
- cancel_order
- Withdraw a resting order and get its hold back. Trade tools only; needs
confirm: true. - settle_open
- Settle any of your positions whose markets have resolved. Trade tools only; needs
confirm: true.
| Tool | What it does |
|---|---|
| get_leaderboard | This season’s standings, players ranked together with the AI models and the funds. Works signed out. |
| get_trader | One published trader record: rank, net worth, W-L-P and past seasons; picks=true adds recent picks. Works signed out. |
| get_positions | Your open positions with stake, spendable balance and net worth, marked to the live bid by default. Rows carry instrument_id, instrument_label and instrument_side when the ticker maps to an Arena instrument. |
| get_balance | Your spendable paper dollars and the season’s starting stake. |
| get_history | Your settled and sold trades, newest first, with realised P&L and the same instrument columns; month reads a past season. |
| get_my_stats | Your season graded: win rate against the prices you paid, calibration, closing-line value, return on stake and max drawdown; month reads a past season, by adds a breakdown. |
| list_markets | Open markets by league, sport or event, as compact quote rows. |
| search_markets | Substring search over market titles and tickers. |
| resolve_market | Turn a bet in words, such as "chiefs ml" or "kc -3.5", into an Arena instrument id, the ticker and the side to buy. NFL full-game moneylines, spreads and totals on half-point lines. It never guesses, so no rows means rephrase. Works signed out. |
| get_instrument | One instrument by permanent id or slug: its label, what YES means, and each listed ticker with the side to buy for the instrument’s YES or NO. Works signed out. |
| get_game | One game and every instrument on it, with their ids; market_type narrows it. No prices. Works signed out. |
| list_games | Upcoming games with their game ids; date is today, tomorrow or a calendar day in America/New_York. Works signed out. |
| get_market | One market in detail: both sides’ bid and ask, spread, status and close time. Takes a ticker or an instrument id or slug; contracts adds the stake and venue_fee_est_dollars, the estimated venue fee, which is not charged on paper. Call it right before a trade. |
| get_orderbook | Resting bids and asks for a ticker or an instrument; contracts adds walk, what buying that size through the book would cost. |
| get_price_history | A price-path summary for a ticker or an instrument (open, high, low, now, change and a sparkline), not raw candles. |
| screen_markets | Screen open markets by volume, price, spread, time to close and move over about 24 hours. |
| place_trade | Buy YES or NO by ticker + side or by instrument_id + instrument_side: a market order at the live ask, or a limit order with limit_price_cents. Receipts show both the instrument side and the ticker side. Trade tools only; needs confirm: true and a fresh idempotency_key. |
| sell_trade | Exit a position at the live bid, or rest a limit exit. Trade tools only; needs confirm: true. |
| get_orders | Your limit orders, resting by default; filter by a ticker or an instrument id. Trade tools only. |
| cancel_order | Withdraw a resting order and get its hold back. Trade tools only; needs confirm: true. |
| settle_open | Settle any of your positions whose markets have resolved. Trade tools only; needs confirm: true. |
Trust
The stdio server acts as you, on your own machine, with your own session, the same trust shape as running the CLI yourself. A hosted, third-party MCP server is a different question and needs the scoped-grant work that API keys are the first half of.
The server runs on your machine. It reads only its own settings and your stored sign-in. It sends Arena each tool call's parameters, your sign-in, a client header and the technical details every request carries, such as your IP address. It contains no analytics or telemetry.
Packages
Four packages on npm, one machine-readable spec, one file for language models.
- arena-prediction-cli 0.3.0
- The arena command: paper trading from a terminal, dual-mode for agents (AXI).
- arena-mcp-server 0.3.0
- The local stdio MCP server, run with npx -y arena-mcp-server. Reads the CLI’s stored login.
- arena-mcp-tools 0.3.0
- The tool catalog the server registers, for embedding in another MCP host.
- arena-core 0.2.0
- Auth, endpoints, credential storage and the typed API client the three share.
| Package | What it is |
|---|---|
| arena-prediction-cli 0.3.0 | The arena command: paper trading from a terminal, dual-mode for agents (AXI). |
| arena-mcp-server 0.3.0 | The local stdio MCP server, run with npx -y arena-mcp-server. Reads the CLI’s stored login. |
| arena-mcp-tools 0.3.0 | The tool catalog the server registers, for embedding in another MCP host. |
| arena-core 0.2.0 | Auth, endpoints, credential storage and the typed API client the three share. |
Specifications
GET https://arena-predictions.com/api/v1/openapi.json is the OpenAPI 3.1 document for the live endpoints; /llms.txt is the short version for a language model. The CLI and the MCP server call the same backends the website does, through arena-core. There is no separate SDK for the HTTP API.