{"openapi":"3.1.0","info":{"title":"Sportmonks Motorsport (BYOK) API","version":"0.1.0","description":"Sportmonks Motorsport (BYOK) lets an AI assistant read your own Sportmonks Motorsport data through the Sportmonks Motorsport API with a key you supply (Sportmonks API token). Read-only: 12 tools (list_leagues, list_seasons, get_schedule, list_stages_by_season, list_fixtures_by_date, list_fixtures_between_dates, get_driver_standings, get_team_standings, list_drivers_by_season, search_drivers,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sportmonks-motorsport.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sportmonks-motorsport/docs"},"termsOfService":"https://connectorbay.com/byok-sportmonks-motorsport/terms"},"servers":[{"url":"https://byok-sportmonks-motorsport.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sportmonks-motorsport/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_leagues":{"post":{"operationId":"list_leagues","summary":"List motorsport leagues covered (for example Formula 1) with id, name, short code and last played time. Use for \"Which m","description":"List motorsport leagues covered (for example Formula 1) with id, name, short code and last played time. Use for \"Which motorsport leagues does the API cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 50, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next_cursor of the previous answer, to get the next page.","title":"Cursor"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order by id: asc or desc.","title":"Order"}},"title":"list_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}},"/v1/tools/list_seasons":{"post":{"operationId":"list_seasons","summary":"List motorsport seasons with id, league, name, start and end date, and whether the season is current or finished. Use fo","description":"List motorsport seasons with id, league, name, start and end date, and whether the season is current or finished. Use for \"What is the id of the current Formula 1 season\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 50, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next_cursor of the previous answer, to get the next page.","title":"Cursor"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order by id: asc or desc.","title":"Order"}},"title":"list_seasonsArguments","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/get_schedule":{"post":{"operationId":"get_schedule","summary":"Get a season's race calendar: each race weekend (stage) with its dates and the sessions (fixtures: practice, qualifying,","description":"Get a season's race calendar: each race weekend (stage) with its dates and the sessions (fixtures: practice, qualifying, race) with start times and venues. Large for a full season. Use for \"What is the 2025 Formula 1 calendar\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"season_id":{"description":"Season id as returned by list_seasons (field id), for example 25273.","title":"Season Id","type":"integer"}},"required":["season_id"],"title":"get_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/list_stages_by_season":{"post":{"operationId":"list_stages_by_season","summary":"List the race weekends (stages) of a season with name, order, dates and finished or current flags. Use for \"Which race w","description":"List the race weekends (stages) of a season with name, order, dates and finished or current flags. Use for \"Which race weekends are in the 2025 season\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"season_id":{"description":"Season id as returned by list_seasons (field id), for example 25273.","title":"Season Id","type":"integer"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 50, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next_cursor of the previous answer, to get the next page.","title":"Cursor"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order by id: asc or desc.","title":"Order"}},"required":["season_id"],"title":"list_stages_by_seasonArguments","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/list_fixtures_by_date":{"post":{"operationId":"list_fixtures_by_date","summary":"List the sessions (practice, qualifying, sprint, race) scheduled on one date with name, start time, venue id and result ","description":"List the sessions (practice, qualifying, sprint, race) scheduled on one date with name, start time, venue id and result text. Use for \"Which motorsport sessions are on 2026-03-14\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date":{"description":"Date written YYYY-MM-DD, for example 2026-03-14.","maxLength":10,"title":"Date","type":"string"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 50, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next_cursor of the previous answer, to get the next page.","title":"Cursor"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order by id: asc or desc.","title":"Order"}},"required":["date"],"title":"list_fixtures_by_dateArguments","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/list_fixtures_between_dates":{"post":{"operationId":"list_fixtures_between_dates","summary":"List the sessions scheduled between two dates (at most 100 days apart) with name, start time, venue id and result text. ","description":"List the sessions scheduled between two dates (at most 100 days apart) with name, start time, venue id and result text. Use for \"Which motorsport sessions are scheduled in March 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First date, YYYY-MM-DD, for example 2026-03-06.","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last date, YYYY-MM-DD, at most 100 days after the first, for example 2026-03-22.","maxLength":10,"title":"End Date","type":"string"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 50, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next_cursor of the previous answer, to get the next page.","title":"Cursor"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order by id: asc or desc.","title":"Order"}},"required":["start_date","end_date"],"title":"list_fixtures_between_datesArguments","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/get_driver_standings":{"post":{"operationId":"get_driver_standings","summary":"Get a season's drivers' championship standings with position and points; add include=participant to receive each driver'","description":"Get a season's drivers' championship standings with position and points; add include=participant to receive each driver's name. Use for \"Who leads the drivers' championship this season\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"season_id":{"description":"Season id as returned by list_seasons (field id), for example 25273.","title":"Season Id","type":"integer"},"include":{"anyOf":[{"const":"participant","type":"string"},{"type":"null"}],"default":null,"description":"Set to participant to attach the driver record to each row.","title":"Include"}},"required":["season_id"],"title":"get_driver_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/get_team_standings":{"post":{"operationId":"get_team_standings","summary":"Get a season's constructors' championship standings with position and points; add include=participant to receive each te","description":"Get a season's constructors' championship standings with position and points; add include=participant to receive each team's name. Use for \"Which team leads the constructors' championship\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"season_id":{"description":"Season id as returned by list_seasons (field id), for example 25273.","title":"Season Id","type":"integer"},"include":{"anyOf":[{"const":"participant","type":"string"},{"type":"null"}],"default":null,"description":"Set to participant to attach the team record to each row.","title":"Include"}},"required":["season_id"],"title":"get_team_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/list_drivers_by_season":{"post":{"operationId":"list_drivers_by_season","summary":"List the drivers who take part in a season with name, country and nationality ids. Use for \"Who drives in the 2025 seaso","description":"List the drivers who take part in a season with name, country and nationality ids. Use for \"Who drives in the 2025 season\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"season_id":{"description":"Season id as returned by list_seasons (field id), for example 25273.","title":"Season Id","type":"integer"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 50, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next_cursor of the previous answer, to get the next page.","title":"Cursor"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order by id: asc or desc.","title":"Order"}},"required":["season_id"],"title":"list_drivers_by_seasonArguments","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/search_drivers":{"post":{"operationId":"search_drivers","summary":"Search drivers by name and return matches with id and name. Use for \"Find the driver Verstappen\".","description":"Search drivers by name and return matches with id and name. Use for \"Find the driver Verstappen\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_query":{"description":"Part of a driver's name, for example Verstappen.","maxLength":60,"title":"Search Query","type":"string"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 50, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next_cursor of the previous answer, to get the next page.","title":"Cursor"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order by id: asc or desc.","title":"Order"}},"required":["search_query"],"title":"search_driversArguments","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/list_teams":{"post":{"operationId":"list_teams","summary":"List motorsport teams with id, name, short code, country, founding year and type. Use for \"Which teams compete in Formul","description":"List motorsport teams with id, name, short code, country, founding year and type. Use for \"Which teams compete in Formula 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 50, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next_cursor of the previous answer, to get the next page.","title":"Cursor"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order by id: asc or desc.","title":"Order"}},"title":"list_teamsArguments","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/list_venues":{"post":{"operationId":"list_venues","summary":"List racing venues (tracks) with name, surface, capacity and coordinates. Use for \"Which circuits are in the calendar an","description":"List racing venues (tracks) with name, surface, capacity and coordinates. Use for \"Which circuits are in the calendar and where are they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 50, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next_cursor of the previous answer, to get the next page.","title":"Cursor"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order by id: asc or desc.","title":"Order"}},"title":"list_venuesArguments","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}}}}