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
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.
About
Use cases: finance-accounting, data-analysis
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 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_constraintcheck_constraint_livefair_valueget_marketget_orderbookget_quotelist_relation_typeslist_relationspaper_portfoliosearch_marketstrading_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_constraintCalculate 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_liveFetch 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_valueConvert 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_marketGet 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_orderbookGet 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_quoteGet 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_typesList 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_relationsList 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_orderSimulate 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_portfolioShow 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_resetErase 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_marketsSearch 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_feeCompute 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)