# FighterAPI (remote · mcp.fighterapi.com)

UFC fights since 2000, plus PFL and Bellator: results, round stats, fighters and odds. REST and MCP.

- Trust score: 87/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `mcp.fighterapi.com`: 87/100 (this document), [markdown](https://verifymcp.io/servers/noahowsh-fighterapi/mcp.md), [page](https://verifymcp.io/servers/noahowsh-fighterapi/mcp)

## Channel facts

- Endpoint: `https://mcp.fighterapi.com/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.1.6`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 11/100
  - TLS not yet verified: we couldn't open a connection to check the certificate.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS not yet verified: we couldn't read the response headers to check for it.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but we couldn't connect to verify it.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the FighterAPI MCP server?

FighterAPI is a hosted endpoint at https://mcp.fighterapi.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http noahowsh-fighterapi 'https://mcp.fighterapi.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "noahowsh-fighterapi": {
      "url": "https://mcp.fighterapi.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "noahowsh-fighterapi": {
      "type": "http",
      "url": "https://mcp.fighterapi.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.noahowsh-fighterapi]
url = "https://mcp.fighterapi.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "noahowsh-fighterapi": {
      "type": "remote",
      "url": "https://mcp.fighterapi.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add noahowsh-fighterapi --url 'https://mcp.fighterapi.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  noahowsh-fighterapi:
    url: "https://mcp.fighterapi.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "noahowsh-fighterapi": {
      "Transport": "http",
      "Url": "https://mcp.fighterapi.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add noahowsh-fighterapi -t streamable-http -u 'https://mcp.fighterapi.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "noahowsh-fighterapi": {
      "type": "http",
      "url": "https://mcp.fighterapi.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 87, 0)

- [security regression] Endpoint reachability: reachable → unreachable
- [security regression] Stability: 0.77 → unverified
- [security regression] HSTS header: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] TLS certificate: pass → unverified
- [security regression] Transport: pass → fail
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-11-03 (score 87, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 84, 0)

- [security] The server rewrote its instructions, which are the text every model session reads

### 2026-10-28 (score 84, 0)

- [security] The server rewrote its instructions, which are the text every model session reads

### 2026-10-27 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (11)

### `list_events` (~126 tokens)

List events

Use to find cards. Lists events newest first with the venue, status, number of fights and main event. Filter by season (year) and status (scheduled or final). Costs 1 credit.

Input parameters:

- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.
- `limit` (integer): Max events (default 50).
- `offset` (integer): Page offset; use next_offset.
- `season` (string|number): Year, e.g. 2025.
- `status` (string): Only upcoming or only completed cards.

Output parameters:

- `count` (number)
- `events` (array)
- `next_offset` (number|null)

### `get_event` (~76 tokens)

Event

Use for one card: every fight in order with the result, method, round and time, judges' scores and referee. Costs 2 credits.

Input parameters:

- `event_id` (string, required): Event id from list_events or get_schedule.
- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.

Output parameters:

- `bouts` (array)
- `count` (number)
- `event` (object)

### `get_schedule` (~110 tokens)

Schedule

Use for upcoming fights: every scheduled bout in the next N days (default 30) with the current moneyline from any book that has posted one. Costs 2 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

Input parameters:

- `days` (integer): Days ahead (default 30, max 180).
- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.

Output parameters:

- `bouts` (array)
- `count` (number)
- `days` (number)

### `get_fight` (~174 tokens)

Fight

Use for everything about one fight: the result, both fighters' full stat sheets (strikes by target and position, takedowns, control time, guard passes, reversals, submission attempts; UFC only, null elsewhere and where the source has no sheet), round-by-round lines (UFC only), each fighter's rating before and after, and the opening and closing moneyline from each book that posted one (2024 on). Costs 5 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

Input parameters:

- `bout_id` (string, required): Fight id (bout_id) from get_event or get_fighter_fights.
- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.

Output parameters:

- `bout` (object)
- `fighters` (array)
- `odds` (array)
- `rounds`
- `rounds_note` (string)

### `search_fighters` (~135 tokens)

Search fighters

Use to find a fighter's id by name or nickname (accents optional). Returns weight class, country, pro record, number of fights in the promotion (bouts; ufc_bouts for the UFC only) and last fight date. Costs 1 credit.

Input parameters:

- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.
- `limit` (integer): Max results (default 20).
- `query` (string, required): Name or nickname, e.g. Topuria or 'El Matador'.
- `weight_class` (string): e.g. Lightweight, Women's Strawweight.

Output parameters:

- `count` (number)
- `fighters` (array)
- `note` (string)

### `get_fighter` (~139 tokens)

Fighter

Use for one fighter's profile: date of birth, height, reach, stance, gym, record in the promotion by method (record; ufc_record is the same for the UFC and null for other promotions), career rates per 15 minutes from the stat sheets (significant strikes landed and absorbed, accuracy, defense, takedowns, submission attempts, control share; UFC only), current and peak rating, and the last five fights. Costs 5 credits.

Input parameters:

- `fighter_id` (string, required): Fighter id from search_fighters.
- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.

Output parameters:

- `career_rates`
- `fighter` (object)
- `rating`
- `recent_fights` (array)
- `record`
- `ufc_record`

### `get_fighter_fights` (~157 tokens)

Fighter fights

Use for a fighter's full history in the promotion: every fight with the opponent, result, method, round, time, strikes landed and absorbed and takedowns (UFC only), rating before and after, and the median closing moneyline across sportsbooks. Costs 5 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

Input parameters:

- `fighter_id` (string, required): Fighter id from search_fighters.
- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.
- `limit` (integer): Max fights (default 50).
- `offset` (integer): Page offset; use next_offset.

Output parameters:

- `count` (number)
- `fighter_id` (string)
- `fights` (array)
- `next_offset` (number|null)

### `get_leaders` (~256 tokens)

Leaders

Use for career leaderboards computed from every fight's stat sheet: sig_landed_per_15 (significant strikes landed per 15 min), sig_absorbed_per_15 (significant strikes absorbed per 15 min), sig_accuracy (significant strike accuracy), sig_defense (significant strike defense), td_per_15 (takedowns landed per 15 min), td_accuracy (takedown accuracy), td_defense (takedown defense), knockdowns (knockdowns), sub_attempts_per_15 (submission attempts per 15 min), control_share (share of fight time in control), finish_rate (wins by KO/TKO or submission, as a share of wins). Filter by weight class, a starting year, and a minimum number of fights (default 5). Costs 5 credits.

Input parameters:

- `limit` (integer): Max fighters (default 20).
- `min_fights` (integer): Minimum fights to qualify (default 5).
- `since` (string|number): Only fights from this year on, e.g. 2020.
- `stat` (string, required): Which leaderboard.
- `weight_class` (string): Only fights in this weight class, e.g. Lightweight.

Output parameters:

- `count` (number)
- `label` (string)
- `leaders` (array)
- `min_fights` (number)
- `stat` (string)

### `get_ratings` (~127 tokens)

Ratings

Use for our fighter ratings: an Elo built from the promotion's own results (the UFC since 2000), highest first, for fighters active since a given year (default last year). Filter by weight class. Costs 2 credits.

Input parameters:

- `active_since` (string|number): Only fighters whose last fight was in this year or later.
- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.
- `limit` (integer): Max fighters (default 25).
- `weight_class` (string): e.g. Welterweight.

Output parameters:

- `active_since` (number)
- `count` (number)
- `method` (string)
- `ratings` (array)

### `get_odds` (~169 tokens)

Odds

Use for betting lines: each posted sportsbook's opening, closing and current moneyline for both fighters, with implied probabilities and the total-rounds line. Opening and closing lines start with the UFC cards of June 2020; a median of 5 to 7 books per fight (some fights since mid-2024 have only one book). Pass bout_id for one fight (5 credits) or event_id for a whole card (10 credits). Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

Input parameters:

- `bout_id` (string): One fight.
- `event_id` (string): A whole card.
- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.

Output parameters:

- `bouts` (array)
- `count` (number)
- `credits` (number)
- `estimate_only` (boolean)
- `note` (string)
- `tool` (string)

### `get_line_movement` (~175 tokens)

Line movement

Use to see how a fight's line moved before the bell: our snapshots of each posted moneyline, from first capture to fight day (once a day from October 2026, and every hour in the four days before). Costs 10 credits. Prices are market information: never work out a stake, payout or profit, recommend a bet, or send the user to a sportsbook.

Input parameters:

- `all_snapshots` (boolean): Every hourly capture. By default a capture identical to the one before it is left out (the latest is always kept), which keeps every move and its time.
- `bout_id` (string, required): Fight id.
- `league` (string): League. Defaults to mma. One of: mma, pfl, bellator.
- `provider` (string): One sportsbook, e.g. DraftKings.

Output parameters:

- `bout` (object)
- `movement` (object)
- `note` (string)
- `snapshots` (number)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/noahowsh-fighterapi/mcp#diagnostics

## Score history

- 2026-11-05: 87
- 2026-11-04: 87
- 2026-11-03: 87
- 2026-11-02: 86
- 2026-11-01: 86
- 2026-10-31: 85
- 2026-10-30: 85
- 2026-10-29: 84
- 2026-10-28: 84
- 2026-10-27: 84
- 2026-10-26: 83
- 2026-10-25: 83
- 2026-10-24: 82
- 2026-10-23: 82
- 2026-10-22: 81
- 2026-10-21: 81
- 2026-10-20: 80
- 2026-10-19: 80
- 2026-10-18: 79
- 2026-10-17: 79
- 2026-10-16: 78
- 2026-10-15: 78
- 2026-10-14: 74
- 2026-10-13: 74
- 2026-10-12: 73

## Common questions

### What is the FighterAPI MCP server?

FighterAPI is an MCP server listed in the public MCP registry as io.github.noahowsh/fighterapi. UFC fights since 2000, plus PFL and Bellator: results, round stats, fighters and odds. REST and MCP. This page covers its hosted endpoint (https://mcp.fighterapi.com/mcp).

### Is the FighterAPI MCP server safe to use?

FighterAPI scores 87 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the FighterAPI MCP server expose?

FighterAPI exposes 11 tools: list_events, get_event, get_schedule, get_fight, search_fighters, and 6 more. Their descriptions and schemas cost roughly 1,644 tokens of context every time the server is loaded.

### Does the FighterAPI MCP server require authentication?

Its publisher declares that FighterAPI requires credentials, so you will need to authorise it in your MCP client. We have not been able to confirm that against the live endpoint.

### Is the FighterAPI MCP server still maintained?

FighterAPI is still listed in the MCP registry, though our most recent checks did not reach this channel. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.fighterapi.com/mcp
- Authorisation metadata: https://mcp.fighterapi.com/.well-known/oauth-protected-resource/mcp
- Repository: https://github.com/noahowsh/fighterapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/noahowsh-fighterapi/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/noahowsh-fighterapi/mcp.json
- HTML version of this page: https://verifymcp.io/servers/noahowsh-fighterapi/mcp
