Polymarket Kalshi Trading
Cross-venue prediction markets for AI agents: Polymarket + Kalshi, costed and attributed
Connector by oddsrail.app · Domain verified by the MCP Registry
Install
Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/oddsrail-app-polymarket-kalshi-trading
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://mcp.oddsrail.app/mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 18 read · 11 write · 2 delete · 11 not yet classified
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 42
Read from the source code; the running server may list different tools.
Read 18 · Look things up without changing anything.
builder_statscheck_ordercompare_venuesfind_marketsget_marketget_orderbookget_positionskalshi_get_marketkalshi_get_orderbookkalshi_get_tradeskalshi_search_marketsprice_history
Show 6 more tools
quote_costresolution_criteriasearch_marketsserver_infosettlement_auditwatch_book
Write 11 · Create, change, send or run things.
cancel_orderclosing_soonkalshi_cancel_orderkalshi_open_orderskalshi_place_ordermerge_positionsmy_balancemy_fillsopen_ordersorder_statusplace_order
Delete 2 · Delete, drop, revoke or wipe things.
cancel_all_orderspaper_reset
Not yet classified 11 · We could not tell from the name and description.
attribution_ledgerdispute_riskkalshi_balancekalshi_positionsmy_positionsovershoot_signalpaper_positionsposition_sizeredeem_positionsredeemable_positionssplit_position
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
POLYMARKET_PRIVATE_KEY
Other settings (environment variables or headers).
ODDSRAIL_BUILDER_CODEODDSRAIL_DRY_RUNPOLYMARKET_WALLET_ADDRESS
Network hosts it talks to 13
clob.polymarket.com· found in codedata-api.polymarket.com· found in codedocs.polymarket.com· found in codeexternal-api.demo.kalshi.co· found in codeexternal-api.kalshi.com· found in codegamma-api.polymarket.com· found in codegithub.com· found in codeglama.ai· found in codekalshi-public-docs.s3.amazonaws.com· found in codemcp.oddsrail.app· found in remote endpoint, install command, codeoddsrail.app· found in codepolymarket.com· found in coderelayer-v2.polymarket.com· found in code
Files it touches
- Your home directory (~)
Tools (42)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
attribution_ledgerAttribution ledger for the builder code in use: every trade carrying it, aggregated per Sunday-start week and per wallet, with the maintainer's own wallets split out into an honest 'external' line. Built from Polymarket's own public builder feed, so any figure it reports can be checked at data-api.polymarket.com/v2/builders/leaderboard.
builder_statsBuilder attribution stats: the public builder leaderboard, and (if ODDSRAIL_BUILDER_CODE is set) matched trades attributed to this operator's code.
cancel_all_ordersKILL SWITCH — cancel every resting Polymarket order on the operator account at once. Use when exposure must go to zero fast. Respects dry-run.
cancel_orderCancel an open order by id (respects dry-run).
check_orderCHECK BEFORE YOU PLACE: deterministic verification of a proposed order against the operator's intent, the live market and the guardrails. Pass the operator's own words as `intent`. Returns ok / caution / block with the evidence per check (market exists and is open, intent matches the market and the YES/NO side, price is sane vs the book, size and $1 minimum, guardrails, liquidity, resolution source) plus a one-line read-back. No model judges anything; nothing is sent.
closing_soonMarkets closing within N hours on either venue, by volume — where trading activity concentrates.
compare_venuesFind markets that may be the SAME event on both Polymarket and Kalshi. NOT an arbitrage scanner: matches are candidates from title similarity plus a close-date check, and a price difference between two candidates is not profit. Identical wording does not mean identical resolution criteria — read both, and run quote_cost on each leg, before acting.
dispute_riskPREMIUM SIGNAL — dispute-risk triage. Scores 0-100 how likely a market's resolution gets contested (UMA dispute risk) with transparent reasons. Takes the market slug, the Gamma id, or a CLOB token id (the market_id a search returns).
find_marketsSearch BOTH Polymarket and Kalshi at once and return one normalised shape per market: venue, market_id (the id that venue's place_order takes), title, yes/no price as probabilities in (0,1), best bid/ask, spread, 24h volume, close time. Use this instead of the per-venue search tools when you do not already know the venue.
get_marketGet one market's details. Accepts the market slug, the Gamma market id, or either of its CLOB token ids (the market_id that find_markets and search_markets return), so a token id from a search can be passed straight in.
get_orderbookGet the live orderbook (bids/asks) for a CLOB token id.
get_positionsCurrent positions for a wallet address.
kalshi_balanceKalshi account balance (needs the operator's API key).
kalshi_cancel_orderCancel a Kalshi order by id (respects dry-run).
kalshi_get_marketGet one Kalshi market by ticker.
Show 27 more tools
kalshi_get_orderbookKalshi orderbook for a ticker, normalised to a YES-book bid/ask view (Kalshi publishes bid ladders only; asks are derived as 1 - NO bid). Raw ladders included.
kalshi_get_tradesRecent public trades for a Kalshi ticker.
kalshi_open_ordersKalshi resting orders (needs the operator's API key).
kalshi_place_orderPlace a Kalshi limit order. State it naturally: outcome yes|no, action buy|sell, price = probability of THAT outcome in (0,1). Translated to Kalshi's YES-book bid/ask internally. DRY-RUN by default.
kalshi_positionsKalshi positions (needs the operator's API key).
kalshi_search_marketsSearch Kalshi markets. Kalshi has no text-search endpoint, so this pages open markets and filters on title/ticker; auto-generated MVE combo shards are excluded. Prices are dollar strings, not cents.
merge_positionsMerge matching YES+NO shares back into USDC, GASLESS via the relayer. amount is in shares, or 'max' for the largest balanced amount held. Needs the operator's relayer key. DRY-RUN by default.
my_balanceAuthenticated Polymarket cash and allowance snapshot for an existing configured wallet. Cash is separate from positions value; available-to-trade remains unknown until outstanding orders and unsettled fills are reconciled. Requires local account credentials. In simulation use paper_positions.
my_fillsRecent executions (fills) for the operator wallet — confirms what actually traded, with tx hashes.
my_positionsThe operator's current Polymarket positions (uses the configured wallet; no address needed).
open_ordersList the operator wallet's open orders.
order_statusStatus of one Polymarket order: resting, partially filled, filled, or gone. The lifecycle answer an agent needs after place_order.
overshoot_signalPREMIUM SIGNAL — overshoot/fade detector. Analyzes a token's recent price series for fresh panic jumps and reports whether a fade setup is active plus this market's historical reversion tendency.
paper_positionsPaper-trading portfolio for dry-run: cash, positions at current marks, realized and unrealized P&L, resting paper orders (filled here if the market has crossed them). Dry-run Polymarket orders are papered against the live book automatically. Simulated: no queue, no impact, no fees, so results are an upper bound.
paper_resetReset the paper-trading ledger to its starting bankroll (ODDSRAIL_PAPER_BANKROLL, default 1000 USDC). Deletes simulated fills and positions; touches nothing real.
place_orderPlace a limit order. DRY-RUN by default: returns the order it would post. Real trading needs ODDSRAIL_DRY_RUN=0 and POLYMARKET_PRIVATE_KEY. The operator's builder code is signed into the order. price is the implied probability in (0,1); size is in SHARES (notional = price * size), and the exchange enforces a $1 minimum notional on marketable orders. post_only=True rejects rather than crosses the book.
position_sizeFractional-Kelly position size for a binary contract, given your bankroll, the market price, and YOUR fair value estimate. Caps at a fraction of full Kelly and refuses negative-edge bets. Returns its assumptions — subtract quote_cost before trusting the number.
price_historyRecent price history for a CLOB token id: hours back, at fidelity_minutes resolution.
quote_costWhat a given size would ACTUALLY cost, by walking the order book rather than reading the top level. Returns average fill price, slippage vs best, notional, and the levels consumed — plus the venue's fee schedule where it publishes one. Call this before sizing any trade, and on both legs before acting on a cross-venue gap.
redeem_positionsRedeem the winning shares of a RESOLVED market for USDC, GASLESS via the relayer. Pass exactly one of condition_id or market_id. Needs the operator's relayer key. DRY-RUN by default.
redeemable_positionsWhat the operator can turn back into USDC now: redeemable (resolved, winning) positions and mergeable (hold both YES and NO) positions, with the ids the gasless tools take. Uses the configured wallet.
resolution_criteriaREAD BEFORE TRUSTING A PRICE: the full resolution contract for a market — what exactly resolves YES, who resolves it, from which sources. venue is 'polymarket' (pass the slug, the Gamma id, or the market_id a search returned, which is a CLOB token id) or 'kalshi' (pass the ticker).
search_marketsSearch Polymarket markets by text (Gamma public-search under the hood); empty query lists open markets. Returns token ids, prices, metrics, resolution info.
server_infoServer status: dry-run state, attribution config, enabled capabilities, venue reachability from this machine, and Polymarket's geoblock verdict for this machine's IP (advisory — not a compliance check). Call this before the first order of a session.
settlement_auditSettlement-divergence audit for a cross-venue pair, on LIVE data (no pre-curated pair list). Compares close times, resolution sources, UMA dispute status and market structure, and returns ok / caution / block with reasons. polymarket_id takes the slug, the Gamma id or the market_id a search returned (a CLOB token id); kalshi_ticker takes the ticker. Run this before treating any cross-venue price difference as an edge.
split_positionSplit USDC collateral into a full YES+NO share set for one market, GASLESS via Polymarket's relayer. amount_usdc is collateral in USDC (e.g. 25). Needs POLYMARKET_RELAYER_API_KEY and POLYMARKET_RELAYER_API_KEY_ADDRESS (polymarket.com -> Settings -> Relayer API keys). DRY-RUN by default. Never falls back to a gas-paying broadcast.
watch_bookStream one Polymarket token's realtime market events (book snapshot, price changes, trades) for up to `seconds` (1-60) or `max_events`, then return them. Use after get_orderbook when you need to see the book MOVE before acting; a quiet market may deliver only the initial snapshot.
Compare and alternatives
Featured in
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 150
- Last commit
- Oct 17, 2026 (11 days ago)
- Last release
- Sep 24, 2026 (1 month ago)
- Last package publish
- Sep 24, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
app.oddsrail/polymarket-kalshi-trading- Version
- 0.19.0
- Auth
- Auth not stated, API key
- Packages
- pypi oddsrail
- License
- MIT
- Repository
- github.com/hmesutozsoy/oddsrail
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Polymarket Kalshi Trading MCP server. Agent Mart. https://agentmart.dev/connectors/oddsrail-app-polymarket-kalshi-trading (last updated 2026-10-24)