birdieapi
Registry code: 40181044bdcb5550
BirdieAPI -- 14 golf data tools. PGA Tour leaderboards, rounds and hole-by-hole scores since 2001; the LPGA, LIV, the DP World Tour and the Korn Ferry Tour with league=lpga, liv, dpwt or kornferry.
## First Steps
- endpoint
- https://mcp.birdieapi.com/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is birdieapi live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
- Is birdieapi free to use?
- No — it asks for a key or a login before it will serve.
- What tools does birdieapi have?
- 14 tools: list_tournaments, get_schedule, get_ratings, get_winner_odds, get_leaderboard, get_course, search_players, get_player, ….
- Is birdieapi safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 14 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
list_tournaments auth-required never probed
Use to find tournaments. Lists a season's tournaments (ascending) or the latest ones (descending) with dates, status, purse, whether it is a major, the winner and winning score, field size and the courses. Filter by season, status and major. Costs 1 credit.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "limit": { "type": "integer", "maximum": 200, "minimum": 1, "description": "Max tournaments (default 60)." }, "major": { "type": "boolean", "description": "Only the majors." }, "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "offset": { "type": "integer", "maximum": 9007199254740991, "minimum": 0, "description": "Page offset; use next_offset." }, "season": { "type": [ "string", "number" ], "description": "Season year, e.g. 2025." }, "status": { "enum": [ "scheduled", "live", "final" ], "type": "string", "description": "Only upcoming, in-progress or completed tournaments." } } }arguments 49 linesget_schedule auth-required 1h ago
Use for what is on now and next: tournaments in play or starting in the next N days (default 30), with the courses and the defending champion. Costs 1 credit.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "days": { "type": "integer", "maximum": 365, "minimum": 1, "description": "Days ahead (default 30, max 365)." }, "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." } } }arguments 23 linesget_ratings auth-required 1h ago
Use for who is playing best: our strokes-versus-field rating for every player active in the past year, best first. A rating of 2.0 means two strokes a round better than an average player in the same fields, adjusted for field strength and weighted toward recent rounds. Pass as_of for the ratings on a past date. Costs 2 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "as_of": { "type": "string", "description": "A date (YYYY-MM-DD): the ratings as they stood then. Default the latest." }, "limit": { "type": "integer", "maximum": 500, "minimum": 1, "description": "Max players (default 50)." }, "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "min_rounds": { "type": "integer", "maximum": 9007199254740991, "minimum": 1, "description": "Minimum decay-weighted rounds behind a rating (default 20)." } } }arguments 33 linesget_winner_odds auth-required 1h ago
Use for the pre-tournament winner prices of the four men's majors by sportsbook, and how they moved: for each golfer and book the opening price (the first snapshot) and the latest price before the first round, with the implied probability, from The Odds API (the archive for every major from 2021 plus the 2020 U.S. Open, then refreshed daily while a major's market is open, every six hours in tournament week). For past majors the latest price can be up to a week before the first tee time; round, matchup and finishing-position markets are not held. Pass tournament_id, or season (all four majors), or player_id (one golfer across the majors). Costs 5 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "limit": { "type": "integer", "maximum": 200, "minimum": 1, "description": "Golfers per tournament, favourites first (default 20, max 200). Ignored with player_id." }, "major": { "enum": [ "masters", "pga_championship", "us_open", "the_open" ], "type": "string", "description": "Only this major (with season, or alone for every year)." }, "season": { "type": [ "string", "number" ], "description": "ESPN's season year, e.g. 2025: all four majors of that season (the 2020 U.S. Open and the November 2020 Masters are season 2021)." }, "bookmaker": { "type": "string", "description": "Bookmaker key, e.g. draftkings, fanduel, betmgm, bovada, betonlineag, espnbet, pinnacle, mybookieag." }, "player_id": { "type": "string", "description": "Player id from search_players: this golfer across the majors he was priced for." }, "tournament_id": { "type": "string", "description": "A major's tournament id from list_tournaments (major: true)." } } }arguments 41 linesget_leaderboard auth-required never probed
Use for a tournament's results: every player in the field in finishing order with position (T5), status (cut, wd, dq), score to par, total strokes, each round's score and strokes versus the field, earnings and season points, plus any playoff. Costs 2 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tournament_id" ], "properties": { "limit": { "type": "integer", "maximum": 500, "minimum": 1, "description": "Max players (default the whole field)." }, "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "tournament_id": { "type": "string", "description": "Tournament id from list_tournaments or get_schedule." } } }arguments 30 linesget_course auth-required never probed
Use for a course as it was set up for a tournament: par and yards per hole, and how each hole played (scoring average, to par, birdie and bogey rates, difficulty rank) from every round on it. For a tournament on more than one course pass course_id. Costs 2 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tournament_id" ], "properties": { "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "course_id": { "type": "string", "description": "Course id, for tournaments played on more than one course (list_tournaments lists them)." }, "tournament_id": { "type": "string", "description": "Tournament id from list_tournaments." } } }arguments 28 linessearch_players auth-required never probed
Use to find a player's id by name (accents optional). Returns country, tournaments played, wins and the seasons played. Costs 1 credit.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "query" ], "properties": { "limit": { "type": "integer", "maximum": 100, "minimum": 1, "description": "Max players (default 20)." }, "query": { "type": "string", "minLength": 2, "description": "Part of the player's name, e.g. 'scheffler'." }, "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." } } }arguments 31 linesget_player auth-required never probed
Use for a player's overview: profile, career totals (starts, wins, top tens, cuts, money, scoring average, strokes versus the field), our current rating, a line per season and the last ten results. Costs 5 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "player_id" ], "properties": { "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "player_id": { "type": "string", "description": "Player id from search_players or get_leaderboard." } } }arguments 24 linesget_player_results auth-required never probed
Use for a player's tournament-by-tournament record: finish, score, earnings and each round with the field's average and strokes versus the field (raw and field-strength adjusted). Newest first; filter by season. Costs 5 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "player_id" ], "properties": { "limit": { "type": "integer", "maximum": 200, "minimum": 1, "description": "Max tournaments (default 50)." }, "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "offset": { "type": "integer", "maximum": 9007199254740991, "minimum": 0, "description": "Page offset; use next_offset." }, "season": { "type": [ "string", "number" ], "description": "Season year, e.g. 2025." }, "player_id": { "type": "string", "description": "Player id from search_players." } } }arguments 43 linesget_player_stats auth-required never probed
Use for a player's season in numbers: results (starts, wins, top tens, cuts, money), scoring average and strokes versus the field, hole scoring from every hole played (birdies and bogeys per round, par 3/4/5 averages) and, for the PGA Tour and Korn Ferry Tour, strokes versus the field by hole type (sg_par3, sg_par4, sg_par5; score-based, not shot data) and, where ESPN keeps them, driving distance and accuracy, greens in regulation and putts per green. Costs 5 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "player_id", "season" ], "properties": { "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "season": { "type": [ "string", "number" ], "description": "Season year, e.g. 2025." }, "player_id": { "type": "string", "description": "Player id from search_players." } } }arguments 32 linesget_scorecard auth-required never probed
Use for one player's tournament hole by hole: every round's strokes on each hole with par, yards and the result (birdie, bogey), the course played, out and in, and strokes versus the field. Costs 2 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tournament_id", "player_id" ], "properties": { "league": { "enum": [ "golf", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, kornferry." }, "player_id": { "type": "string", "description": "Player id from get_leaderboard or search_players." }, "tournament_id": { "type": "string", "description": "Tournament id from list_tournaments." } } }arguments 26 linesget_course_history auth-required never probed
Use for course or event form: a player's record at one tournament across every year (pass any edition's tournament_id) or at one course across every tournament played there (course_id), with finishes, rounds and strokes versus the field, and a summary. Costs 5 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "player_id" ], "properties": { "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "course_id": { "type": "string", "description": "A course id (list_tournaments lists each tournament's courses)." }, "player_id": { "type": "string", "description": "Player id from search_players." }, "tournament_id": { "type": "string", "description": "Any year's id of the tournament; every edition is returned." } } }arguments 32 linesget_head_to_head auth-required never probed
Use to compare two players: every tournament both played with each one's finish, who finished ahead (making the cut beats missing it), round-by-round strokes on the same course, and a summary. Filter by season. Costs 5 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "player_a", "player_b" ], "properties": { "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "season": { "type": [ "string", "number" ], "description": "Season year, e.g. 2025." }, "player_a": { "type": "string", "description": "First player id." }, "player_b": { "type": "string", "description": "Second player id." } } }arguments 36 linesget_leaders auth-required never probed
Use for a season's leaders in one stat, with each player's sample. Stats from rounds and holes: scoring_average, vs_field, adj_vs_field, birdies_per_round, bogey_avoidance, par3_average, par4_average, par5_average, and sg_par3, sg_par4, sg_par5 (strokes versus the field on par 3, 4 or 5 holes, field-strength adjusted; PGA Tour and Korn Ferry Tour only, score-based, not shot data). From results: earnings, cup_points, wins, top_tens. From ESPN's tournament lines (PGA Tour from 2011): driving_distance, driving_accuracy, greens_in_regulation, putts_per_gir. Costs 5 credits.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "stat", "season" ], "properties": { "min": { "type": "integer", "maximum": 9007199254740991, "minimum": 1, "description": "Minimum sample: rounds (default 40), starts (1) or tournaments with a stat line (8)." }, "stat": { "enum": [ "scoring_average", "adj_vs_field", "vs_field", "birdies_per_round", "bogey_avoidance", "par3_average", "par4_average", "par5_average", "sg_par3", "sg_par4", "sg_par5", "earnings", "cup_points", "wins", "top_tens", "driving_distance", "driving_accuracy", "greens_in_regulation", "putts_per_gir" ], "type": "string", "description": "The stat to rank." }, "limit": { "type": "integer", "maximum": 200, "minimum": 1, "description": "Max players (default 25)." }, "league": { "enum": [ "golf", "lpga", "liv", "dpwt", "kornferry" ], "type": "string", "description": "League. Defaults to golf. One of: golf, lpga, liv, dpwt, kornferry." }, "season": { "type": [ "string", "number" ], "description": "Season year, e.g. 2025." } } }arguments 65 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id40181044bdcb5550.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/40181044bdcb5550/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/40181044bdcb5550?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.