---
title: MCP servers
description: Native Model Context Protocol servers for every sport — connect Claude or any MCP client, with OAuth or token auth. Tool reference included.
---

# MCP servers

BSD runs a native [MCP](https://modelcontextprotocol.io) (Model Context
Protocol) server per sport, speaking **Streamable HTTP**. Connect one to
Claude or any MCP-compatible client and the agent can query live sports data
with typed tools. Responses are identical to the REST API shapes.

Step-by-step connection guide: [Use BSD from AI agents](/docs/guides/ai-agents/).

## Servers

| URL | Tools | Access |
|---|---|---|
| `https://sports.bzzoiro.com/mcp` | Football — 26 tools | Free |
| `https://sports.bzzoiro.com/tennis/mcp` | Tennis — 8 tools | Sports Addon |
| `https://sports.bzzoiro.com/csgo/mcp` | CS2 — 10 tools | Sports Addon |
| `https://sports.bzzoiro.com/darts/mcp` | Darts — 7 tools | Sports Addon |
| `https://sports.bzzoiro.com/hockey/mcp` | Hockey — 6 tools | Sports Addon |
| `https://sports.bzzoiro.com/basketball/mcp` | Basketball — 12 tools | Sports Addon |
| `https://sports.bzzoiro.com/horseracing/mcp` | Horse racing — 11 tools | Sports Addon |

## Authentication

Three options, in order of convenience:

1. **OAuth 2.1 + PKCE** — what Claude's custom connectors use. Dynamic client
   registration at `/oauth/register`, discovery at
   `/.well-known/oauth-authorization-server`. You sign in with your BSD
   account in the browser; no token handling.
2. **`Authorization: Token YOUR_API_KEY`** (or `Bearer`) on every request.
3. `?token=YOUR_API_KEY` query parameter (avoid outside testing).

Discovery probes — `initialize`, `ping`, `tools/list`, `resources/list` —
work **unauthenticated**, so clients can validate a server URL before
sign-in. `tools/call` always requires auth; gated sports additionally
require the Sports Addon (HTTP `402` otherwise).

## Protocol details

- JSON-RPC 2.0 over `POST` (single or batch); responses switch to SSE when
  you send `Accept: text/event-stream`.
- Methods: `initialize`, `notifications/initialized`, `tools/list`,
  `tools/call`, `resources/list`, `resources/read`, `ping`.
- A `Mcp-Session-Id` header is issued on `initialize` and cached 24 h.
- Football also exposes MCP resources: `bsd://leagues`, `bsd://teams`,
  `bsd://docs`, `bsd://openapi`.

```bash
# List football tools without auth
curl -X POST https://sports.bzzoiro.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

## Tool reference

### Football (free)

Matches: `search_matches`, `get_match_detail` (lineups + incidents + stats +
odds + prediction + h2h + AI preview), `get_match_h2h`, `get_match_lineups`,
`get_match_shotmap` (per-shot xG), `get_match_incidents`, `get_live_scores`.
Teams/players: `search_teams`, `get_team_detail`, `get_team_fixtures`,
`get_team_squad`, `search_players`, `get_player_detail`, `get_player_stats`.
Competitions: `list_leagues`, `get_standings`, `list_seasons`, `get_season`
(both require `league_id`). Odds & predictions: `compare_odds`,
`get_best_odds`, `list_bookmakers`, `get_polymarket_odds`, `get_predictions`.
People/places/media: `search_managers`, `get_manager_detail`,
`list_referees`, `list_venues`, `get_venue`, `list_social_items`,
`list_tv_channels`, `list_broadcasts`.

Weight of Money (needs its own subscription — these three answer `402` with a
subscribe link otherwise): `get_money` (money matched per selection on one
match), `get_money_history` (how the split moved), `list_money_movers` (where
money and price disagree most across every covered match). They describe money
flow, not outcomes — see [Weight of Money API](/docs/wom/).

### Tennis

`list_tournaments`, `list_players`, `search_players`, `list_matches`,
`get_match`, `get_match_h2h`, `get_predictions`, `get_rankings` (ATP/WTA).

### CS2

`list_tournaments`, `list_teams`, `search_teams`, `search_players`,
`list_matches`, `get_match`, `get_predictions`, `get_team` (ELO, form, map
pool), `get_player` (KD, damage, clutches), `get_tournament`.

### Darts

`list_tournaments`, `list_players`, `search_players`, `list_matches`,
`get_match`, `get_predictions`, `get_rankings` (PDC/ProTour).

### Hockey

`list_leagues`, `list_teams`, `search_teams`, `list_matches`, `get_match`,
`get_predictions`.

### Basketball

`list_leagues`, `list_teams`, `search_teams`, `list_events`, `get_event`,
`get_predictions`, `search_players`, `get_player`, `get_box_score`,
`get_team_stats`, `get_pregame`, `get_standings`.

### Horse racing

`list_meetings`, `list_races`, `get_race`, `list_runners`, `get_runner`,
`compare_odds`, `search_horses`, `search_jockeys`, `search_trainers`,
`get_horse`, `get_jockey`, `next_to_jump`.

> **Note:** always pass BSD internal ids to tools. Resolve names with the
> `search_*` / `list_*` tools first.
