← 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": "Builds a matchup preview for a booked UFC, PFL or Bellator fight: both fighters' form, career rates, physical gaps, rating gap, and the market line. Use when the user asks for a preview, a breakdown of a fight, who is likely to win and why, or what to watch on fight night. Do not use for one fighter alone -- see fighter-scouting. Do not use for a past fight's result -- see fight-lookup.",
  "included_files": [],
  "name": "fight-preview",
  "skill_md_contents": "---\nname: fight-preview\ndescription: \"Builds a matchup preview for a booked UFC, PFL or Bellator fight: both fighters' form, career rates, physical gaps, rating gap, and the market line. Use when the user asks for a preview, a breakdown of a fight, who is likely to win and why, or what to watch on fight night. Do not use for one fighter alone -- see fighter-scouting. Do not use for a past fight's result -- see fight-lookup.\"\nmetadata:\n  version: 1.0.0\n  author: FighterAPI\n---\n\n# Fight Preview\n\n> **Default data tool:** FighterAPI (`fighterapi-tool`).\n> A full preview costs about 19 credits: `get_schedule` 2 (or `get_event`), `search_fighters` 2, `get_fighter` 10, `get_odds` 5, plus optional `get_fighter_fights` 5 per fighter.\n\nYou are an expert at previewing fights. Your goal is a one-page matchup read that separates what the data says from what is guesswork, and anchors on the market.\n\n## When to Use\n\n- \"Preview Saturday's main event\"\n- \"Break down X vs Y\"\n- \"What should I watch for in this fight?\"\n- Pre-fight context for a post on social or a newsletter\n\n## When NOT to Use\n\n- A single fighter without a booked opponent -- see `fighter-scouting`\n- Results of a fight already finished -- see `fight-lookup`\n\n## Commands Available\n\n| Command | What It Does | Credits |\n|---------|-------------|---------|\n| `get_schedule` | Find the bout, its `bout_id` and the posted lines | 2 |\n| `search_fighters` | Find each fighter's id | 1 each |\n| `get_fighter` | Profile, record, career rates, rating, last five | 5 each |\n| `get_fighter_fights` | Deeper history with opponent ratings and closing lines | 5 each |\n| `get_odds` | Each book's moneyline for the bout | 5 |\n| `get_leaders` | Division context for a stat | 5 |\n\n## Commands That Do NOT Exist\n\n| Not Available | Use Instead |\n|--------------|-------------|\n| `get_matchup` or `get_h2h` | `get_fighter` for both and compare |\n| `predict_fight` | Not available: use ratings and the market, see `elo-by-weight-class` |\n| `get_injuries`, `get_weigh_ins` | Not available: say you cannot see them |\n\n## Workflow\n\n1. **Find the fight.** `get_schedule` with `days`, or `get_event` for a known `event_id`. Capture `bout_id`, `scheduled_rounds`, `title_fight`, `weight_class`.\n2. **Profiles.** `get_fighter` for each id. Pull `reach_in`, `height_in`, `stance`, `career_rates`, `rating`, `recent_fights`.\n3. **Gaps.** Compute differences, A minus B, and say which direction favours whom.\n4. **Rating gap to probability.** Rating difference `d = R_a - R_b`. A standard Elo conversion is `p_a = 1 / (1 + 10^(-d/400))`. Treat this as a rough prior. The 400 scale is an assumption, so check it with `probability-calibration` before leaning on it.\n5. **Market.** `get_odds` with the `bout_id`. Take the median of `a_close_prob` and `b_close_prob` across books, normalize so they sum to 1 (see `odds-analysis`).\n6. **Compare.** If the rating prior and the market agree within a few points, say \"no disagreement\". If they differ by 8 points or more, look for a reason in the data: layoff, a very different opponent quality, a small sample.\n7. **Write.** Lead with the market, then the style matchup, then the risks.\n\n## Style Matchup Checklist\n\n| Question | Data |\n|----------|------|\n| Who lands more per minute, and who absorbs less? | `sig_landed_per_15`, `sig_absorbed_per_15` |\n| Does the striker's defense hold against pressure? | `sig_defense`, `losses_ko` |\n| Can the wrestler get it down, and keep it there? | `td_per_15`, `td_accuracy`, `control_share` against the other's `td_defense` |\n| Does either have a finishing record? | `wins_ko`, `wins_sub`, `finish_rate` |\n| Cardio over five rounds | `round-by-round-stats` fade between round 1 and later rounds |\n| Layoff or short notice | Dates in `get_fighter_fights` |\n| Reach and stance | `reach_in`, `stance` |\n\n## Hard Limits\n\n- The data has no camp news, injuries, weight cuts or short-notice flags. Say so.\n- PFL and Bellator previews have no stat-sheet rates. Use record, rating and market only.\n- Rates need samples. If either fighter has under 60 `minutes_fought`, flag it.\n- A rating comes from UFC results alone. A fighter coming from another promotion starts at 1500 regardless of record.\n\n## Worked Example\n\nRequest: \"Preview the main event on the next UFC card.\"\n\n```\nget_schedule(days=14)                 -> pick the main event, note bout_id\nget_fighter(fighter_id=<a>)           -> rates, rating\nget_fighter(fighter_id=<b>)\nget_odds(bout_id=<bout_id>)           -> books[].a_close_prob, b_close_prob\n```\n\nFor a profile call on Ilia Topuria, the live response gave `sig_landed_per_15` 72.23, `sig_absorbed_per_15` 59.57, `td_defense` 0.952 and a rating of 1655 against a 1670 peak. A preview built on that would say what the numbers support (high volume, takedown defense very hard to crack on a 104-minute sample) and stop there.\n\n## Output Format\n\n```\nA vs B, weight class, rounds, date\nMarket: A 62% / B 38% (median close, devigged, N books)\nRating: A 1655, B 1610 (gap 45, rough prior 56%)\nStyle: A pressure striker (72 landed per 15), B counter wrestler (td 2.1 per 15)\nEdges for A: reach +2 in, defense\nEdges for B: control share, finish rate\nUnknowns: camp, injuries, weight cut (not in the data)\nRisk: B has 3 UFC fights, rates are noisy\n```\n\n## Keeping the Cost Down\n\nThe cheapest honest preview skips `get_fighter_fights`. `get_fighter` already includes the last five fights and the career rates. Add the history call only when the user asks about opponent quality, layoffs or trends, and say it is 5 credits per fighter and per page. When previewing a whole card, pull `get_odds` with `event_id` once (10 credits) instead of per bout, and pull `get_fighter` only for the fights the user picks.\n\n## Anti-patterns\n\n| What the Model Might Do | Why It Is Wrong | Do This Instead |\n|---------------------|----------------|-----------------|\n| Declare a winner with certainty | Fights are high-variance | Give probabilities and the range |\n| Ignore the market | The close is the best public estimate | Anchor on the devigged line |\n| Compare raw `sig_landed_per_15` across weight classes | Pace differs by division | Compare to `get_leaders` for the class |\n| Pull `get_fighter_fights` for both to answer a simple preview | 10 extra credits | Only when form or opponent quality is the question |\n\n## What to Do Next\n\n| Finding | Next Skill |\n|---------|-----------|\n| User wants round fade detail | `round-by-round-stats` |\n| User wants the whole card | `event-lookup` |\n"
}

SHA-256 of public snapshot: 8adfcfc86dded391f1926de3b581905f19ffe154813819955b35bff5f92582c0