{"openapi":"3.1.0","info":{"title":"Riot Games League Community (BYOK) API","version":"0.1.0","description":"Riot Games League Community (BYOK) lets an AI assistant read your own Riot Games League Community data through the Riot Games League Community API with a key you supply (Riot API key). Read-only: 9 tools (list_challenge_configs, get_challenge_config, get_challenge_percentiles, get_challenge_leaderboard, get_player_challenges, list_clash_tournaments, get_clash_tournament, get_clash_team,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-riotgames-lol-community.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-riotgames-lol-community/docs"},"termsOfService":"https://connectorbay.com/byok-riotgames-lol-community/terms"},"servers":[{"url":"https://byok-riotgames-lol-community.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-riotgames-lol-community/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_challenge_configs":{"post":{"operationId":"list_challenge_configs","summary":"List all League of Legends challenges with state, tracking type, dates, leaderboard flag and level thresholds (names are","description":"List all League of Legends challenges with state, tracking type, dates, leaderboard flag and level thresholds (names are left out; use get_challenge_config for one). Riot development keys expire after 24 hours and have low rate limits. Use for \"Which League of Legends challenges are enabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value (the game server): na1, euw1, eun1, kr, br1, jp1, la1, la2, me1, oc1, ru, sg2, tr1, tw2 or vn2.","enum":["br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"}},"required":["region"],"title":"list_challenge_configsArguments","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_challenge_config":{"post":{"operationId":"get_challenge_config","summary":"Get one League of Legends challenge: translated names and descriptions, state, tracking, dates, leaderboard flag and thr","description":"Get one League of Legends challenge: translated names and descriptions, state, tracking, dates, leaderboard flag and thresholds. Use for \"What is League of Legends challenge 101000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value (the game server): na1, euw1, eun1, kr, br1, jp1, la1, la2, me1, oc1, ru, sg2, tr1, tw2 or vn2.","enum":["br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"},"challenge_id":{"description":"Numeric challenge ID, for example 101000.","minimum":0,"title":"Challenge Id","type":"integer"}},"required":["region","challenge_id"],"title":"get_challenge_configArguments","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_challenge_percentiles":{"post":{"operationId":"get_challenge_percentiles","summary":"Get what share of players reached each level of one challenge (a map from level to percentile). Use for \"How rare is the","description":"Get what share of players reached each level of one challenge (a map from level to percentile). Use for \"How rare is the top level of League of Legends challenge 101000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value (the game server): na1, euw1, eun1, kr, br1, jp1, la1, la2, me1, oc1, ru, sg2, tr1, tw2 or vn2.","enum":["br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"},"challenge_id":{"description":"Numeric challenge ID, for example 101000.","minimum":0,"title":"Challenge Id","type":"integer"}},"required":["region","challenge_id"],"title":"get_challenge_percentilesArguments","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_challenge_leaderboard":{"post":{"operationId":"get_challenge_leaderboard","summary":"Get the top players of a challenge at one level (MASTER, GRANDMASTER or CHALLENGER): PUUID, value and position. Use for ","description":"Get the top players of a challenge at one level (MASTER, GRANDMASTER or CHALLENGER): PUUID, value and position. Use for \"Who leads League of Legends challenge 101000 at Challenger level\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value (the game server): na1, euw1, eun1, kr, br1, jp1, la1, la2, me1, oc1, ru, sg2, tr1, tw2 or vn2.","enum":["br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"},"challenge_id":{"description":"Numeric challenge ID, for example 101000.","minimum":0,"title":"Challenge Id","type":"integer"},"level":{"description":"Leaderboard level: MASTER, GRANDMASTER or CHALLENGER.","enum":["MASTER","GRANDMASTER","CHALLENGER"],"title":"Level","type":"string"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many players to return.","title":"Limit"}},"required":["region","challenge_id","level"],"title":"get_challenge_leaderboardArguments","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_challenges":{"post":{"operationId":"get_player_challenges","summary":"Get a player's challenge progress: points, per-challenge level, value and percentile, and the title they display. Use fo","description":"Get a player's challenge progress: points, per-challenge level, value and percentile, and the title they display. Use for \"How far has this League of Legends player got in challenges\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value (the game server): na1, euw1, eun1, kr, br1, jp1, la1, la2, me1, oc1, ru, sg2, tr1, tw2 or vn2.","enum":["br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"},"puuid":{"description":"Player's encrypted PUUID (78 characters).","maxLength":100,"title":"Puuid","type":"string"}},"required":["region","puuid"],"title":"get_player_challengesArguments","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_clash_tournaments":{"post":{"operationId":"list_clash_tournaments","summary":"List active and upcoming League of Legends Clash tournaments with their registration and start times (epoch milliseconds","description":"List active and upcoming League of Legends Clash tournaments with their registration and start times (epoch milliseconds). Use for \"When is the next League of Legends Clash weekend\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value (the game server): na1, euw1, eun1, kr, br1, jp1, la1, la2, me1, oc1, ru, sg2, tr1, tw2 or vn2.","enum":["br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"}},"required":["region"],"title":"list_clash_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_clash_tournament":{"post":{"operationId":"get_clash_tournament","summary":"Get one Clash tournament by ID with its schedule. Use for \"What is the schedule of Clash tournament 1\".","description":"Get one Clash tournament by ID with its schedule. Use for \"What is the schedule of Clash tournament 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value (the game server): na1, euw1, eun1, kr, br1, jp1, la1, la2, me1, oc1, ru, sg2, tr1, tw2 or vn2.","enum":["br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"},"tournament_id":{"description":"Numeric Clash tournament ID from list_clash_tournaments.","minimum":0,"title":"Tournament Id","type":"integer"}},"required":["region","tournament_id"],"title":"get_clash_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_clash_team":{"post":{"operationId":"get_clash_team","summary":"Get a Clash team: name, abbreviation, tier, tournament, captain PUUID and members' positions and roles. Use for \"Who is ","description":"Get a Clash team: name, abbreviation, tier, tournament, captain PUUID and members' positions and roles. Use for \"Who is on Clash team 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value (the game server): na1, euw1, eun1, kr, br1, jp1, la1, la2, me1, oc1, ru, sg2, tr1, tw2 or vn2.","enum":["br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"},"team_id":{"description":"Clash team ID.","maxLength":64,"title":"Team Id","type":"string"}},"required":["region","team_id"],"title":"get_clash_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/list_league_exp_entries":{"post":{"operationId":"list_league_exp_entries","summary":"List ranked entries of one queue, tier and division through the extended league endpoint (includes Master to Challenger)","description":"List ranked entries of one queue, tier and division through the extended league endpoint (includes Master to Challenger), a page at a time. Use for \"Show League of Legends Emerald I solo queue players on NA\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value (the game server): na1, euw1, eun1, kr, br1, jp1, la1, la2, me1, oc1, ru, sg2, tr1, tw2 or vn2.","enum":["br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"},"queue":{"description":"Ranked queue: RANKED_SOLO_5x5, RANKED_FLEX_SR, RANKED_FLEX_TT or RANKED_TFT.","enum":["RANKED_SOLO_5x5","RANKED_TFT","RANKED_FLEX_SR","RANKED_FLEX_TT"],"title":"Queue","type":"string"},"tier":{"description":"Tier from CHALLENGER down to IRON.","enum":["CHALLENGER","GRANDMASTER","MASTER","DIAMOND","EMERALD","PLATINUM","GOLD","SILVER","BRONZE","IRON"],"title":"Tier","type":"string"},"division":{"description":"Division within the tier: I, II, III or IV.","enum":["I","II","III","IV"],"title":"Division","type":"string"},"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["region","queue","tier","division"],"title":"list_league_exp_entriesArguments","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}}}}