{"openapi":"3.1.0","info":{"title":"BALLDONTLIE La Liga (BYOK) API","version":"0.1.0","description":"BALLDONTLIE La Liga (BYOK) lets an AI assistant read your own BALLDONTLIE La Liga data through the BALLDONTLIE La Liga API with a key you supply (BALLDONTLIE API key). Read-only: 10 tools (list_teams, get_rosters, list_players, get_standings, list_matches, list_match_events, list_match_lineups, list_player_match_stats, list_team_match_stats, list_player_injuries). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-balldontlie-laliga.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-balldontlie-laliga/docs"},"termsOfService":"https://connectorbay.com/byok-balldontlie-laliga/terms"},"servers":[{"url":"https://byok-balldontlie-laliga.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-balldontlie-laliga/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_teams":{"post":{"operationId":"list_teams","summary":"List the La Liga clubs of a season with name, abbreviation and location. Use for \"Which clubs play in the La Liga this s","description":"List the La Liga clubs of a season with name, abbreviation and location. Use for \"Which clubs play in the La Liga this season\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by season year. Defaults to the current season if omitted.","title":"Season"}},"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/get_rosters":{"post":{"operationId":"get_rosters","summary":"Show the squad of one La Liga club for a season with jersey numbers, positions and active flags. Use for \"Who is in the ","description":"Show the squad of one La Liga club for a season with jersey numbers, positions and active flags. Use for \"Who is in the squad of La Liga club 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Team ID.","title":"Team Id","type":"integer"},"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by season year.","title":"Season"}},"required":["team_id"],"title":"get_rostersArguments","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_players":{"post":{"operationId":"list_players","summary":"Search La Liga players by name or club with birth date, age, height, weight, citizenship and preferred foot. Use for \"Fi","description":"Search La Liga players by name or club with birth date, age, height, weight, citizenship and preferred foot. Use for \"Find the La Liga player Lamine Yamal\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor: pass the next_cursor value from the previous answer to get the following page.","title":"Cursor"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page (1 to 100).","title":"Per Page"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by team IDs. One value.","title":"Team Id"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search players by name.","title":"Search"}},"title":"list_playersArguments","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_standings":{"post":{"operationId":"get_standings","summary":"Show the La Liga table for a season with rank, games played, record, points and goals. Use for \"What does the La Liga ta","description":"Show the La Liga table for a season with rank, games played, record, points and goals. Use for \"What does the La Liga table look like\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by season year.","title":"Season"}},"title":"get_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_matches":{"post":{"operationId":"list_matches","summary":"List La Liga matches by season, date or club with status, score and venue. Use for \"What were the La Liga results on 202","description":"List La Liga matches by season, date or club with status, score and venue. Use for \"What were the La Liga results on 2026-03-01\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor: pass the next_cursor value from the previous answer to get the following page.","title":"Cursor"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page (1 to 100).","title":"Per Page"},"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by season year.","title":"Season"},"date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by specific dates (YYYY-MM-DD format). One value.","title":"Date"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by team IDs. One value.","title":"Team Id"}},"title":"list_matchesArguments","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_match_events":{"post":{"operationId":"list_match_events","summary":"List goals, cards and other events of La Liga matches with the minute and the players involved. Use for \"Who scored in L","description":"List goals, cards and other events of La Liga matches with the minute and the players involved. Use for \"Who scored in La Liga match 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor: pass the next_cursor value from the previous answer to get the following page.","title":"Cursor"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page (1 to 100).","title":"Per Page"},"match_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by match IDs. One value.","title":"Match Id"}},"title":"list_match_eventsArguments","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_match_lineups":{"post":{"operationId":"list_match_lineups","summary":"List the players of La Liga matches with starter flag, position, formation slot and jersey number. Use for \"What was the","description":"List the players of La Liga matches with starter flag, position, formation slot and jersey number. Use for \"What was the starting eleven in La Liga match 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor: pass the next_cursor value from the previous answer to get the following page.","title":"Cursor"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page (1 to 100).","title":"Per Page"},"match_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by match IDs. One value.","title":"Match Id"}},"title":"list_match_lineupsArguments","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_player_match_stats":{"post":{"operationId":"list_player_match_stats","summary":"List player statistics per La Liga match such as goals, assists, shots and saves. Use for \"How many shots did La Liga pl","description":"List player statistics per La Liga match such as goals, assists, shots and saves. Use for \"How many shots did La Liga player 1 take in match 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor: pass the next_cursor value from the previous answer to get the following page.","title":"Cursor"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page (1 to 100).","title":"Per Page"},"match_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by match IDs. One value.","title":"Match Id"},"player_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by player IDs. One value.","title":"Player Id"}},"title":"list_player_match_statsArguments","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_team_match_stats":{"post":{"operationId":"list_team_match_stats","summary":"List club statistics per La Liga match such as possession, shots, corners, cards and expected goals. Use for \"What was t","description":"List club statistics per La Liga match such as possession, shots, corners, cards and expected goals. Use for \"What was the possession split in La Liga match 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor: pass the next_cursor value from the previous answer to get the following page.","title":"Cursor"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page (1 to 100).","title":"Per Page"},"match_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by match IDs. One value.","title":"Match Id"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by team IDs. One value.","title":"Team Id"}},"title":"list_team_match_statsArguments","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_player_injuries":{"post":{"operationId":"list_player_injuries","summary":"List reported La Liga player injuries with injury type and status. Needs the GOAT plan or higher. Use for \"Which La Liga","description":"List reported La Liga player injuries with injury type and status. Needs the GOAT plan or higher. Use for \"Which La Liga players are injured\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor: pass the next_cursor value from the previous answer to get the following page.","title":"Cursor"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page (1 to 100).","title":"Per Page"},"player_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by player IDs. One value.","title":"Player Id"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by team IDs. One value.","title":"Team Id"},"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by injury statuses, such as OUT, GTD, or SUS. One value.","title":"Status"}},"title":"list_player_injuriesArguments","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}}}}