Skip to content
Agentmart
Submit a tool

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

IndexedMITLocal (stdio)Remote (HTTP)★ 1
Write a review

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/mcp Remote (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.

We use your email only for this newsletter. Privacy

About

Cross-venue prediction markets for AI agents: Polymarket + Kalshi, costed and attributed

No 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_stats
  • check_order
  • compare_venues
  • find_markets
  • get_market
  • get_orderbook
  • get_positions
  • kalshi_get_market
  • kalshi_get_orderbook
  • kalshi_get_trades
  • kalshi_search_markets
  • price_history
Show 6 more tools
  • quote_cost
  • resolution_criteria
  • search_markets
  • server_info
  • settlement_audit
  • watch_book

Write 11 · Create, change, send or run things.

  • cancel_order
  • closing_soon
  • kalshi_cancel_order
  • kalshi_open_orders
  • kalshi_place_order
  • merge_positions
  • my_balance
  • my_fills
  • open_orders
  • order_status
  • place_order

Delete 2 · Delete, drop, revoke or wipe things.

  • cancel_all_orders
  • paper_reset

Not yet classified 11 · We could not tell from the name and description.

  • attribution_ledger
  • dispute_risk
  • kalshi_balance
  • kalshi_positions
  • my_positions
  • overshoot_signal
  • paper_positions
  • position_size
  • redeem_positions
  • redeemable_positions
  • split_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_CODE
  • ODDSRAIL_DRY_RUN
  • POLYMARKET_WALLET_ADDRESS

Network hosts it talks to 13

  • clob.polymarket.com · found in code
  • data-api.polymarket.com · found in code
  • docs.polymarket.com · found in code
  • external-api.demo.kalshi.co · found in code
  • external-api.kalshi.com · found in code
  • gamma-api.polymarket.com · found in code
  • github.com · found in code
  • glama.ai · found in code
  • kalshi-public-docs.s3.amazonaws.com · found in code
  • mcp.oddsrail.app · found in remote endpoint, install command, code
  • oddsrail.app · found in code
  • polymarket.com · found in code
  • relayer-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_ledger

    Attribution 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_stats

    Builder attribution stats: the public builder leaderboard, and (if ODDSRAIL_BUILDER_CODE is set) matched trades attributed to this operator's code.

  • cancel_all_orders

    KILL SWITCH — cancel every resting Polymarket order on the operator account at once. Use when exposure must go to zero fast. Respects dry-run.

  • cancel_order

    Cancel an open order by id (respects dry-run).

  • check_order

    CHECK 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_soon

    Markets closing within N hours on either venue, by volume — where trading activity concentrates.

  • compare_venues

    Find 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_risk

    PREMIUM 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_markets

    Search 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_market

    Get 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_orderbook

    Get the live orderbook (bids/asks) for a CLOB token id.

  • get_positions

    Current positions for a wallet address.

  • kalshi_balance

    Kalshi account balance (needs the operator's API key).

  • kalshi_cancel_order

    Cancel a Kalshi order by id (respects dry-run).

  • kalshi_get_market

    Get one Kalshi market by ticker.

Show 27 more tools
  • kalshi_get_orderbook

    Kalshi 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_trades

    Recent public trades for a Kalshi ticker.

  • kalshi_open_orders

    Kalshi resting orders (needs the operator's API key).

  • kalshi_place_order

    Place 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_positions

    Kalshi positions (needs the operator's API key).

  • kalshi_search_markets

    Search 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_positions

    Merge 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_balance

    Authenticated 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_fills

    Recent executions (fills) for the operator wallet — confirms what actually traded, with tx hashes.

  • my_positions

    The operator's current Polymarket positions (uses the configured wallet; no address needed).

  • open_orders

    List the operator wallet's open orders.

  • order_status

    Status of one Polymarket order: resting, partially filled, filled, or gone. The lifecycle answer an agent needs after place_order.

  • overshoot_signal

    PREMIUM 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_positions

    Paper-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_reset

    Reset the paper-trading ledger to its starting bankroll (ODDSRAIL_PAPER_BANKROLL, default 1000 USDC). Deletes simulated fills and positions; touches nothing real.

  • place_order

    Place 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_size

    Fractional-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_history

    Recent price history for a CLOB token id: hours back, at fidelity_minutes resolution.

  • quote_cost

    What 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_positions

    Redeem 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_positions

    What 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_criteria

    READ 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_markets

    Search Polymarket markets by text (Gamma public-search under the hood); empty query lists open markets. Returns token ids, prices, metrics, resolution info.

  • server_info

    Server 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_audit

    Settlement-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_position

    Split 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_book

    Stream 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
    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)