Skip to content
Agentmart
Submit a tool

Oracle3 prediction-market arbitrage checks

Kalshi and Polymarket data, venue fees, no-arbitrage checks and paper execution for AI agents.

Connector by YichengYang-Ethan · GitHub account verified by the MCP Registry

IndexedApache-2.0Local (stdio)★ 512
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/yichengyang-ethan-oracle3

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.

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

Kalshi and Polymarket data, venue fees, no-arbitrage checks and paper execution for AI agents.

Use cases: finance-accounting, data-analysis

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 and install config. Checked Oct 25, 2026.

Tools
11 read · 1 write · 1 delete
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 13

Read from the source code; the running server may list different tools.

Read 11 · Look things up without changing anything.

  • check_constraint
  • check_constraint_live
  • fair_value
  • get_market
  • get_orderbook
  • get_quote
  • list_relation_types
  • list_relations
  • paper_portfolio
  • search_markets
  • trading_fee

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

  • paper_order

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

  • paper_reset

Secrets and settings it asks for

Other settings (environment variables or headers).

  • ORACLE3_MCP_LEDGER

Tools (13)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • check_constraint

    Calculate a price-bound violation and basket economics conditional on the relation you supply. A pure calculation with no network calls: use it for hypothetical or historical prices, and use check_constraint_live to fetch current quotes instead. Returns violated, profitable_after_fees, the best basket (legs, cost, conditional payoff bound, fees, gross and net edge), every candidate basket, any missing quotes, and the assumptions behind the check (full fills at the quoted prices, a correctly specified relation). The assessment object marks relation_verified=false, execution_verified=false and …

  • check_constraint_live

    Fetch live quotes and fees, then calculate price bounds conditional on the supplied relation. This is the main research call: find related contracts with search_markets, confirm with get_market that their resolution rules really satisfy the relation, then pass them here. Read-only: it calls the venues' public APIs and places no orders. Returns the check_constraint result (violated, profitable_after_fees, best basket with net edge) plus the quotes it used; to simulate the trade, call paper_order for each leg of the best basket. Live quotes do not verify resolution rules, order-book depth or fu…

  • fair_value

    Convert a market price into the probability it implies under the Wang transform, and report the premium. Solves p_mkt = Phi(Phi^-1(p) + lam) for p; a pure calculation with no network calls. Use it to strip the favourite-longshot premium from a quoted price before comparing it with your own forecast. The default lam = 0.183 is the pooled estimate in Yang (2026), SSRN 6468338; it pools real-money and play-money venues, so treat it as illustrative. Returns market_price, lambda, implied_probability and premium (price minus implied probability).

  • get_market

    Get one market's details: title, best bid and ask, volume and closing date. Kalshi results include the resolution rules (rules_primary, rules_secondary); Polymarket results include the outcomes, token ids, neg-risk flag and the market's fee schedule. Read the rules of every leg here before trusting a relation in check_constraint_live. For prices plus fee terms only, use get_quote; for depth, use get_orderbook. Public data, no API key.

  • get_orderbook

    Get the displayed order book for YES and NO as [price, size] levels, best first. Prices are dollars per contract and sizes are contracts. Use it to see how much of a basket can fill near the quoted price before paper_order; use get_quote when only the top of book matters. Kalshi publishes bids only, so each side's asks are derived from the other side's bids (a YES ask of p is a NO bid of 1 - p). Public data, no API key.

  • get_quote

    Get the best bid and ask on YES and NO, in dollars, plus the market's fee schedule. Use it to collect prices for check_constraint, or to read the fee terms (Kalshi multiplier and maker fees, Polymarket taker rate) that trading_fee takes. check_constraint_live fetches quotes itself, so this is not needed before calling it. A missing ask is derived from the opposite side's bid. Returns {venue, market_id, title, yes_bid, yes_ask, no_bid, no_ask, fee_schedule}. Public data, no API key.

  • list_relation_types

    List the relation types the constraint checks support and the probability bound each enforces. Static reference data with no network or file access, for example implication: P(A) <= P(B). Use it to choose the relation argument of check_constraint or check_constraint_live; to see concrete market pairs saved on this machine, use list_relations instead. Returns {relations: {name: bound}}.

  • list_relations

    List the market relations saved on this machine by the oracle3 research CLI, optionally filtered. Reads ~/.oracle3/relations.json with no network calls. Use it to reuse pairs already discovered or validated offline, then pass a pair to check_constraint_live. For the abstract relation kinds and their bounds, call list_relation_types instead. Returns the store path, a count and the matching relations (markets, type, status and validation details); the list is empty if the CLI has saved none.

  • paper_order

    Simulate buying YES or NO contracts in the local paper ledger, filling against the live order book with venue fees. Never sends an order to a venue. Walks the displayed asks from the best price up to limit_price and charges the venue fee on each level. Use it to test the legs of a basket found by check_constraint_live. Writes ~/.oracle3/mcp_paper_ledger.json (or the path in ORACLE3_MCP_LEDGER); only buys are supported and positions are held at cost. Returns status (filled, partially_filled, unfilled, or rejected when paper cash is short), requested and filled contracts, average price, cost, f…

  • paper_portfolio

    Show the local paper ledger: cash, open positions and the number of fills. Reads ~/.oracle3/mcp_paper_ledger.json (or ORACLE3_MCP_LEDGER) with no network calls. Use it after paper_order to confirm fills and remaining cash. Starting cash is $10,000; positions are carried at cost, and the ledger does not mark to market or track resolution. Returns the ledger path, initial_cash, cash, positions and fills.

  • paper_reset

    Erase the local paper ledger and restore the $10,000 starting cash. Deletes all paper positions, fill history and request_id retry history. No venue is contacted and real accounts are never touched. Without confirm=true it returns status not_reset and changes nothing. Use it to start a fresh paper-trading session.

  • search_markets

    Search open Kalshi or Polymarket markets and return candidates with their best prices. Start here to find market ids, then call get_quote or get_orderbook for live prices, or get_market for resolution details. Reads the venues' public APIs, so no account or API key is needed; Kalshi keyword search scans up to 1,000 open events. Returns {venue, query, count, markets}; each market has market_id, title, best bid and ask in dollars, volume and closing date.

  • trading_fee

    Compute the venue fee for one fill at a given price and size; a pure calculation with no network calls. Kalshi charges round_up(0.07 x M x C x P x (1 - P)) on taker fills, and 0.0175 x M x C x P x (1 - P) on maker fills where the series has maker fees; Polymarket charges takers rate x C x p x (1 - p) and makers nothing. Use it to price a single leg or a hypothetical fill; take a live market's fee terms from get_quote, and use check_constraint to price a whole basket. Returns fee, fee_per_contract, order_type and the schedule used.

Compare and alternatives

    Featured in

    Signals

    Stars
    512
    Forks
    60
    Open issues
    9
    Contributors
    6
    Weekly downloads
    58
    Last commit
    Oct 12, 2026 (17 days ago)
    Last release
    Sep 30, 2026 (28 days ago)
    Last package publish
    Sep 30, 2026 (28 days ago)

    From GitHub (fetched Oct 24, 2026) and the package registry.

    Details

    Registry name
    io.github.YichengYang-Ethan/oracle3
    Version
    1.2.2
    Auth
    No auth
    Packages
    pypi oracle3
    License
    Apache-2.0
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026

    More from YichengYang-Ethan

    Cite this page

    Oracle3 prediction-market arbitrage checks MCP server. Agent Mart. https://agentmart.dev/connectors/yichengyang-ethan-oracle3 (last updated 2026-10-24)