agentleFS
noahowshnoahowsh/acesapi-mcp/skills/match-lookup/SKILL.md

match-lookup

Skill1 starsChanged 29 days agoMITView on GitHub

Finding ATP and WTA matches, draws, schedules and tournaments: results by day, a tournament's draw round by round, today's and this week's schedule, finals of a season, set and tiebreak scores. Use when the user asks who won, who plays today, what the score was, how a tournament draw looked, or which tournaments are on a surface. Do not use for a player's career profile: see player-scouting. Do not use for two-player matchups: see head-to-head-analysis. Do not use for moneylines: see odds-explorer.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    All finals of a season: get_matches {"season": 2025, "round": "Final", "limit": 100}

    line 67
  2. Very specific:

    Do not call get_match on every row of a day just to read a score.

    line 107

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Match Lookup

Default data tool: AcesAPI (acesapi-tool). Use get_matches (2 credits) for results by date, tournament or season, get_schedule (2) for upcoming matches, get_tournament (2) for a full draw, list_tournaments (1) for ids, get_match (2) for one match in detail.

You find tennis matches and read them correctly. Tennis has no teams, so every lookup is by date, tournament, round or player. Your job is to resolve the right id cheaply, pull the smallest result that answers the question, and report scores the way a tennis fan would read them.

When to Use

  • "Who won the Wimbledon final?" "What was the score?"
  • "Who plays today?" "What is on the schedule this week?"
  • "Show me the 2025 US Open draw" or "every final this season"
  • "Which tournaments are on clay this spring, and who won them?"
  • "Did the match go five sets?" "Were there tiebreaks?"

When NOT to Use

  • A player's career, ratings or form: see player-scouting
  • Two players against each other: see head-to-head-analysis
  • Lines and prices for a match: see odds-explorer
  • Building a full pre-match brief: see match-preview

Commands Available

CommandWhat It DoesCredits
list_tournamentsA season's tournaments: dates, city, surface, Grand Slam flag, status, champion1
get_tournamentEvery singles match of one edition, grouped by round, with sets and seeds2
get_matchesMatches by date, tournament_id or season; filter round, status2
get_scheduleScheduled and in-progress matches for the next days (default 7, max 30)2
get_matchOne match: sets, tiebreak points, ratings before and after, stats, odds2
search_playersResolve a name to a player_id when the question names a player1

Commands That Do NOT Exist

Not AvailableUse Instead
get_live_scoresget_schedule, or get_matches with status: "live"; scores are set by set, not point by point
search_matchesget_matches with filters, or get_player_matches for one player
get_drawget_tournament
get_team_scheduleThere are no teams: use get_schedule or get_player_matches

How It Works

Step 1: Resolve the target.

User saysResolve with
A date ("yesterday", "last Sunday")Convert to YYYY-MM-DD. Dates are UTC, so a late match in the Americas can land on the next date
A tournament namelist_tournaments for the season, match on name, take tournament_id (format 188-2025)
A player namesearch_players, then get_player_matches (5 credits) if their log is needed
"This week"get_schedule with days: 7 for upcoming, get_matches with date for each past day
WTAAdd "league": "wta" to every call

Step 2: Pull the narrowest result.

  • One day of results: get_matches {"date": "2025-07-13"}
  • One tournament's final: get_matches {"tournament_id": "188-2025", "round": "Final"}
  • All finals of a season: get_matches {"season": 2025, "round": "Final", "limit": 100}
  • The whole draw: get_tournament {"tournament_id": "188-2025"} (draw: "all" adds qualifying, available from 2022)

Step 3: Read the score.

score is a string such as 4-6 6-4 6-4 6-4 or 7-6(5) 6-3. In a set decided by a tiebreak the number in brackets is the loser's tiebreak points. sets[] has the same information as numbers: games1, games2, tiebreak1, tiebreak2, winner (1 or 2). Player 1 and player 2 are positions in the record, not seeds or favorites.

Step 4: Check outcome before counting anything. A real response for a walkover looked like this (trimmed): "outcome": "walkover", "score": "w/o", "sets": []. Retirements, defaults and walkovers have partial or empty set data. Count a match as played only when outcome is completed, and say so when you drop rows.

Step 5: Report. Lead with the answer, then the context: tournament, surface, round, score, and one line on what the score says (straight sets, five sets, tiebreaks, a comeback). get_match gives stats.went_the_distance and stats.winner_lost_first_set directly.

Worked Example

User: "Who won the 2025 Wimbledon final and how?"

1. list_tournaments {"season": 2025, "surface": "grass"}     -> 1 credit, find "188-2025"
2. get_matches {"tournament_id": "188-2025", "round": "Final"} -> 2 credits

Real record (trimmed): Jannik Sinner (seed 1) beat Carlos Alcaraz (seed 2) 4-6 6-4 6-4 6-4, Centre Court, grass. Answer: "Sinner won in four sets after dropping the first (22 games to 18, no tiebreaks). It was the Wimbledon final of 2025 on grass." Total cost: 3 credits.

Season Logic

  • "Last season" is the previous calendar year. A tournament edition belongs to the year it starts.
  • Two events can share a week. A date query returns all of them; group by tournament before summarizing.
  • status values are scheduled, live, final. A match with status: "final" and outcome: "walkover" is final but unplayed.
  • Rounds are named as the data lists them (seen in live responses: Round 1 to Round 4, Group Stage, Semifinal, Final). Pass the name exactly; if a filter returns nothing, read round from a get_tournament response. Use round_order to sort them (the Final is 22).
  • Draw sizes vary by event (main_draw_matches in list_tournaments shows 27 to 31 for tour events). Do not assume a fixed number of rounds.

Credit Usage

OperationCredits
Resolve tournament id1
One day of results (up to 100 matches)2
One full draw2
One season of results, one tourabout 90 (45 pages of 100 at the time of writing)
Detail on one match2

Do not call get_match on every row of a day just to read a score. get_matches already returns score and sets. Use get_match only for ratings, stats or odds.

Anti-patterns

What Claude Might DoWhy It's WrongDo This Instead
Treat player1 as the favorite or the winnerIt is only a record positionRead winner_id
Report a walkover as a straight-set winNo sets were playedCheck outcome, say "walkover"
Pass "Quarter-finals" or "R1" as roundThe filter needs the listed nameUse the names from the data, or pull the draw and read round
Query "today" without UTC in mindA match that ends after midnight UTC is on the next dateQuery the adjacent date when a result is missing
Assume five setsBest of five is for men at Grand Slams only; everything else is best of threeRead the actual sets[]

Output Format

[Tournament] [Year], [Surface], [Round]
[Winner] (seed) d. [Loser] (seed)  [score]
[One line: duration of the match in sets, tiebreaks, comeback, upset by seed or rating]

For a day of results, group by tournament and list matches by round_order, newest first.

What to Do Next

What You FoundNext ActionSkill
An upsetCheck ratings and prices before the matchsurface-elo, odds-explorer
Tomorrow's match worth a briefBuild the matchup pagematch-preview
A player who keeps appearingProfile themplayer-scouting
Two players who met againPull the full historyhead-to-head-analysis

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.