SportStatsAPI

Fixtures, live scores, results, tables and match facts for 1,881 competitions in 8 sports.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
94%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'get_mma_event' description lacks action verbin get_mma_event
  • LOWTool 'get_mma_events' description lacks action verbin get_mma_events

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~5,215Tokens (tool definitions)
~1.4 KBTypical response size
Significant attention impact (4.07% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "sports-data": {
      "url": "https://mcp.sportstatsapi.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.sportstatsapi.com/mcpstreamable-http

What it can do

Tool inventory

Tools (26)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢find_horses(name, limit)

Find horses, jockeys and trainers by name, with their ids (for get_runner_form), most recently seen first.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "part of a horse, jockey or trainer name (2-64 characters)"
    },
    "limit": {
      "type": "integer",
      "description": "max results per kind (default 20, max 50)"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
🟢find_leagues(sport, query, future, lang)

Find leagues (competitions) of a sport and their ids, optionally by name or country (also matches official_name, the competition's official or Wikidata name where known). Free.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport: soccer, basketball, baseball, hockey, tennis, handball, volleyball, american-football, cricket, rugby (union), rugby-league or esports"
    },
    "query": {
      "type": "string",
      "description": "text the league or country name must contain, e.g. 'Premier League' or 'Germany'"
    },
    "future": {
      "type": "boolean",
      "description": "only leagues with upcoming matches"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "sport"
  ],
  "additionalProperties": false
}
🟢find_teams(sport, name, league_id, limit, lang)

Find teams by name, with their ids, country, venue and leagues.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (see list_sports)"
    },
    "name": {
      "type": "string",
      "description": "part of the team name, e.g. 'Bayern'"
    },
    "league_id": {
      "type": "integer",
      "description": "only teams of this league"
    },
    "limit": {
      "type": "integer",
      "description": "max teams (default 20, max 100)"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "sport",
    "name"
  ],
  "additionalProperties": false
}
🟢get_golf_leaderboard(tournament_id, holes)

A golf tournament's leaderboard: position (tied), to par, strokes per round, thru and today while live, earnings, missed cut or withdrawn, and per-player stats (birdies, eagles, driving distance and accuracy, greens in regulation, putts); holes=true adds hole-by-hole scores.

Input Schema

{
  "type": "object",
  "properties": {
    "tournament_id": {
      "type": "integer",
      "description": "tournament id from get_golf_tournaments"
    },
    "holes": {
      "type": "boolean",
      "description": "also each player's hole-by-hole scores (large)"
    }
  },
  "required": [
    "tournament_id"
  ],
  "additionalProperties": false
}
🟢get_golf_player(player_id, name, season)

A golfer's profile (country, birth date and place, PGA Tour rank) and season results from our leaderboards with events, wins, top 10s, cuts made and earnings (player_id); or find golfers by name.

Input Schema

{
  "type": "object",
  "properties": {
    "player_id": {
      "type": "integer",
      "description": "player id from a leaderboard: profile and the season's results"
    },
    "name": {
      "type": "string",
      "description": "part of a golfer's name, to find the id"
    },
    "season": {
      "type": "integer",
      "description": "season of the results (default: the latest)"
    }
  },
  "additionalProperties": false
}
🟢get_golf_tournaments(tour, season, status, date_from, date_to, ...)

Golf tournaments of the PGA Tour and LPGA by date: course, location, purse, status and the leader or winner. Leaderboards exist for the PGA Tour only. The season money list: get_standings with sport golf.

Input Schema

{
  "type": "object",
  "properties": {
    "tour": {
      "type": "string",
      "description": "pga or lpga (LPGA: schedule only, no leaderboards)"
    },
    "season": {
      "type": "integer",
      "description": "season (year)"
    },
    "status": {
      "type": "string",
      "description": "scheduled, live, finished, no_results or incomplete"
    },
    "date_from": {
      "type": "string",
      "description": "tournaments ending on or after YYYY-MM-DD"
    },
    "date_to": {
      "type": "string",
      "description": "tournaments starting on or before YYYY-MM-DD"
    },
    "limit": {
      "type": "integer",
      "description": "max tournaments (default 20, max 100)"
    },
    "offset": {
      "type": "integer",
      "description": "skip this many tournaments (paging)"
    }
  },
  "additionalProperties": false
}
🟢get_league_facts(sport, league_id, since, min_importance, lang)

What finished matches changed, newest first: the match story (comebacks, late winners, red cards), runs started or ended, table places and zones, each also as a sentence (lang de, es, it, fr). Use for 'what happened in this league today'. Facts only.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (default soccer; see list_sports)"
    },
    "league_id": {
      "type": "integer",
      "description": "only this league (from list_leagues)"
    },
    "since": {
      "type": "string",
      "description": "only matches updated after this RFC 3339 time"
    },
    "min_importance": {
      "type": "integer",
      "description": "only facts of at least this importance, 0-100 (default 50)"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "additionalProperties": false
}
🟢get_live_matches(sport, league_id, lang)

Matches in play right now, with score and minute or period, and the TV channels showing them where known.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (see list_sports)"
    },
    "league_id": {
      "type": "integer",
      "description": "only this league"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "sport"
  ],
  "additionalProperties": false
}
🟢get_match(sport, match_id, lang)

One match: teams, score, status, events (goals, cards...), venue, referee; where known TV channels by country and, after the match, a highlights video link.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (see list_sports)"
    },
    "match_id": {
      "type": "integer",
      "description": "match id from get_matches"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "sport",
    "match_id"
  ],
  "additionalProperties": false
}
🟢get_match_briefing(sport, match_id, format, lang)

Ready briefing for one match (any sport): form, current streaks, home and away records, head-to-head, table position and gaps, stakes, schedule; for soccer also injuries, lineups and, after the match, the story (comeback, late winner, red cards). Each statement also as a sentence (lang de, es, it, fr). Facts only, no predictions. Prefer this for 'tell me about this match'.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (default soccer; see list_sports)"
    },
    "match_id": {
      "type": "integer",
      "description": "match id from get_matches"
    },
    "format": {
      "type": "string",
      "description": "md for a short Markdown text instead of JSON"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "match_id"
  ],
  "additionalProperties": false
}
🟢get_match_details(sport, match_id, part, lang)

Detail of one match: statistics or box score, lineups, injuries, play-by-play, a cricket scorecard (batting, bowling, fall of wickets), rugby scoring events, or esports maps and games with player lines.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (see list_sports)"
    },
    "match_id": {
      "type": "integer",
      "description": "match id from get_matches"
    },
    "part": {
      "type": "string",
      "description": "stats, lineups or injuries (soccer); stats (box score) or play_by_play (basketball, baseball, hockey, tennis, american-football); scorecard (cricket); events (rugby, rugby-league: tries, conversions, penalties, cards); maps (esports: per map or game with player lines)"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "sport",
    "match_id",
    "part"
  ],
  "additionalProperties": false
}
🟢get_matches(sport, date, date_from, date_to, league_id, ...)

Matches (fixtures and results) by day or date range, optionally of one league. Without a date: today. Where known: TV channels by country (where to watch) and a highlights video link.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (see list_sports)"
    },
    "date": {
      "type": "string",
      "description": "day YYYY-MM-DD (UTC)"
    },
    "date_from": {
      "type": "string",
      "description": "first day YYYY-MM-DD of a range"
    },
    "date_to": {
      "type": "string",
      "description": "last day YYYY-MM-DD of a range"
    },
    "league_id": {
      "type": "integer",
      "description": "league id from find_leagues"
    },
    "league_name": {
      "type": "string",
      "description": "exact league name, picks one division where several share a league id"
    },
    "status": {
      "type": "string",
      "description": "match status filter as the API reports it, e.g. FT or NS"
    },
    "limit": {
      "type": "integer",
      "description": "max matches (default 20, max 100)"
    },
    "offset": {
      "type": "integer",
      "description": "skip this many matches (paging)"
    },
    "game": {
      "type": "string",
      "description": "esports: cs2, dota2, lol or valorant"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "sport"
  ],
  "additionalProperties": false
}
🟢get_mma_event(event_id, bout_id)

One MMA card from the main event down (weight class, fighters, winner, method, round, time, judges' scores, fight stats), or with bout_id one fight.

Input Schema

{
  "type": "object",
  "properties": {
    "event_id": {
      "type": "integer",
      "description": "event id from get_mma_events: the full card"
    },
    "bout_id": {
      "type": "integer",
      "description": "bout id from a card: that fight with its stats instead"
    }
  },
  "additionalProperties": false
}
🟢get_mma_events(date_from, date_to, status, limit, offset)

MMA (UFC) fight cards by date: name, date, status and the main event with its result once known.

Input Schema

{
  "type": "object",
  "properties": {
    "date_from": {
      "type": "string",
      "description": "events on or after YYYY-MM-DD"
    },
    "date_to": {
      "type": "string",
      "description": "events on or before YYYY-MM-DD"
    },
    "status": {
      "type": "string",
      "description": "scheduled, live, finished or cancelled"
    },
    "limit": {
      "type": "integer",
      "description": "max events (default 20, max 100)"
    },
    "offset": {
      "type": "integer",
      "description": "skip this many events (paging)"
    }
  },
  "additionalProperties": false
}
🟢get_mma_fighter(fighter_id, name)

An MMA fighter's record (wins, losses, draws, no contests; wins and losses by KO/TKO, submission, decision) from the bouts held since 2026, with the last fights; where Wikipedia/Wikidata has the fighter also the profile (birth date, height, reach, stance, nationality, weight class, team), the career record and the fights before 2026 (cite the attribution). Or find fighters by name.

Input Schema

{
  "type": "object",
  "properties": {
    "fighter_id": {
      "type": "integer",
      "description": "fighter id from a bout: the record, recent fights, profile and history"
    },
    "name": {
      "type": "string",
      "description": "part of a fighter's name, to find the id"
    }
  },
  "additionalProperties": false
}
🟢get_motorsport_event(event_id, session_id)

One motorsport weekend with its sessions (practice, qualifying, sprint, race; start in UTC, status), or with session_id one session's results: position, driver, team, time or gap, laps, grid, pit stops, DNF/DNS/DSQ.

Input Schema

{
  "type": "object",
  "properties": {
    "event_id": {
      "type": "integer",
      "description": "event id from get_motorsport_events: the weekend with its sessions"
    },
    "session_id": {
      "type": "integer",
      "description": "session id from an event: that session's results instead"
    }
  },
  "additionalProperties": false
}
🟢get_motorsport_events(series, season, date_from, date_to, status, ...)

Motorsport race weekends (Formula 1, MotoGP, Moto2, Moto3, Formula 2, Formula E, IndyCar, NASCAR) by start date: round, name, country, circuit, dates, status and the race winner once known. With overview: every series with its season, next and last event.

Input Schema

{
  "type": "object",
  "properties": {
    "series": {
      "type": "string",
      "description": "f1, motogp, moto2, moto3, f2, formula-e, indycar, nascar-cup, nascar-xfinity or nascar-trucks"
    },
    "season": {
      "type": "integer",
      "description": "season year"
    },
    "date_from": {
      "type": "string",
      "description": "events ending on or after YYYY-MM-DD"
    },
    "date_to": {
      "type": "string",
      "description": "events starting on or before YYYY-MM-DD"
    },
    "status": {
      "type": "string",
      "description": "scheduled, live, finished or cancelled"
    },
    "limit": {
      "type": "integer",
      "description": "max events (default 20, max 100)"
    },
    "offset": {
      "type": "integer",
      "description": "skip this many events (paging)"
    },
    "overview": {
      "type": "boolean",
      "description": "the series list instead: season, next and last event of each"
    }
  },
  "additionalProperties": false
}
🟢get_player(sport, player_id, vs, lang)

Player profile: position, nationality, birth date, height, team, career and photo link where known; cricket and tennis also Wikidata values (birth date, height, batting or playing hand, bowling style, role, country; cite the attribution); tennis also the ATP/WTA rank, or with vs the head-to-head of two players.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (see list_sports)"
    },
    "player_id": {
      "type": "integer",
      "description": "player id from a squad or lineup"
    },
    "vs": {
      "type": "integer",
      "description": "tennis: another player's id, for the head-to-head of the two instead"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "sport",
    "player_id"
  ],
  "additionalProperties": false
}
🟢get_race(race_id)

One horse race card: runners with number, horse, jockey, trainer, weight, rating, recent form where the feed has it, best current price and morning line; once settled the result (positions, starting prices, finish codes such as PU or F) and results_final.

Input Schema

{
  "type": "object",
  "properties": {
    "race_id": {
      "type": "integer",
      "description": "race id from get_races"
    }
  },
  "required": [
    "race_id"
  ],
  "additionalProperties": false
}
🟢get_race_briefing(race_id, format, lang)

Ready briefing for one horse race from our results: field size, distance, going, class, the favourite, each runner's form figures and last run, jockey and trainer strike rates over the last 30 days; after the race the winner, starting price and whether the favourite won. Each statement also as a sentence (lang de, es, it, fr). Facts only.

Input Schema

{
  "type": "object",
  "properties": {
    "race_id": {
      "type": "integer",
      "description": "race id from get_races"
    },
    "format": {
      "type": "string",
      "description": "md for a short Markdown text instead of JSON"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "race_id"
  ],
  "additionalProperties": false
}
🟢get_races(date, region, meeting_id, limit, offset)

Horse races of a day (default today, UTC), optionally of one region or racecourse: off time, course, race name, distance, going, class, number of runners, status (NS, live, result_pending, FT).

Input Schema

{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "description": "UTC race day YYYY-MM-DD (default today)"
    },
    "region": {
      "type": "string",
      "description": "usa, uk, australia, hk, singapore, dubai, sa or france"
    },
    "meeting_id": {
      "type": "integer",
      "description": "racecourse (meeting) id from a race"
    },
    "limit": {
      "type": "integer",
      "description": "max races (default 20, max 100)"
    },
    "offset": {
      "type": "integer",
      "description": "skip this many races (paging)"
    }
  },
  "additionalProperties": false
}
🟢get_runner_form(kind, id, limit)

Last runs of a horse, jockey or trainer in our stored results, latest first: date, course, distance, going, position and field size, starting price; plus wins, top-three finishes and strike rate over those runs.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "description": "horse (default), jockey or trainer"
    },
    "id": {
      "type": "integer",
      "description": "horse, jockey or trainer id from find_horses or a race card"
    },
    "limit": {
      "type": "integer",
      "description": "runs (default 10, max 50)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢get_standings(sport, league_id, tour, top_scorers, series, ...)

League table of a league; for soccer also the top scorers, most assists or most cards (top_scorers) and past seasons' final tables (season); for tennis the ATP or WTA singles ranking (tour); for motorsport a series' drivers or teams championship (series, kind); for golf the season money list with wins (tour); for cricket the points table of a series or league.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (see list_sports)"
    },
    "league_id": {
      "type": "integer",
      "description": "league id from find_leagues (not for tennis)"
    },
    "tour": {
      "type": "string",
      "description": "tennis: atp or wta (the singles ranking, top 100); golf: pga (default) or lpga"
    },
    "top_scorers": {
      "type": "string",
      "description": "soccer: goals, assists or cards for the league's top scorers, most assists or most cards instead of the table"
    },
    "series": {
      "type": "string",
      "description": "motorsport: f1, motogp, moto2, moto3, f2, formula-e, indycar, nascar-cup, nascar-xfinity or nascar-trucks"
    },
    "kind": {
      "type": "string",
      "description": "motorsport: drivers (default) or teams"
    },
    "season": {
      "type": "string",
      "description": "soccer: a past season's final table (2016-17, or 2016 for Brazil and MLS; the last 10 seasons of the top leagues, from Wikipedia: cite the attribution) instead of the current table"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "sport"
  ],
  "additionalProperties": false
}
🟢get_team(sport, team_id, squad, injuries, season_stats, ...)

Team profile (country, founded, venue, leagues, logo link; soccer: the current head coach from Wikidata with appointment date and won/drawn/lost since; when record_complete is false our match history starts later (record_from), so say the record is from that date only; cite the attribution), optionally with its squad; or, for an MLB, NBA, WNBA, NHL or NFL team, its current injury report (injuries) or season statistics (season_stats).

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (see list_sports; not tennis)"
    },
    "team_id": {
      "type": "integer",
      "description": "team id from find_teams or a match"
    },
    "squad": {
      "type": "boolean",
      "description": "also return the squad (players)"
    },
    "injuries": {
      "type": "boolean",
      "description": "return the team's injury report instead (MLB, NBA, WNBA, NHL, NFL; needs the injuries feature)"
    },
    "season_stats": {
      "type": "boolean",
      "description": "return the team's current season statistics instead (MLB, NBA, WNBA, NHL, NFL)"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "sport",
    "team_id"
  ],
  "additionalProperties": false
}
🟢get_team_briefing(sport, team_id, format, lang)

Ready briefing for one team (any sport; for tennis a player): form, streaks (overall, home, away), home and away record, table place and gaps, last and next match, injuries (soccer); each also as a sentence (lang de, es, it, fr). Facts only.

Input Schema

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "description": "sport (default soccer); for tennis the id is a player id"
    },
    "team_id": {
      "type": "integer",
      "description": "team id from find_teams or a match (tennis: player id)"
    },
    "format": {
      "type": "string",
      "description": "md for a short Markdown text instead of JSON"
    },
    "lang": {
      "type": "string",
      "description": "language of team, league and country names: de, es, it or fr (default English)"
    }
  },
  "required": [
    "team_id"
  ],
  "additionalProperties": false
}
🟢list_sports

Sports available, with whether each has upcoming matches. Free. Horse racing has its own tools (get_races, get_race, get_race_briefing, find_horses, get_runner_form), motorsport too (get_motorsport_events, get_motorsport_event; get_standings with sport motorsport), MMA (get_mma_events, get_mma_event, get_mma_fighter) and golf (get_golf_tournaments, get_golf_leaderboard, get_golf_player; get_standings with sport golf).

Input Schema

{
  "type": "object",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded26 tools