{"openapi":"3.1.0","info":{"title":"BALLDONTLIE WTA (BYOK) API","version":"0.1.0","description":"BALLDONTLIE WTA (BYOK) lets an AI assistant read your own BALLDONTLIE WTA data through the BALLDONTLIE WTA API with a key you supply (BALLDONTLIE API key). Read-only: 10 tools (list_players, get_player, list_tournaments, get_tournament, get_rankings, list_matches, get_match, list_match_stats, list_player_career_stats, get_head_to_head). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-balldontlie-wta.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-balldontlie-wta/docs"},"termsOfService":"https://connectorbay.com/byok-balldontlie-wta/terms"},"servers":[{"url":"https://byok-balldontlie-wta.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-balldontlie-wta/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_players":{"post":{"operationId":"list_players","summary":"List or search WTA women's singles players by name or country, with age, height, playing hand and birthplace. Available ","description":"List or search WTA women's singles players by name or country, with age, height, playing hand and birthplace. Available on the free plan. Use for \"Find the tennis player Iga Swiatek\".","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"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search by player name.","title":"Search"},"first_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by first name.","title":"First Name"},"last_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by last name.","title":"Last Name"},"country":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by country.","title":"Country"},"country_code":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by country code (e.g., USA, POL).","title":"Country Code"}},"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_player":{"post":{"operationId":"get_player","summary":"Get one WTA player by id: country, age, height, weight, playing hand and the year she turned professional. Available on ","description":"Get one WTA player by id: country, age, height, weight, playing hand and the year she turned professional. Available on the free plan. Use for \"Show the profile of WTA player 2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"player_id":{"description":"Numeric player id as returned by the list endpoint.","title":"Player Id","type":"integer"}},"required":["player_id"],"title":"get_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/list_tournaments":{"post":{"operationId":"list_tournaments","summary":"List WTA tournaments, filterable by season, surface and category such as Grand Slam or WTA 1000. Available on the free p","description":"List WTA tournaments, filterable by season, surface and category such as Grand Slam or WTA 1000. Available on the free plan. Use for \"Which WTA 1000 tournaments are played on clay in 2026\".","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"},"tournament_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by tournament IDs. One value.","title":"Tournament Id"},"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by season year.","title":"Season"},"surface":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by surface (Hard, Clay, Grass, Carpet).","title":"Surface"},"category":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by category (Grand Slam, WTA 1000, WTA 500, WTA 250).","title":"Category"}},"title":"list_tournamentsArguments","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_tournament":{"post":{"operationId":"get_tournament","summary":"Get one WTA tournament by id with location, surface, category, dates, prize money and draw size. Available on the free p","description":"Get one WTA tournament by id with location, surface, category, dates, prize money and draw size. Available on the free plan. Use for \"Give me the details of WTA tournament 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tournament_id":{"description":"Numeric tournament id as returned by the list endpoint.","title":"Tournament Id","type":"integer"},"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Get tournament info for specific season year.","title":"Season"}},"required":["tournament_id"],"title":"get_tournamentArguments","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_rankings":{"post":{"operationId":"get_rankings","summary":"Show the current WTA singles rankings, or those of a given date, with points and movement; filter to one player. Availab","description":"Show the current WTA singles rankings, or those of a given date, with points and movement; filter to one player. Available on the free plan. Use for \"Who is number one in the current WTA rankings\".","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"},"date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Get rankings for specific date (YYYY-MM-DD).","title":"Date"}},"title":"get_rankingsArguments","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 WTA matches by tournament, player, season, round or live status, with players, winner, score and duration. Needs th","description":"List WTA matches by tournament, player, season, round or live status, with players, winner, score and duration. Needs the ALL-STAR plan or higher. Use for \"What were the results of the WTA Finals matches this season\".","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"},"tournament_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by tournament IDs. One value.","title":"Tournament Id"},"player_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by player IDs. One value.","title":"Player Id"},"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by season year.","title":"Season"},"round":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by round (Finals, Semi-Finals, etc.).","title":"Round"},"is_live":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Filter for live matches only.","title":"Is Live"}},"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/get_match":{"post":{"operationId":"get_match","summary":"Get one WTA match by id with players, winner, score, sets and status. Needs the ALL-STAR plan or higher. Use for \"Show t","description":"Get one WTA match by id with players, winner, score, sets and status. Needs the ALL-STAR plan or higher. Use for \"Show the details of WTA match 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"match_id":{"description":"Numeric match id as returned by the list endpoint.","title":"Match Id","type":"integer"}},"required":["match_id"],"title":"get_matchArguments","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_stats":{"post":{"operationId":"list_match_stats","summary":"List per-set serve and return statistics for WTA matches, for example aces and break points. Needs the GOAT plan or high","description":"List per-set serve and return statistics for WTA matches, for example aces and break points. Needs the GOAT plan or higher. Use for \"How many aces did each player serve in WTA 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"},"set_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Filter by set number (0 for full match stats).","title":"Set Number"}},"title":"list_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_career_stats":{"post":{"operationId":"list_player_career_stats","summary":"List career totals for WTA players: titles, prize money, wins, losses and this year's record. Needs the GOAT plan or hig","description":"List career totals for WTA players: titles, prize money, wins, losses and this year's record. Needs the GOAT plan or higher. Use for \"How many career titles does WTA player 2 have\".","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"}},"title":"list_player_career_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/get_head_to_head":{"post":{"operationId":"get_head_to_head","summary":"Get the head-to-head win count between two WTA players by their ids. Needs the GOAT plan or higher. Use for \"What is the","description":"Get the head-to-head win count between two WTA players by their ids. Needs the GOAT plan or higher. Use for \"What is the head-to-head record between WTA players 1 and 2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"player1_id":{"description":"First player ID.","title":"Player1 Id","type":"integer"},"player2_id":{"description":"Second player ID.","title":"Player2 Id","type":"integer"}},"required":["player1_id","player2_id"],"title":"get_head_to_headArguments","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}}}}