Connect UFCalendar Fight API — MMA and your agent gets 52 tools, among them compare_fighters, create_webhook_endpoint, delete_webhook_endpoint. It answers at https://api.ufcalendar.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 4 of 4 times since 23 September 2026; the last check, on 6 November 2026, succeeded.
MMA fight data: UFC, PFL, OKTAGON, BKFC, RIZIN events, results, stats, rankings, judges scorecards.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
compare_fighters | 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 proba Inputs: a, b |
create_webhook_endpoint | 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 on Inputs: url, events |
delete_webhook_endpoint | Permanently remove one webhook endpoint from the calling account. Deliveries to it stop and its delivery history is dropped. Inputs: endpoint_id |
find_fights | 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 de Inputs: org, title_only, method, division, fighter, winner |
get_article | 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. Inputs: slug, locale |
get_broadcast_rights | 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. Inputs: org, country, series |
get_calendar_feed_url | 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' Inputs: org |
get_champions | 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. Inputs: org, division |
get_coverage | What the database holds for each covered promotion, year by year: events, settled bouts and the share of them with per-fight stats, round-by-round stats, official commission scorecards and a UFCalendar consensus odds line (information only, Inputs: org |
get_division | 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. Inputs: org, division |
get_event_card | 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 UFCa Inputs: event, include |
get_event_changes | The audit trail for one card: bouts added or cancelled, opponents swapped, start times moved, fighter profiles merged — newest first. Inputs: event |
get_event_odds | 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, Inputs: event |
get_event_storylines | 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 r Inputs: event |
get_fight | 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 on Inputs: fight_id, include |
get_fight_odds | 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, im Inputs: fight_id |
get_fight_stats | Per-fight totals for both corners of one bout (strikes by target and position, takedowns, knockdowns, control and position time), each with UFCalendar fantasy points and their category breakdown, plus data-quality flags in meta.quality (rou Inputs: fight_id |
get_fighter | 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 th Inputs: fighter, include, history_limit |
get_judge | 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; us Inputs: judge_id |
get_judge_scorecards | 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. Inputs: judge_id, limit, cursor |
get_leaderboard | 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 a Inputs: org, metric, division, country, population, limit |
get_matchmaker | 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 rec Inputs: org, division, limit |
get_next_event | 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 Inputs: org, skip_series, include_card |
get_odds_history | 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 p Inputs: fight_id, from, to, limit, cursor |
get_org | 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). Inputs: org |
get_pickem_splits | 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. Inputs: event |
get_plans | List the UFCalendar Fight API plans, their monthly request quotas and per-minute limits, including the free plan (100 requests a month, no card). Answers "what does this cost" without a credential. |
get_power_index | 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 narro Inputs: org, view, division, days, limit |
get_predictions_upcoming | 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. Informationa Inputs: event |
get_rankings | 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 Inputs: org, division, date, board |
get_record_book | 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. Inputs: org, division, country, population, scope, top |
get_referee | One referee's career aggregates by slug (e.g. herb-dean): bouts worked per promotion, first and last bout, finish rate, method breakdown and average fight time. Same shape as a list_referees row; use get_referee_fights for the bouts themsel Inputs: referee |
get_referee_fights | Every settled bout one referee worked in the covered promotions, newest first, with both corners, the result and the event. Cursor paginated. Inputs: referee, limit, cursor |
get_usage | How many requests the calling account has used this month, the plan limit, the per-minute limit and when the counter resets — and, on an owner-granted trial, when the trial ends (trial_ends_at). |
get_venue | Fetch one venue by id: name, city, region, country, capacity, coordinates and IANA time zone. Inputs: venue_id |
get_venue_events | 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). Inputs: venue_id, status, from, to, order, limit |
get_year_stats | 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 Inputs: year, org |
how_to_connect | 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. |
how_to_watch | 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 mark Inputs: event, country |
list_changes | 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 Inputs: org, since, kind, limit, cursor |
list_events, list_judges, list_orgs, list_referees, list_split_decisions, list_webhook_endpoints, rotate_webhook_secret, search, search_articles, search_fighters, search_venues, whos_next
Every block below points at https://api.ufcalendar.com/mcp. Pick your client and copy.
claude mcp add --transport http ufcalendar-fight-api-mma https://api.ufcalendar.com/mcp
{
"mcpServers": {
"ufcalendar-fight-api-mma": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.ufcalendar.com/mcp"]
}
}
}{
"mcpServers": {
"ufcalendar-fight-api-mma": {
"url": "https://api.ufcalendar.com/mcp"
}
}
}{
"servers": {
"ufcalendar-fight-api-mma": {
"type": "http",
"url": "https://api.ufcalendar.com/mcp"
}
}
}{
"context_servers": {
"ufcalendar-fight-api-mma": {
"url": "https://api.ufcalendar.com/mcp"
}
}
}{
"mcpServers": {
"ufcalendar-fight-api-mma": {
"serverUrl": "https://api.ufcalendar.com/mcp"
}
}
}{
"mcpServers": {
"ufcalendar-fight-api-mma": {
"url": "https://api.ufcalendar.com/mcp"
}
}
}name: UFCalendar Fight API — MMA
version: 0.0.1
schema: v1
mcpServers:
- name: UFCalendar Fight API — MMA
type: streamable-http
url: https://api.ufcalendar.com/mcp{
"mcpServers": {
"ufcalendar-fight-api-mma": {
"httpUrl": "https://api.ufcalendar.com/mcp"
}
}
}{
"mcpServers": {
"ufcalendar-fight-api-mma": {
"type": "http",
"url": "https://api.ufcalendar.com/mcp"
}
}
}{
"mcpServers": {
"ufcalendar-fight-api-mma": {
"url": "https://api.ufcalendar.com/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.ufcalendar.com%2Fmcp&type=streamable_http&id=ufcalendar-fight-api-mma&name=UFCalendar%20Fight%20API%20%E2%80%94%20MMA
It answered our last check on 6 November 2026 in 446 ms. Over 4 checks since 23 September 2026 it answered 4. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by ufcalendar.com and served from api.ufcalendar.com, the vendor's own domain: https://api.ufcalendar.com/mcp.
52, as returned by the server's own tools/list on 11 November 2026: compare_fighters, create_webhook_endpoint, delete_webhook_endpoint, find_fights, get_article, get_broadcast_rights, get_calendar_feed_url, get_champions, and 44 more.
It answered our last check on 6 November 2026 in 446 ms. Over 4 checks since 23 September 2026 it answered 4.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.ufcalendar.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: com.ufcalendar. Endpoint host: api.ufcalendar.com. ARD identifier: urn:air:com.ufcalendar:mcp:fight-api.
First indexed 19 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.