Skip to content

MCP servers › com.sportstatsapi › sports-data

MCP server · registry snapshot 2026-10-23 · last tested 2026-10-23

com.sportstatsapi/sports-data

Fixtures, live scores, results, tables and match facts for 1,881 competitions in 8 sports. — the publisher's description

1 of 2 record checks metRead-only · tools listed 2026-10-23Topic: data-and-databases · AI-classifiedPricing: usage-based · AI-classifiedversion 1.36.0streamable HTTP35 tools

Summary

com.sportstatsapi/sports-data is a remote MCP server listed in the official MCP registry at version 1.36.0. On 2026-10-23 ProtocolProbe connected to it in read-only mode and read its inventory: 35 tools, 0 resources and 0 prompts.

Record checks

1 of 2 record checks met · 7 do not apply

  • met: Registry entry is active and says how to run it
  • not met: Source repository link opens
  • not applicable: Repository is not archived
  • not applicable: Code pushed to the repository in the 90 days before our check
  • not applicable: Repository publishes a security policy (SECURITY.md)
  • not applicable: Package names its licence with a standard (SPDX) identifier
  • not applicable: The version the registry lists can be installed and is not withdrawn
  • not applicable: npm package carries build provenance (attestation)
  • not applicable: No known critical or high advisory in the package or its dependencies
  • Not ranked by downloads: a remote server publishes no download figure
  • Not ranked by stars: no public GitHub repository

From public records, not a safety rating. Each check with its reason

Key facts

Runs
remote (hosted by the publisher)
Transport
streamable HTTP
Sign-in
none needed to open a session
Tools
35
Described as changing data
0 of 35 toolsAI-classified
Mainly works on
nothing outside itself: it only answers questionsAI-classified
Topic
data-and-databasesAI-classified
Pricing
usage-basedAI-classified
Last tested
2026-10-23

Add to your client

How fresh this is

Live-tested
yes, a real session (not a text-only review)
Last tested
2026-10-23
Mode
read-only (no tool calls)
Latest version
1.36.0, published 2026-10-07 (registry, as of the 2026-10-23 snapshot)
First listed version
2026-10-07 (earliest version still in the registry; older removed versions would be earlier)
Registry data
snapshot 2026-10-23
Package and repository
checked 2026-10-22
Engine
mcp-runtime-engine@0.1.0 · sdk@1.32.0

Changes since the last refresh

New in the registry: not in the list of 2026-10-04, listed on 2026-10-23 with version 1.36.0 (published 2026-10-07).

Source: the official MCP Registry list on 2026-10-04 and on 2026-10-23.

What it is

What does this server offer?

Observed inventory
35tools
0resources
0prompts

What it mainly works on, as our AI model read its tool descriptions: nothing outside itself: it only answers questions.

None of its 35 tools are described as changing anything.

  • find_horsesreads or searches

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

    Publisher declares: read-only yes · idempotent no · open-world no

    2 inputs, 1 required
    • namestringrequired“part of a horse, jockey or trainer name (2-64 characters)”
    • limitinteger“max results per kind (default 20, max 50)”
  • find_leaguesreads or searches

    “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).”

    Publisher declares: read-only yes · idempotent no · open-world no

    4 inputs, 1 required
    • sportstringrequired“sport: soccer, basketball, baseball, hockey, tennis, handball, volleyball, american-football, cricket, rugby (union), rugby-league, esports or table-tennis”
    • querystring“text the league or country name must contain, e.g.”
    • futureboolean“only leagues with upcoming matches”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • find_teamsreads or searches

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

    Publisher declares: read-only yes · idempotent no · open-world no

    5 inputs, 2 required
    • sportstringrequired“sport (see list_sports)”
    • namestringrequired“part of the team name, e.g.”
    • league_idinteger or string“only teams of this league”
    • limitinteger“max teams (default 20, max 100)”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_boxing_eventreads or searches

    “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…”

    Publisher declares: read-only yes · idempotent no · open-world no

    1 input, 1 required
    • event_idinteger or stringrequired“event code (or number) from get_boxing_events”
  • get_boxing_eventsreads or searches

    “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).”

    Publisher declares: read-only yes · idempotent no · open-world no

    7 inputs
    • seasonstring“year (default: the last and the current year)”
    • statusstring“scheduled, live, finished or no_results”
    • kindstring“card (a whole card) or title_fight (a world title fight from a champion's record)”
    • date_fromstring“YYYY-MM-DD”
    • date_tostring“YYYY-MM-DD”
    • limitinteger“max events (default 20, max 100)”
    • offsetinteger“skip this many events (paging)”
  • get_boxing_fighterreads or searches

    “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.”

    Publisher declares: read-only yes · idempotent no · open-world no

    2 inputs
    • fighter_idinteger or string“fighter code (or number) from a bout or the champions”
    • namestring“part of a boxer's name, to find the id”
  • get_golf_leaderboardreads or searches

    “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 …”

    Publisher declares: read-only yes · idempotent no · open-world no

    2 inputs, 1 required
    • tournament_idinteger or stringrequired“tournament code (or number) from get_golf_tournaments”
    • holesboolean“also each player's hole-by-hole scores (large)”
  • get_golf_playerreads or searches

    “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.”

    Publisher declares: read-only yes · idempotent no · open-world no

    3 inputs
    • player_idinteger or string“player code (or number) from a leaderboard: profile and the season's results”
    • namestring“part of a golfer's name, to find the id”
    • seasoninteger“season of the results (default: the latest)”
  • get_golf_tournamentsreads or searches

    “Golf tournaments of the PGA Tour and LPGA by date: course, location, purse, status and the leader or winner.”

    Publisher declares: read-only yes · idempotent no · open-world no

    7 inputs
    • tourstring“pga or lpga (LPGA: schedule only, no leaderboards)”
    • seasoninteger“season (year)”
    • statusstring“scheduled, live, finished, no_results or incomplete”
    • date_fromstring“tournaments ending on or after YYYY-MM-DD”
    • date_tostring“tournaments starting on or before YYYY-MM-DD”
    • limitinteger“max tournaments (default 20, max 100)”
    • offsetinteger“skip this many tournaments (paging)”
  • get_h2hon 1 other serverreads or searches

    “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 …”

    Publisher declares: read-only yes · idempotent no · open-world no

    4 inputs, 2 required
    • sportstring“team sport (default soccer; see list_sports; tennis: get_player with vs)”
    • team_ainteger or stringrequired“team code (or number) from find_teams or a match”
    • team_binteger or stringrequired“the other team's id”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_league_factsreads or searches

    “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).”

    Publisher declares: read-only yes · idempotent no · open-world no

    5 inputs
    • sportstring“sport (default soccer; see list_sports)”
    • league_idinteger or string“only this league (from find_leagues)”
    • sincestring“only matches updated after this RFC 3339 time”
    • min_importanceinteger“only facts of at least this importance, 0-100 (default 50)”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_live_matcheson 3 other serversreads or searches

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

    Publisher declares: read-only yes · idempotent no · open-world no

    3 inputs, 1 required
    • sportstringrequired“sport (see list_sports)”
    • league_idinteger or string“only this league”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
Show 23 more tools
  • get_matchon 12 other serversreads or searches

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

    Publisher declares: read-only yes · idempotent no · open-world no

    3 inputs, 2 required
    • sportstringrequired“sport (see list_sports)”
    • match_idinteger or stringrequired“match code (or number) from get_matches”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_match_briefingreads or searches

    “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…”

    Publisher declares: read-only yes · idempotent no · open-world no

    4 inputs, 1 required
    • sportstring“sport (default soccer; see list_sports)”
    • match_idinteger or stringrequired“match code (or number) from get_matches”
    • formatstring“md for a short Markdown text instead of JSON”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_match_detailson 1 other serverreads or searches

    “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 (battin…”

    Publisher declares: read-only yes · idempotent no · open-world no

    4 inputs, 3 required
    • sportstringrequired“sport (see list_sports)”
    • match_idinteger or stringrequired“match code (or number) from get_matches”
    • partstringrequired“stats, lineups or injuries (soccer); stats (box score) or play_by_play (basketball, baseball, hockey, tennis, american-football); scorecard (cricket); events (…”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_matcheson 6 other serversreads or searches

    “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 ma…”

    Publisher declares: read-only yes · idempotent no · open-world no

    12 inputs, 1 required
    • sportstringrequired“sport (see list_sports)”
    • datestring“day YYYY-MM-DD (UTC); without date, date_from, date_to, team_id or league_id: today only (UTC)”
    • date_fromstring“first day YYYY-MM-DD of a range”
    • date_tostring“last day YYYY-MM-DD of a range”
    • league_idinteger or string“league code (or number) from find_leagues”
    • league_namestring“exact league name, picks one division where several share a league id”
    • team_idinteger or string“only this team's matches in every competition (team code (or number) from find_teams; not tennis); without a date all of them”
    • statusstring“scheduled, finished or live, or a status as the API reports it, e.g.”
    • limitinteger“max matches (default 20, max 100)”
    • offsetinteger“skip this many matches (paging)”
    • gamestring“esports: cs2, dota2, lol or valorant”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_mma_eventreads or searches

    “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.”

    Publisher declares: read-only yes · idempotent no · open-world no

    2 inputs
    • event_idinteger or string“event code (or number) from get_mma_events: the full card”
    • bout_idinteger or string“bout code (or number) from a card: that fight with its stats instead”
  • get_mma_eventsreads or searches

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

    Publisher declares: read-only yes · idempotent no · open-world no

    5 inputs
    • date_fromstring“events on or after YYYY-MM-DD”
    • date_tostring“events on or before YYYY-MM-DD”
    • statusstring“scheduled, live, finished or cancelled”
    • limitinteger“max events (default 20, max 100)”
    • offsetinteger“skip this many events (paging)”
  • get_mma_fighterreads or searches

    “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 figh…”

    Publisher declares: read-only yes · idempotent no · open-world no

    2 inputs
    • fighter_idinteger or string“fighter code (or number) from a bout: the record, recent fights, profile and history”
    • namestring“part of a fighter's name, to find the id”
  • get_motorsport_eventreads or searches

    “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 sto…”

    Publisher declares: read-only yes · idempotent no · open-world no

    2 inputs
    • event_idinteger or string“event code (or number) from get_motorsport_events: the weekend with its sessions”
    • session_idinteger or string“session code (or number) from an event: that session's results instead”
  • get_motorsport_eventsreads or searches

    “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.”

    Publisher declares: read-only yes · idempotent no · open-world no

    8 inputs
    • seriesstring“f1, motogp, moto2, moto3, f2, formula-e, indycar, nascar-cup, nascar-xfinity or nascar-trucks”
    • seasoninteger“season year”
    • date_fromstring“events ending on or after YYYY-MM-DD”
    • date_tostring“events starting on or before YYYY-MM-DD”
    • statusstring“scheduled, live, finished or cancelled”
    • limitinteger“max events (default 20, max 100)”
    • offsetinteger“skip this many events (paging)”
    • overviewboolean“the series list instead: season, next and last event of each”
  • get_playeron 11 other serversreads or searches

    “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…”

    Publisher declares: read-only yes · idempotent no · open-world no

    5 inputs, 2 required
    • sportstringrequired“sport (see list_sports)”
    • player_idinteger or stringrequired“player code (or number) from a squad or lineup”
    • vsinteger or string“tennis: another player's id, for the head-to-head of the two instead”
    • seasonstring“soccer: season_stats of this season (2025-26, or 2025) instead of the current one”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_raceon 2 other serversreads or searches

    “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 …”

    Publisher declares: read-only yes · idempotent no · open-world no

    1 input, 1 required
    • race_idinteger or stringrequired“race code (or number) from get_races”
  • get_race_briefingreads or searches

    “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; …”

    Publisher declares: read-only yes · idempotent no · open-world no

    3 inputs, 1 required
    • race_idinteger or stringrequired“race code (or number) from get_races”
    • formatstring“md for a short Markdown text instead of JSON”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_racesreads or searches

    “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).”

    Publisher declares: read-only yes · idempotent no · open-world no

    5 inputs
    • datestring“UTC race day YYYY-MM-DD (default today)”
    • regionstring“usa, uk (Great Britain), ie (Ireland), australia, hk, singapore, dubai, sa or france”
    • meeting_idinteger or string“racecourse (meeting) code (or number) from a race”
    • limitinteger“max races (default 20, max 100)”
    • offsetinteger“skip this many races (paging)”
  • get_racing_statsreads or searches

    “Stats from our stored results.”

    Publisher declares: read-only yes · idempotent no · open-world no

    2 inputs, 2 required
    • kindstringrequired“jockey, trainer or course”
    • idinteger or stringrequired“jockey or trainer code (or number) from find_horses or a race card; for a course the racecourse (meeting) code of a race”
  • get_runner_formreads or searches

    “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…”

    Publisher declares: read-only yes · idempotent no · open-world no

    3 inputs, 1 required
    • kindstring“horse (default), jockey or trainer”
    • idinteger or stringrequired“horse, jockey or trainer code (or number) from find_horses or a race card”
    • limitinteger“runs (default 10, max 50)”
  • get_snooker_darts_playerreads or searches

    “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.”

    Publisher declares: read-only yes · idempotent no · open-world no

    3 inputs, 1 required
    • sportstringrequired“snooker or darts”
    • player_idinteger or string“player code (or number) from a draw or ranking”
    • namestring“part of a player's name, to find the id”
  • get_snooker_darts_tournamentreads or searches

    “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 …”

    Publisher declares: read-only yes · idempotent no · open-world no

    2 inputs, 2 required
    • sportstringrequired“snooker or darts”
    • tournament_idinteger or stringrequired“tournament code (or number) from get_snooker_darts_tournaments”
  • get_snooker_darts_tournamentsreads or searches

    “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…”

    Publisher declares: read-only yes · idempotent no · open-world no

    6 inputs, 1 required
    • sportstringrequired“snooker or darts”
    • seasonstring“snooker 2026-27, darts 2026 (default: the current and the last season)”
    • statusstring“scheduled, live, finished or no_results”
    • kindstring“snooker: ranking, non_ranking; darts: ranked, non_ranked, world_series, players_championship, european_tour”
    • limitinteger“max tournaments (default 20, max 100)”
    • offsetinteger“skip this many tournaments (paging)”
  • get_standingson 14 other serversreads or searches

    “League table of a league; 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_sta…”

    Publisher declares: read-only yes · idempotent no · open-world no

    18 inputs, 1 required
    • sportstringrequired“sport (see list_sports)”
    • league_idinteger or string“league code (or number) from find_leagues (not for tennis)”
    • tourstring“tennis: atp or wta (the singles ranking, top 100); golf: pga (default) or lpga”
    • top_scorersstring“soccer: goals, assists or cards for the league's top scorers, most assists or most cards instead of the table”
    • player_statsstring“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 ma…”
    • team_statsstring“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/…”
    • xg_tablestring“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…”
    • ratingsboolean“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 i…”
    • championsboolean“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 t…”
    • attendanceboolean“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 matc…”
    • refereesboolean“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_match…”
    • suspensionsboolean“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…”
    • historyboolean“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…”
    • team_idinteger or string“with history: only this team”
    • seriesstring“motorsport: f1, motogp, moto2, moto3, f2, formula-e, indycar, nascar-cup, nascar-xfinity or nascar-trucks”
    • kindstring“motorsport: drivers (default) or teams”
    • seasonstring“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…”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_teamon 24 other serversreads or searches

    “Team profile: country, founded, venue, leagues, logo link; 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 c…”

    Publisher declares: read-only yes · idempotent no · open-world no

    10 inputs, 2 required
    • sportstringrequired“sport (see list_sports; not tennis)”
    • team_idinteger or stringrequired“team code (or number) from find_teams or a match”
    • squadboolean“also return the squad (players)”
    • injuriesboolean“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, m…”
    • coachboolean“soccer: also return coach: the head coach with appointment date, record since, previous coach and previous club”
    • season_statsboolean“return the team's current season statistics instead (MLB, NBA, WNBA, NHL, NFL); soccer: added as season_stats (per league, computed from our matches)”
    • factsboolean“soccer: also return facts: current runs, runs its last match ended, first since, record, table, next match stakes, player milestones (needs the insights featur…”
    • transfersboolean“soccer: also return the team's latest 20 transfers in and out (more: get_transfers)”
    • honoursboolean“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 l…”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_team_briefingreads or searches

    “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 gap…”

    Publisher declares: read-only yes · idempotent no · open-world no

    4 inputs, 1 required
    • sportstring“sport (default soccer); for tennis the id is a player id”
    • team_idinteger or stringrequired“team code (or number) from find_teams or a match (tennis: player id)”
    • formatstring“md for a short Markdown text instead of JSON”
    • langstring“language of team, league and country names: de, es, it or fr (default English)”
  • get_transferson 2 other serversreads or searches

    “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_eu…”

    Publisher declares: read-only yes · idempotent no · open-world no

    8 inputs
    • league_idinteger or string“moves in or out of this league's current teams”
    • team_idinteger or string“moves of this team”
    • directionstring“with team_id: in or out (default both)”
    • seasonstring“2026-27 (1 June to 31 May) or 2026 (calendar year)”
    • windowstring“summer (1 June-5 September), winter (1 January-3 February) or other”
    • sortstring“date (default, latest first) or fee (highest first)”
    • plannedboolean“true: only agreed moves dated after today (mostly loan ends); default: moves up to today”
    • limitinteger“maximum results (default 20, max 100)”
  • list_sportson 6 other serversreads or searches

    “Sports available, with whether each has upcoming matches.”

    Publisher declares: read-only yes · idempotent no · open-world no

    Takes no inputs.

Each quoted sentence is the first sentence of the publisher’s own description. The kind of tool and the “changes data” mark are our AI model’s reading of that description, not something we tested: two differently worded runs had to agree, otherwise no label is shown, and nobody has checked them by hand. A tool without the “changes data” mark is described as only reading, searching or calculating, or the two runs did not agree. No tool was called. Read the publisher’s full description before relying on it. “Publisher declares” lists the hints the server itself sends with the tool (MCP annotations: read-only, destructive, idempotent, open-world); they are the publisher's claims, not checked by us. Inputs are the parameters in the tool's own input schema: name, declared type, whether it is required, and the first sentence of its description. Read 2026-10-23.

How well are its tools described?

Features #4 and #5

How clearly this server's own tool descriptions say what a tool does, and how consistent its tool list is. The first part is an AI model's yes/no reading of each description; the second part is counted. We do not turn it into a grade.

Descriptions

AI reading of each description

Says what the tool does
100% of 35 tools
Says what it returns
100% of 35 tools
States limits, defaults or errors
34% of 35 tools
Says when to use it
3% of 35 tools
Items covered per tool
2.4 of 4 on average

Counted from the listing

Parameters with a description
100% of 157
Tools with a description
100% of 35
Typical description length
385 characters

The tool set

Counted from the listing

Tools
35
Size of the list
about 10,150 tokens for an agent to load (characters ÷ 4)
Naming
35 of 35 names use snake_case

AI reading: easy to mix up

No pair found.

The AI items cover 35 of 35 tools: for a tool where two differently worded runs disagreed, that item is left out. They were not checked by hand, and no tool was called. “Easy to mix up” means two tools whose names or descriptions overlap without saying how they differ; the AI found none. We do not rate whether the tool set is complete or whether side effects are spelled out, because our AI reading of those was not reliable enough.

How do I add it to my client?

Config from the registry entry

From the remote endpoint (Streamable HTTP)

We connected to this URL on 2026-10-23 (a read-only session: no tool was called).

Add to CursorAn install link in the format Cursor documents, holding the Cursor config below.

Claude Desktop or claude.ai
Settings → Connectors → Add custom connector, then paste:
https://mcp.sportstatsapi.com/mcp
Cursor · .cursor/mcp.json in a project, or ~/.cursor/mcp.json
{
  "mcpServers": {
    "sports-data": {
      "url": "https://mcp.sportstatsapi.com/mcp"
    }
  }
}
VS Code · .vscode/mcp.json
{
  "servers": {
    "sports-data": {
      "type": "http",
      "url": "https://mcp.sportstatsapi.com/mcp"
    }
  }
}
VS Code (command line) · Bash or zsh terminal (macOS, Linux)
code --add-mcp '{"name":"sports-data","type":"http","url":"https://mcp.sportstatsapi.com/mcp"}'
Claude Code
claude mcp add --transport http sports-data https://mcp.sportstatsapi.com/mcp
Try it in the MCP Inspector · runs on your machine, opens in your browser · Node 22.19+
npx @modelcontextprotocol/inspector@2.11.0 --server-url https://mcp.sportstatsapi.com/mcp --transport http
  • Optional settings the entry also lists (left out above): Authorization.
  • The server runs on the operator's infrastructure; it may ask you to sign in when you first connect.
  • The MCP Inspector lists the server's tools, resources and prompts; a tool you call there runs for real.

Built from the server's registry entry with each client's documented format (checked 2026-10-14; the Cursor link and the VS Code command 2026-10-19; the MCP Inspector command 2026-10-21). Values in < > are yours to fill in; this page never contains a key. Where the server needs a setting the entry does not declare, it can still fail to start.

Does the registry listing match what we found?

Feature #6

The registry verifies a package once, when it is published, and does not re-check it. A difference below is about the listing, not a judgement of the publisher.

Registry saysWe foundResultSource · date
Remote endpoint mcp.sportstatsapi.com/mcpSession openedmatchesour test · 2026-10-23
No credential declared as requiredOpened a session without any credentialmatchesour test · 2026-10-23

Choosing

Record checks

Public records · not a safety rating

1 of 2 record checks met · 7 do not apply

  • Not ranked by downloads: a remote server publishes no download figure
  • Not ranked by stars: no public GitHub repository
  • MetRegistry entry is active and says how to run itActive, with a package or a remote address.
  • Not metSource repository link opensThe registry entry gives no repository link.
  • Does not applyRepository is not archivedNo public GitHub repository to read.
  • Does not applyCode pushed to the repository in the 90 days before our checkNo public GitHub repository to read.
  • Does not applyRepository publishes a security policy (SECURITY.md)No public GitHub repository to read.
  • Does not applyPackage names its licence with a standard (SPDX) identifierRemote server: it ships no package.
  • Does not applyThe version the registry lists can be installed and is not withdrawnRemote server: it ships no package.
  • Does not applynpm package carries build provenance (attestation)Remote server: it ships no package.
  • Does not applyNo known critical or high advisory in the package or its dependenciesRemote server: it ships no package.

Read from public records only: the registry entry, npm/PyPI, GitHub and advisory databases, checked 2026-10-22. No tool was called. Only “met” and “not met” are counted, so the total differs between servers; a check that does not apply or that we could not run is listed, never counted against it. It is not a safety rating. How each check works · Leaderboards

Common questions about com.sportstatsapi/sports-data

Answered from the data above

Is com.sportstatsapi/sports-data free to use?

Its website (sportstatsapi.com/ai-agents/) describes a usage-based pricing model. This is an AI-classified reading of the page on 2026-10-23, so check the page itself before relying on it.

Does com.sportstatsapi/sports-data need an API key or sign-in?

It opened a session without any credential on 2026-10-23. The registry entry declares no required credential; no declaration is not a guarantee.

Has com.sportstatsapi/sports-data been security tested?

Partly. 2 of the 14 checks that apply to it were exercised. We connected and read what the server declares, but did not call its tools: ProtocolProbe calls no server's tools for anything it publishes. This is our choice, not a block by the server. No security verdict is published before verification.

What can com.sportstatsapi/sports-data do?

It lists 35 tools. In our AI model's reading of their descriptions (two runs had to agree, nobody checked it by hand), they include tools that read or search. We did not call any tool, so this describes the text, not the behaviour.

Can com.sportstatsapi/sports-data change or delete data?

None of its 35 tools is described as changing anything (our AI model's reading of the descriptions; nobody checked it by hand). We did not call any tool.

Found this page useful?

Anonymous · no sign-in

A quick, anonymous reaction — no account, no email. One per kind from your browser. The tally updates when the page is next refreshed, and it is only a rough count, never a safety rating or a measured number of people.

Similar servers

Same topic · AI-read

Active servers whose topic is also “data-and-databases” and that have at least one tool of the same kind; most kinds in common first, then most GitHub stars. The topic and the tool kinds are an AI model's reading of the publishers' descriptions, not checked by hand. Similar is not a recommendation.

Compare with another server

Side by side: registry entry, our read-only session, the tools and the 18 classification fields. Same values as each page; no score.

Security testing

What did we test, and what did we leave out?

18 checks · features #1, #2

Not probed (we call no server's tools)

We connected and read what the server declares, but did not call its tools: ProtocolProbe calls no server's tools for anything it publishes. This is our choice, not a block by the server. No security score is given; a check we did not run is never counted as passed.

The 18 checks at a glanceour test · 2026-10-23
  1. Inventory: exercised
  2. Hidden instructions: exercised
  3. Real execution: not run · our policy
  4. Secret leak: not run · nothing to check it against
  5. Internal addresses: not run · our policy
  6. Unconfirmed changes: not run · our policy
  7. Bad input: not run · our policy
  8. Model requests: not run · nothing to check it against
  9. Sensitive questions: not run · nothing to check it against
  10. Folder boundary: not run · our policy
  11. Log leaks: not run · nothing to check it against
  12. Hidden content: not run · nothing to check it against
  13. Fake assistant turns: not applicable
  14. Token passthrough: not applicable
  15. Token audience: not applicable
  16. Sign-in redirect: not run · our policy
  17. Consent handling: not testable from outside
  18. Sign-in metadata: not applicable

2 exercised12 not run (reason given)4 not applicable

Each check ends in exactly one state: exercised, not run (with the reason), or not applicable (with the reason). 2 of the 14 checks that apply to it were exercised. We do not publish security-check outcomes for named servers.

Exercised · 2
  • 1Inventory
    tool-list
    Reads the declared tools, resources and prompts.exercised
  • 2Hidden instructions
    description-poisoning
    Looks for hidden instructions in tool descriptions.exercised
Not run, with the reason · 12
  • 3Real execution
    real-execution
    Calls a tool and checks what really happens.This check calls the server's tools. ProtocolProbe calls no server's tools for anything it publishes; an operator can run this check on their own server with our self-test command.not run · our policy
  • 4Secret leak
    canary-leak
    Plants a fake secret and checks whether it leaks.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 5Internal addresses
    ssrf
    Checks whether a tool can be steered to internal addresses.This check calls the server's tools. ProtocolProbe calls no server's tools for anything it publishes; an operator can run this check on their own server with our self-test command.not run · our policy
  • 6Unconfirmed changes
    write-without-confirmation
    Checks whether tools that change data act without asking.This check calls the server's tools. ProtocolProbe calls no server's tools for anything it publishes; an operator can run this check on their own server with our self-test command.not run · our policy
  • 7Bad input
    error-handling
    Sends bad input and watches how the server answers.This check calls the server's tools. ProtocolProbe calls no server's tools for anything it publishes; an operator can run this check on their own server with our self-test command.not run · our policy
  • 8Model requests
    sampling
    Checks whether the server asks the client's model to act for it.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 9Sensitive questions
    elicitation-sensitive-data
    Checks whether the server asks users for sensitive data.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 10Folder boundary
    root-boundary
    Checks whether the server reaches outside the folders it was given.This check calls the server's tools. ProtocolProbe calls no server's tools for anything it publishes; an operator can run this check on their own server with our self-test command.not run · our policy
  • 11Log leaks
    logging-side-channel
    Checks whether log messages carry data they should not.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 12Hidden content
    audience-hiding
    Checks resources that hide content from the user.This check needs content the server returns, and nothing was read or called.not run · nothing to check it against
  • 16Sign-in redirect
    open-redirect
    Checks the sign-in redirect for abuse.Testing the sign-in redirect means sending probes to the operator's sign-in service, which we do not do.not run · our policy
  • 17Consent handling
    confused-deputy
    Checks consent handling when one service acts for another.Depends on the operator's own consent screen, which differs per server and cannot be tested from outside.not testable from outside
Does not apply to this server · 4
  • 13Fake assistant turns
    fake-assistant-turn
    Checks prompts that pose as the assistant's own words.The server exposes no prompts.not applicable
  • 14Token passthrough
    token-passthrough
    Checks whether the server forwards a user's token to other services.The server opened a session without sign-in, so there is no token flow to check.not applicable
  • 15Token audience
    token-audience-validation
    Checks whether tokens meant for another service are accepted.The server opened a session without sign-in, so there is no token flow to check.not applicable
  • 18Sign-in metadata
    oauth-url-scheme
    Checks the published sign-in metadata for unsafe URLs.No sign-in (OAuth) metadata is published, so there are no sign-in addresses to check.not applicable

Source: our own test, 2026-10-23, mcp-runtime-engine@0.1.0. Which checks count and why follows our published scoring model.

What happened during the test?

Feature #8

The steps in order, as the test record holds them.

  1. 0 msStarted a read-only session with the server's remote endpoint
  2. 852 msConnected after 0 redirects. No credential was sent or needed.
  3. Read the inventory: 35 tools, 0 resources, 0 prompts.
  4. 3,681 msFinished: 2 checks exercised.

Reference

How is it classified?

18 fields

One value per field, each with its source. Fields written by AI models are marked. A field with no value says why.

TopicAI-classified
AI-classified · 2026-10-23
Pricing modelAI-classified
usage-based
read from sportstatsapi.com/ai-agents/ · 2026-10-23

“Pay per call with x402 in USDC on Base, or use a monthly key from $79.”

Programming language
does not apply
no existing GitHub repository (server declares no repository link, so there is nothing to fetch)
Hosting type
registry · 2026-10-23
MCP capability
logging, tools
our test · 2026-10-23
Transport
streamable HTTP
registry · 2026-10-23
Required credentials
none declared
registry · no declaration is not a guarantee
Package registry
does not apply
remote-only server: no package is shipped, so there is no package registry
Freshness
0–30 days
registry updatedAt · 2026-10-23
Lifecycle status
registry · 2026-10-23
License class
does not apply
remote-only server: ships no package, so there is nothing to look up in a package registry
Integrity hash
does not apply
remote-only server: ships no package, so there is nothing to look up in a package registry
Signature / provenance
does not apply
remote-only server: ships no package, so there is nothing to look up in a package registry
Dependency advisories
does not apply
ships no package, so there are no dependencies to audit
Popularity
does not apply
remote-only server: ships no package, so there is nothing to look up in a package registry
Publisher signals
not stated
no readable GitHub owner to describe
Maintenance
does not apply
server declares no repository link, so there is nothing to fetch
Environment
the publisher's infrastructure
where it runs, from the hosting type

“Not stated” means the source did not state it; “does not apply” means it does not apply to this kind of server; “our limit” means our own lookup failed. A linked value opens the directory filtered to the same value.

Cite or correct this page

Sources and corrections

Suggested citation

ProtocolProbe. “com.sportstatsapi/sports-data: MCP server record.” Data checked 2026-10-23. https://protocolprobe.com/mcp/servers/com.sportstatsapi/sports-data

Figures are valid for the date shown. Our facts on this page are CC BY 4.0: reuse them with a link and the check date. Quoted text (the publisher’s descriptions, website quotes, tool names) is not ours to license.

As JSON: this record in the API · API documentation.

Badge for your README

ProtocolProbe: 1 of 2 record checks met

[![ProtocolProbe](https://protocolprobe.com/api/v1/badge/com.sportstatsapi/sports-data)](https://protocolprobe.com/mcp/servers/com.sportstatsapi/sports-data)

It shows this server's record-check count: facts from public records, no tool called. It is not a security rating or a pass. It links here and updates after each data reload.

Something wrong, or is this yours?

If a fact here is wrong, tell us and we will re-check it. If you operate this server, you can run our checks on it yourself with the free self-test command; we call no server’s tools ourselves for anything shown here.

Write to hello@protocolprobe.com · corrections log · methodology