{"openapi":"3.1.0","info":{"title":"Scoreboard API","version":"0.1.0","description":"Scores, schedules, standings, box scores and players — MLB, NHL, Bundesliga, F1 (keyless) and European football with a key.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://scoreboard.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/scoreboard/docs"},"termsOfService":"https://connectorbay.com/scoreboard/terms"},"servers":[{"url":"https://scoreboard.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/scoreboard/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/scores":{"post":{"operationId":"scores","summary":"Games and results for a day: teams, score, status (Final/OT, Live with inning or period, Scheduled with start time),","description":"Games and results for a day: teams, score, status (Final/OT, Live with inning or period, Scheduled with start time),\n    venue and links. 'all' covers MLB, NHL and the Bundesliga together (plus configured football leagues). Use for \"scores\n    tonight\", \"did the Yankees win yesterday\", \"Bundesliga results this weekend\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"league":{"default":"all","description":"'mlb', 'nhl', 'bundesliga' (also 'bl2', 'dfb'), 'f1', or a football competition ('premier league', 'la liga', 'serie a', 'ligue 1', 'champions league'…) when a key is configured; 'all' for everything today.","examples":["mlb","nhl","f1"],"title":"League","type":"string"},"day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"'today' (default), 'yesterday', 'tomorrow' or YYYY-MM-DD.","title":"Day"}},"title":"scoresArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/schedule":{"post":{"operationId":"schedule","summary":"A team's coming games (and recent results): opponent, home/away, date and start time, status and score where played.","description":"A team's coming games (and recent results): opponent, home/away, date and start time, status and score where played.\n    Works for MLB, NHL and Bundesliga teams. Use for \"when do the Leafs play next\", \"Yankees schedule this week\", \"Bayern's\n    next match\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team":{"description":"Team by city, nickname or abbreviation: 'Yankees', 'Toronto', 'EDM', 'Bayern', 'Dortmund'.","examples":["Yankees","Maple Leafs","Bayern"],"title":"Team","type":"string"},"days":{"default":10,"description":"Days ahead to include (1–31).","maximum":31,"minimum":1,"title":"Days","type":"integer"}},"required":["team"],"title":"scheduleArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/standings":{"post":{"operationId":"standings","summary":"League standings: MLB by division (W-L, pct, games back, wild-card GB, streak, last 10, run diff), NHL by division","description":"League standings: MLB by division (W-L, pct, games back, wild-card GB, streak, last 10, run diff), NHL by division\n    (points, ROW-style record, goal diff, streak, wild card), Bundesliga table, F1 driver and constructor championships, or a\n    football league table (with key). Use for \"AL East standings\", \"who's top of the NHL\", \"Bundesliga table\", \"F1 points\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"league":{"description":"'mlb', 'nhl', 'bundesliga' (also 'bl2', 'dfb'), 'f1', or a football competition ('premier league', 'la liga', 'serie a', 'ligue 1', 'champions league'…) when a key is configured; 'all' for everything today.","examples":["mlb","nhl","f1"],"title":"League","type":"string"}},"required":["league"],"title":"standingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/game":{"post":{"operationId":"game","summary":"A box score: MLB line score by inning, runs/hits/errors, top hitters, every pitcher's line and the win/loss/save","description":"A box score: MLB line score by inning, runs/hits/errors, top hitters, every pitcher's line and the win/loss/save\n    decisions; NHL score, shots, top skaters and goalies with saves. Use for \"box score of last night's Yankees game\", \"who\n    pitched for the Dodgers\", \"how many saves did the goalie make\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"league":{"description":"'mlb' or 'nhl'.","examples":["mlb"],"title":"League","type":"string"},"game_id":{"description":"Game id from scores/schedule.","title":"Game Id","type":"integer"}},"required":["league","game_id"],"title":"gameArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/player":{"post":{"operationId":"player","summary":"A player's profile and stats: MLB (team, position, bio, this season's hitting and/or pitching line) or NHL (team,","description":"A player's profile and stats: MLB (team, position, bio, this season's hitting and/or pitching line) or NHL (team,\n    position, bio, this season's and career scoring or goaltending). Use for \"Ohtani's numbers this year\", \"how many points\n    does McDavid have\", \"who is Bobby Witt Jr.\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Player name.","examples":["Shohei Ohtani","Connor McDavid"],"title":"Name","type":"string"},"league":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"'mlb' or 'nhl' to narrow; both searched when omitted.","title":"League"}},"required":["name"],"title":"playerArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/team":{"post":{"operationId":"team","summary":"Resolve a team by city, nickname or abbreviation across MLB, NHL and the Bundesliga: league, division/conference,","description":"Resolve a team by city, nickname or abbreviation across MLB, NHL and the Bundesliga: league, division/conference,\n    venue, and its current standing line. Use for \"which division are the Guardians in\", \"is Toronto in the NHL East\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Team by city, nickname or abbreviation: 'Yankees', 'Toronto', 'EDM', 'Bayern', 'Dortmund'.","examples":["Yankees","Maple Leafs","Bayern"],"title":"Name","type":"string"}},"required":["name"],"title":"teamArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/f1":{"post":{"operationId":"f1","summary":"Formula 1: the next Grand Prix with practice/qualifying/sprint/race times (UTC), the last race's full results with grid,","description":"Formula 1: the next Grand Prix with practice/qualifying/sprint/race times (UTC), the last race's full results with grid,\n    laps, time/status and points, the season calendar, driver and constructor standings, or any round's results. Use for\n    \"when is the next F1 race\", \"who won in Baku\", \"F1 standings\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"what":{"default":"next","description":"'next' (next race with session times), 'last' (last race results), 'calendar' (whole season), 'standings', or a round number for that race's results.","examples":["next","last","standings"],"title":"What","type":"string"}},"title":"f1Arguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/leagues":{"post":{"operationId":"leagues","summary":"Which leagues Scoreboard covers and how (keyless vs key-required), with the team names it knows.","description":"Which leagues Scoreboard covers and how (keyless vs key-required), with the team names it knows.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"leaguesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}