agentleFS
noahowshnoahowsh/birdieapi-mcp/skills/birdieapi-tool/SKILL.md

birdieapi-tool

Skill0 starsChanged 29 days agoMITView on GitHub

Default data source for the BirdieAPI skills. Routes every call to the 14 BirdieAPI tools for PGA Tour, LPGA, LIV, DP World Tour and Korn Ferry Tour tournaments, leaderboards, scorecards, courses, player results, ratings and the winner prices of the four men's majors. Use when any other skill needs golf data, or when the user asks which tool to call, what a call costs, or how to connect. Do not use for analysis, modeling or bet sizing -- see strokes-vs-field, outright-model or edge-detection.

  • Reads credentials
  • Sends data out

The file

We split this skill into the rules it gives an agent

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

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    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. Distinctive:

    Every other skill delegates data retrieval here.

    line 12
  2. Very specific:

    Response envelope: every REST response is wrapped as {"data": {...}}.

    line 32
  3. Distinctive:

    Do not retry a failed call in a loop.

    line 115
  4. Very specific:

    If the user brings their own round scores or odds, skip the tools and spend no credits.

    line 154

≈ “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

BirdieAPI Tool

Every other skill delegates data retrieval here. This skill owns the 14 tools, the credit costs, the league switch and the response envelope.

Coverage (from birdieapi.com/data and the league pages, check them before quoting a number):

DatasetWhat is there
PGA Tour leaderboards and resultsEvery player in every field since 2001
PGA Tour hole-by-hole scoresAbout 99% of PGA Tour rounds since 2001, with par and yards per hole
PGA Tour tournament stat linesDriving distance and accuracy, greens in regulation, putts per green, sand saves, from 2011
Major winner oddsThe four men's majors, weekly snapshots from 2021 (plus the 2020 U.S. Open)
LPGA, LIV, DP World TourLeaderboards, round scores and the rating. No hole-by-hole, no odds
Korn Ferry TourLeaderboards, round scores and hole-by-hole from 2007. No odds

Data is loaded and checked by BirdieAPI. It is historical and next-morning, not a live feed.

Connecting

  • MCP: https://mcp.birdieapi.com/mcp (Streamable HTTP). Claude Code: claude mcp add --transport http birdieapi "https://mcp.birdieapi.com/mcp?key=YOUR_API_KEY".
  • REST: POST https://mcp.birdieapi.com/v1/<tool> with a JSON body and header x-api-key: YOUR_API_KEY.
  • Free tier: 500 credits every month, no card. Key at https://birdieapi.com/signup. Paid plans are on https://birdieapi.com/pricing.
  • Response envelope: every REST response is wrapped as {"data": {...}}. Unwrap data before reading fields.

When to Use Each Tool

TaskToolCredits
Find tournament ids for a season, winners, courses, majorslist_tournaments1
What is on this week and next, defending championget_schedule1
Find a player id from a namesearch_players1
Full results of one tournamentget_leaderboard2
How each hole of a course playedget_course2
One player's hole-by-hole cardget_scorecard2
Who is playing best, on one ratingget_ratings2
Player overview, career totals, last ten resultsget_player5
Player's tournament-by-tournament rounds and strokes vs fieldget_player_results5
Player's season: par 3/4/5 splits, birdies, driving, greensget_player_stats5
Player's record at one event or course across yearsget_course_history5
Two players in every tournament both playedget_head_to_head5
Season leaders in one statget_leaders5
Major winner prices by sportsbook, opening and latestget_winner_odds5

The league switch

Most tools take league: golf (the default, the PGA Tour), lpga, liv, dpwt, kornferry.

  • get_scorecard takes only golf or kornferry.
  • get_winner_odds has no league argument. It holds the four men's majors only.
  • The sg_par3, sg_par4, sg_par5 stats exist for the PGA Tour and Korn Ferry Tour only. Other tours return null.
  • Ratings are measured within one tour. A 2.0 on the LPGA and a 2.0 on the PGA Tour are not on one scale.
  • Player ids are shared across tours, so a player's results on two tours join on one id.

Identifiers and seasons

  • tournament_id, player_id and course_id are strings. Never guess one: get it from list_tournaments, get_schedule, search_players or get_leaderboard.
  • season is a calendar year (a September 2025 event is season 2025). Exceptions from the site: the 2020 U.S. Open and the November 2020 Masters are season 2021; Korn Ferry 2020 and 2021 are one combined season stored as 2020.
  • Paged tools (list_tournaments, get_player_results) return next_offset. Pass it as offset for the next page.

Tool Selection Guide

You NeedUse ThisNot This
"What is on this week?"get_schedulelist_tournaments (a whole season)
"Who won the 2024 PGA Championship?"list_tournaments with season and majorget_leaderboard (2 credits for a winner you can read in a row)
"Full results of the Masters"get_leaderboardget_player_results per player
"Find Rory McIlroy's id"search_playersget_player (needs the id)
"How has Scheffler played this year?"get_player_stats with seasonget_player (career overview)
"Best par-5 scorers of 2025"get_leaders with stat sg_par5get_player_stats per golfer
"Which holes at Augusta were hardest?"get_courseget_scorecard
"Scheffler's round 1 hole by hole"get_scorecardget_course
"How does he do at Pebble Beach?"get_course_historyget_player_results filtered by hand
"Scheffler versus McIlroy"get_head_to_headtwo get_player_results calls
"Who is best right now?"get_ratingsget_leaders (a season stat)
"What was he priced at for the Masters?"get_winner_oddsnothing else has prices

Calling Patterns

Example calls in the skills are written as the tool name followed by its JSON arguments. Over MCP pass the arguments object. Over REST send it as the body:

search_players {"query": "scheffler"}
get_ratings {"limit": 5}
get_winner_odds {"tournament_id": "401580344", "limit": 5}
curl -s -X POST https://mcp.birdieapi.com/v1/search_players \
  -H "x-api-key: $BIRDIEAPI_API_KEY" -H "content-type: application/json" \
  -d '{"query": "scheffler"}'

Real response, unwrapped from {"data": ...} and trimmed:

players[0]: player_id "9478", name "Scottie Scheffler", country "USA", tournaments 167, wins 23, first_season 2014, last_season 2026

Chain the ids: search_players gives player_id, list_tournaments gives tournament_id, and the 2-credit and 5-credit tools take those.

Errors and empty results

  • A missing key or a spent balance returns an error rather than data. Tell the user which, and point to https://birdieapi.com/pricing for the credit plans.
  • An empty list for a season usually means the league has no data there (for example the LPGA between 2013 and 2019). Check the league page before assuming a bug.
  • A null sg_par3, sg_par4 or sg_par5 means the tour is not the PGA Tour or Korn Ferry Tour.
  • Do not retry a failed call in a loop. Each attempt can spend credits.

Credit Usage

OperationCreditsNotes
Resolve a name to an id1search_players
One tournament leaderboard2whole field unless limit is set
One player card2get_scorecard
One player's season5get_player_stats
One major's winner market, 200 golfers5limit does not change the price
A full 10-year course-history table for 40 golfers2005 per golfer; warn first

Free tier: 500 credits is about 100 five-credit calls a month. Tell the user the running total on any multi-call plan.

Commands That Do NOT Exist

Not AvailableUse Instead
get_strokes_gained, get_sg_categoriesget_ratings, get_player_results (vs_field, adj_vs_field) and get_leaders with sg_par3/4/5. There is no shot-level data, so no off-the-tee, approach or putting split
get_live_scores, get_live_leaderboardNot available. Data is next-morning; Data is next-morning, so check status from list_tournaments (scheduled, live, final) before reading a leaderboard as final
get_odds, get_matchup_odds, get_top_10_oddsOnly get_winner_odds, and only for the four men's majors
get_world_rankingNot available. Use get_ratings (our own rating)
get_team_standingsNot available. LIV has individual results only
get_weather, get_tee_times, get_pairingsNot available
get_fieldA field is the players list of get_leaderboard once a tournament has results

Anti-patterns

What Claude Might DoWhy It's WrongDo This Instead
Call it "strokes gained"The rating is the site's own strokes-versus-field number built from scores, not the official shot-level statSay "strokes versus the field"; see strokes-vs-field
Pass a name as player_idIDs are numeric stringssearch_players first
Pull get_course_history for a whole field5 credits eachShortlist with get_ratings first
Quote the latest winner price as the closing lineFor past majors it can be up to a week before the first teeCall it the latest pregame snapshot
Compare an LPGA rating to a PGA Tour ratingEach is relative to its own tourCompare within a tour

BYOD

If the user brings their own round scores or odds, skip the tools and spend no credits. Minimum columns: rounds need player, tournament, round, strokes, course, date; odds need player, book, american_price, timestamp. Say when a column had to be inferred.

What to Do Next

What You RetrievedNext ActionSkill
Tournament list or leaderboardRead the result, find the coursetournament-lookup
Player idScout the playerplayer-scouting
Ratings or round-level strokes vs fieldInterpret and comparestrokes-vs-field
Hole dataPar-type and hole analysishole-scoring
Winner pricesCompare books, movementodds-explorer
Prices plus a modelFind edgeedge-detection

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.