Skip to content

UFCalendar Fight API — MMA MCP server

by ufcalendar.com · remote · no sign-in to list tools · v1.5.1 · published by com.ufcalendar

Fight API MCP: UFC, PFL, BKFC, RIZIN, OKTAGON events, results, stats, rankings, judges scorecards.

Deletes · 2Changes · 3

47 tools: 2 can delete or cancel things, 3 change things and 42 only read.

Scanned Oct 21, 2026

6 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http fight-api https://api.ufcalendar.com/mcp

Findings

Matches of fixed checks, with the text they matched.

6 info
  • The description mentions "credential".

    Matched text

    description: "...Answers "what does this cost" without a credential."

    What this check looks for
  • The description mentions "credential".

    Matched text

    description: "...same rows for every promotion without a credential."

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...s for the UFC bonus ledger, and include=credentials for grappling and wrestling pedigree, g..."

    What this check looks for
  • The input schema at properties.include.description mentions "credentials".

    Matched text

    inputSchema.properties.include.description: "...FOTN/POTN/KOTN/SOTN counts and fights); credentials = grappling and wrestling pedigree, gym..."

    What this check looks for
  • The input schema at properties.include.items.enum[5] mentions "credentials".

    Matched text

    inputSchema.properties.include.items.enum[5]: "credentials"

    What this check looks for
  • The description mentions "credential".

    Matched text

    description: "...URL templates only, never the caller's credential; the human pastes the finished URL into..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

47 tools

Deletes or cancels 2Claude Code: deny
  • delete_webhook_endpointPermanently remove one webhook endpoint from the calling account.No findings

    Why it is in this group

    • The name "delete_webhook_endpoint" says "delete": a word for removing or ending something.
    • The description says "Permanently remove".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently remove one webhook endpoint from the calling account. Deliveries to it stop and its delivery history is dropped.

    Annotations the server declares

    • title: Delete a webhook endpoint
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • rotate_webhook_secretReplace the signing secret of one webhook endpoint.No findings

    Why it is in this group

    • The description's first verb is "replace": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Replace the signing secret of one webhook endpoint. The old secret stops verifying immediately, so update the receiver first. The new secret is returned once.

    Annotations the server declares

    • title: Rotate a webhook signing secret
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
Changes things 3Claude Code: ask
  • create_webhook_endpointRegister an https endpoint to receive signed webhooks (event announced, fight result, card changed, event completed, odds moved: the UFCalendar consensus odds line on an upcoming b…No findings

    Why it is in this group

    • The name "create_webhook_endpoint" says "create": a word for a change.
    Description, as the server wrote it
    Register an https endpoint to receive signed webhooks (event announced, fight result, card changed, event completed, odds moved: the UFCalendar consensus odds line on an upcoming bout moved 5+ points or the favourite flipped; information only, not betting advice). The signing secret is returned ONCE — store it before the reply is discarded. At most 3 active endpoints per account.

    Annotations the server declares

    • title: Register a webhook endpoint
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • how_to_watchWho airs one event, country by country: the promotion's rights deals merged with the event's own confirmed broadcast listings, with provider, kind (tv, stream, ppv…), link and a wo…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Who airs one event, country by country: the promotion's rights deals merged with the event's own confirmed broadcast listings, with provider, kind (tv, stream, ppv…), link and a worldwide row. Pass a two-letter country code to get that market plus worldwide. Series-aware, so a Contender Series card shows its own deal, not the numbered-card one.

    Annotations the server declares

    • title: How to watch an event
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • whos_nextFor one fighter: the most sensible next opponents by UFCalendar's matchmaker, with the model win probability for each pairing and the score behind it, plus the bout already booked …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    For one fighter: the most sensible next opponents by UFCalendar's matchmaker, with the model win probability for each pairing and the score behind it, plus the bout already booked if there is one. Runs without the website's style-clash (Fight DNA) factor, so scores can differ slightly from ufcalendar.com.

    Annotations the server declares

    • title: Who should fight next
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 42Claude Code: allow
  • compare_fightersHead-to-head in one call: both bios and career statistics, strike location and position mix, current win streaks, previous meetings, common opponents with each result, the booked b…No findings

    Why it is in this group

    • The name "compare_fighters" says "compare": a word for reading.
    Description, as the server wrote it
    Head-to-head in one call: both bios and career statistics, strike location and position mix, current win streaks, previous meetings, common opponents with each result, the booked bout between them if one exists, UFCalendar's model win probability for it and the Power Index ratings. The tale-of-the-tape tool.

    Annotations the server declares

    • title: Compare two fighters
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • find_fightsTHE tool for last/first/most-recent questions — search completed bouts across UFCalendar's launch promotions by title fight, finish method (ko, sub, dec, finish), division, fighter…No findings

    Why it is in this group

    • The name "find_fights" says "find": a word for reading.
    Description, as the server wrote it
    THE tool for last/first/most-recent questions — search completed bouts across UFCalendar's launch promotions by title fight, finish method (ko, sub, dec, finish), division, fighter, winner, main-event only and date range, newest first by default. One call answers "the last title fight to end by knockout"; never page the schedule for it. At least one narrowing filter is required; 25 rows per page, 10 pages deep.

    Annotations the server declares

    • title: Find fights
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_articleOne UFCalendar article by slug: full body in Markdown (client widgets removed), title, summary, author, tags and publication date, in the requested language when a translation exis…No findings

    Why it is in this group

    • The name "get_article" says "get": a word for reading.
    Description, as the server wrote it
    One UFCalendar article by slug: full body in Markdown (client widgets removed), title, summary, author, tags and publication date, in the requested language when a translation exists (English otherwise). Betting editorial is not served.

    Annotations the server declares

    • title: Get an article
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_broadcast_rightsWho airs one promotion in each country: provider, kind and link.No findings

    Why it is in this group

    • The name "get_broadcast_rights" says "get": a word for reading.
    Description, as the server wrote it
    Who airs one promotion in each country: provider, kind and link. Pass a country code to narrow it to that market plus the worldwide row.

    Annotations the server declares

    • title: Get broadcast rights
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_calendar_feed_urlThe three subscribable ICS calendar feed URL templates for one promotion — per event, per card section, or per bout at its estimated start — with a <your-api-key> placeholder where…1 finding

    Why it is in this group

    • The name "get_calendar_feed_url" says "get": a word for reading.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...URL templates only, never the caller's credential; the human pastes the finished URL into..."

      What this check looks for
    Description, as the server wrote it
    The three subscribable ICS calendar feed URL templates for one promotion — per event, per card section, or per bout at its estimated start — with a <your-api-key> placeholder where the key goes. Returns URL templates only, never the caller's credential; the human pastes the finished URL into their calendar app.

    Annotations the server declares

    • title: Get calendar feed URLs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_championsEvery current champion across the promotions the API covers, with the division and the snapshot date the board was published.No findings

    Why it is in this group

    • The name "get_champions" says "get": a word for reading.
    Description, as the server wrote it
    Every current champion across the promotions the API covers, with the division and the snapshot date the board was published. Pass org (e.g. "ufc") and/or division (e.g. "lightweight") to narrow it.

    Annotations the server declares

    • title: Get current champions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_divisionOne weight class in one promotion: the current rankings board when the promotion publishes one, upcoming bouts booked at that weight, the most recent results and the active roster …No findings

    Why it is in this group

    • The name "get_division" says "get": a word for reading.
    Description, as the server wrote it
    One weight class in one promotion: the current rankings board when the promotion publishes one, upcoming bouts booked at that weight, the most recent results and the active roster by recency. The division-page answer in one call.

    Annotations the server declares

    • title: Get a division
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_event_cardFetch one event by slug or id with its complete bout order, both corners, venue, broadcast listings and results when the card has been fought.No findings

    Why it is in this group

    • The name "get_event_card" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one event by slug or id with its complete bout order, both corners, venue, broadcast listings and results when the card has been fought. Pass include=eta for per-bout estimated start times and include=odds for each bout's current UFCalendar consensus odds line (information only, not betting advice).

    Annotations the server declares

    • title: Get an event and its full card
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_event_changesThe audit trail for one card: bouts added or cancelled, opponents swapped, start times moved, fighter profiles merged — newest first.No findings

    Why it is in this group

    • The name "get_event_changes" says "get": a word for reading.
    Description, as the server wrote it
    The audit trail for one card: bouts added or cancelled, opponents swapped, start times moved, fighter profiles merged — newest first.

    Annotations the server declares

    • title: Get an event’s change log
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_event_oddsThe UFCalendar consensus odds line for every bout on one card, in card order: the current line, the opening line, the closing line once a bout is settled, and how far the market mo…No findings

    Why it is in this group

    • The name "get_event_odds" says "get": a word for reading.
    Description, as the server wrote it
    The UFCalendar consensus odds line for every bout on one card, in card order: the current line, the opening line, the closing line once a bout is settled, and how far the market moved since opening, each with how many sportsbooks backed it, plus every bout's prop markets (method of victory, total rounds, goes the distance). Unpriced bouts are listed with nulls. Book identities are never exposed. Information only, not betting advice.

    Annotations the server declares

    • title: Get consensus odds for a card
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_event_storylinesThe talking points of one card, computed from the record: title fights and title eliminators, the closest bout by UFCalendar's model, rematches and trilogy deciders, who is on a st…No findings

    Why it is in this group

    • The name "get_event_storylines" says "get": a word for reading.
    Description, as the server wrote it
    The talking points of one card, computed from the record: title fights and title eliminators, the closest bout by UFCalendar's model, rematches and trilogy deciders, who is on a streak, who is debuting or returning from a long layoff, the ranked fighters and champions on the card, nations represented, the tallest and longest-reach fighters and the fastest career finish on the bill.

    Annotations the server declares

    • title: Get event storylines
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_fightFetch one bout by id.No findings

    Why it is in this group

    • The name "get_fight" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one bout by id. Pass include=stats for per-fight totals, include=rounds for round-by-round statistics, include=scorecards for the official judges’ cards, include=odds for the current UFCalendar consensus odds line (the closing line once the bout is settled) (information only, not betting advice).

    Annotations the server declares

    • title: Get a bout
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_fight_oddsThe UFCalendar consensus odds line for one bout: the current line, the opening line, the closing line once the bout is settled, and the movement since opening in implied-probabilit…No findings

    Why it is in this group

    • The name "get_fight_odds" says "get": a word for reading.
    Description, as the server wrote it
    The UFCalendar consensus odds line for one bout: the current line, the opening line, the closing line once the bout is settled, and the movement since opening in implied-probability points, each point with its American and decimal price, implied and margin-removed probability and how many sportsbooks backed it. Also the prop markets: method of victory per corner (KO/TKO, submission, decision), total rounds over/under per line and whether it goes the distance. Book identities are never exposed. Information only, not betting advice.

    Annotations the server declares

    • title: Get consensus odds for a bout
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_fighterFetch one fighter by slug or id: bio, record, career statistics and freely licensed portraits.3 findings

    Why it is in this group

    • The name "get_fighter" says "get": a word for reading.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...s for the UFC bonus ledger, and include=credentials for grappling and wrestling pedigree, g..."

      What this check looks for
    • Info

      The input schema at properties.include.description mentions "credentials".

      Matched text

      inputSchema.properties.include.description: "...FOTN/POTN/KOTN/SOTN counts and fights); credentials = grappling and wrestling pedigree, gym..."

      What this check looks for
    • Info

      The input schema at properties.include.items.enum[5] mentions "credentials".

      Matched text

      inputSchema.properties.include.items.enum[5]: "credentials"

      What this check looks for
    Description, as the server wrote it
    Fetch one fighter by slug or id: bio, record, career statistics and freely licensed portraits. Pass include=history for the full multi-promotion career timeline, include=stats, include=rankings or include=power_index, include=bonuses for the UFC bonus ledger, and include=credentials for grappling and wrestling pedigree, gyms and coaches (sourced, confidence-graded). Always carries next_fight and last_fight.

    Annotations the server declares

    • title: Get a fighter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_judgeOne official's career aggregates by id: fights and rounds scored, rounds scored 10-8 or wider, three-judge cards that came back split, lone dissents, first and last date scored, an…No findings

    Why it is in this group

    • The name "get_judge" says "get": a word for reading.
    Description, as the server wrote it
    One official's career aggregates by id: fights and rounds scored, rounds scored 10-8 or wider, three-judge cards that came back split, lone dissents, first and last date scored, and the promotions worked. Same shape as a list_judges row; use get_judge_scorecards for the cards themselves.

    Annotations the server declares

    • title: Get a judge
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_judge_scorecardsEvery official card one judge has turned in, newest first: per-round points, card totals, decision type and point deductions.No findings

    Why it is in this group

    • The name "get_judge_scorecards" says "get": a word for reading.
    Description, as the server wrote it
    Every official card one judge has turned in, newest first: per-round points, card totals, decision type and point deductions. Each row flags lone dissents and split panels and shows the colleagues' totals. Commission records only.

    Annotations the server declares

    • title: Get a judge’s scorecards
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_leaderboardOne statistical leaderboard for one promotion from UFCalendar's Record Book rollup — career, single-fight, single-round, division or event boards across 48 metrics (wins, finishes,…No findings

    Why it is in this group

    • The name "get_leaderboard" says "get": a word for reading.
    Description, as the server wrote it
    One statistical leaderboard for one promotion from UFCalendar's Record Book rollup — career, single-fight, single-round, division or event boards across 48 metrics (wins, finishes, significant strikes, takedowns, control time, finish rate and more), optionally narrowed to a division, a country or active fighters. Ranked, with the sample size behind each value.

    Annotations the server declares

    • title: Get a stat leaderboard
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_matchmakerUFCalendar's matchmaker: the fights worth making in one promotion, scored for rank proximity, momentum, competitiveness and story (rematches, eliminators), per division or across t…No findings

    Why it is in this group

    • The name "get_matchmaker" says "get": a word for reading.
    Description, as the server wrote it
    UFCalendar's matchmaker: the fights worth making in one promotion, scored for rank proximity, momentum, competitiveness and story (rematches, eliminators), per division or across the roster. Our own engine over rankings, Power Index and recent form — not a list of booked bouts. Runs without the website's style-clash (Fight DNA) factor, so scores can differ slightly from ufcalendar.com.

    Annotations the server declares

    • title: Get the matchmaker board
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_next_eventThe single next upcoming card for one promotion, or across all of them: the soonest event that has not finished.No findings

    Why it is in this group

    • The name "get_next_event" says "get": a word for reading.
    Description, as the server wrote it
    The single next upcoming card for one promotion, or across all of them: the soonest event that has not finished. For UFC, developmental sub-series cards (Dana White's Contender Series, Road to UFC) are skipped while a numbered card or Fight Night is booked; pass skip_series=false to include them. Pass include_card=true to get the full bout list in the same metered call.

    Annotations the server declares

    • title: Get the next event
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_odds_historyEvery UFCalendar consensus odds point recorded for one bout, oldest first: the line-movement series, with how many sportsbooks backed each point.No findings

    Why it is in this group

    • The name "get_odds_history" says "get": a word for reading.
    Description, as the server wrote it
    Every UFCalendar consensus odds point recorded for one bout, oldest first: the line-movement series, with how many sportsbooks backed each point. A point is stored only when the line moves. Narrow with from/to dates; cursor paginated. Pro plans and up. Information only, not betting advice.

    Annotations the server declares

    • title: Get the odds line movement
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_orgFetch one promotion by slug (ufc, pfl, oktagon, bkfc or rizin): name, short name, country, website and its capability flags (stats, rounds, rankings, broadcasts, predictions, score…1 finding

    Why it is in this group

    • The name "get_org" says "get": a word for reading.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...same rows for every promotion without a credential."

      What this check looks for
    Description, as the server wrote it
    Fetch one promotion by slug (ufc, pfl, oktagon, bkfc or rizin): name, short name, country, website and its capability flags (stats, rounds, rankings, broadcasts, predictions, scorecards, odds; odds are information only, not betting advice). list_orgs returns the same rows for every promotion without a credential.

    Annotations the server declares

    • title: Get a promotion
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_pickem_splitsHow the UFCalendar community is picking each bout on one card: picks for each corner, the total and the percentage, in card order.No findings

    Why it is in this group

    • The name "get_pickem_splits" says "get": a word for reading.
    Description, as the server wrote it
    How the UFCalendar community is picking each bout on one card: picks for each corner, the total and the percentage, in card order. Crowd sentiment from our own pick'em game, not a market and not a forecast.

    Annotations the server declares

    • title: Get pick'em splits
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_plansList the UFCalendar Fight API plans, their monthly request quotas and per-minute limits, and the terms of the no-card trial.1 finding

    Why it is in this group

    • The name "get_plans" says "get": a word for reading.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...Answers "what does this cost" without a credential."

      What this check looks for
    Description, as the server wrote it
    List the UFCalendar Fight API plans, their monthly request quotas and per-minute limits, and the terms of the no-card trial. Answers "what does this cost" without a credential.

    Annotations the server declares

    • title: Plans and quotas
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_power_indexThe UFCalendar Power Index board for one promotion — our own rating engine, refreshed hourly, with peak rating and fights rated.No findings

    Why it is in this group

    • The name "get_power_index" says "get": a word for reading.
    Description, as the server wrote it
    The UFCalendar Power Index board for one promotion — our own rating engine, refreshed hourly, with peak rating and fights rated. Pass view=movers for the biggest risers over a window, view=peaks for all-time peak ratings, division= to narrow.

    Annotations the server declares

    • title: Get the UFCalendar Power Index board
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_predictions_upcomingUFCalendar model win probabilities for upcoming UFC bouts, published about three weeks out and repriced at least weekly.No findings

    Why it is in this group

    • The name "get_predictions_upcoming" says "get": a word for reading.
    Description, as the server wrote it
    UFCalendar model win probabilities for upcoming UFC bouts, published about three weeks out and repriced at least weekly. Corner-stamped, so a probability is never shown against the wrong pair. Pass event= to narrow to one card. Informational model output, not betting advice.

    Annotations the server declares

    • title: Get model win probabilities
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_rankingsThe official rankings board for one promotion, point-in-time: pass a date to read the board as it stood that day.No findings

    Why it is in this group

    • The name "get_rankings" says "get": a word for reading.
    Description, as the server wrote it
    The official rankings board for one promotion, point-in-time: pass a date to read the board as it stood that day. Rank 0 is the champion. Pass a division to narrow it. Each entry comes with movement against the previous snapshot (is_new for a debut), and meta names the previous and next snapshot dates.

    Annotations the server declares

    • title: Get a rankings board
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_record_bookThe Record Book for one promotion in one call: the top rows of every leaderboard, grouped by category — the all-time and single-night records an agent quotes.No findings

    Why it is in this group

    • The name "get_record_book" says "get": a word for reading.
    Description, as the server wrote it
    The Record Book for one promotion in one call: the top rows of every leaderboard, grouped by category — the all-time and single-night records an agent quotes. Narrow by division, country, active fighters or one scope.

    Annotations the server declares

    • title: Get the record book
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_usageHow many requests the calling account has used this month, the plan limit, the per-minute limit and when the counter resets — and, on the free 1-day trial, when the trial ends (tri…No findings

    Why it is in this group

    • The name "get_usage" says "get": a word for reading.
    Description, as the server wrote it
    How many requests the calling account has used this month, the plan limit, the per-minute limit and when the counter resets — and, on the free 1-day trial, when the trial ends (trial_ends_at).

    Annotations the server declares

    • title: Get your API usage
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_venueFetch one venue by id: name, city, region, country, capacity, coordinates and IANA time zone.No findings

    Why it is in this group

    • The name "get_venue" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one venue by id: name, city, region, country, capacity, coordinates and IANA time zone.

    Annotations the server declares

    • title: Get a venue
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_venue_eventsEvery covered event held at one venue, newest first — upcoming cards on top, then the history.No findings

    Why it is in this group

    • The name "get_venue_events" says "get": a word for reading.
    Description, as the server wrote it
    Every covered event held at one venue, newest first — upcoming cards on top, then the history. Same filters and row shape as list_events (status, from, to, order, cursor).

    Annotations the server declares

    • title: List events at a venue
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_year_statsOne calendar year of a promotion (or all covered promotions) in numbers: events and title fights, finish methods and busiest divisions, the fastest finishes, the biggest upsets and…No findings

    Why it is in this group

    • The name "get_year_stats" says "get": a word for reading.
    Description, as the server wrote it
    One calendar year of a promotion (or all covered promotions) in numbers: events and title fights, finish methods and busiest divisions, the fastest finishes, the biggest upsets and Power Index climbers, the busiest fighters, host countries and the most-used judges.

    Annotations the server declares

    • title: Get a year in review
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • how_to_connectExplain how to authenticate against the UFCalendar Fight API from this MCP server: an API key bearer token, or signing in with a UFCalendar account.No findings

    Why it is in this group

    • The description's first verb is "explain": a word for reading.
    Description, as the server wrote it
    Explain how to authenticate against the UFCalendar Fight API from this MCP server: an API key bearer token, or signing in with a UFCalendar account. Returns the URLs to do it.

    Annotations the server declares

    • title: How to connect
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_changesThe cross-event change feed, newest first: bouts added, cancelled or reinstated, opponents swapped, start times or venues moved, fighter profiles merged — across every covered prom…No findings

    Why it is in this group

    • The name "list_changes" says "list": a word for reading.
    Description, as the server wrote it
    The cross-event change feed, newest first: bouts added, cancelled or reinstated, opponents swapped, start times or venues moved, fighter profiles merged — across every covered promotion or one of them, since a date (default the last 90 days). The same audit trail webhooks deliver, for agents that poll instead.

    Annotations the server declares

    • title: List recent card changes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_eventsList fight cards by promotion, status and date range.No findings

    Why it is in this group

    • The name "list_events" says "list": a word for reading.
    Description, as the server wrote it
    List fight cards by promotion, status and date range. A bare call returns the upcoming schedule, soonest first; pass order=desc for the archive, newest first. Filter to title cards or PPVs with is_title_card / is_ppv, and pass include=headline for each card's main event (and its result once fought) in the same call. Cursor paginated.

    Annotations the server declares

    • title: List events
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_judgesThe judge directory with career aggregates: cards turned in, rounds scored, 10-8s, split cards and lone dissents, plus the league-wide baseline rates in meta.league.No findings

    Why it is in this group

    • The name "list_judges" says "list": a word for reading.
    Description, as the server wrote it
    The judge directory with career aggregates: cards turned in, rounds scored, 10-8s, split cards and lone dissents, plus the league-wide baseline rates in meta.league. Filter by name, promotion or a minimum number of fights.

    Annotations the server declares

    • title: List judges
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_orgsList the promotions the UFCalendar Fight API covers, with per-org capability flags (stats, rounds, rankings, broadcasts, predictions, scorecards, odds).No findings

    Why it is in this group

    • The name "list_orgs" says "list": a word for reading.
    Description, as the server wrote it
    List the promotions the UFCalendar Fight API covers, with per-org capability flags (stats, rounds, rankings, broadcasts, predictions, scorecards, odds). Odds are the UFCalendar consensus line: information only, not betting advice.

    Annotations the server declares

    • title: List promotions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_split_decisionsCompleted bouts decided on split or majority cards, newest first, with every judge's official card and the dissenting judge named — commission records only, across covered promotio…No findings

    Why it is in this group

    • The name "list_split_decisions" says "list": a word for reading.
    Description, as the server wrote it
    Completed bouts decided on split or majority cards, newest first, with every judge's official card and the dissenting judge named — commission records only, across covered promotions or one of them, in a date range. Facts as filed; UFCalendar adds no verdict of its own.

    Annotations the server declares

    • title: List split and majority decisions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_webhook_endpointsList the signed webhook endpoints registered on the calling account, with the event kinds each one subscribes to.No findings

    Why it is in this group

    • The name "list_webhook_endpoints" says "list": a word for reading.
    Description, as the server wrote it
    List the signed webhook endpoints registered on the calling account, with the event kinds each one subscribes to.

    Annotations the server declares

    • title: List webhook endpoints
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_articlesSearch UFCalendar's own editorial archive — previews, recaps, investigations, fighter-pay and technique pieces — by keyword or tag, newest first, in any of the 13 site languages.No findings

    Why it is in this group

    • The name "search_articles" says "search": a word for reading.
    Description, as the server wrote it
    Search UFCalendar's own editorial archive — previews, recaps, investigations, fighter-pay and technique pieces — by keyword or tag, newest first, in any of the 13 site languages. Returns title, summary, tags, date and the canonical URL; pass the slug to get_article for the body. Betting editorial is not served.

    Annotations the server declares

    • title: Search UFCalendar articles
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_fightersSearch the fighter roster by name, nationality or promotion.No findings

    Why it is in this group

    • The name "search_fighters" says "search": a word for reading.
    Description, as the server wrote it
    Search the fighter roster by name, nationality or promotion. Cursor paginated. Returns identity fields; use get_fighter for the full record.

    Annotations the server declares

    • title: Search the roster
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_venuesFind arenas and venues that have hosted a covered promotion, by name, city or country.No findings

    Why it is in this group

    • The name "search_venues" says "search": a word for reading.
    Description, as the server wrote it
    Find arenas and venues that have hosted a covered promotion, by name, city or country. Returns id, name, city, region, country, time zone and capacity; pass the id to get_venue_events for what was fought there.

    Annotations the server declares

    • title: Search venues
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.5.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http fight-api https://api.ufcalendar.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__fight-api__get_plans",
      "mcp__fight-api__list_orgs",
      "mcp__fight-api__how_to_connect",
      "mcp__fight-api__get_org",
      "mcp__fight-api__get_division",
      "mcp__fight-api__list_events",
      "mcp__fight-api__get_next_event",
      "mcp__fight-api__get_event_card",
      "mcp__fight-api__get_event_changes",
      "mcp__fight-api__list_changes",
      "mcp__fight-api__get_event_storylines",
      "mcp__fight-api__get_pickem_splits",
      "mcp__fight-api__get_event_odds",
      "mcp__fight-api__get_fight_odds",
      "mcp__fight-api__get_odds_history",
      "mcp__fight-api__get_fight",
      "mcp__fight-api__find_fights",
      "mcp__fight-api__search",
      "mcp__fight-api__search_fighters",
      "mcp__fight-api__get_fighter",
      "mcp__fight-api__compare_fighters",
      "mcp__fight-api__get_rankings",
      "mcp__fight-api__get_champions",
      "mcp__fight-api__get_power_index",
      "mcp__fight-api__get_matchmaker",
      "mcp__fight-api__get_leaderboard",
      "mcp__fight-api__get_record_book",
      "mcp__fight-api__get_year_stats",
      "mcp__fight-api__get_predictions_upcoming",
      "mcp__fight-api__get_broadcast_rights",
      "mcp__fight-api__list_judges",
      "mcp__fight-api__get_judge",
      "mcp__fight-api__get_judge_scorecards",
      "mcp__fight-api__list_split_decisions",
      "mcp__fight-api__get_usage",
      "mcp__fight-api__get_venue",
      "mcp__fight-api__search_venues",
      "mcp__fight-api__get_venue_events",
      "mcp__fight-api__search_articles",
      "mcp__fight-api__get_article",
      "mcp__fight-api__get_calendar_feed_url",
      "mcp__fight-api__list_webhook_endpoints"
    ],
    "ask": [
      "mcp__fight-api__how_to_watch",
      "mcp__fight-api__whos_next",
      "mcp__fight-api__create_webhook_endpoint"
    ],
    "deny": [
      "mcp__fight-api__rotate_webhook_secret",
      "mcp__fight-api__delete_webhook_endpoint"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as fight-api. Review it before you use it.