COMPOSITE event / fight-night card: identity, bout or match list, optional standings snippet.
When to use:
- UFC fight night / numbered event page ("UFC 300 card", "Fight Night")
- CS2 event hub with match list
- Tournament/event overview before match_preview drill-down
Bouts come back in card order — main event first, then prelims, then early prelims.
Each bout carries weightClass, titleBout, card placement, and (once fought) result
{ method, round, time, referee, winnerSlug }. Each corner carries images
{ headshotUrl, bodyImageUrl, imageUrl, proxiedImageUrl }, record, nickname, rank,
championStatus, country and flag when upstream supplies them. Use proxiedImageUrl in
browsers — the image host sends no CORS header. You do not need call_api per fighter for faces.
Prefer over: agent-side resolve + call_api /ufc/events + bout expansion; N+1 match_summary for the card list only; per-fighter call_api just to fetch headshots.
Prefer match_preview for one bout/match briefing; match_summary for completed recaps; live_matches for live-only strips; standings alone for pure tables.
Do not use when: you only need live scores (live_matches); single finished match recap (match_summary); no event name/id yet and game unknown.
Tennis: pass a tournament id/slug to get the draw bracket — rounds carry a round
code (Q1..R128, QF, SF, F) with each match's players and score. Set is the
primary tennis path here; there is no separate draw tool.
Parallel-safe: yes. Upstream cost: 1–4.
Example: { "game": "ufc", "eventIdOrSlug": "ufc-300", "includeMatches": true, "includeStandings": false }