# Lumify Sports Intelligence MCP server

Schedules, scores, odds, splits & explainable AI bet confidence — 8+ sports, free instant key.

## Links
- Registry page: https://www.getdrio.com/mcp/ai-lumify-sports-intelligence
- Repository: https://github.com/lumifyai/lumify
- Website: https://lumify.ai

## Install
- Endpoint: https://lumify.ai/mcp
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: Authorization (required; secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://lumify.ai/mcp
- Header: Authorization

## Tools
- list_sports - List supported sports with their leagues and current season. Returns each sport's id, slug, name, team-sport flag, and its leagues (each with its current_season). Use list_seasons with current_only=false for historical seasons. Endpoint: https://lumify.ai/mcp
- list_events - List events (schedules and live scores), paginated by id (after_id). Filter by sport, league, status, date range, season, or team_id (resolve teams via list_teams / get_team). Returns event id, name, sport/league, start time, status, and venue for each; pass include_scores to also inline participants + scores (intended for small result sets — use get_event for one event's full detail, or query_events for free-text/natural-language filters instead of structured params). Endpoint: https://lumify.ai/mcp
- get_event - Get a single event with participants and venue. Optionally inline current odds and/or bet intelligence (+1 credit each, only charged when that data is actually available). Raises a not-found error if event_id doesn't exist. Use list_events / query_events to discover ids first, or batch_get_events to fetch several ids in one call. Endpoint: https://lumify.ai/mcp
- batch_get_events - Get multiple events by id in one call — for agents that already have a list of ids and want full detail for each without one call per event. Max 25 ids. Returns full detail for every id that exists plus a not_found list for any that don't (never billed). Use get_event for a single id, or list_events / query_events to discover ids first. Endpoint: https://lumify.ai/mcp
- query_events - Search events with a natural-language query instead of structured filters — e.g. 'live nfl games today' or 'college basketball this week'. Rule-based (not an LLM): recognizes sport (nfl/nba/mlb/nhl/tennis/soccer/ncaaf/ncaab + aliases like hockey, american football, college basketball), status (live/final/upcoming/…), dates (today/tomorrow, this week, next N days, YYYY-MM-DD ranges). Bare 'football' is ambiguous and left unrecognized. Response includes interpreted filters, equivalent REST call, and unrecognized_terms. Prefer list_events when you already know the structured filters you want. Endpoint: https://lumify.ai/mcp
- get_live_score - Get a lightweight live score snapshot for an event: status, period, clock, per-participant score and period-by-period scores, and last-updated time. Cheaper and faster than get_event when you only need the score, not participants or venue. Raises a not-found error if event_id doesn't exist. Endpoint: https://lumify.ai/mcp
- get_odds - Get current betting odds for an event: per-bookmaker lines and last-updated time. bookmaker defaults to pinnacle (1 credit). Use 'all' or a comma-separated list for multiple books (2 credits). Returns available:false with no charge if odds aren't posted for this event yet. Use get_odds_history for line movement over time. Endpoint: https://lumify.ai/mcp
- get_odds_history - Get line-movement history for an event: a list of past odds snapshots (movements), each with its own timestamp, up to limit entries. bookmaker defaults to pinnacle. Use get_odds instead if you only need the current line. Endpoint: https://lumify.ai/mcp
- get_stats - Get raw, deterministic team and match statistics for a soccer or MLB event — no market/odds data (use get_odds for that) and no scoring, weighting, confidence, or narrative attached; use get_intelligence for Lumify's judgment layer. The payload shape is sport-specific — branch on league_slug/the presence of MLB-only fields like teams.<side>.record; soccer and MLB never share field names. Soccer: team strength (league-table PPG or FIFA rank), recent form, head-to-head history, rest days, home/away splits, and boxscore rates (shots/SoT for & against, possession, corners, cards, save rate) over explicit windows rates_l5/rates_season, computed from completed results and ESPN team box scores. MLB: season-to-date W/L record + run differential, recent form (runs scored/allowed), head-to-head history, rest days, team batting/pitching rates (rates_l5/rates_season — AVG/ERA/WHIP/K9/BB9 and component counts) computed from ingested box scores, the game's starting pitcher's own season ERA/WHIP/K9/BB9 (outs-based math), and lineup (batting order + starting pitcher + subs) from completed-game box scores — Path A is post-final only (no pregame probable pitchers). Soccer and MLB only today. Returns available:false with no charge if either team hasn't resolved for this fixture yet. Endpoint: https://lumify.ai/mcp
- get_splits - Get public betting splits (bets% and handle%) for an event: a consensus split plus a per-book breakdown, with a captured_at timestamp. Available for MLB, NBA, NHL, and NFL. Not available for tennis, soccer, or NCAAF (upstream does not expose splits). Returns available:false with no charge if splits haven't been captured for this event yet or the sport is unsupported. Endpoint: https://lumify.ai/mcp
- get_intelligence - Get AI bet intelligence for an event. bets[] comes in two shapes — branch on the presence of probability (probability model) vs. confidence_score (points model). Probability model, currently soccer/MLS only: bets carry probability/interval/p_model/p_market/blend_w/fair_price/edge/sufficiency/phase/model_version/drivers and no confidence_score, coverage, signals, or validator. probability is calibrated and sums to 1 across a market's outcomes; p_market is the de-vigged market price, which you cannot recompute from a single price. Where no fitted model has cleared out-of-sample validation for a league, blend_w is 0, probability equals p_market, and p_model/edge/tier are null — a probability taken from the market has no honest edge against the price it came from; treat those events as fair-price reference, not as picks. drivers is normally empty then; two exceptions carry effect 0 and never move probability: Stage 6 Match Context drivers (soccer.match_context.*), which may cite the Fact Ledger, and soccer.cross_book_edge, the market-anchored price gap already in edges_by_book/best_edge (line-shopping, not EV). Points model, every other sport/league: confidence scores, signal breakdowns, rationale, and narratives per bet. Signal keys (signal_serve_rtn, signal_surface, etc.) are shared across sports but mean different things per sport (for soccer signal_serve_rtn is Attack/Defense Edge, not tennis Serve/Return) — for NFL, NCAAF, and points-model soccer leagues, bets[].signals._labels maps each present signal_* key to its sport-specific label; prefer rationale/attribution for prose when you don't need raw scores. Both shapes include event-level analyst_take and match_overview. Match-level tokens (OVER, UNDER, ML_DRAW) have null player_role/player_id/team_id/player_name, so summing exposure by team_id never double-counts a draw. bookmaker defaults to pinnacle and is a no-op for probability-model sports, which report the book their assessment was priced against. Returns available:false with no charge if intelligence hasn't been computed yet for this event/bookmaker. Endpoint: https://lumify.ai/mcp
- list_teams - List teams, paginated by id (after_id). Filter by sport, league, conference, division, country, active status, or name (q, partial match). Returns each team's id, slug, name, city, conference/division, and venue. Use get_team for full detail on one id once resolved here. Endpoint: https://lumify.ai/mcp
- search_players - Search players by name, sport, country, ranking, or active status, paginated by id (after_id). Returns each player's id, name, position, current team, and tennis ranking if applicable. Use get_player for full detail on one id, or get_player_events for a player's schedule/results. Endpoint: https://lumify.ai/mcp
- get_team - Get a single team profile with its home venue. Raises a not-found error if team_id doesn't exist. Resolve ids via list_teams. Endpoint: https://lumify.ai/mcp
- get_player - Get a single player profile: name, sport, country, position/handedness, physical stats, current team, and tennis ranking if applicable. Raises a not-found error if player_id doesn't exist. Resolve ids via search_players. Endpoint: https://lumify.ai/mcp
- get_player_events - List a player's events (schedule/results), paginated by id (after_id). Defaults to ±30 days around today when no date filter is given. Resolve player_id via search_players first. Endpoint: https://lumify.ai/mcp
- list_seasons - List seasons per sport/league. By default returns only currently active seasons; pass current_only=false to include historical seasons. Optionally filter by sport. Returns each season's id, year, phase, start/end dates, and whether it is_current. Use list_sports for just each sport's current season. Endpoint: https://lumify.ai/mcp
- estimate_cost - Estimate the credit cost of one or more planned tool calls before making them — no credits are spent. Costs are data-dependent (e.g. odds/intelligence/splits not yet ingested for an event are free, and batch_get_events ids that don't exist cost nothing), so this returns a [min_credits, max_credits] range per call rather than a single number. Pass the exact tool name and arguments you're considering, e.g. {"tool": "get_event", "arguments": {"event_id": 123, "include_odds": true}}. Endpoint: https://lumify.ai/mcp

## Resources
- lumify://sports - Sports & leagues catalog Supported sports with their leagues and current season (JSON). The 'what can I query' entrypoint — resolve sport/league slugs and season ids here before calling list_events, list_teams, or search_players. MIME type: application/json
- lumify://docs/quickstart - Quickstart & authentication Endpoint, zero-signup instant-key authentication, the full tool map, and the credit model — everything needed to make a first call. MIME type: text/markdown

## Prompts
- todays_games - Today's games Summarize today's games (optionally for one sport) with live scores. Arguments: sport
- event_bet_brief - Event bet brief Build an explainable betting brief for one event: odds, confidence, rationale, line moves, and public splits. Arguments: event_id
- line_watch - Line watch Report line movement and where the public money is for one event. Arguments: event_id

## Metadata
- Owner: ai.lumify
- Version: 1.0.1
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 20, 2026
- Source: https://registry.modelcontextprotocol.io
