FighterAPI
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
UFC fights since 2000, plus PFL and Bellator: results, round stats, fighters and odds. REST and MCP.
| Author | io.github.noahowsh |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 245 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"FighterAPI": {
"url": "https://mcp.fighterapi.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (11)
list_eventsread-onlyUse to find cards. Lists events newest first with the venue, status, number of fights and main event. Filter by season (year) and status (scheduled or final). Costs 1 credit.
Parameters:
limit— integer — Max events (default 50).league— string — League. Defaults to mma. One of: mma, pfl, bellator.offset— integer — Page offset; use next_offset.season— ['string', 'number'] — Year, e.g. 2025.status— string — Only upcoming or only completed cards.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_eventread-onlyUse for one card: every fight in order with the result, method, round and time, judges' scores and referee. Costs 2 credits.
Parameters:
event_id(required) — string — Event id from list_events or get_schedule.league— string — League. Defaults to mma. One of: mma, pfl, bellator.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_scheduleread-onlyUse for upcoming fights: every scheduled bout in the next N days (default 30) with the current moneyline from any book that has posted one. Costs 2 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Parameters:
days— integer — Days ahead (default 30, max 180).league— string — League. Defaults to mma. One of: mma, pfl, bellator.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_fightread-onlyUse for everything about one fight: the result, both fighters' full stat sheets (strikes by target and position, takedowns, control time, guard passes, reversals, submission attempts; UFC only, null elsewhere and where the source has no sheet), round-by-round lines (UFC only), each fighter's rating before and after, and the opening and closing moneyline from each book that posted one (2024 on). Costs 5 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Parameters:
bout_id(required) — string — Fight id (bout_id) from get_event or get_fighter_fights.league— string — League. Defaults to mma. One of: mma, pfl, bellator.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search_fightersread-onlyUse to find a fighter's id by name or nickname (accents optional). Returns weight class, country, pro record, number of fights in the promotion (bouts; ufc_bouts for the UFC only) and last fight date. Costs 1 credit.
Parameters:
query(required) — string — Name or nickname, e.g. Topuria or 'El Matador'.limit— integer — Max results (default 20).league— string — League. Defaults to mma. One of: mma, pfl, bellator.weight_class— string — e.g. Lightweight, Women's Strawweight.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_fighterread-onlyUse for one fighter's profile: date of birth, height, reach, stance, gym, record in the promotion by method (record; ufc_record is the same for the UFC and null for other promotions), career rates per 15 minutes from the stat sheets (significant strikes landed and absorbed, accuracy, defense, takedowns, submission attempts, control share; UFC only), current and peak rating, and the last five fights. Costs 5 credits.
Parameters:
fighter_id(required) — string — Fighter id from search_fighters.league— string — League. Defaults to mma. One of: mma, pfl, bellator.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_fighter_fightsread-onlyUse for a fighter's full history in the promotion: every fight with the opponent, result, method, round, time, strikes landed and absorbed and takedowns (UFC only), rating before and after, and the median closing moneyline across sportsbooks. Costs 5 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Parameters:
fighter_id(required) — string — Fighter id from search_fighters.limit— integer — Max fights (default 50).league— string — League. Defaults to mma. One of: mma, pfl, bellator.offset— integer — Page offset; use next_offset.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_leadersread-onlyUse for career leaderboards computed from every fight's stat sheet: sig_landed_per_15 (significant strikes landed per 15 min), sig_absorbed_per_15 (significant strikes absorbed per 15 min), sig_accuracy (significant strike accuracy), sig_defense (significant strike defense), td_per_15 (takedowns landed per 15 min), td_accuracy (takedown accuracy), td_defense (takedown defense), knockdowns (knockdowns), sub_attempts_per_15 (submission attempts per 15 min), control_share (share of fight time in control), finish_rate (wins by KO/TKO or submission, as a share of wins). Filter by weight class, a starting year, and a minimum number of fights (default 5). Costs 5 credits.
Parameters:
stat(required) — string — Which leaderboard.limit— integer — Max fighters (default 20).since— ['string', 'number'] — Only fights from this year on, e.g. 2020.min_fights— integer — Minimum fights to qualify (default 5).weight_class— string — Only fights in this weight class, e.g. Lightweight.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_ratingsread-onlyUse for our fighter ratings: an Elo built from the promotion's own results (the UFC since 2000), highest first, for fighters active since a given year (default last year). Filter by weight class. Costs 2 credits.
Parameters:
limit— integer — Max fighters (default 25).league— string — League. Defaults to mma. One of: mma, pfl, bellator.active_since— ['string', 'number'] — Only fighters whose last fight was in this year or later.weight_class— string — e.g. Welterweight.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_oddsread-onlyUse for betting lines: each posted sportsbook's opening, closing and current moneyline for both fighters, with implied probabilities and the total-rounds line. Opening and closing lines start with the UFC cards of June 2020; a median of 5 to 7 books per fight (some fights since mid-2024 have only one book). Pass bout_id for one fight (5 credits) or event_id for a whole card (10 credits). Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Parameters:
league— string — League. Defaults to mma. One of: mma, pfl, bellator.bout_id— string — One fight.event_id— string — A whole card.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_line_movementread-onlyUse to see how a fight's line moved before the bell: our snapshots of each posted moneyline, from first capture to fight day (once a day from October 2026, and every hour in the four days before). Costs 10 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.
Parameters:
bout_id(required) — string — Fight id.league— string — League. Defaults to mma. One of: mma, pfl, bellator.provider— string — One sportsbook, e.g. DraftKings.all_snapshots— boolean — Every hourly capture. By default a capture identical to the one before it is left out (the latest is always kept), which keeps every move and its time.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.