Server data from the Official MCP Registry
Read-only Polymarket data tools for AI agents: profiles, PnL, market scans. No keys, no orders.
Read-only Polymarket data tools for AI agents: profiles, PnL, market scans. No keys, no orders.
Valid MCP server (2 strong, 3 medium validity signals). No known CVEs in dependencies. ⚠️ Package registry links to a different repository than scanned source. Imported from the Official MCP Registry. 1 finding(s) downgraded by scanner intelligence.
12 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-runesleo-polymarket-toolkit": {
"args": [
"-y",
"polymarket-toolkit-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
For anyone who wants to research Polymarket on their own — run the CLI yourself, or install skills for Claude / Cursor / OpenClaw and let AI run the tools. Read-only public APIs. No API keys. No signing.
| I want to… | Start here |
|---|---|
| Research an address | pm profile <addr> · skills polymarket-profile / polymarket-pnl / polymarket-brier |
| Scan markets & prices | pm markets · examples/01,09,11 · docs/cookbook.md |
| Wire my own data pipeline | src/index.ts · cookbook · examples/14 |
| Validation checklists | docs/templates/ — handoff · backtest · paper · live-gate · runbook |
| PnL cross-check (LB snapshot) | pm pnl-check · docs/fee-inclusive-pnl.md |
| Track leaderboard / redeem / activity | pm lb · pm redeem · pm activity · examples/05–08,15–20 |
| Give an AI agent tools | skills/ — copy into Claude / OpenClaw / Cursor |
Full index: docs/toolbox.md
git clone https://github.com/runesleo/polymarket-toolkit.git && cd polymarket-toolkit
./bin/pm profile 0x63ce342161250d705dc0b16df89036c8e5f9ba9a
What you get: LB PnL snapshot + first-page positions. For audit-grade PnL, use the polymarket-pnl skill.
V2 merge/split broken? → docs/v2-ctf-ops-faq.md + ./bin/pm v2-check 0x…
pm)Node 22+ (uses --experimental-strip-types). From repo root:
./bin/pm help
./bin/pm profile 0x63ce342161250d705dc0b16df89036c8e5f9ba9a
./bin/pm profile Theo4 --json
./bin/pm brier 0x63ce342161250d705dc0b16df89036c8e5f9ba9a
./bin/pm redeem 0x63ce342161250d705dc0b16df89036c8e5f9ba9a 25
./bin/pm markets --limit 5 --active
./bin/pm activity 0x63ce342161250d705dc0b16df89036c8e5f9ba9a --type TRADE --max-pages 5
Prefer ./bin/pm from repo root (no install step). Or: npm run pm -- profile … · optional npm link for global pm.
| Command | What it does |
|---|---|
pm profile | LB PnL + open positions sample + Brier hint |
pm activity | Activity pagination + ~4000 row cap warnings |
pm scan | Top markets by 24h volume + spread |
pm updown | Crypto updown event fields / resolution source |
pm v2-check | V2 CTF split/merge checklist + activity sample |
pm lb | Leaderboard snapshot + day-over-day diff |
pm pnl-check | LB snapshot + hints — not audit-grade PnL |
pm limits | Official API rate limit pacing |
pm brier | Brier score from settled positions (sample) |
pm redeem | Read-only redeem watchdog JSON |
pm markets | Quick Gamma market list |
Audit-grade PnL (Python): python3 skills/polymarket-pnl/compute_precise_pnl.py --address …
Zero-dependency helpers in src/index.ts. Run demos with Node 22+:
npx tsx examples/01-fetch-gamma-markets.ts
node --experimental-strip-types examples/01-fetch-gamma-markets.ts
examples/ — one numbered script per API patterndocs/cookbook.md — bilingual recipes| Skill | What it does |
|---|---|
polymarket-profile | Deep profile — PnL, win rate, positions, categories, strategy detection |
polymarket-brier | Prediction accuracy scoring, calibration analysis |
polymarket-pnl | Audit-grade PnL via cashflow reconstruction (~0.2% MAPE vs. official) |
Install: cp -R skills/polymarket-profile ~/.claude/skills/ (same for OpenClaw).
polymarket-pnl also needs: pip install httpx
Skill details: skills/*/SKILL.md · long-form docs in sections below.
| Included | Not included |
|---|---|
| Read-only APIs, CLI, skills, docs, templates | Private keys, signing, or trade execution |
V2 FAQ + pm v2-check diagnostics | Runnable merge/split/redeem modules |
polymarket-pnl audit script | Custodial wallets or one-click trading |
| Builder attribution helper for future CLOB executors | Builder API credentials or reward guarantees |
Opt-in executor/ sub-package (isolated deps, dry-run default) | Custody, strategy logic, or one-click trading |
mcp/ MCP server — read-only tools for AI agents (docs/mcp.md) | MCP-exposed order placement |
The core (src/, CLI, skills) never holds keys or sends transactions. Order execution lives only in the opt-in executor/ sub-package, which signs with your env-provided key, defaults to dry-run, and is never imported by the core. For normal redemption, use the official Polymarket app.
New to Polymarket? Sign up via the link above (affiliate disclosure: the author may earn referral rewards; no extra cost to you).
Building your own order executor? Start from the opt-in executor/ sub-package (docs/executor.md) — CLOB V2 limit orders with dry-run default, notional cap, and default builder attribution via src/builder.ts (override / opt-out via env). See builder attribution for the disclosure and FAQ. Read-only CLI/skills still do not send orders.
mcp/ — Model Context Protocol server exposing 10 read-only tools (pm_profile, pm_activity, pm_brier, pm_scan, pm_updown, pm_leaderboard, pm_redeem_watchdog, pm_pnl_check, pm_v2_check, pm_rate_limits) — docs/mcp.mdpm, so the server is exactly as read-only as the CLI; inputs are allowlist-validated before reaching argvexecutor/ — isolated CLOB V2 order execution module (docs/executor.md): own dependencies, never imported by the zero-dependency coreEXECUTOR_LIVE=1 to post), notional cap EXECUTOR_MAX_USD (default $10), fail-closed credential validationsrc/builder.ts, full disclosure in docspm CLI — profile · activity · scan · updown · v2-check · brier · redeem · marketsdocs/v2-ctf-ops-faq.md (split/merge/convert · infra alignment)src/builder.ts + docs/builder-attribution.md for future CLOB executors, with default / override / opt-out pathsNew public helper: redeem watchdog — inspect redeemable positions without private keys.
Polymarket's pUSD-era redemption flow handles normal user redemption inside the official app. This release does not replace or work around that flow. It adds a read-only status lane for agents and dashboards: which wallet still has rows surfaced as redeemable=true by the public Data API, what their currentValue is (winning rows pay out, losing rows pay $0), and whether a strategy account is below a configured cash watermark. v0.4 adds fetchRedeemablePositionsPage, summarizeRedeemablePositions, and resolveRedeemMode for that workflow. It never signs or sends transactions.
import {
fetchRedeemablePositionsPage,
summarizeRedeemablePositions,
} from "./src/index.ts";
const positions = await fetchRedeemablePositionsPage("0x...");
console.log(summarizeRedeemablePositions(positions as never[]));
Also: pm CLI (toolbox drawers) — see docs/toolbox.md.
New Skill: polymarket-pnl — Audit-grade PnL via Data API cashflow reconstruction.
Most profilers (including polymarket-profile) use position-level cashPnL which is an approximation. polymarket-pnl replays every BUY / SELL / REDEEM / MERGE / SPLIT / REBATE event and reconciles against current unrealized position value. Validated against Polymarket's official /profit endpoint on the public leaderboard: MAPE ~0.2%, all top accounts within 1% error. Use this when the number has to hold up to scrutiny.
Inspect redeemable positions for a public proxy wallet without touching keys, allowances, relayers, or transactions.
fetchRedeemablePositionsPage(user) calls Data API /positions?redeemable=truesummarizeRedeemablePositions(rows) groups rows by conditionId and sums currentValue (losing rows contribute $0, which is the correct payable amount — not their size)resolveRedeemMode({ lowWatermark }) returns "watchdog" or "low_watermark". There is intentionally no "active" value: this toolkit never executes a redeem, so an active label belongs in your own wallet system, not here.npx tsx examples/15-redeem-watchdog.ts 0x63ce342161250d705dc0b16df89036c8e5f9ba9a 25
{
"mode": "low_watermark",
"redeemableCount": 3,
"conditionCount": 3,
"estimatedRedeemableValue": 0,
"topConditions": [
{ "conditionId": "0x...", "slug": "btc-updown-5m-1771773600", "count": 1, "estimatedCurrentValue": 0 }
]
}
Three rows surfaced as
redeemable=truebut everycurrentValueis0— they are losing tokens that redeem to$0. The Data API still surfaces them after resolution; the helper reports them honestly without inflating payable value.
This toolkit only reads public APIs. It does not redeem tokens, sign Safe transactions, call relayers, move funds, or require private keys. The official Polymarket app remains the right place for normal user redemption. Treat this helper as a dashboard/agent primitive; execution stays in your own wallet system.
Turn any Polymarket address into a complete trading profile.
The skill instructs your AI agent to call Polymarket's public APIs (lb-api, data-api, gamma-api), process the data, and output a structured profile. No API key needed, no local database, no setup.
You: Profile this Polymarket address: 0x63ce342161250d705dc0b16df89036c8e5f9ba9a
AI: Fetching data... (paginating 12 pages of activity)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Polymarket Profile: 0x8dxd
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Overview
Total PnL: $2,382,780.64
Win Rate: 6/11 (54.5%)
...
🎯 Strategy: Market Maker (high-frequency, concentrated in Crypto)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Claude Code:
# Copy the skill to your skills directory
cp -R skills/polymarket-profile ~/.claude/skills/
OpenClaw:
cp -R skills/polymarket-profile ~/.openclaw/skills/
Any other AI agent:
Just paste the content of skills/polymarket-profile/SKILL.md into your conversation and ask your AI to follow the instructions.
curl commandsNew to Polymarket? Create an account here.
| Input | Example | Resolution |
|---|---|---|
| 0x address | 0x63ce342161250d705dc0b16df89036c8e5f9ba9a | Direct |
| Profile URL | polymarket.com/profile/Theo4 | Auto-resolve via leaderboard |
| Username | Theo4 | Auto-resolve via leaderboard |
Username lookup works for all leaderboard-ranked users (auto-resolved via lb-api). Unranked accounts (zero trading history) require the 0x address directly.
All public, no authentication required:
| API | What it provides |
|---|---|
lb-api.polymarket.com | PnL, leaderboard rankings |
data-api.polymarket.com | Positions, activity history |
gamma-api.polymarket.com | Market metadata, categories, tags |
pm activity / fetchActivityPages or polymarket-pnl with pagination_incompleteRate any trader's prediction accuracy with Brier Score — the standard metric used by Metaculus, Good Judgment Project, and forecasting research.
| Trader Type | PnL | Brier Score | Signal Value |
|---|---|---|---|
| Skilled predictor | High | Good (low) | Best signal source |
| Market maker | High | Poor (high) | Earns spread, not predictions |
| SPLIT arbitrageur | High | N/A | Market-neutral, no directional view |
| Accurate but cautious | Low | Good (low) | Good signal, small sizing |
You: What's the Brier Score for Theo4?
AI: Fetching settled positions...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Brier Score: Theo4
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Prediction Accuracy
Brier Score: 0.12 (Good)
Settled Markets: 36
Correct: 29/36 (81%)
📐 Calibration
| Confidence | Positions | Forecast | Actual | Gap |
|------------|-----------|----------|--------|------|
| High | 12 | 87% | 83% | -4% |
| Moderate | 15 | 68% | 67% | -1% |
| Coin flip | 6 | 52% | 50% | -2% |
| Contrarian | 3 | 28% | 33% | +5% |
# Claude Code
cp -R skills/polymarket-brier ~/.claude/skills/
# OpenClaw
cp -R skills/polymarket-brier ~/.openclaw/skills/
After installation: "What's the Brier Score for 0x63ce..." or "How accurate is Theo4's predictions?"
New to Polymarket? Create an account here.
Audit-grade PnL for any Polymarket address via Data API cashflow reconstruction. Replays every BUY / SELL / REDEEM / MERGE / SPLIT / REBATE event and reconciles against current unrealized position value.
Position-level cashPnL (what most profilers surface) is rounded at the position level and drops partial fills, making it approximate. polymarket-pnl walks the full activity log — every trade event, every REDEEM, every MERGE — and computes PnL from the cashflow identity:
PnL = SUM(SELL + REDEEM + MERGE + REBATE) - SUM(BUY + SPLIT) + unrealized_position_value
Validated on Polymarket's own leaderboard: precise_pnl matches the official /profit endpoint within 0.2% MAPE on top traders.
You: Compute precise PnL for the top 10 leaderboard addresses.
AI: Fetching leaderboard... (10 addresses)
Processing 0x56687bf447... (15,993 trades)
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Benchmark: Precise PnL vs Leaderboard (official /profit)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 0x56687bf447... precise=$22,032,643.17 official=$22,053,933.75 err=0.1%
✅ 0x1f2dd6d473... precise=$16,580,235.20 official=$16,619,506.63 err=0.2%
...
MAPE: 0.2% | <10%: 10/10 | <30%: 10/10
# Claude Code
cp -R skills/polymarket-pnl ~/.claude/skills/
pip install httpx # the only runtime dependency
# OpenClaw
cp -R skills/polymarket-pnl ~/.openclaw/skills/
pip install httpx
# Single address
python3 compute_precise_pnl.py --address 0x63ce342161250d705dc0b16df89036c8e5f9ba9a
# Bulk over the leaderboard
python3 compute_precise_pnl.py --leaderboard 50 -o top50.jsonl
# Benchmark a local PnL dataset vs. recomputed precise PnL
python3 compute_precise_pnl.py --leaderboard 100 \
--benchmark local_pnl.jsonl \
-o benchmark.jsonl
Output is JSONL with one record per address. See skills/polymarket-pnl/SKILL.md for the full output schema.
polymarket-profile vs polymarket-pnlpolymarket-profile — curl-only, qualitative profile (win rate, positions, categories). Best for "who is this address?"polymarket-pnl — Python + audit-grade cashflow reconstruction. Best for "what is their real PnL?" — writing research, benchmarking a model, or building a dataset.New to Polymarket? Create an account here.
Strategy validation docs from hypothesis → tiny-live (MIT templates):
| Template | Purpose | Path |
|---|---|---|
| AI handoff | Cross-session task handoff (7 fields) | handoff-template.md |
| Backtest report | Conclusions + abandon line | backtest-report-template.md |
| Paper checklist | Anti-fake-paper · fill rules + logging | paper-checklist.md |
| Live gate (12 steps) | Tiny-live technical + ops gates | live-gate-checklist.md |
| Platform change runbook | V2 / API migration response | platform-change-runbook.md |
Also: fee-inclusive-pnl.md · full index: toolbox.md
Templates are document skeletons; runnable paper/live execution code lives in your own repo.
Analysis Tools
pm profile CLI — Quick address snapshotMarket Intelligence
pm scan (24h volume + spread)pm updown + docs/crypto-updown-price-source.mdPlatform / V2
pm v2-check (read-only)Validation templates
Tracking & Alerts
pm lb + snapshot diffpm pnl-checkAPI (planned)
Leo (@runes_leo) — AI × Crypto independent builder. Trading on Polymarket, building data and trading systems with Claude Code and Codex.
leolabs.me — writing · community · open-source tools · indie projects · all platforms.
X Subscription — paid content weekly, or just buy me a coffee 😁
Learn in public, Build in public.
Affiliate disclosure: Polymarket signup links in this repo may earn referral rewards; unrelated to MIT toolkit functionality.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.