mcpbeat Sign in

PokerData MCP Server

by hft-studio Your server? Claim it
not responding

PokerData is listed as active in the registry but did not answer our last check. 104 installs a week from npm. It exposes 32 tools. Last commit 30 Oct 2026.

GTO poker solver data: NLHE/PLO preflop ranges, postflop strategy, EV. 6-max NL preflop free.

Installs per day peak 550 · avg 18
a month agotoday
Uptime history 27 days of history · worst day 0%
27 days agonow
0.0%
Uptime 24h
0 of 92 checks
32
Tools
read from the server
77 ms
Response time
average over 24h
104
Installs / week
npm and PyPI

What changed 22

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 16 October 2026. No other catalogue keeps this.

20 Oct 3 tools appeared get_started, list_my_requests, submit_request
18 Oct a tool description was rewritten get_session_summary
16 Oct 18 tools changed the parameters they ask for compare_strategies, enqueue_solve, find_hands and 15 more

PokerData does not always answer

Over the last week it answered 0.0% of our checks. We check every 15 minutes, so you hear about the next outage within the hour — not from your users.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 7 min ago.

run in your terminal
claude mcp add pokerdata --transport http https://pokerdata.io/api/mcp
Settings → Connectors → Add custom connector, then paste this address
https://pokerdata.io/api/mcp
~/.codex/config.toml
[mcp_servers.pokerdata]
url = "https://pokerdata.io/api/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "pokerdata": {
      "url": "https://pokerdata.io/api/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "pokerdata": {
      "type": "http",
      "url": "https://pokerdata.io/api/mcp"
    }
  }
}

Available tools 32

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

postflop
get_postflop_node
One postflop solver node: the acting player's strategy for every hand class, the legal next segments, board, reach and the reach-weighted action split. Walk deeper by appending a returned childSegment (an action like "Bet 5.5" or a runout like "deal:7c") to `path`.
get_postflop_range
The range a player takes one flop action with, from a solved pack: hand-class weights ("AA:1,AKs:0.42,...", same format as the preflop ranges) after every earlier flop action on the path. `path` ends in the action whose range you want, e.g. ["Check", "Bet 1.8", "Call 1.8"] for the check-call range. Bet-size tree. "33" = 33% pot on the flop, then 75% pot on the turn and river, plus all-in. "75" = 75% pot on every street, plus all-in. Compact and full detail apply to the other range tools; this returns the action range itself.
list_postflop_packs
Every solved postflop pack: preflop line, positions (OOP vs IP), stack, pot, the bet-size trees it is solved under, and the solved boards. Boards use the spaced form ("3h 3d 2s"). NLHE packs list `sizingTrees`: "75" (75% pot every street, the pack id itself) and "33" (33% pot on the flop, then 75%, under the `<pack>-flop33` id); every postflop tool accepts either tree's packId. PLO5 packs (ids starting plo5-) solve one 33% flop tree, flop decisions only. Compact output lists board names per pack. Pass `pack` (the 75% id or the -flop33 id) for that tree's per-board detail and per-flop exploitability where the index publishes a number. Missing exploitability is omitted, never estimated. Pass `variant` to list only NLHE or PLO5 packs. Call this before get_postflop_node.
opponent
get_opponent_limp_range
Shown-hand first-in limp range: 169-class counts of hole cards villains showed after an open limp. Pass position for one seat. Sample is showdown-only. This is not a solver range.
get_opponent_notes
Leak notes computed from uploaded hands for one opponent, with the sample size on each line.
queued
get_queued_solve
Look up one queued solve for this account. status is pending, running, done, or failed. solution_id is null until a worker exists.
list_queued_solves
List this account's solver-queue jobs, newest first. Jobs are not dispatched.
range
get_range
The GTO range for one spot. `spot` is an action path of POSITION_ACTION pairs ending in the action whose range you want, e.g. NLHE cash "UTG_60%_HJ_Call", nlmtt8 "UTG_Open", or PLO "UTG_Open_HJ_3B". Add `hand` for one exact frequency and EV. Compact mode is default; PLO returns representative pure/mixed hands unless a hand is specified; plo5 returns the top hands by EV that take the action (limit up to 500 compact, 2000 full).
get_range_metadata
Index metadata for one preflop game, stack, and path: bundle stats for hold'em/PLO bundles, or the matching node row for plo5 and plo6hu. Does not return a strategy and does not invent exploitability.
upload
get_upload_link
Primary hand-upload path. Returns https://pokerdata.io/upload on this origin, with a short-lived signed token for the caller's account when signing is configured. Hand the URL to the user. Pasting histories into chat is the fallback.
upload_hand_history
Secondary upload path for a small paste. Prefer get_upload_link and the hosted /upload page. Runs the same ingestion pipeline and returns hands parsed, tournaments parsed, and errors. Does not grade solver frequencies.
board
get_board_report
Preferred tool for board-texture heuristics. Aggregates action frequencies and range/action composition across solved boards in one postflop pack. Results explicitly report sample breadth and use equal weight per board.
compare
compare_strategies
Preferred tool for differences between two preflop or postflop contexts. The server fetches both strategies and returns action-frequency/EV deltas plus the largest postflop combo changes, avoiding two large node payloads.
config
get_config
Table for one preflop game and stack, in big blinds: seats, stacks, blinds (sb 0.5, bb 1), ante, antePostedBy, stackIncludesAnte, openSizes (first-in raise-to), evUnit, evBaseline. Convergence is not published. stackIncludesAnte is true: the named depth is the starting stack and the 1bb BB ante is posted from it. openSizes at 40bb is open 2.2x (listing 2.2bb; node decodes code 40034 to 2.19bb) and SB 2.8x (2.8bb). 10bb is all-in/fold versus 50bb stacks, so stacks is null there. evs on nodes are small blinds relative to fold. Example: get_config({ game: "nlmtt8", stack: 40 }).
datasets
list_datasets
List preflop datasets in the shipped tree documentation (stacks, positions, whether each bundle was analyzed). Preflop exploitability is not available.
enqueue
enqueue_solve
Record a heads-up postflop solve request. Required: title, board, pot (bb), effective_stack (bb). The job stays pending: solver dispatch and billing are not configured, so this does not start a solve.
explain
explain_combo
Preferred tool for exact NLHE postflop hand questions. Returns a canonical context, exact action mix, action EV/loss when available, made-hand and draw classification, blocker facts, and same-rank-class suit comparisons. The server computes evidence; the agent should phrase causality as interpretation.
exploitability
get_exploitability
Preflop exploitability for a game. No preflop dataset publishes exploitability, convergence, or iteration counts. The answer is not available; this tool never fills in a number.
games
list_games
Discover covered stack depths and positions. Call this before low-level preflop queries. "nl" = no-limit hold'em 6-max cash (169-grid hands, per-hand EV in small blinds), "nl9" = no-limit hold'em 9-max cash, "nlmtt8" = no-limit hold'em 8-max MTT chip-EV (10–300bb, 1bb BB-ante; Fold/Call/Limp/AI/Open/3B tokens), "nlh8-hydra" = no-limit hold'em 8-max MTT chip-EV with a classic 0.1bb ante from every seat (10, 20, 30, 60bb; same tokens as nlmtt8), "plo" = pot-limit Omaha 6-max cash (4-card), "plo5" = pot-limit Omaha 5-card 6-max (100bb, 1.2bb ante), "plo9" = pot-limit Omaha 9-max cash, "plo6hu" = 6-card Omaha heads-up (BTN vs BB, 100bb). Cash trees are not tournament, ICM, PKO, or satellite solves. nlmtt8 is chip-EV only.
hand
get_hand_results
Per-hand cumulative results for a winnings curve. `points` is [{ hand, bb }], oldest to newest, downsampled. Pass session_id for one session. If this account has no hands, offer the hosted upload page from get_upload_link (https://pokerdata.io/upload) instead of asking the user to paste histories into chat.
hands
find_hands
Find hands the account has uploaded. Returns hand_id, session_id, handAt, position, cards, game, board, potType, street lines, and netBb. Solver grade buckets are not filled. If this account has no hands, offer the hosted upload page from get_upload_link (https://pokerdata.io/upload) instead of asking the user to paste histories into chat.
library
list_library_solutions
Finished postflop solutions saved for this account. None are marked done while dispatch is disabled.
node
get_node
Actions available at a decision node. `history` is an action path ending in the position about to act, e.g. "UTG_60%_HJ". sizeBb is the raise-to in big blinds and sizePctPot is the percent of the pot after calling (nlmtt8 40bb Open 40034 is 2.19bb; the pack label is 2.2x). evs are small blinds relative to fold. Compact mode returns action totals; add `hand` for its exact mixed strategy. full=true is full=1: all 169 hold'em hands with explicit 0, and no invented EVs.
opponents
list_my_opponents
Tracked opponents from uploaded hands. Each row has handCount, handsVsHero, and heroBb100Vs. Pass name to find one villain.
requests
list_my_requests
List the feature and data requests this account has filed, newest first, with their status. Free with any key.
session
get_session_summary
One uploaded session's headline numbers: hero, game type, start and end times, hands played, net result in big blinds, and HUD rates (VPIP, PFR, 3-bet, open limp) as percentages with the sample size. Use it after list_my_sessions to report how a session went; use get_hand_results for its winnings curve and find_hands for individual hands. Returns an error for an unknown session id. Any key works, free trial included, and it never counts against the allowance. If this account has no hands, offer the hosted upload page from get_upload_link (https://pokerdata.io/upload) instead of asking the user to paste histories into chat.
sessions
list_my_sessions
Recent uploaded sessions, newest first: id, hero, game type, dates, hands, and net result. game_type matches hole-card count. If this account has no hands, offer the hosted upload page from get_upload_link (https://pokerdata.io/upload) instead of asking the user to paste histories into chat.
spots
list_spots
Search valid decision nodes for a stack depth, tagged by depth (1 = RFI, 2 = vs open, 3 = 3-bet pots, …). Compact mode is paginated; use depth, contains, and offset to narrow results without loading thousands of paths. plo9 has no spot index: walk it with get_node from history "UTG".
started
get_started
Start here with a new user. Returns the short set of questions to ask them (game, format, stakes, goal), a menu of what PokerData can do with the tools for each, what is free without a key, and how to file a feature or data request. Free, no key needed.
submit
submit_request
File a feature request or data request for the user, after telling them their question isn't covered and they agree. kind "data" is missing coverage (a game, format, stack depth, spot, or solve); kind "feature" is a missing capability (a tool, filter, export, or endpoint). Free with any key; the PokerData team reads every one.
tournament
get_tournament_results
MTT results imported from tournament summary files. Money is in cents. Hand histories are not a source of buy-ins or prizes. If this account has no hands, offer the hosted upload page from get_upload_link (https://pokerdata.io/upload) instead of asking the user to paste histories into chat.
tree
get_tree_docs
Tree documentation for one dataset: coverage note from the shipped README and per-stack bundle or node counts from the shipped index. Does not read or modify range bytes.

Endpoints

URLTransportStateLatencyChecked
https://pokerdata.io/api/mcp streamable-http answering 77 ms 7 min ago

Alternatives to PokerData

same job, measured the same way
Pokerai API
by pokerai-bet

Solver-grade GTO strategy for study. Real-time assistance (RTA) at real-money tables is prohibited.

587 installs/wk local only
ausdata.io — Australian Public Data
by ausdata

Australian public data (ABS, RBA, ATO + 6 more) via the ausdata.io gateway. Free tier, no card.

55 installs/wk local only
Naver Search, Map & Blog Data
by cocomoon612

Naver search results (SEO/GEO), Naver Map places, reviews and rank tracking, Naver Blog posts.

answering
Openmm MCP
by qbt-labs

MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents

15 tools answering
Nephyr Backtest
by clm-studios

Prediction market strategy backtesting with real on-chain Polymarket data

97 installs/wk local only
Reference Data
by mearef

Mid-East govt data, cited to source: rates, VAT, tax, wages, holidays, FX. 9 countries; UAE free.

33 tools answering
Real Estate Analyzer
by reizer

Free real-estate underwriting, no key or account. 6 strategies, stress tests, max offer.

4 tools answering
Wise MCP
by mrfentmen

MCP server for Wise: profiles, balances, exchange rates. Needs a free Wise API token.

88 installs/wk local only

PokerData — questions

Answers built from our own checks of this server.

What can PokerData do?
It exposes 32 tools, read directly from the server on our last check. Among them: compare_strategies, enqueue_solve, explain_combo, find_hands, get_board_report, get_config and 26 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is PokerData mostly used for?
Its tools cluster around postflop, queued and opponent. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is PokerData working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 0 of 92 checks got a reply (0.0%), average response time 77 ms. The bar chart above shows every period we have measured.
The registry lists PokerData as active — why does it not respond?
The official MCP registry stores what the author submitted; it does not verify that the server still runs. We check the endpoint ourselves, and this one does not answer. Catalogues that copy the registry without checking will show it as working.
How do I connect PokerData?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does PokerData need an API key?
No. PokerData completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 32 of them are readable on this page. This is what we observed, not what the docs claim.
How many people use PokerData?
The npm package pokerdata-mcp was installed 104 times in the last week. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is PokerData open source?
The code is open source: it is published under the MIT licence, written in JavaScript, 2 stars on GitHub and 5 open issues. The licence covers the code in the repository, not the hosted service at pokerdata.io, which runs on its operator's own terms.