# SportStatsAPI (remote · mcp.sportstatsapi.com)

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

- Trust score: 75/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `mcp.sportstatsapi.com`: 75/100 (this document), [markdown](https://verifymcp.io/servers/com-sportstatsapi-sports-data/mcp.md), [page](https://verifymcp.io/servers/com-sportstatsapi-sports-data/mcp)

## Channel facts

- Endpoint: `https://mcp.sportstatsapi.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.36.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 74/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 58/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 9092 tokens (~252/item across 36 items; 36 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 50/100
  - Stability check failed: schema churn in the 28 days we've observed: 0 tool removals, 11 breaking changes, 0 auth/transport breaks, 23 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 36 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 37 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the SportStatsAPI MCP server?

SportStatsAPI is a hosted endpoint at https://mcp.sportstatsapi.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-sportstatsapi-sports-data 'https://mcp.sportstatsapi.com/mcp'
```

### Cursor

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

### VS Code

```json
{
  "servers": {
    "com-sportstatsapi-sports-data": {
      "type": "http",
      "url": "https://mcp.sportstatsapi.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-sportstatsapi-sports-data]
url = "https://mcp.sportstatsapi.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-sportstatsapi-sports-data": {
      "type": "remote",
      "url": "https://mcp.sportstatsapi.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-sportstatsapi-sports-data --url 'https://mcp.sportstatsapi.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-sportstatsapi-sports-data:
    url: "https://mcp.sportstatsapi.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-sportstatsapi-sports-data": {
      "Transport": "http",
      "Url": "https://mcp.sportstatsapi.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-sportstatsapi-sports-data -t streamable-http -u 'https://mcp.sportstatsapi.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-sportstatsapi-sports-data": {
      "type": "http",
      "url": "https://mcp.sportstatsapi.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47.

### 2026-11-03 (score 74, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [cosmetic] “get_match_details” reworded the description of “part”

### 2026-11-02 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40.

### 2026-11-01 (score 73, 0)

- [security] Tool “get_match” rewrote its description, which is the text the model reads

### 2026-10-31 (score 73, +1)

- [security] The server rewrote its instructions, which are the text every model session reads

### 2026-10-30 (score 72, 0)

- [cosmetic] “get_match_details” reworded the description of “part”
- [cosmetic] “get_summary” reworded the description of “sport”

### 2026-10-29 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27.

### 2026-10-27 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20.

## MCP tools (36)

### `find_horses` (~74 tokens)

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

Input parameters:

- `limit` (integer): max results per kind (default 20, max 50)
- `name` (string, required): part of a horse, jockey or trainer name (2-64 characters)

### `find_leagues` (~153 tokens)

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 parameters:

- `future` (boolean): only leagues with upcoming matches
- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `query` (string): text the league or country name must contain, e.g. 'Premier League' or 'Germany'
- `sport` (string, required): sport: soccer, basketball, baseball, hockey, tennis, handball, volleyball, american-football, cricket, rugby (union), rugby-league, esports or table-tennis

### `find_teams` (~113 tokens)

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

Input parameters:

- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `league_id` (integer|string): only teams of this league
- `limit` (integer): max teams (default 20, max 100)
- `name` (string, required): part of the team name, e.g. 'Bayern'
- `sport` (string, required): sport (see list_sports)

### `get_boxing_event` (~100 tokens)

One boxing event with every bout from the main event down: weight class, world titles at stake (WBA, WBC, IBF, WBO, Ring), fighters, result, method (KO, TKO, UD, SD, MD, RTD, DQ, TD, NC, draw), round, time, rounds scheduled.

Input parameters:

- `event_id` (integer|string, required): event code (or number) from get_boxing_events

### `get_boxing_events` (~172 tokens)

Boxing events of the last and the current year from Wikipedia: fight cards and world title fights, with date, venue, city, status and the main event's winner (cite the attribution). The current world champions: get_standings with sport boxing.

Input parameters:

- `date_from` (string): YYYY-MM-DD
- `date_to` (string): YYYY-MM-DD
- `kind` (string): card (a whole card) or title_fight (a world title fight from a champion's record)
- `limit` (integer): max events (default 20, max 100)
- `offset` (integer): skip this many events (paging)
- `season` (string): year (default: the last and the current year)
- `status` (string): scheduled, live, finished or no_results

### `get_boxing_fighter` (~90 tokens)

A boxer (fighter_id): birth date, country, height, reach, stance and professional record (Wikipedia/Wikidata), world titles held now, latest bouts; or find boxers by name.

Input parameters:

- `fighter_id` (integer|string): fighter code (or number) from a bout or the champions
- `name` (string): part of a boxer's name, to find the id

### `get_bracket` (~298 tokens)

A knock-out bracket: rounds in playing order, ties with their legs, aggregate (soccer: goals after extra time), the side that advanced and how (score, aggregate, extra_time, penalties, walkover, next_round), and from: the tie a side won to get there. Soccer cups and the European knock-out phases (league_id, season); tennis draws (league_id: the category id, season: a year), rebuilt from who beat whom (qualifying first; seeds, entry types and draw order where a Wikipedia draw is linked); snooker and darts tournaments (tournament_id). Rounds we cannot prove from stored matches have status missing with a reason and no ties; pairings are never guessed (snooker and darts add 'winner of A v B' placeholders only where the draw's tree is proven).

Input parameters:

- `league_id` (integer|string): soccer: the cup's league code (or number), from find_leagues; tennis: the tournament's category id
- `season` (string): soccer: 2025-26, 2025/2026 or 2025 (default: the latest season with knock-out rounds); tennis: a year (default: the latest edition)
- `sport` (string, required): soccer, tennis, snooker or darts
- `tournament_id` (integer|string): snooker or darts: tournament code (or number) from get_snooker_darts_tournaments

### `get_facts` (~188 tokens)

Ready fact sentences for a match or team, most important first: form, streaks, records, head-to-head, table and stakes; after a match the story and the runs it ended. Each fact: type, importance, text (lang de, es, it or fr). summary: the top ones as one paragraph. Facts only, no predictions. The same facts as get_match_briefing and get_team_briefing without the data blocks. Insights feature.

Input parameters:

- `id` (integer|string, required): match or team code (or number)
- `kind` (string, required): match or team (tennis: a player); a league: get_league_facts
- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `sport` (string): sport (default soccer; not cricket or table-tennis)

### `get_golf_leaderboard` (~111 tokens)

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 parameters:

- `holes` (boolean): also each player's hole-by-hole scores (large)
- `tournament_id` (integer|string, required): tournament code (or number) from get_golf_tournaments

### `get_golf_player` (~116 tokens)

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 parameters:

- `name` (string): part of a golfer's name, to find the id
- `player_id` (integer|string): player code (or number) from a leaderboard: profile and the season's results
- `season` (integer): season of the results (default: the latest)

### `get_golf_tournaments` (~169 tokens)

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 parameters:

- `date_from` (string): tournaments ending on or after YYYY-MM-DD
- `date_to` (string): tournaments starting on or before YYYY-MM-DD
- `limit` (integer): max tournaments (default 20, max 100)
- `offset` (integer): skip this many tournaments (paging)
- `season` (integer): season (year)
- `status` (string): scheduled, live, finished, no_results or incomplete
- `tour` (string): pga or lpga (LPGA: schedule only, no leaderboards)

### `get_h2h` (~227 tokens)

Head-to-head of two teams (soccer by default; any team sport with results: basketball, baseball, hockey, handball, volleyball, American football) over every meeting in our data (all competitions, no friendlies): won, drawn and lost from team_a's side (home_team_* fields = team_a), goals (the sport's score: points, runs, sets won), each side's biggest win, the last 5 meetings, with sentences (lang de, es, it, fr). history_from: our data starts there, so say 'since' that date. Tennis: get_player with vs. Facts only. Insights feature.

Input parameters:

- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `sport` (string): team sport (default soccer; see list_sports; tennis: get_player with vs)
- `team_a` (integer|string, required): team code (or number) from find_teams or a match
- `team_b` (integer|string, required): the other team's id

### `get_league_facts` (~175 tokens)

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. Insights feature.

Input parameters:

- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `league_id` (integer|string): only this league (from find_leagues)
- `min_importance` (integer): only facts of at least this importance, 0-100 (default 50)
- `since` (string): only matches updated after this RFC 3339 time
- `sport` (string): sport (default soccer; see list_sports)

### `get_live_matches` (~82 tokens)

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

Input parameters:

- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `league_id` (integer|string): only this league
- `sport` (string, required): sport (see list_sports)

### `get_match` (~330 tokens)

One match: teams, score, status, events (goals, cards...), venue, referee; where known TV channels by country and, after the match, a highlights video link. Soccer adds timeline: the events normalised (minute, extra_minute, team home/away, kind goal, penalty, own_goal, missed_penalty, yellow, second_yellow, red, substitution or var, player, assist, player_in/player_out, detail: card reason or VAR outcome; minute null = not known; no headers or xG per shot: not in our data) and referee_stats: the referee's season in the league (games, cards and penalties per game, with league_matches_with_referee of league_matches_played). Matches with a page on our website (soccer, basketball, hockey, tennis, volleyball, handball, baseball, American football, cricket): summary, ready paragraphs on the match from our data (table places, form, meetings, season; cricket: the result, the innings, the best performances, before the start form and meetings in the format), with key_facts before kick-off and what_it_means after the result, summary_as_of when written; only until kick-off and once finished, English only (no lang). Quote them as facts; never add predictions.

Input parameters:

- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `match_id` (integer|string, required): match code (or number) from get_matches
- `sport` (string, required): sport (see list_sports)

### `get_match_briefing` (~318 tokens)

Ready briefing for one match (any sport but cricket): form, current streaks, home and away records, head-to-head, table position and gaps, stakes, schedule; for soccer also injuries, lineups, players one league appearance or goal short of a club milestone (milestone_next) and, after the match, the story (comeback, late winner, red cards), runs it ended (streak_ended_*: 'first defeat after 11 unbeaten') and long waits it ended that our data can date (first_since_*: first win at the opponent's ground, first clean sheet, top of the table for the first time since a day; history_from: nothing is claimed before it). The head-to-head block has goals and each side's biggest win. Soccer before kickoff: players suspended (suspended_out) or one booking from a ban, by the league's card rules. Each statement also as a sentence (lang de, es, it, fr), and summary: the most important sentences as one paragraph in that language. Facts only, no predictions. Insights feature. Prefer this for 'tell me about this match'.

Input parameters:

- `format` (string): md for a short Markdown text instead of JSON
- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `match_id` (integer|string, required): match code (or number) from get_matches
- `sport` (string): sport (default soccer; see list_sports)

### `get_match_details` (~291 tokens)

Detail of one match: statistics or box score, lineups, injuries (soccer: per player type, expected_return and matches_missed; null = not known, never guess), play-by-play, a cricket scorecard (batting, bowling, fall of wickets), rugby scoring events, esports maps and games with player lines, or the singles and doubles of a table tennis team match with set scores.

Input parameters:

- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `match_id` (integer|string, required): match code (or number) from get_matches
- `part` (string, required): stats, lineups or injuries (soccer); stats (box score) or play_by_play (basketball, baseball, hockey, tennis, american-football, as the source sends them); box_score or plays (soccer, basketball, hoc…
- `sport` (string, required): sport (see list_sports)

### `get_matches` (~376 tokens)

Matches (fixtures and results) by day or date range, optionally of one league, or one team's matches in every competition (team_id; without status or dates its latest results, then live, then next matches; with status scheduled only the next ones, with finished only the latest results). Without a date or team: today (UTC). Where known: TV channels by country (where to watch) and a highlights video link.

Input parameters:

- `date` (string): day YYYY-MM-DD (UTC); without date, date_from, date_to, team_id or league_id: today only (UTC)
- `date_from` (string): first day YYYY-MM-DD of a range
- `date_to` (string): last day YYYY-MM-DD of a range
- `game` (string): esports: cs2, dota2, lol or valorant
- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `league_id` (integer|string): league code (or number) from find_leagues
- `league_name` (string): exact league name, picks one division where several share a league id
- `limit` (integer): max matches (default 20, max 100)
- `offset` (integer): skip this many matches (paging)
- `sport` (string, required): sport (see list_sports)
- `status` (string): scheduled, finished or live, or a status as the API reports it, e.g. FT or NS; with team_id finished lists the latest first; with team_id and no status or date: latest results then next matches
- `team_id` (integer|string): only this team's matches in every competition (team code (or number) from find_teams; not tennis); without a date all of them

### `get_mma_event` (~95 tokens)

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 parameters:

- `bout_id` (integer|string): bout code (or number) from a card: that fight with its stats instead
- `event_id` (integer|string): event code (or number) from get_mma_events: the full card

### `get_mma_events` (~109 tokens)

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

Input parameters:

- `date_from` (string): events on or after YYYY-MM-DD
- `date_to` (string): events on or before YYYY-MM-DD
- `limit` (integer): max events (default 20, max 100)
- `offset` (integer): skip this many events (paging)
- `status` (string): scheduled, live, finished or cancelled

### `get_mma_fighter` (~147 tokens)

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 parameters:

- `fighter_id` (integer|string): fighter code (or number) from a bout: the record, recent fights, profile and history
- `name` (string): part of a fighter's name, to find the id

### `get_player` (~665 tokens)

Player profile with summary: ready paragraphs from our data (club, season numbers, form; English, no lang; summary_as_of; absent when not fresh or for a player under 18); 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 and season_stats: the season record (current year, or season) from our singles main-draw matches since 2026-04-01 (won, lost, per surface and level, retirements counted, walkovers not, finals, titles), or with vs the head-to-head of two players; soccer also bio: known_as, full_name, short_name, birth_date, age, nationality, position, number, club, market_value_eur (null = not in our data; there are no contract dates), and season_stats: the current season (or season) in every competition we hold statistics for, total and per competition (apps, minutes, goals, assists, cards, shots, rating; null = not in our data; matches_with_stats of team_matches_played says how complete it is); with matches, last_matches: the player's last N matches (date, league, opponent, venue, score, result, started, minutes, goals, assists, cards, shots, rating, goalkeepers conceded and clean sheet; null = not in our data; matches without statistics or that he missed are not listed); NBA, MLB and NFL players also season_stats: the season line per team from the data provider's team feeds (stats by category as the feed names them; season null for the NBA, whose feed names none, as_of when read); WNBA, NCAA and hockey (NHL, Liiga, SHL, DEL) players the same, summed from our box scores; with matches, US-sport players (NBA, WNBA, NCAA, MLB, NFL, NHL) last_matches: the last N games from our box scores (date, league, opponent, venue, score, result, stats by category as in season_stats but per game; null = not in the box); handball players (Swedish and Austrian lower leagues) the same…

Input parameters:

- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `matches` (integer): soccer, NBA, MLB, NFL, NHL (and WNBA, NCAA): also last_matches, the player's last N matches or games (1-50) with his line in each
- `player_id` (integer|string, required): player code (or number) from a squad or lineup
- `season` (string): soccer: season_stats of this season (2025-26, or 2025) instead of the current one; tennis: a year (2026)
- `sport` (string, required): sport (see list_sports)
- `vs` (integer|string): tennis: another player's id, for the head-to-head of the two instead

### `get_race` (~84 tokens)

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 parameters:

- `race_id` (integer|string, required): race code (or number) from get_races

### `get_race_briefing` (~149 tokens)

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 parameters:

- `format` (string): md for a short Markdown text instead of JSON
- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `race_id` (integer|string, required): race code (or number) from get_races

### `get_races` (~158 tokens)

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, unlisted).

Input parameters:

- `date` (string): UTC race day YYYY-MM-DD (default today)
- `limit` (integer): max races (default 20, max 100)
- `meeting_id` (integer|string): racecourse (meeting) code (or number) from a race
- `offset` (integer): skip this many races (paging)
- `region` (string): usa, uk (Great Britain), ie (Ireland), australia, hk, singapore, dubai, sa or france

### `get_racing_stats` (~128 tokens)

Stats from our stored results. kind jockey or trainer: runs, wins, places and strike rate over the last 14 and 30 days, overall and per region. kind course (last 365 days): favourite win rate, top jockeys and trainers by wins, draw by distance band in thirds of the stalls with sample sizes.

Input parameters:

- `id` (integer|string, required): jockey or trainer code (or number) from find_horses or a race card; for a course the racecourse (meeting) code of a race
- `kind` (string, required): jockey, trainer or course

### `get_runner_form` (~112 tokens)

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 parameters:

- `id` (integer|string, required): horse, jockey or trainer code (or number) from find_horses or a race card
- `kind` (string): horse (default), jockey or trainer
- `limit` (integer): runs (default 10, max 50)

### `get_snooker_darts_player` (~99 tokens)

A snooker or darts player (player_id): country, world ranking, birth date (Wikidata), titles and finals in the stored seasons, latest matches; or find players by name.

Input parameters:

- `name` (string): part of a player's name, to find the id
- `player_id` (integer|string): player code (or number) from a draw or ranking
- `sport` (string, required): snooker or darts

### `get_snooker_darts_tournament` (~98 tokens)

A snooker or darts tournament with its whole draw (qualifying first, the final last): round, players, seeds, frames/legs/sets won, best of, three-dart averages where listed; snooker also the century breaks per player.

Input parameters:

- `sport` (string, required): snooker or darts
- `tournament_id` (integer|string, required): tournament code (or number) from get_snooker_darts_tournaments

### `get_snooker_darts_tournaments` (~198 tokens)

Snooker (World Snooker Tour ranking and invitational events) or darts (PDC majors, World Series, Players Championships, European Tour) tournaments of the current and last season from Wikipedia: dates, venue, prize fund, winner, final score. The world ranking: get_standings with sport snooker or darts.

Input parameters:

- `kind` (string): snooker: ranking, non_ranking; darts: ranked, non_ranked, world_series, players_championship, european_tour
- `limit` (integer): max tournaments (default 20, max 100)
- `offset` (integer): skip this many tournaments (paging)
- `season` (string): snooker 2026-27, darts 2026 (default: the current and the last season)
- `sport` (string, required): snooker or darts
- `status` (string): scheduled, live, finished or no_results

### `get_standings` (~1426 tokens)

League table of a league, with summary: ready paragraphs on the league from our data (the race at the top and bottom, form side, scoring, top scorer, champions; English; summary_as_of; absent when not fresh; with lang de, es, it or fr in sold sports and a plan with Insights: the most important facts of the league's matches of the last 14 days in that language, from our fact templates only, else English; summary_lang says which); for soccer also the top scorers, most assists or most cards (top_scorers), every player's season statistics sorted by goals, assists, minutes, rating, xg or apps (player_stats), every team's season statistics with ranks such as the best defence (team_stats), the referees with cards and penalties per game (referees), the roll of honour with champions and runners-up per season and their sources (champions), home attendance per team and league (attendance), the xG table with expected points against real points (xg_table), players banned or one booking away from a ban (suspensions) and past seasons' final tables (season); for every sport with results Elo-style team ratings of a league or the whole sport (ratings); for tennis the ATP or WTA singles ranking (tour); for golf the season money list with wins (tour); for snooker and darts the world ranking (WPBSA, PDC Order of Merit); for boxing the current world champions per weight class and body; for cricket the points table of a series or league.

Input parameters:

- `attendance` (boolean): soccer: the league season's home attendance instead of the table: league average and record, per team average, record and rank; matches_with_attendance of matches_played says how complete (often low:…
- `champions` (boolean): soccer: the league's (or cup's) roll of honour instead of the table: champion and runner_up per season, each with its sources (wikipedia: the final tables of the last 10 seasons, top leagues; provide…
- `history` (boolean): the league's table round by round instead of the table (position charts; sports with the data provider league tables, not cricket): soccer from our results for the current and previous season plus st…
- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `league_id` (integer|string): league code (or number) from find_leagues (not for tennis)
- `player_stats` (string): soccer: goals, assists, minutes, rating, xg or apps for every player's season statistics in the league sorted by it, instead of the table (computed from our matches; matches_with_stats of team_matche…
- `ratings` (boolean): any sport with results: Elo-style team ratings (tennis: players) instead of the table, highest first, of the league (league_id) or of the whole sport without it; matches_rated and rated_from say how…
- `referees` (boolean): soccer: the league's referees instead of the table: games, yellow and red cards and penalties per game (computed from our match data, top leagues; league_matches_with_referee of league_matches_played…
- `season` (string): 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; tennis: a year (2…
- `sport` (string, required): sport (see list_sports)
- `suspensions` (boolean): soccer: the league's suspension watch instead of the table: players banned now (status suspended, matches_left) and one booking away from a ban (next_threshold, next_ban), from the league's official…
- `team_id` (integer|string): with history: only this team
- `team_stats` (string): soccer: ppg, goals_for, goals_against (best defence), clean_sheets, failed_to_score, xg_for, xg_against or attendance for every team's season statistics (home/away records, xG, attendance, ranks per…
- `top_scorers` (string): soccer: goals, assists or cards for the league's top scorers, most assists or most cards instead of the table
- `tour` (string): tennis: atp or wta (the singles ranking, top 100); golf: pga (default) or lpga
- `xg_table` (string): soccer: xpts, xg_diff or points_minus_xpts for the league's xG table instead of the table: xG for and against, expected points (xpts, independent Poisson goals from both sides' xG) against real point…

### `get_summary` (~218 tokens)

Ready summary of a match, team, league or player: paragraphs written from our data only (table places, form, meetings, season), with key_facts (a match before kick-off) or what_it_means (after the result), summary_lang and summary_as_of. English; lang de, es, it or fr gives a team or league summary in that language with the Insights feature. summary null: none now (a match in play, a page not built lately, a player under 18). Quote as facts; never add predictions. Needs only the sport in the plan.

Input parameters:

- `id` (integer|string, required): code (or number) of the match, team, league or player
- `kind` (string, required): match, team, league or player
- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `sport` (string, required): sport: soccer, basketball, baseball, hockey, tennis, handball, volleyball, american-football or cricket

### `get_team` (~745 tokens)

Team profile: country, founded, venue, leagues, logo link; summary (soccer, NBA, NHL, MLB, NFL teams): ready paragraphs from our data (table place and gaps, record, form, home and away, squad leaders, next opponent; English; with lang de, es, it or fr in sold sports and a plan with Insights: the team briefing's most important facts in that language, from our fact templates only, else English; summary_lang says which; not with squad, injuries or season_stats of a US team; summary_as_of; absent when not fresh); rating: its Elo-style rating (rank of of in its league, matches_rated, rated_from, the last 10 changes); next: its next 5 matches in every competition (more: get_matches with team_id; fixture congestion: get_team_briefing). Soccer also coach: the current head coach from Wikidata with appointment date and won/drawn/lost since (record_complete false: our matches start later, at record_from, so say the record covers only that; cite the attribution), and squad_value_eur: the current squad's summed market value over players_with_value of squad_players. Options: squad (the players); soccer: coach (adds previous_coach and previous_club), facts (runs, first since, milestones; Insights feature), season_stats (the current season per league: home/away records, goals, clean sheets, biggest win and defeat, xG over matches_with_xg, home attendance over matches_with_attendance, the team's rank per metric), transfers (the latest 20), honours (titles and runners-up with sources), injuries (players out for coming matches: type, expected_return null = not known, never guess one; matches_missed a lower bound when matches_missed_complete is false). For an MLB, NBA, WNBA, NHL or NFL team, injuries returns its current injury report and season_stats its season statistics instead of the profile.

Input parameters:

- `coach` (boolean): soccer: also return coach: the head coach with appointment date, record since, previous coach and previous club
- `facts` (boolean): soccer: also return facts: current runs, runs its last match ended, first since, record, table, next match stakes, player milestones (needs the insights feature)
- `honours` (boolean): soccer: also return honours: titles and runners-up per competition, each with its source (provider: the profile's trophy list, every competition, can lag the latest season; wikipedia: league tables o…
- `injuries` (boolean): return the team's injury report instead (MLB, NBA, WNBA, NHL, NFL); soccer: added as injuries (players out for its coming matches with type, expected_return, matches_missed); needs the injuries featu…
- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `season_stats` (boolean): return the team's current season statistics instead (MLB, NBA, WNBA, NHL, NFL); soccer: added as season_stats (per league, computed from our matches)
- `sport` (string, required): sport (see list_sports; not tennis)
- `squad` (boolean): also return the squad (players)
- `team_id` (integer|string, required): team code (or number) from find_teams or a match
- `transfers` (boolean): soccer: also return the team's latest 20 transfers in and out (more: get_transfers)

### `get_team_briefing` (~280 tokens)

Ready briefing for one team (any sport but cricket; for tennis a player): form, streaks (overall, home, away; streak_season_best: the longest of the season), home and away record, table place and gaps, last and next match, congestion (games_last_7d, games_last_14d in every competition, rest_days from the last match to the next), injuries (soccer); what its last match ended (runs; soccer: first_since_* waits); soccer player milestones for the club (debut, first goal, 50/100/150 league appearances, 25/50/75 league goals, milestone_next before the next match; only when our statistics hold the whole season); each also as a sentence (lang de, es, it, fr), and summary: the most important ones as one paragraph. Facts only. Insights feature.

Input parameters:

- `format` (string): md for a short Markdown text instead of JSON
- `lang` (string): language of team, league and country names: de, es, it or fr (default English)
- `sport` (string): sport (default soccer); for tennis the id is a player id
- `team_id` (integer|string, required): team code (or number) from find_teams or a match (tennis: player id)

### `get_transfers` (~311 tokens)

Soccer transfers from player profiles: player, from and to team, date, season, window (summer, winter, other by the date), type (transfer, loan, loan_return, free, promoted, swap, unknown) and fee_eur where the feed gives an amount (often null: say the fee is not known, never 0). Filter by league (moves in or out of its current teams), team (direction in or out), season and window; sort by fee for the biggest moves. Moves dated after today (mostly planned loan ends) are left out; planned true returns only those. Profiles are re-read every 30 days, so the latest moves can be missing.

Input parameters:

- `direction` (string): with team_id: in or out (default both)
- `league_id` (integer|string): moves in or out of this league's current teams
- `limit` (integer): maximum results (default 20, max 100)
- `planned` (boolean): true: only agreed moves dated after today (mostly loan ends); default: moves up to today
- `season` (string): 2026-27 (1 June to 31 May) or 2026 (calendar year)
- `sort` (string): date (default, latest first) or fee (highest first)
- `team_id` (integer|string): moves of this team
- `window` (string): summer (1 June-5 September), winter (1 January-3 February) or other

### `list_sports` (~173 tokens)

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, get_racing_stats), MMA (get_mma_events, get_mma_event, get_mma_fighter), golf (get_golf_tournaments, get_golf_leaderboard, get_golf_player; get_standings with sport golf), snooker and darts (get_snooker_darts_tournaments, get_snooker_darts_tournament, get_snooker_darts_player; get_standings with sport snooker or darts), boxing (get_boxing_events, get_boxing_event, get_boxing_fighter; get_standings with sport boxing for the current world champions).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-sportstatsapi-sports-data/mcp#diagnostics

## Score history

- 2026-11-05: 75
- 2026-11-04: 75
- 2026-11-03: 74
- 2026-11-02: 74
- 2026-11-01: 73
- 2026-10-31: 73
- 2026-10-30: 72
- 2026-10-29: 72
- 2026-10-28: 71
- 2026-10-27: 71
- 2026-10-26: 70
- 2026-10-25: 70
- 2026-10-24: 70
- 2026-10-23: 69
- 2026-10-22: 69
- 2026-10-21: 68
- 2026-10-20: 68
- 2026-10-19: 68
- 2026-10-18: 68
- 2026-10-17: 68
- 2026-10-16: 68
- 2026-10-15: 72
- 2026-10-14: 71
- 2026-10-13: 71
- 2026-10-12: 70
- 2026-10-10: 71
- 2026-10-09: 71

## Common questions

### What is the SportStatsAPI MCP server?

SportStatsAPI is an MCP server listed in the public MCP registry as com.sportstatsapi/sports-data. Fixtures, live scores, results, tables and match facts for 1,881 competitions in 8 sports. This page covers its hosted endpoint (https://mcp.sportstatsapi.com/mcp).

### Is the SportStatsAPI MCP server safe to use?

SportStatsAPI scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the SportStatsAPI MCP server expose?

SportStatsAPI exposes 36 tools: find_horses, find_leagues, find_teams, get_boxing_event, get_boxing_events, and 31 more. Their descriptions and schemas cost roughly 8,578 tokens of context every time the server is loaded.

### Does the SportStatsAPI MCP server require authentication?

No. We connected to SportStatsAPI without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the SportStatsAPI MCP server still maintained?

SportStatsAPI is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.sportstatsapi.com/mcp
- Website: https://sportstatsapi.com/ai-agents/
- Changelog RSS feed: https://verifymcp.io/servers/com-sportstatsapi-sports-data/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-sportstatsapi-sports-data/mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-sportstatsapi-sports-data/mcp
