{"openapi":"3.1.0","info":{"title":"Riot Games (BYOK) API","version":"0.1.0","description":"Riot Games (BYOK) lets an AI assistant read your own Riot Games data through the Riot Games API with a key you supply (Riot API key). Read-only: 10 tools (get_account_by_riot_id, get_account_by_puuid, get_summoner_by_puuid, get_ranked_entries, get_top_champion_mastery, list_match_ids, get_match, get_active_game, get_free_champion_rotation, get_lol_status). The BYOK key travels with each request,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-riotgames.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-riotgames/docs"},"termsOfService":"https://connectorbay.com/byok-riotgames/terms"},"servers":[{"url":"https://byok-riotgames.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-riotgames/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/get_account_by_riot_id":{"post":{"operationId":"get_account_by_riot_id","summary":"Find a Riot account by Riot ID (game name and tag line): returns the PUUID used by the other tools. Riot development key","description":"Find a Riot account by Riot ID (game name and tag line): returns the PUUID used by the other tools. Riot development keys expire after 24 hours and have low rate limits. Use for \"What is the PUUID of the player Faker#KR1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Regional routing value for this tool: americas, asia, europe or sea (the continent group of the player's account).","enum":["americas","asia","europe","sea","br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"},"game_name":{"description":"Game name part of the Riot ID, for example 'Hide on bush'.","maxLength":40,"title":"Game Name","type":"string"},"tag_line":{"description":"Tag line part of the Riot ID without the #, for example 'KR1'.","maxLength":10,"title":"Tag Line","type":"string"}},"required":["region","game_name","tag_line"],"title":"get_account_by_riot_idArguments","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_account_by_puuid":{"post":{"operationId":"get_account_by_puuid","summary":"Get a Riot account's game name and tag line from its PUUID. Use for \"Who is the player with this PUUID\".","description":"Get a Riot account's game name and tag line from its PUUID. Use for \"Who is the player with this PUUID\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Regional routing value for this tool: americas, asia, europe or sea (the continent group of the player's account).","enum":["americas","asia","europe","sea","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), from get_account_by_riot_id.","maxLength":100,"title":"Puuid","type":"string"}},"required":["region","puuid"],"title":"get_account_by_puuidArguments","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_summoner_by_puuid":{"post":{"operationId":"get_summoner_by_puuid","summary":"Get a League of Legends summoner by PUUID: profile icon, level and last modified time (epoch milliseconds). Use for \"Wha","description":"Get a League of Legends summoner by PUUID: profile icon, level and last modified time (epoch milliseconds). Use for \"What level is this League of Legends player\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value for this tool (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","americas","asia","europe","sea"],"title":"Region","type":"string"},"puuid":{"description":"Player's encrypted PUUID (78 characters), from get_account_by_riot_id.","maxLength":100,"title":"Puuid","type":"string"}},"required":["region","puuid"],"title":"get_summoner_by_puuidArguments","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_ranked_entries":{"post":{"operationId":"get_ranked_entries","summary":"Get a player's ranked entries in all queues: tier, rank, league points, wins, losses and streak flags. Use for \"What is ","description":"Get a player's ranked entries in all queues: tier, rank, league points, wins, losses and streak flags. Use for \"What is this player's ranked rank in League of Legends\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value for this tool (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","americas","asia","europe","sea"],"title":"Region","type":"string"},"puuid":{"description":"Player's encrypted PUUID (78 characters), from get_account_by_riot_id.","maxLength":100,"title":"Puuid","type":"string"}},"required":["region","puuid"],"title":"get_ranked_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}},"/v1/tools/get_top_champion_mastery":{"post":{"operationId":"get_top_champion_mastery","summary":"Get a player's top champions by mastery points: champion ID, level, points and last play time (epoch milliseconds). Use ","description":"Get a player's top champions by mastery points: champion ID, level, points and last play time (epoch milliseconds). Use for \"Which champions does this League player have the most mastery on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value for this tool (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","americas","asia","europe","sea"],"title":"Region","type":"string"},"puuid":{"description":"Player's encrypted PUUID (78 characters), from get_account_by_riot_id.","maxLength":100,"title":"Puuid","type":"string"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":3,"description":"How many champions to return (default 3).","title":"Count"}},"required":["region","puuid"],"title":"get_top_champion_masteryArguments","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_ids":{"post":{"operationId":"list_match_ids","summary":"List a player's League of Legends match IDs, newest first, optionally by queue, match type or time window (epoch seconds","description":"List a player's League of Legends match IDs, newest first, optionally by queue, match type or time window (epoch seconds). Use for \"What are the last 10 League of Legends matches of this player\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Regional routing value for this tool: americas, asia, europe or sea (the continent group of the player's account).","enum":["americas","asia","europe","sea","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), from get_account_by_riot_id.","maxLength":100,"title":"Puuid","type":"string"},"start":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Start index, default 0.","title":"Start"},"count":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":20,"description":"How many match IDs to return, 0 to 100 (default 20).","title":"Count"},"queue":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only matches of this queue ID (for example 420 for ranked solo).","title":"Queue"},"type":{"anyOf":[{"enum":["ranked","normal","tourney","tutorial"],"type":"string"},{"type":"null"}],"default":null,"description":"Only matches of this type.","title":"Type"},"start_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only matches started after this epoch time in seconds.","title":"Start Time"},"end_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only matches started before this epoch time in seconds.","title":"End Time"}},"required":["region","puuid"],"title":"list_match_idsArguments","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 a League of Legends match's summary: mode, queue, map, duration, start and end time, version and the participant PUU","description":"Get a League of Legends match's summary: mode, queue, map, duration, start and end time, version and the participant PUUIDs. Per-player statistics are left out to keep the answer small. Use for \"Show the summary of match NA1_1234567890\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Regional routing value for this tool: americas, asia, europe or sea (the continent group of the player's account).","enum":["americas","asia","europe","sea","br1","eun1","euw1","jp1","kr","la1","la2","me1","na1","oc1","ru","sg2","tr1","tw2","vn2"],"title":"Region","type":"string"},"match_id":{"description":"Match ID such as 'NA1_1234567890', from list_match_ids.","maxLength":40,"title":"Match Id","type":"string"}},"required":["region","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/get_active_game":{"post":{"operationId":"get_active_game","summary":"Get the game a player is playing right now: mode, queue, start time, bans and participants. Answers 404 when the player ","description":"Get the game a player is playing right now: mode, queue, start time, bans and participants. Answers 404 when the player is not in a game. Use for \"Is this League of Legends player in a game right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value for this tool (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","americas","asia","europe","sea"],"title":"Region","type":"string"},"puuid":{"description":"Player's encrypted PUUID (78 characters), from get_account_by_riot_id.","maxLength":100,"title":"Puuid","type":"string"}},"required":["region","puuid"],"title":"get_active_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/get_free_champion_rotation":{"post":{"operationId":"get_free_champion_rotation","summary":"Get this week's free-to-play champion IDs on Summoner's Rift (sr) and for new players (newplayer). Use for \"Which champi","description":"Get this week's free-to-play champion IDs on Summoner's Rift (sr) and for new players (newplayer). Use for \"Which champions are free to play this week in League of Legends\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value for this tool (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","americas","asia","europe","sea"],"title":"Region","type":"string"}},"required":["region"],"title":"get_free_champion_rotationArguments","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_lol_status":{"post":{"operationId":"get_lol_status","summary":"Get the League of Legends status of a server: open maintenances and incidents with severity, titles and platforms. Use f","description":"Get the League of Legends status of a server: open maintenances and incidents with severity, titles and platforms. Use for \"Is League of Legends up on the NA server\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Platform routing value for this tool (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","americas","asia","europe","sea"],"title":"Region","type":"string"}},"required":["region"],"title":"get_lol_statusArguments","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}}}}