/SKILL.md
Trade prediction markets (Polymarket, Kalshi, Opinion, Limitless, Predict.fun) using a unified CCXT-style API. Use when the user wants to browse, search, or trade prediction markets, check balances and positions, manage orders, run market-making strategies, or compare prices across exchanges.
npx skillsauth add guzus/dr-manhattan dr-manhattanInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Dr. Manhattan is a unified API for prediction markets, similar to how CCXT works for cryptocurrency exchanges. It supports Polymarket, Kalshi, Opinion, Limitless, and Predict.fun through a single interface.
Install dependencies with uv:
uv venv && uv pip install -e .
For MCP server (Claude integration):
uv sync --extra mcp
| Exchange | Chain/Type | Auth | |------------- |--------------- |------------------------------------------ | | Polymarket | Polygon | Private key + funder address | | Kalshi | Regulated CEX | API key + RSA private key | | Opinion | BNB Chain | API key + private key + multi-sig address | | Limitless | Base | Private key | | Predict.fun | BNB Chain | API key + private key (EOA or smart wallet) |
import dr_manhattan
polymarket = dr_manhattan.Polymarket({'timeout': 30})
markets = polymarket.fetch_markets()
for market in markets:
print(f"{market.question}: {market.prices}")
import dr_manhattan
polymarket = dr_manhattan.Polymarket({
'private_key': '0x...',
'funder': '0x...',
})
order = polymarket.create_order(
market_id="market_123",
outcome="Yes",
side=dr_manhattan.OrderSide.BUY,
price=0.65,
size=100,
params={'token_id': 'token_id'}
)
from dr_manhattan import create_exchange, list_exchanges
print(list_exchanges()) # ['polymarket', 'opinion', 'limitless', 'predictfun', 'kalshi']
exchange = create_exchange('polymarket', {'timeout': 30})
Dr. Manhattan exposes all trading capabilities as MCP tools. Configure in Claude Code (~/.claude/settings.json or .mcp.json):
{
"mcpServers": {
"dr-manhattan": {
"command": "/path/to/dr-manhattan/.venv/bin/python",
"args": ["-m", "dr_manhattan.mcp.server"],
"cwd": "/path/to/dr-manhattan"
}
}
}
Exchange Tools:
list_exchanges - List all available prediction market exchanges.get_exchange_info(exchange) - Get metadata and capabilities for an exchange.validate_credentials(exchange) - Check if credentials are valid without trading.Market Discovery:
search_markets(exchange, query) - Search markets by keyword. This is the fastest way to find markets about a topic.fetch_markets(exchange, limit?, offset?) - Fetch all markets with pagination.fetch_market(exchange, market_id) - Fetch a specific market by ID.fetch_markets_by_slug(exchange, slug) - Fetch markets by slug or URL (Polymarket, Limitless).find_tradeable_market(exchange, binary?, limit?, min_liquidity?) - Find a suitable market for trading.find_crypto_hourly_market(exchange, token_symbol?) - Find crypto hourly price markets (Polymarket).fetch_token_ids(exchange, market_id) - Get token IDs for a market.parse_market_identifier(identifier) - Extract slug from a Polymarket URL.get_tag_by_slug(slug) - Get Polymarket tag information.Orderbook:
get_orderbook(exchange, token_id) - Get full orderbook (bids and asks).get_best_bid_ask(exchange, token_id) - Get best bid and ask prices.Trading:
create_order(exchange, market_id, outcome, side, price, size) - Place a buy or sell order. Price is 0-1 (probability). Side is "buy" or "sell".cancel_order(exchange, order_id, market_id?) - Cancel a specific order.cancel_all_orders(exchange, market_id?) - Cancel all open orders.fetch_order(exchange, order_id, market_id?) - Get order details and fill status.fetch_open_orders(exchange, market_id?) - List all open orders.Account:
fetch_balance(exchange) - Get account balance (USDC).fetch_positions(exchange, market_id?) - Get current positions with PnL.fetch_positions_for_market(exchange, market_id) - Get positions for a specific market.calculate_nav(exchange, market_id?) - Calculate net asset value (cash + positions).Strategy Management:
create_strategy_session(strategy_type, exchange, market_id, ...) - Start a market-making strategy in the background.get_strategy_status(session_id) - Get real-time strategy status (NAV, positions, delta).get_strategy_metrics(session_id) - Get performance metrics (uptime, fills).pause_strategy(session_id) - Pause a running strategy.resume_strategy(session_id) - Resume a paused strategy.stop_strategy(session_id, cleanup?) - Stop a strategy and optionally cancel orders.list_strategy_sessions - List all active strategy sessions.search_markets with a keyword to find relevant markets.id and metadata.clobTokenIds.get_orderbook with a token ID to see current bids and asks.get_best_bid_ask for a quick spread check.search_markets or fetch_markets_by_slug.fetch_balance to confirm available funds.get_orderbook to see current prices.create_order with the market ID, outcome ("Yes" or "No"), side ("buy" or "sell"), price (0-1), and size.fetch_order or fetch_open_orders.search_markets or find_tradeable_market.create_strategy_session(strategy_type="market_making", exchange, market_id).get_strategy_status and get_strategy_metrics.pause_strategy, resume_strategy, or stop_strategy.fetch_balance to see cash.fetch_positions to see all open positions with unrealized PnL.calculate_nav for total portfolio value (cash + positions).uv run python examples/list_all_markets.py polymarket
uv run python examples/spread_strategy.py --exchange polymarket --slug fed-decision
uv run python examples/spike_strategy.py -e opinion -m 813 --spike-threshold 0.02
Market fields: id, question, outcomes, prices, volume, liquidity, close_time, tick_size, description, metadata (contains slug, clobTokenIds).
Order fields: id, market_id, outcome, side (BUY/SELL), price, size, filled, status (PENDING/OPEN/FILLED/CANCELLED), time_in_force.
Position fields: market_id, outcome, size, average_price, current_price. Properties: cost_basis, current_value, unrealized_pnl.
Orderbook fields: bids (price, size descending), asks (price, size ascending). Properties: best_bid, best_ask, mid_price, spread.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.