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.” Pitch and connect steps live on the Esports MCP page; this page is the tool catalog.

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

cs2valorantloldota2codr6mlbbdeadlock

Plans

  • Sandbox: CS2 props and match discovery to prove your integration (1,500 credits/UTC day). No live desk, no vault, no other titles.
  • Hobby: every title, moneylines, lines, live odds, research, streams, H2H, live REST 15s 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

V7 API (preferred)

ToolWhenMin plan
v7_metaCall first. Sports, books (kind + supports), markets, routes, your plan. include=boards shows which books have live lines per sport.Sandbox+
v7_matchesOne match list. sport=all, or one title. date is YYYY-MM-DD. include adds boxscore, prep, veto, maps, player_board, lines, streams, or h2h.Sandbox+
v7_propsProps for one sport. board=dfs|main|all. view is groups, rows, or both.Sandbox+
v7_linesTeam lines for one sport. view is consensus or moneyline.Hobby+
v7_parlaysPrice or discover independent main-line parlays for one book. Discover is +EV by default; include=all keeps negatives. placeable_basis is combo_eligible or book_price. Hobby+.Hobby+
v7_flowFlow plays. kind is all, volume, shift, steam, or whale.Hobby+
v7_arbCross-book arbs off the lines board. Legs with source/decimal/offer_id/deeplink, margin_pct, stake_share.Quant+
v7_liveLive matches. sport=all is every title in one call. include adds boxscore, events, frame, odds, or odds_history.Sandbox+
v7_uavOne match overview, prematch through live (Quant+). match= a kr_match_id or slug (required).Quant+
v7_signalsMispricing alerts, steam moves, and arb alerts — push or poll (Pro+).Pro+
v7_clvClosing line value per bet, per book, with historical CLV tracking (Quant+).Quant+
v7_backtestTest a strategy against historical data — P&L, hit rate, drawdown (Quant+).Quant+
v7_portfolioTrack bets, auto-grade against results, running P&L and ROI (Quant+).Quant+
v7_playersPlayers. sort=rank. include is research, gamelogs, stats, stats_full, history, or media.Sandbox+
v7_teamsTeams. id is kr_tm_*. include is form, roster, maps, h2h, main_lines, or upcoming.Hobby+
v7_breakdownActionable fact bundle for a match, team, or H2H pair (odds, form, maps, starter props, targets). Builder+.Builder+
v7_historyStored history. kind is contract or lines. props is an alias of contract.Builder+
v7_resultsSettled grades already stored. from and to are YYYY-MM-DD.Sandbox+

Session

ToolWhenMin plan
loginGoogle sign-in; stores API key locally.Sandbox+
whoamiYour plan, quota, and unlocked drawers.Sandbox+
list_capabilitiesWhich tools this plan can use.Sandbox+
suggest_buildMap a one-line app goal to tools + plan.Sandbox+
list_sportsSports KashRock covers.Sandbox+
list_booksLive book registry (DFS + sportsbooks including Bovada, Thunderpick, Cloudbet, BetRivers, Pinnacle + Kalshi/Polymarket/Fanatics/FlipX).Hobby+
list_marketsCanonical market / moneyline names.Sandbox+
explain_errorTurn a 403/401 into plain English.Sandbox+

Board

ToolWhenMin plan
get_propsDFS player props only. Sandbox=all sports (1,500 credits/UTC day). Prefer filters + slim.Sandbox+
get_player_propsDFS + sportsbook named-player props. board=dfs|main|all; default view=groups+slim.Sandbox+
get_player_snapshotMedia + slim player-prop groups for one player.Sandbox+
get_moneylinesTeam match/map moneylines (line is null — that is normal).Hobby+
get_linesConsensus team mainlines across sportsbooks, DFS Teams, and prediction markets.Hobby+
get_best_linesTop cross-venue consensus edges from get_lines (upcoming only by default).Hobby+
get_gapsDFS book-vs-book line spreads (same prop, different lines).Hobby+
get_coveragePer-book prop counts / freshness (no prop rows).Sandbox+
get_mediaResolve player faces + team logos by name/id.Sandbox+

Players & research

ToolWhenMin plan
search_playersFind players by nickname. Sandbox=all sports.Sandbox+
get_playerPlayer profile by id or nickname. Sandbox=all sports.Sandbox+
get_player_statsCanonical player stats (KPR, etc.). Sandbox=all sports.Sandbox+
get_player_stats_fullFull aggregate: period + foundation + recent maps.Hobby+
get_rankingsPlayer rankings board. Sandbox=all sports.Sandbox+
research_boardResearch slips for the current board.Hobby+
research_board_tapesResearch quote tapes for the live board.Hobby+
research_playerCareer tape for one player + market.Hobby+
get_streamsLive Twitch/Kick streams for a sport.Hobby+
get_team_h2hTeam head-to-head meetings from the vault.Hobby+
get_teamThe team behind a kr_tm_ id, with its record and recent matches.Sandbox+
get_team_statsA team's aggregate record, span and most-played opponents.Sandbox+
get_player_comboPlayer profile + props + media in one call.Sandbox+
get_defense_vs_roleDefense-vs-role splits for DFS research.Sandbox+

Schedule & history

ToolWhenMin plan
get_matchesUpcoming / live / finished lists with kr_match_id + kr_tm_* team ids. Sandbox=all sports; Builder+ finished vault.Sandbox+
get_matchOne match by kr_match_id or slug. Sandbox=all sports.Sandbox+
search_matchesFind a match by team names + date. Sandbox=all sports.Sandbox+
get_team_matchesFull finished team schedule from the vault.Builder+
get_live_gamesGames with live in-game telemetry (list game_ids). Sandbox=all sports, 30-60s delayed; Hobby=15s delayed; Builder+=real-time.Sandbox+
get_live_boxscoreLive 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=15s delayed; Builder+=real-time.Sandbox+
get_live_frameRaw live NormalizedFrame + metadata for one game_id. Sandbox=all sports, 30-60s delayed; Hobby=15s delayed; Builder+=real-time.Sandbox+
get_live_eventsSport-native live events (CS2 bomb/rounds, LoL towers, Dota roshan) for one game_id. Sandbox=30-60s delayed, Hobby=15s delayed, Builder+=real-time.Sandbox+
get_live_oddsIn-play shifting betting odds and active markets (omit game_id to list matches). Hobby+.Hobby+
get_live_odds_historyIn-play Redis shift log (minutes). Closing ML/totals/spreads: get_lines_history. Hobby+.Hobby+
get_lines_historyOpening and closing team mainlines, plus the full tick-by-tick quote tape per book, for a match slug / kr_match_id.Builder+
get_live_wsLive push WebSocket URL + subscribe contract (Builder+). Connect from your app.Builder+
get_gamelogsPer-map player history for grading, including sport-native model fields when present (up to 5000 maps). Sandbox=last 7 days, Hobby=last 90 days, Builder+=full vault.Sandbox+
get_boxscoreFinished-match vault boxscore + STARTER/SUB lineup and model fields by slug/kr_match_id — not live KDA (use get_live_boxscore). Sandbox=last 7 days, Hobby=last 90 days, Builder+=full vault.Sandbox+
get_match_prepCS2, R6, COD, Valorant & Apex team stats, mode/map winrates, map pool/biases, key player matchups, and betting insights.Builder+
get_player_boardCS2 favourite weapons or Valorant agent/role board for a match.Builder+
get_tournament_mapsCS2 tournament maps for a KashRock match slug / kr_match_id.Builder+
get_match_vetoPre-match map veto/pick-ban sequence for CS2, Valorant, or R6.Builder+
get_resultsSettled prop and line-odds grades (hit/miss/push). Sandbox=last 7 days, Hobby=last 90 days, Builder+=full vault.Sandbox+
get_history_tapeQuote tape for a prop/book over time.Builder+
get_trade_wsAuto-trade WebSocket contract (/v7/trade): signed trade intents, heartbeat, halt, report. Connect from your app or run `kashrock trade`. Paper by default; plan priority applies.Pro+
get_live_coverageShare of listed CS2 matches that had live in-game stats, by tournament and tier, last 1-14 days. Same on every plan.Sandbox+