{"openapi":"3.1.0","info":{"title":"JustTCG (BYOK) API","version":"0.1.0","description":"JustTCG (BYOK) lets an AI assistant read your own JustTCG data through the JustTCG API with a key you supply (JustTCG API key). Read-only: 7 tools (list_games, list_sets, search_cards, list_cards_in_set, get_card, get_card_by_tcgplayer_id, get_variant). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-justtcg.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-justtcg/docs"},"termsOfService":"https://connectorbay.com/byok-justtcg/terms"},"servers":[{"url":"https://byok-justtcg.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-justtcg/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_games":{"post":{"operationId":"list_games","summary":"List the trading card games JustTCG covers, with card, set and variant counts and a market value figure per game. Use fo","description":"List the trading card games JustTCG covers, with card, set and variant counts and a market value figure per game. Use for \"Which trading card games does JustTCG have prices for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_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_sets":{"post":{"operationId":"list_sets","summary":"List the card sets of one game, optionally filtered by a name search, with release date and total set value. Use for \"Wh","description":"List the card sets of one game, optionally filtered by a name search, with release date and total set value. Use for \"Which Pokemon sets were released most recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"game":{"description":"Game id from list_games, for example 'pokemon' or 'magic-the-gathering'.","maxLength":200,"title":"Game","type":"string"},"q":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text matched against set names.","title":"Q"},"order_by":{"anyOf":[{"enum":["name","release_date"],"type":"string"},{"type":"null"}],"default":"name","description":"Sort field: name or release_date.","title":"Order By"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Order"}},"required":["game"],"title":"list_setsArguments","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/search_cards":{"post":{"operationId":"search_cards","summary":"Search cards by name text, optionally within one game or set, returning each card with its priced variants (condition, p","description":"Search cards by name text, optionally within one game or set, returning each card with its priced variants (condition, printing, price, 24h change). Use for \"What is the price of a Charizard card in Pokemon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"description":"Text matched against card names, for example 'Charizard'.","maxLength":200,"title":"Q","type":"string"},"game":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only this game id from list_games.","title":"Game"},"set":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only this set id from list_sets.","title":"Set"},"number":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the card with this number inside its set.","title":"Number"},"condition":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only variants in these conditions, comma-separated, for example 'NM' or 'NM,LP'.","title":"Condition"},"printing":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only variants with this printing, comma-separated, for example 'Normal' or 'Foil'.","title":"Printing"},"include_price_history":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include each variant's price history points (makes answers much longer).","title":"Include Price History"},"include_statistics":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":"7d","description":"Comma-separated statistics windows to include per variant: 7d, 30d, 90d, 1y, allTime.","title":"Include Statistics"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many cards to return. The maximum depends on the plan: 20 on Free, 100 on Starter and Pro.","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many cards to skip, for paging.","title":"Offset"}},"required":["q"],"title":"search_cardsArguments","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_cards_in_set":{"post":{"operationId":"list_cards_in_set","summary":"List the cards of one set with prices for each condition and printing, paged. Use for \"Show the cards in the Base Set Po","description":"List the cards of one set with prices for each condition and printing, paged. Use for \"Show the cards in the Base Set Pokemon set with prices\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"game":{"description":"Game id from list_games.","maxLength":200,"title":"Game","type":"string"},"set":{"description":"Set id from list_sets, for example 'base-set-pokemon'.","maxLength":200,"title":"Set","type":"string"},"condition":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only variants in these conditions, comma-separated, for example 'NM' or 'NM,LP'.","title":"Condition"},"printing":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only variants with this printing, comma-separated, for example 'Normal' or 'Foil'.","title":"Printing"},"include_price_history":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include each variant's price history points (makes answers much longer).","title":"Include Price History"},"include_statistics":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":"7d","description":"Comma-separated statistics windows to include per variant: 7d, 30d, 90d, 1y, allTime.","title":"Include Statistics"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many cards to return. The maximum depends on the plan: 20 on Free, 100 on Starter and Pro.","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many cards to skip, for paging.","title":"Offset"}},"required":["game","set"],"title":"list_cards_in_setArguments","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_card":{"post":{"operationId":"get_card","summary":"Look up one card by its JustTCG card id (slug or UUID) and return all of its priced variants. Use for \"Give me all price","description":"Look up one card by its JustTCG card id (slug or UUID) and return all of its priced variants. Use for \"Give me all prices for the card pokemon-base-set-charizard-holo-rare\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"card_id":{"description":"JustTCG card id: the slug (game-set-name-rarity) or the UUID.","maxLength":200,"title":"Card Id","type":"string"},"condition":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only variants in these conditions, comma-separated, for example 'NM' or 'NM,LP'.","title":"Condition"},"printing":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only variants with this printing, comma-separated, for example 'Normal' or 'Foil'.","title":"Printing"},"include_price_history":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include each variant's price history points (makes answers much longer).","title":"Include Price History"},"include_statistics":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":"7d","description":"Comma-separated statistics windows to include per variant: 7d, 30d, 90d, 1y, allTime.","title":"Include Statistics"}},"required":["card_id"],"title":"get_cardArguments","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_card_by_tcgplayer_id":{"post":{"operationId":"get_card_by_tcgplayer_id","summary":"Look up one card by its TCGplayer product id and return its priced variants. Use for \"What does TCGplayer product 42346 ","description":"Look up one card by its TCGplayer product id and return its priced variants. Use for \"What does TCGplayer product 42346 cost on JustTCG\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tcgplayer_id":{"description":"TCGplayer product id, digits only.","maxLength":20,"title":"Tcgplayer Id","type":"string"},"condition":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only variants in these conditions, comma-separated, for example 'NM' or 'NM,LP'.","title":"Condition"},"printing":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only variants with this printing, comma-separated, for example 'Normal' or 'Foil'.","title":"Printing"},"include_price_history":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include each variant's price history points (makes answers much longer).","title":"Include Price History"},"include_statistics":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":"7d","description":"Comma-separated statistics windows to include per variant: 7d, 30d, 90d, 1y, allTime.","title":"Include Statistics"}},"required":["tcgplayer_id"],"title":"get_card_by_tcgplayer_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_variant":{"post":{"operationId":"get_variant","summary":"Look up a single variant (one condition and printing of a card) by its variant id and return the card with that variant ","description":"Look up a single variant (one condition and printing of a card) by its variant id and return the card with that variant priced. Use for \"Price the variant with id pokemon-base-set-charizard-holo-rare_near-mint_holofoil\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"variant_id":{"description":"JustTCG variant id: the slug (cardId_condition_printing) or the UUID.","maxLength":250,"title":"Variant Id","type":"string"},"include_price_history":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include each variant's price history points (makes answers much longer).","title":"Include Price History"},"include_statistics":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":"7d","description":"Comma-separated statistics windows to include per variant: 7d, 30d, 90d, 1y, allTime.","title":"Include Statistics"}},"required":["variant_id"],"title":"get_variantArguments","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}}}}