MCP
Prefer MCP over hunting HTTP paths. Claude, ChatGPT, Grok, Gemini, Cursor — every MCP client connects to https://mcp.kashrock.com/mcp with your API key, or run the stdio package and say “log in to KashRock.” The marketing guide is the Esports MCP page.
Hosted connector
No install — point any MCP client at https://mcp.kashrock.com/mcp and send your key as the x-api-key header (an Authorization: Bearer header works too). Get your key at kashrock.com/console → API keys. Never paste it into chat.
- Claude — claude.ai or Claude Desktop → Customize → Connectors → Add custom connector URL: https://mcp.kashrock.com/mcp Authentication: No sign-in → Request headers → x-api-key: your key
- Claude Code — One command:
claude mcp add --transport http kashrock https://mcp.kashrock.com/mcp --header "x-api-key: kr_…"
- ChatGPT — Settings → Connectors → Advanced settings → Developer mode → Create MCP server URL: https://mcp.kashrock.com/mcp Authentication: API key → paste your key
- Grok — grok.com/connectors → New Connector → Custom URL: https://mcp.kashrock.com/mcp — paste your API key when it asks CLI: `grok mcp add --transport http kashrock <url> --header "x-api-key: kr_…"`
- Cursor / Windsurf / VS Code — mcp.json — remote URL, no uv needed:
{ "mcpServers": { "kashrock": { "url": "https://mcp.kashrock.com/mcp", "headers": { "x-api-key": "kr_…" } } } } - Gemini CLI — ~/.gemini/settings.json — note httpUrl (not url) for Streamable HTTP:
{ "mcpServers": { "kashrock": { "httpUrl": "https://mcp.kashrock.com/mcp", "headers": { "x-api-key": "kr_…" } } } }
Setup
Needs uv. Package: kashrock-mcp on PyPI.
{
"mcpServers": {
"kashrock": {
"command": "uvx",
"args": ["kashrock-mcp"]
}
}
}Optional env KASHROCK_API_KEY skips browser login. Never paste a key into chat.
Sports
cs2valorantloldota2codr6mlbbdeadlockPlans
- Sandbox — all sports, props, matches, players, live REST 30-60s delayed (500 req/UTC day), gamelogs/boxscores/results capped to 30 days
- Hobby — all sports, moneylines, lines, live odds, research, streams, H2H, live REST 5s delayed, gamelogs/boxscores/results capped to 90 days
- Builder+ — real-time live scores, live WebSocket push, full history vault (gamelogs, finished boxscores, results — no date cap), match prep / player-board / tournament maps, history tape, closing mainlines
Call list_capabilities or whoami after login. Stacks are not exposed via MCP.
Tools
Session
| Tool | When | Min plan |
|---|---|---|
| login | Google sign-in; stores API key locally. | Sandbox+ |
| whoami | Your plan, quota, and unlocked drawers. | Sandbox+ |
| list_capabilities | Which tools this plan can use. | Sandbox+ |
| suggest_build | Map a one-line app goal to tools + plan. | Sandbox+ |
| list_sports | Sports KashRock covers. | Sandbox+ |
| list_books | Live book registry (DFS + sportsbooks including Bovada, Thunderpick, Cloudbet, BetRivers, Pinnacle + Kalshi/Polymarket). | Hobby+ |
| list_markets | Canonical market / moneyline names. | Sandbox+ |
| explain_error | Turn a 403/401 into plain English. | Sandbox+ |
Board
| Tool | When | Min plan |
|---|---|---|
| get_props | DFS player props only. Sandbox=all sports (500 req/UTC day). Prefer filters + slim. | Sandbox+ |
| get_player_props | DFS + sportsbook named-player props. board=dfs|main|all; default view=groups+slim. | Sandbox+ |
| get_player_snapshot | Media + slim player-prop groups for one player. | Sandbox+ |
| get_moneylines | Team match/map moneylines (line is null — that is normal). | Hobby+ |
| get_lines | Consensus team mainlines across sportsbooks, DFS Teams, and prediction markets. | Hobby+ |
| get_best_lines | Top cross-venue consensus edges from get_lines (upcoming only by default). | Hobby+ |
| get_gaps | DFS book-vs-book line spreads (same prop, different lines). | Hobby+ |
| get_coverage | Per-book prop counts / freshness (no prop rows). | Sandbox+ |
| get_media | Resolve player faces + team logos by name/id. | Sandbox+ |
Players & research
| Tool | When | Min plan |
|---|---|---|
| search_players | Find players by nickname. Sandbox=all sports. | Sandbox+ |
| get_player | Player profile by id or nickname. Sandbox=all sports. | Sandbox+ |
| get_player_stats | Canonical player stats (KPR, etc.). Sandbox=all sports. | Sandbox+ |
| get_player_stats_full | Full aggregate: period + foundation + recent maps. | Hobby+ |
| get_rankings | Player rankings board. Sandbox=all sports. | Sandbox+ |
| research_board | Research slips for the current board. | Hobby+ |
| research_board_tapes | Research quote tapes for the live board. | Hobby+ |
| research_player | Career tape for one player + market. | Hobby+ |
| get_streams | Live Twitch/Kick streams for a sport. | Hobby+ |
| get_team_h2h | Team head-to-head meetings from the vault. | Hobby+ |
Schedule & history
| Tool | When | Min plan |
|---|---|---|
| get_matches | Upcoming / live / finished lists with kr_match_id + kr_tm_* team ids. Sandbox=all sports; Builder+ finished vault. | Sandbox+ |
| get_match | One match by kr_match_id or slug. Sandbox=all sports. | Sandbox+ |
| search_matches | Find a match by team names + date. Sandbox=all sports. | Sandbox+ |
| get_team_matches | Full finished team schedule from the vault. | Builder+ |
| get_live_games | Games with live in-game telemetry (list game_ids). Sandbox=all sports, 30-60s delayed; Hobby=5s delayed; Builder+=real-time. | Sandbox+ |
| get_live_boxscore | Live in-game board (KDA plus sport state: CS2 money/bomb, LoL gold/towers, Deadlock gold/CS/level). Omit game_id to list games. Sandbox=all sports, 30-60s delayed; Hobby=5s delayed; Builder+=real-time. | Sandbox+ |
| get_live_frame | Raw live NormalizedFrame + metadata for one game_id. Sandbox=all sports, 30-60s delayed; Hobby=5s delayed; Builder+=real-time. | Sandbox+ |
| get_live_events | Sport-native live events (CS2 bomb/rounds, LoL towers, Dota roshan) for one game_id. Sandbox=30-60s delayed, Hobby=5s delayed, Builder+=real-time. | Sandbox+ |
| get_live_odds | In-play shifting betting odds and active markets (omit game_id to list matches). Hobby+. | Hobby+ |
| get_live_odds_history | In-play Redis shift log (minutes). Closing ML/totals/spreads: get_lines_history. Hobby+. | Hobby+ |
| get_lines_history | Opening and closing team mainlines, plus the full tick-by-tick quote tape per book, for a match slug / kr_match_id. | Builder+ |
| get_live_ws | Live push WebSocket URL + subscribe contract (Builder+). Connect from your app. | Builder+ |
| get_gamelogs | Per-map player history for grading, including sport-native model fields when present (up to 5000 maps). Sandbox=last 30 days, Hobby=last 90 days, Builder+=full vault. | Sandbox+ |
| get_boxscore | Finished-match vault boxscore + STARTER/SUB lineup and model fields by slug/kr_match_id — not live KDA (use get_live_boxscore). Sandbox=last 30 days, Hobby=last 90 days, Builder+=full vault. | Sandbox+ |
| get_match_prep | CS2, R6, COD, Valorant & Apex team stats, mode/map winrates, map pool/biases, key player matchups, and betting insights. | Builder+ |
| get_player_board | CS2 favourite weapons or Valorant agent/role board for a match. | Builder+ |
| get_tournament_maps | CS2 tournament maps for a KashRock match slug / kr_match_id. | Builder+ |
| get_match_veto | Pre-match map veto/pick-ban sequence for CS2, Valorant, or R6. | Builder+ |
| get_results | Settled prop and line-odds grades (hit/miss/push). Sandbox=last 30 days, Hobby=last 90 days, Builder+=full vault. | Sandbox+ |
| get_history_tape | Quote tape for a prop/book over time. | Builder+ |