MCP servers#
BSD runs a native MCP (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.
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:
- 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. Authorization: Token YOUR_API_KEY(orBearer) on every request.?token=YOUR_API_KEYquery 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 sendAccept: text/event-stream. - Methods:
initialize,notifications/initialized,tools/list,tools/call,resources/list,resources/read,ping. - A
Mcp-Session-Idheader is issued oninitializeand cached 24 h. - Football also exposes MCP resources:
bsd://leagues,bsd://teams,bsd://docs,bsd://openapi.
# 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.
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.