{"openapi":"3.1.0","info":{"title":"Guild Wars 2 (BYOK) API","version":"0.1.0","description":"Guild Wars 2 (BYOK) lets an AI assistant read your own Guild Wars 2 data through the Guild Wars 2 API with a key you supply (Guild Wars 2 API key). Read-only: 12 tools (get_token_info, get_account, get_wallet, list_currencies, list_characters, get_character_core, get_pvp_stats, list_pvp_games, list_trading_post_transactions, get_item_prices, get_items, get_wizards_vault_daily). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-guildwars2.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-guildwars2/docs"},"termsOfService":"https://connectorbay.com/byok-guildwars2/terms"},"servers":[{"url":"https://byok-guildwars2.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-guildwars2/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_token_info":{"post":{"operationId":"get_token_info","summary":"Show the name and permissions of the API key in use (account, characters, inventories, progression, pvp, tradingpost, un","description":"Show the name and permissions of the API key in use (account, characters, inventories, progression, pvp, tradingpost, unlocks, wallet and more). Use for \"What permissions does my Guild Wars 2 API key have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_token_infoArguments","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":{"post":{"operationId":"get_account","summary":"Get the account: name, age in seconds, home world, guilds, created date, owned expansions and commander tag. Progress fi","description":"Get the account: name, age in seconds, home world, guilds, created date, owned expansions and commander tag. Progress fields need the progression permission. Needs an API key with the account permission. Use for \"What is my Guild Wars 2 account name and which expansions do I own\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_accountArguments","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_wallet":{"post":{"operationId":"get_wallet","summary":"List the account's currencies with amounts (coin is ID 1, in copper). Resolve IDs with list_currencies. Needs an API key","description":"List the account's currencies with amounts (coin is ID 1, in copper). Resolve IDs with list_currencies. Needs an API key with the wallet permission. Use for \"How much gold and karma do I have in Guild Wars 2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_walletArguments","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_currencies":{"post":{"operationId":"list_currencies","summary":"Resolve currency IDs to names and descriptions (all currencies when ids is 'all'). Use for \"What are the names of Guild ","description":"Resolve currency IDs to names and descriptions (all currencies when ids is 'all'). Use for \"What are the names of Guild Wars 2 currencies 1 to 5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ids":{"description":"Comma-separated currency IDs, or 'all'.","maxLength":200,"title":"Ids","type":"string"},"lang":{"anyOf":[{"enum":["en","es","de","fr","zh"],"type":"string"},{"type":"null"}],"default":null,"description":"Language of names: en, es, de, fr or zh.","title":"Lang"}},"required":["ids"],"title":"list_currenciesArguments","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_characters":{"post":{"operationId":"list_characters","summary":"List the names of the characters on the account. Needs an API key with the characters permission. Use for \"Which Guild W","description":"List the names of the characters on the account. Needs an API key with the characters permission. Use for \"Which Guild Wars 2 characters do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_charactersArguments","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_character_core":{"post":{"operationId":"get_character_core","summary":"Get a character's basic data: race, gender, profession, level, guild, played seconds, creation date and death count. Nee","description":"Get a character's basic data: race, gender, profession, level, guild, played seconds, creation date and death count. Needs an API key with the characters permission. Use for \"What level is my Guild Wars 2 character 'My Character'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"character_name":{"description":"Character name exactly as in game (spaces allowed), from list_characters.","maxLength":40,"title":"Character Name","type":"string"}},"required":["character_name"],"title":"get_character_coreArguments","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_pvp_stats":{"post":{"operationId":"get_pvp_stats","summary":"Get PvP rank, rank points and win, loss and desertion totals overall, by profession and by ladder. Needs an API key with","description":"Get PvP rank, rank points and win, loss and desertion totals overall, by profession and by ladder. Needs an API key with the pvp permission. Use for \"How many PvP matches have I won in Guild Wars 2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_pvp_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_pvp_games":{"post":{"operationId":"list_pvp_games","summary":"List the account's most recent PvP matches (without ids, only the IDs) or fetch matches by id with map, result, team, pr","description":"List the account's most recent PvP matches (without ids, only the IDs) or fetch matches by id with map, result, team, profession and rating change. Needs an API key with the pvp permission. Use for \"What were my last Guild Wars 2 PvP match results\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ids":{"anyOf":[{"maxLength":1200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated match UUIDs to fetch (up to 200); omit to list the recent match IDs.","title":"Ids"}},"title":"list_pvp_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/list_trading_post_transactions":{"post":{"operationId":"list_trading_post_transactions","summary":"List the account's trading post buy or sell transactions: current (open orders) or history (fulfilled in the last 90 day","description":"List the account's trading post buy or sell transactions: current (open orders) or history (fulfilled in the last 90 days). Needs an API key with the tradingpost permission. Use for \"What items am I selling on the Guild Wars 2 trading post right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scope":{"description":"current for open orders, history for fulfilled ones.","enum":["current","history"],"title":"Scope","type":"string"},"side":{"description":"buys or sells.","enum":["buys","sells"],"title":"Side","type":"string"},"page":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based page number.","title":"Page"},"page_size":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 200).","title":"Page Size"}},"required":["scope","side"],"title":"list_trading_post_transactionsArguments","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_item_prices":{"post":{"operationId":"get_item_prices","summary":"Get the current trading post highest buy order and lowest sell offer (in copper) for items. Use for \"What is the trading","description":"Get the current trading post highest buy order and lowest sell offer (in copper) for items. Use for \"What is the trading post price of Guild Wars 2 item 19684\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ids":{"description":"Comma-separated item IDs, up to 200 (the API's page limit).","maxLength":1200,"title":"Ids","type":"string"}},"required":["ids"],"title":"get_item_pricesArguments","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_items":{"post":{"operationId":"get_items","summary":"Resolve item IDs to name, type, rarity, level and description. Use for \"What are Guild Wars 2 items 19684 and 19709\".","description":"Resolve item IDs to name, type, rarity, level and description. Use for \"What are Guild Wars 2 items 19684 and 19709\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ids":{"description":"Comma-separated item IDs, up to 200 (the API's page limit).","maxLength":1200,"title":"Ids","type":"string"},"lang":{"anyOf":[{"enum":["en","es","de","fr","zh"],"type":"string"},{"type":"null"}],"default":null,"description":"Language of names: en, es, de, fr or zh.","title":"Lang"}},"required":["ids"],"title":"get_itemsArguments","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_wizards_vault_daily":{"post":{"operationId":"get_wizards_vault_daily","summary":"Show the account's daily Wizard's Vault objectives, progress and claimable rewards. Needs an API key with the progressio","description":"Show the account's daily Wizard's Vault objectives, progress and claimable rewards. Needs an API key with the progression permission. Use for \"Which Wizard's Vault dailies have I finished in Guild Wars 2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_wizards_vault_dailyArguments","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}}}}