At the bell, the winner
is already in Cito.
Live strikes and takedowns on the current fight. Totals stay on the card. REST on Pro.
- Claude
- OpenAI
- Cursor
- Grok
- Gemini
- Copilot
- Perplexity
- Mistral
- DeepSeek
- Windsurf
- Cline
- Ollama
- OpenRouter
- LangChain
Ask Claude what is live.
It names the actual fight.
Product teams do not paste curl into Slack. They ask the agent on the desk. One command installs Cito MCP. Claude, Cursor, Codex, or Grok then call typed UFC tools. The agent resolves names to IDs. It does not invent a bout.
How MCP works →Tools your agent can call
live_matchesWho is fighting right nowevent_cardTonight's card, main event firstmatch_summaryResult, method, and fight totalsplayer_profileFighter form, record, and imageshead_to_headThe record between two fightersstandingsDivision rankings and championsupcoming_scheduleThe next events on the calendarresolve_entityA name to a typed Cito ID
npx cito-mcp install --key YOUR_KEYThe key stays on your machine.Here is the sample.
This is the live fight.
Poll GET /ufc/live every few seconds. You get the current bout, both corners, and running strike and takedown totals for as long as that fight is on. REST carries those numbers on Pro. WebSockets are a separate add-on for round, clock, and result. They are not required to ship a live board.
Live docs →{
"liveBouts": [{
"boutId": "b_8f21c4",
"status": "live", "round": 2, "clock": "3:12",
"liveStats": {
"red": { "sigStrikes": 5, "takedowns": 1, "control": "1:48" },
"blue": { "sigStrikes": 2, "takedowns": 0, "control": "0:22" }
}
}]
}- Poll the live fight while the night is on
- REST carries strike and takedown totals on Pro
- WebSockets optional. Not required for live stats
They built the recap.
Then the next fight started.
Live is only the fight happening now. When the next bout arms, that live payload is gone. If you only poll live, last fight's strikes vanish. This API writes the winner and the totals onto the event when the bout ends. The recap stays. The next fight can start.
Card API →Four calls.
The whole night.
You do not need a 40-endpoint integration to run a Fight Night. Live for the current bout. State for one known fight. Stats for fights that already ended. Health if you put a status light on the board.
UFC docs →live
Who is fighting now, plus live strike and takedown totals.
live/{boutId}/state
The same live payload for one known fight.
events/{slug}/stats
Totals for fights that already ended on this card.
live/health
Is the live worker current, and which fight is it on.
The questions that stop a key
Can I get live fight data during a card?
Yes. Poll while the night is running. You see the current fight, both corners, live strike and takedown totals, and the winner as soon as the bout ends. You do not wait for the main event. REST live is on Pro.
Do I need WebSockets?
No. Strike and takedown totals come over REST. Buy WebSockets only if you want round, clock, and result pushed. They are not required to ship a live board.
How do I use this with Claude or Cursor?
Create a key. Run npx cito-mcp install. Ask what is live on UFC. The agent uses tools. You do not paste curl, and it does not invent fight IDs.
Why not only poll the live fight?
Live is the current bout. When the next fight starts, that live payload is gone. Finished totals live on the event stats path so the recap does not go blank.
Are you affiliated with the UFC?
No. Cito API is an independent data aggregator and is not affiliated with, endorsed by, or licensed by the UFC, Zuffa, TKO Group, Endeavor, Riot Games, Valve, Activision, Epic Games, or any other league, promotion, or rights holder. Data is compiled from publicly accessible sources and is not an official or rights-cleared feed. See our Terms of Service.
Take the sample.
Poll the next card.
The key is free to try. If you ship a commercial MMA product, that is Pro at $59.