Read-only Polymarket data tools for AI agents: profiles, PnL, market scans. No keys, no orders.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
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.
Nothing to install? probpocket.com/lookup answers the same first question in a browser: paste an address, see lifetime PnL, what the wallet actually makes its money on, and how its leaderboard days compare with its real settled total. Free, no signup. Same public APIs as this CLI.
Machine-readable product facts: ai-info.json Β· llms.txt. Both are generated from content/ai-identity.json; npm run check:ai-discovery fails on tool, package-version, or output drift.
| I want to⦠| Start here |
|---|---|
| Research an address | pm profile <addr> Β· skills polymarket-profile / polymarket-pnl / polymarket-brier |
| See whether they actually cash out | pm cashflow <addr> β on-chain pUSD withdrawals, separated from trade settlement |
| Check execution quality | pm markout <addr> β markout vs market baseline (adverse selection) |
| Classify a trader | pm mix <addr> β passive market maker or aggressive taker |
| 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
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:
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 markout | Execution quality β markout vs market baseline |
pm mix | Execution style β maker/taker split, cross-checked against fees |
pm fees | Lifetime taker fees from /activity Β· pre-fee β net PnL |
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 β¦
pm fees β why your number never matches the profilePolymarket's own PnL β profile,
lb-api, theuser-pnlcurve β is pre-fee. A cashflow replay is post-fee.gap β lifetime taker fees β maker rebates.
The fee is already in /activity: usdcSize is not size Γ price, and the
residual is what you were charged. That means lifetime fees, per-fill taker
proof, and the pre-fee β net conversion come from one REST call β no RPC, no
receipt decoding, no credentials.
Verified by predicting the gap before comparing, on four wallets: a heavy-taker wallet landed at a $0.84 residual against a $1,308.87 prediction, and a pure maker matched the official number to $0.40.
β οΈ The taker test is one-directional. fee > 0 proves you were the taker β
makers are never charged. fee == 0 means maker or fee-exempt category, so
it is reported as an upper bound on passive share, never as a maker count.
β οΈ Fees are recent. The earliest on record here is late June 2026, rate stepping 0.03 β 0.05 β 0.07. Any reconciliation that passed before then proves nothing about today.
pm markout β is this address getting picked off?Markout is where a fill stands some seconds later: (reference β fill) Γ direction, in
cents per share. Negative means the price walked away from you β adverse selection.
Three things this command does that a hand-rolled version usually gets wrong:
/trades?user= behaves like takerOnly=true by
default, so a market maker's entire passive side is missing unless you ask for it.Read the excess column and the coverage column together. In short-dated markets a large
tau leaves most fills with nothing ahead of them to be priced against, and the mean
then describes the surviving handful rather than the trader.
Why these three defaults exist. I ran 15 strategies on Polymarket over half a year, and the ones that cost the most failed at measurement, not at strategy: the same logic made +77% on paper and lost β74% live; 18.3% of my own trade records were quietly wrong, two thirds of those being false wins; market-making went 0 for 10 while the platform shipped three fee formulas in a single night. Each flag above is one of those mistakes turned into a default, so it isn't paid for twice.
The full write-up β 15 strategies, 5 deep pits, 14,000 words β is at leolabs.me/pm-quant ($49). It comes with monthly supplement notes; the current one measures a ~300ms server-side floor on taker orders that no colo or private line removes, against 56ms for maker.
Zero-dependency helpers in src/index.ts. Run demos with Node 22+:
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: copy the chosen skill into the skills directory configured by your agent client.
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.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/polymarket-toolkit)<a href="https://allmcps.com/mcp/polymarket-toolkit"><img src="https://allmcps.com/api/badge/polymarket-toolkit?style=directory" alt="Polymarket Toolkit on AllMCPs" /></a>