kashrock-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KASHROCK_API_KEY | No | Optional API key that skips Google login for KashRock. Required for WebSocket authentication and local configuration. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| loginA | Open Google sign-in in the browser and store a KashRock API key locally. |
| whoamiB | Your KashRock plan, quota remaining, and unlocked data drawers. |
| list_capabilitiesA | Tools available for your current plan — call whoami first if unsure of plan. |
| list_sportsC | Sports KashRock covers. |
| list_booksC | Live book registry (DFS apps + sportsbooks including Pinnacle, Bovada, Thunderpick, Cloudbet, BetRivers + Kalshi/Polymarket). |
| list_marketsA | Canonical prop stat_types and /lines market names agents should use. |
| explain_errorA | Turn an API/MCP error string into a plain-English next step. |
| suggest_buildA | Given a one-line app goal, return which MCP tools + plan to use (no endpoints required). |
| get_propsC | DFS player props only. Prefer book/market/player filters — default slim+limit keeps payloads small. |
| get_player_propsC | DFS + sportsbook named-player props. Default view=groups + slim — not the full 8MB dump. |
| get_moneylinesB | Team match moneylines from consensus lines board (not DFS props). Upcoming only by default. |
| get_linesC | Consensus mainlines across sportsbooks, DFS Teams, and prediction markets (Hobby+). live_only=true (default) drops started matches. |
| get_best_linesB | Top cross-venue edges from /lines (useful operation — not raw board dump). live_only=true (default) drops started matches. |
| get_gapsC | DFS book-vs-book line spreads for the same player/event/market (Hobby+). |
| get_coverageC | How many props each book has on the live board for a sport. |
| get_mediaC | Resolve player faces + team logos. Same links shape as props (player_image, team_logo). |
| get_player_snapshotC | One-shot: media links + slim player-prop groups for a player (agent-friendly). |
| search_playersA | Find a player by nickname. Returns kr_pl_* ids. limit caps rows (default 25, max 200). |
| get_playerC | Player profile. player_id is kr_pl_* (preferred) or nickname. |
| get_player_statsD | Canonical player stats (KPR and related). |
| get_player_stats_fullB | Full Redis aggregate: period stats + foundation + recent maps. player = nickname or kr_pl_* id. |
| get_rankingsD | Player rankings. filter: lifetime | last_3_months. |
| research_boardD | Research slips for the current board. |
| research_board_tapesC | Research quote tapes for the current board (Hobby+). |
| research_playerB | Career tape for one player and market. player is kr_pl_* (preferred), catalog slug, or nickname. Empty tape is 200, not 404. |
| get_matchesC | Match list (kr_match_id, kr_tm_* team ids). status: upcoming | live | finished. Builder+. finished uses vault history. |
| get_matchB | One match by kr_match_id (preferred) or slug. Teams/players are KashRock ids. Builder+. |
| search_matchesC | Find matches by team name(s) and optional YYYY-MM-DD. Builder+. |
| get_team_matchesB | Full finished team schedule from the history vault. Builder+. |
| get_streamsA | Live Twitch/Kick streams for a sport (viewer counts + URLs). |
| get_live_gamesA | List games with live in-game telemetry (KDA frames). Sandbox=CS2, 30-60s delayed; Hobby=all sports, 5s delayed; Builder+=real-time. Use game_id with get_live_boxscore. |
| get_live_boxscoreA | Live in-game board (K/D/A plus sport-native state: CS2 money/bomb, LoL gold/towers, Deadlock gold/CS/level). Omit game_id to list live games. Sandbox=CS2, 30-60s delayed; Hobby=all sports, 5s delayed; Builder+=real-time. |
| get_live_frameB | Raw live NormalizedFrame + metadata for one game_id. Sandbox=CS2, 30-60s delayed; Hobby=all sports, 5s delayed; Builder+=real-time. |
| get_live_eventsB | Sport-native live events (kills, bomb, towers, roshan, round wins) for one game_id. Sandbox=30-60s delayed, Hobby=5s delayed, Builder+=real-time. |
| get_live_oddsA | Shifting betting odds (live in-play and pre-match steam moves) and markets across premier sportsbooks. Hobby+. Omit game_id to list matches with odds. Optional status=all|live|prematch. |
| get_live_odds_historyC | Audit log of in-game odds shifts and line movements for one match. Hobby+. |
| get_live_wsA | Live push WebSocket contract (Builder+). Returns URL, auth, subscribe ops — connect from your app; MCP cannot hold the socket. |
| get_gamelogsA | Per-map player gamelogs (kills, ADR, gold, GPM, hero when present). player = slug, nickname, or kr_pl_*. Sandbox=last 30 days, Hobby=last 90 days, Builder+=full vault. |
| get_boxscoreA | Finished-match vault boxscore + STARTER/SUB lineup and sport-native model fields by slug or kr_match_id (or recent list). Not live KDA — use get_live_boxscore. Sandbox=last 30 days, Hobby=last 90 days, Builder+=full vault. |
| get_resultsB | Settled prop grades: hit | miss | push | pending | error. Sandbox=last 30 days, Hobby=last 90 days, Builder+=full vault. |
| get_lines_historyC | Opening and closing team mainlines for a match slug or kr_match_id. Builder+. Not live in-play steam. |
| get_history_tapeB | Quote tape for a prop/book or market_key. Builder+. Need market_key OR prop_id+book. |
| get_team_h2hC | Finished team-vs-team meetings (scores + maps) from the history vault. |
| get_match_prepB | Match prep board: team stats, mode winrates, map pool & side biases, form, key player matchups, betting insights. sport = cs2, r6, cod, valorant, or apex. match_slug = KashRock -vs- slug or kr_match_id. Builder+. |
| get_player_boardB | Player averages + favourite weapons (CS2) or agent/role board (Valorant). match_slug = KashRock -vs- slug or kr_match_id (not provider ids). Builder+. |
| get_tournament_mapsB | CS2 tournament map picks/bans + T/CT winrates for a match. match_slug = KashRock -vs- slug or kr_match_id. Builder+. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 46 tools
Several tools have heavily overlapping surfaces, such as get_props/get_player_props/get_player_snapshot, get_lines/get_best_lines/get_moneylines/get_live_odds, and get_live_games/get_live_boxscore (which also lists live games when game_id is omitted). Descriptions add caveats, but with 46 similarly named read tools an agent will often struggle to pick the right one.
The vast majority of tools follow a get_/list_/search_/research_ + noun snake_case pattern, and there is no mixed casing. Minor deviations like login, whoami, explain_error, and suggest_build are still readable and conventional, though the abundance of get_lines/get_live_odds/get_moneylines/get_best_lines makes names semantically confusing.
At 46 tools, this is far beyond the healthy 3-15 range and falls into the 'too many' category. Many tools could be consolidated, especially the live-game listing, props variants, and lines/odds families, which would reduce navigation burden without losing capability.
The surface covers the domain well: plan/auth, sports/books/markets catalogs, match scheduling, player search and stats, props, odds, live telemetry, results, media, and research tapes. Minor gaps exist—no tournament/event listing and no direct single-prop detail endpoint—but agents can work around them with existing tools.