{"openapi":"3.1.0","info":{"title":"Steam (BYOK) API","version":"0.1.0","description":"Steam (BYOK) lets an AI assistant read your own Steam data through the Steam API with a key you supply (Steam Web API key). Read-only: 11 tools (resolve_vanity_url, get_player_summaries, get_friend_list, get_player_bans, get_owned_games, get_recently_played_games, get_player_achievements, get_user_stats_for_game, get_global_achievement_percentages, get_current_player_count, get_game_news). The...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-steam.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-steam/docs"},"termsOfService":"https://connectorbay.com/byok-steam/terms"},"servers":[{"url":"https://byok-steam.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-steam/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/resolve_vanity_url":{"post":{"operationId":"resolve_vanity_url","summary":"Find the 64-bit SteamID of a profile from its custom URL name (the part after steamcommunity.com/id/). The provider's do","description":"Find the 64-bit SteamID of a profile from its custom URL name (the part after steamcommunity.com/id/). The provider's documentation does not list the response fields, so the answer is passed through (capped). Use for \"What is the SteamID of the profile gabelogannewell\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"vanityurl":{"description":"Custom profile URL name, for example 'gabelogannewell'.","maxLength":64,"title":"Vanityurl","type":"string"},"url_type":{"anyOf":[{"enum":[1,2,3],"type":"integer"},{"type":"null"}],"default":1,"description":"1 for a player profile (default), 2 for a group, 3 for an official game group.","title":"Url Type"}},"required":["vanityurl"],"title":"resolve_vanity_urlArguments","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_summaries":{"post":{"operationId":"get_player_summaries","summary":"Get public profile summaries of up to 100 players: persona name, profile URL, avatar, visibility state and last log-off ","description":"Get public profile summaries of up to 100 players: persona name, profile URL, avatar, visibility state and last log-off time. Use for \"Show the Steam profile of 76561197960435530\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steamids":{"description":"Comma-separated 64-bit SteamIDs, at most 100.","maxLength":1900,"title":"Steamids","type":"string"}},"required":["steamids"],"title":"get_player_summariesArguments","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_friend_list":{"post":{"operationId":"get_friend_list","summary":"List a player's friends (SteamIDs and friendship type). Works only if the player's profile data is public; otherwise Ste","description":"List a player's friends (SteamIDs and friendship type). Works only if the player's profile data is public; otherwise Steam answers with an error or an empty result. The provider's documentation does not list the response fields, so the answer is passed through (capped). Use for \"Who are the Steam friends of 76561197960435530\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steamid":{"description":"64-bit SteamID of the player (a 17-digit number such as 76561197960435530); use resolve_vanity_url to find it from a profile name.","maxLength":20,"title":"Steamid","type":"string"},"relationship":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":"friend","description":"Relationship type to list, for example 'friend' (default).","title":"Relationship"}},"required":["steamid"],"title":"get_friend_listArguments","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_bans":{"post":{"operationId":"get_player_bans","summary":"Get VAC, game and community ban status of up to 100 players. Use for \"Does the Steam account 76561197960435530 have any ","description":"Get VAC, game and community ban status of up to 100 players. Use for \"Does the Steam account 76561197960435530 have any bans\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steamids":{"description":"Comma-separated 64-bit SteamIDs.","maxLength":1900,"title":"Steamids","type":"string"}},"required":["steamids"],"title":"get_player_bansArguments","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_owned_games":{"post":{"operationId":"get_owned_games","summary":"List the games a player owns with playtime (names and icons when requested). Works only if the player's profile data is ","description":"List the games a player owns with playtime (names and icons when requested). Works only if the player's profile data is public; otherwise Steam answers with an error or an empty result. The provider's documentation does not list the response fields, so the answer is passed through (capped). Use for \"Which games does Steam user 76561197960435530 own and how long has he played each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steamid":{"description":"64-bit SteamID of the player (a 17-digit number such as 76561197960435530); use resolve_vanity_url to find it from a profile name.","maxLength":20,"title":"Steamid","type":"string"},"include_appinfo":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include game names and icon hashes.","title":"Include Appinfo"},"include_played_free_games":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include free games the player has played.","title":"Include Played Free Games"}},"required":["steamid"],"title":"get_owned_gamesArguments","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_recently_played_games":{"post":{"operationId":"get_recently_played_games","summary":"List the games a player played in the last two weeks with playtime. Works only if the player's profile data is public; o","description":"List the games a player played in the last two weeks with playtime. Works only if the player's profile data is public; otherwise Steam answers with an error or an empty result. The provider's documentation does not list the response fields, so the answer is passed through (capped). Use for \"What has Steam user 76561197960435530 played recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steamid":{"description":"64-bit SteamID of the player (a 17-digit number such as 76561197960435530); use resolve_vanity_url to find it from a profile name.","maxLength":20,"title":"Steamid","type":"string"},"count":{"anyOf":[{"maximum":500,"minimum":0,"type":"integer"},{"type":"null"}],"default":10,"description":"Number of games to return; 0 returns all.","title":"Count"}},"required":["steamid"],"title":"get_recently_played_gamesArguments","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_achievements":{"post":{"operationId":"get_player_achievements","summary":"List a player's achievements in one game with unlock state and time. Works only if the player's profile data is public; ","description":"List a player's achievements in one game with unlock state and time. Works only if the player's profile data is public; otherwise Steam answers with an error or an empty result. The provider's documentation does not list the response fields, so the answer is passed through (capped). Use for \"Which achievements has Steam user 76561197960435530 unlocked in game 440\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steamid":{"description":"64-bit SteamID of the player (a 17-digit number such as 76561197960435530); use resolve_vanity_url to find it from a profile name.","maxLength":20,"title":"Steamid","type":"string"},"appid":{"description":"Steam app ID of the game, for example 440 (Team Fortress 2) or 730 (Counter-Strike 2).","minimum":1,"title":"Appid","type":"integer"},"l":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Language of achievement names, for example 'english' or 'german'.","title":"L"}},"required":["steamid","appid"],"title":"get_player_achievementsArguments","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_user_stats_for_game":{"post":{"operationId":"get_user_stats_for_game","summary":"Get a player's in-game statistics and achievements for one game. Works only if the player's profile data is public; othe","description":"Get a player's in-game statistics and achievements for one game. Works only if the player's profile data is public; otherwise Steam answers with an error or an empty result. The provider's documentation does not list the response fields, so the answer is passed through (capped). Use for \"What are Steam user 76561197960435530's stats in game 440\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steamid":{"description":"64-bit SteamID of the player (a 17-digit number such as 76561197960435530); use resolve_vanity_url to find it from a profile name.","maxLength":20,"title":"Steamid","type":"string"},"appid":{"description":"Steam app ID of the game, for example 440 (Team Fortress 2) or 730 (Counter-Strike 2).","minimum":1,"title":"Appid","type":"integer"}},"required":["steamid","appid"],"title":"get_user_stats_for_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_global_achievement_percentages":{"post":{"operationId":"get_global_achievement_percentages","summary":"List the share of all players who unlocked each achievement of a game. The provider's documentation does not list the re","description":"List the share of all players who unlocked each achievement of a game. The provider's documentation does not list the response fields, so the answer is passed through (capped). Use for \"How rare are the achievements in game 440\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"gameid":{"description":"Steam app ID of the game, for example 440.","minimum":1,"title":"Gameid","type":"integer"}},"required":["gameid"],"title":"get_global_achievement_percentagesArguments","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_current_player_count":{"post":{"operationId":"get_current_player_count","summary":"Get how many players are playing a game right now. The provider's documentation does not list the response fields, so th","description":"Get how many players are playing a game right now. The provider's documentation does not list the response fields, so the answer is passed through (capped). Use for \"How many people are playing Counter-Strike 2 on Steam right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"appid":{"description":"Steam app ID of the game, for example 440 (Team Fortress 2) or 730 (Counter-Strike 2).","minimum":1,"title":"Appid","type":"integer"}},"required":["appid"],"title":"get_current_player_countArguments","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_game_news":{"post":{"operationId":"get_game_news","summary":"Get recent news posts for a game: title, URL, author, feed and date. The provider's documentation does not list the resp","description":"Get recent news posts for a game: title, URL, author, feed and date. The provider's documentation does not list the response fields, so the answer is passed through (capped). Use for \"What is the latest news for game 440 on Steam\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"appid":{"description":"Steam app ID of the game, for example 440 (Team Fortress 2) or 730 (Counter-Strike 2).","minimum":1,"title":"Appid","type":"integer"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many posts to return (default 20).","title":"Count"},"maxlength":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":300,"description":"Maximum length of each post's content in characters; 0 returns full content.","title":"Maxlength"},"enddate":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts older than this Unix timestamp.","title":"Enddate"},"feeds":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated feed names to include.","title":"Feeds"}},"required":["appid"],"title":"get_game_newsArguments","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}}}}