Public leaderboard

Public assessment

Backspace-me/sportscore-mcp (sportscore-mcp)

sportscore-mcp · v0.1.0 · scanned

What changed in the harness

Selection accuracy 100→100, token cost up 6%, unconfirmed writes 100%→100%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

30.0 / 30

30.0 out of 30
02Legibility

27.7 / 30

27.7 out of 30
03Economics

20.0 / 20

20.0 out of 20
04Discoverability

14.7 / 20

14.7 out of 20

Highest-impact fix

Estimated gain +5 points

Make target tools discoverable on the first call

Clarify tool names, decision boundaries, and required argument schemas so an agent can choose and construct the target call without exploratory steps.

Description evidence

Defects and rewrites.

5 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
get_team_schedule
params_unexplained
Get a team's past and upcoming fixtures by team slug (e.g. 'barcelona', 'manchester-united', 'los-angeles-lakers'). `limit` caps how many fixtures are returned (default 10, up to 30).
get_standings
name_restates_behavior
Get the current standings table for a league or competition by slug (e.g. 'premier-league', 'la-liga', 'nba'). Returns the full ranking of every team in the competition with their current positions, for questions like which team is top of the league.
get_top_scorers
params_unexplained
Get the top scorers (or top assisters) for a competition. Useful for 'who's leading the Premier League scoring charts?'. `limit` caps the number of players returned (default 20, up to 50).
get_player
name_restates_behavior
Get player statistics and metadata for a single athlete by player slug (e.g. 'lionel-messi', 'lebron-james', 'virat-kohli'). Use this when a match, schedule or standings result references a player and you need that player's own stats.
get_bracket
name_restates_behavior
Get the knockout bracket for a tournament by slug (e.g. 'uefa-champions-league', 'nba-playoffs'). Use when you need the full tournament bracket showing which teams face off in each knockout round, rather than a single match.

Selection evidence

Confusable tool pairs.

4 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
get_matches get_tracker medium Both describe live match data (shared token 'live'). A task like 'track the live match' or 'give me live match updates/position' could route to get_matches, which lists live matches with scores/status, instead of get_tracker's position/animation data, especially since the tracker's numeric id must be sourced from get_matches results.
get_standings get_bracket medium Both report a competition's current state. A task like 'who's still in the Champions League' or 'show me the tournament standings' is genuinely ambiguous between a league table (get_standings) and a knockout bracket (get_bracket), as either plausibly answer ranking/advancement questions.
get_match_detail get_team_schedule medium Both accept a slug and are team/match focused. A task like 'get Barcelona's upcoming game details' or 'show me the manchester-united vs liverpool fixture' is ambiguous between the single-match tool (needs a match slug) and the team schedule tool (needs a team slug), and neither description disambiguates which slug format the user supplies.
get_matches get_standings medium A task like 'what's the current state/status of the Premier League right now' can be answered by either live/recent match scores (get_matches) or the league table (get_standings). Without explicit words like 'scores' or 'table', an agent using only the descriptions could plausibly pick the wrong member.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard