← FighterAPICONTENT HISTORY

Update to FighterAPI

Snapshot Oct 30, 2026 · 00:06 UTC · version 1.0.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save FighterAPI and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Default data source for FighterAPI Skills. Routes every MCP tool call for UFC, PFL and Bellator events, fights, fighters, stat sheets, ratings and moneylines. Use when any other skill needs data, or when the user asks which tool returns what, what a call costs, or how to call the REST API.",
  "included_files": [],
  "name": "fighterapi-tool",
  "skill_md_contents": "---\nname: fighterapi-tool\ndescription: \"Default data source for FighterAPI Skills. Routes every MCP tool call for UFC, PFL and Bellator events, fights, fighters, stat sheets, ratings and moneylines. Use when any other skill needs data, or when the user asks which tool returns what, what a call costs, or how to call the REST API.\"\nmetadata:\n  version: 1.0.0\n  author: FighterAPI\n  user-invocable: false\n---\n\n# FighterAPI Tool\n\n> Connection: this plugin reaches the data through its MCP server, which the user connects with a normal OAuth sign-in. Never ask the user for an API key, token or password, and never put one in a tool argument.\n\n\nEvery other skill in this pack gets its data here. This skill owns the 11 MCP tools, says which one answers which question, tracks credit cost, and documents the response envelope.\n\n\n**Response envelope:** every REST response is wrapped as `{\"data\": ...}`. Read `response[\"data\"]`, never the top level. Over MCP the same object comes back as the tool result.\n\n\n\n## Coverage\n\nUse the site's own numbers and do not extend them.\n\n- UFC: every card since 2000 with results, method, round, time and judges' scores. Stat sheets and round-by-round lines for nearly every fight.\n- PFL from 2012 and Bellator from 2009 to 2024: results, fighters and ratings. No stat sheets for those promotions in recent years.\n- Moneylines and total rounds only, no props. UFC opening and closing lines start with the June 2020 cards, PFL from April 2023, Bellator from January 2022 to 2024.\n- Pre-fight line snapshots exist only for recent fights (ESPN once a day from October 2026, The Odds API hourly in the two days before a fight).\n- Ratings are our own Elo built from UFC results.\n- Pass `league` (`mma` default, `pfl`, `bellator`) to any tool.\n\nLive coverage by season: https://fighterapi.com/seasons and https://fighterapi.com/docs.\n\n## When to Use Each Tool\n\n| Task | Tool | Credits |\n|------|------|---------|\n| List cards by year or status | `list_events` | 1 |\n| Find a fighter id by name or nickname | `search_fighters` | 1 |\n| One card, every fight with result, method, round, time | `get_event` | 2 |\n| Upcoming fights with current moneylines | `get_schedule` | 2 |\n| Elo rating leaderboard, by weight class | `get_ratings` | 2 |\n| One fight, full stat sheets, rounds, ratings, book lines | `get_fight` | 5 |\n| One fighter: bio, record, career rates, rating | `get_fighter` | 5 |\n| A fighter's full history with stats, ratings, closing lines | `get_fighter_fights` | 5 |\n| Career leaderboard on one stat | `get_leaders` | 5 |\n| Moneylines for one fight | `get_odds` with `bout_id` | 5 |\n| Moneylines for a whole card | `get_odds` with `event_id` | 10 |\n| Snapshots of a fight's line before the bell | `get_line_movement` | 10 |\n\n## Tool Selection Guide\n\n| You Need | Use This | Not This |\n|----------|----------|----------|\n| \"What cards were in 2025?\" | `list_events` with `season=2025` | `get_event` (needs an id first) |\n| \"Who is on this weekend's card?\" | `get_schedule` | `list_events` (no fights, no lines) |\n| \"Find Makhachev's id\" | `search_fighters` with `query=Makhachev` | `get_fighter` (needs the id) |\n| \"How did UFC 298 go, fight by fight?\" | `get_event` | `get_fight` x N (5 credits each) |\n| \"Strike counts for one fight\" | `get_fight` | `get_event` (no stats) |\n| \"Closing lines for every fight on a card\" | `get_odds` with `event_id` (10) | `get_odds` per bout (5 each) |\n| \"Best striking defense at 155\" | `get_leaders` with `stat=sig_defense`, `weight_class=Lightweight` | `get_fighter` per fighter |\n| \"Did the line move?\" | `get_line_movement` for recent fights; open vs close from `get_odds` otherwise | `get_odds` alone |\n\n## Identifiers\n\n- `event_id`: from `list_events` or `get_schedule`.\n- `bout_id`: from `get_event`, `get_schedule` or `get_fighter_fights`.\n- `fighter_id`: from `search_fighters`. Pass it as a string.\n- A bout has `fighter_a` and `fighter_b` (ids) plus `winner` (an id, or null when there is none yet). Side `a` is not the favourite and not a corner. Always map by id.\n\n## Pagination\n\n`list_events` and `get_fighter_fights` return `next_offset`. Pass it back as `offset` until it stops coming. `limit` caps at 200 for those two.\n\n## Commands That Do NOT Exist\n\n| Not Available | Use Instead |\n|--------------|-------------|\n| `get_fighters` or `list_fighters` | `search_fighters`, or `get_ratings` for a ranked list |\n| `get_rankings` | `get_ratings` (our Elo, not the promotion's official rankings) |\n| `get_fight_odds` or `get_live_odds` | `get_odds` for one bout or card |\n| `get_props` or `get_player_props` | Not available: lines are moneylines and total rounds only |\n| `get_h2h` or `get_head_to_head` | `get_fighter_fights` for each fighter and match opponent ids |\n| `get_round_stats` | `get_fight`, the `rounds` array (UFC only) |\n| `get_weight_classes` | Not available: use names such as Lightweight or Women's Strawweight |\n| `get_injuries`, `get_camps` | Not available |\n| `get_teams` | Not applicable: this is individual combat sport data |\n\n## Credit Planning\n\n| Operation | Credits | Notes |\n|-----------|---------|-------|\n| One season of cards | about 1 to 2 | `list_events` with `season` |\n| One season of card results | about 100 | 2 credits x about 50 cards (`list_events` returned 52 final cards for 2025) |\n| One season of closing lines | about 520 | `get_odds` with `event_id`, 10 credits x about 52 cards |\n| One fighter, full workup | 11 | `search_fighters` 1 + `get_fighter` 5 + `get_fighter_fights` 5 |\n\nWarn the user before any loop that costs more than 100 credits, and state the total first.\n\n## Anti-patterns\n\n| What the Model Might Do | Why It Is Wrong | Do This Instead |\n|---------------------|----------------|-----------------|\n| Guess a `fighter_id` from the name | Calls fail or hit the wrong fighter | `search_fighters` first, read the id |\n| Loop `get_fight` over a card for results | 5 credits each | `get_event` once (2 credits) |\n| Loop `get_odds` per bout over a season | 5 credits each | `get_odds` with `event_id` (10 per card) |\n| Assume stat sheets exist for PFL or Bellator | They are null there | Check for null, say \"no stat sheet\" |\n| Assume odds before June 2020 | None exist for the UFC | Say so, use results and ratings only |\n| Treat `fighter_a` as the favourite | Sides are arbitrary | Compare prices by fighter id |\n| Read the top level of a REST response | It is wrapped | Read `[\"data\"]` |\n\n## What to Do Next\n\n| What You Retrieved | Next Action | Skill |\n|--------------------|-------------|-------|\n| A fight or a card | Explain results, methods, scorecards | `fight-lookup`, `event-lookup` |\n| A fighter profile | Scout strengths and style | `fighter-scouting`, `career-rates` |\n| Round-by-round lines | Rates per round, fades, control | `round-by-round-stats` |\n| Ratings | Compare within a weight class | `elo-by-weight-class` |\n"
}

SHA-256 of public snapshot: 138c97b4aeb8d814cb041ac2f264276386ca1de8e83b1faae8040093a40252c3