
Trading card prices and sheets for Pokémon and 13 other TCGs: Cardmarket, US market, eBay, PSA
Maintained byvalotcg.com(verified)Also a maintainer?
Call this server's tools from your browser. Nothing to install.
Valo.Data API key (vd_live_…), created at https://valotcg.com/developers/account
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Price summaries of up to 10 cards and sealed products (`sealed:{id}`) side by side. 1 credit, +1 per card and include.
Up to 10 card ids, or sealed product ids prefixed with `sealed:` (e.g. `sealed:1234`).
Extra card blocks, billed per card.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http valo-ia https://api.valotcg.com/mcp \ --header 'Authorization: YOUR_CREDENTIALS'
Headers
Authorization (required): Valo.Data API key (vd_live_…), created at https://valotcg.com/developers/accountPrice summaries of up to 10 cards and sealed products (`sealed:{id}`) side by side. 1 credit, +1 per card and include.
| Argument | Type | Description |
|---|---|---|
| ids* | array | Up to 10 card ids, or sealed product ids prefixed with `sealed:` (e.g. `sealed:1234`). |
| include | array | Extra card blocks, billed per card. |
{
"type": "object",
"title": "CompareArguments",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
"title": "Ids",
"maxItems": 10,
"minItems": 1,
"description": "Up to 10 card ids, or sealed product ids prefixed with `sealed:` (e.g. `sealed:1234`)."
},
"include": {
"type": "array",
"items": {
"enum": [
"graded",
"population"
],
"type": "string"
},
"title": "Include",
"description": "Extra card blocks, billed per card."
}
},
"additionalProperties": false
}Chase cards, sealed products with prices and price coverage of one edition. 3 credits.
| Argument | Type | Description |
|---|---|---|
| edition_id* | integer | Valo.Data edition id (`list_editions`). |
{
"type": "object",
"title": "EditionArguments",
"required": [
"edition_id"
],
"properties": {
"edition_id": {
"type": "integer",
"title": "Edition Id",
"maximum": 2147483647,
"minimum": 1,
"description": "Valo.Data edition id (`list_editions`)."
}
},
"additionalProperties": false
}Full sheet of one card: edition, number, rarity, images, marketplace ids (Growth and up). 1 credit.
| Argument | Type | Description |
|---|---|---|
| card_id* | integer | Valo.Data card id. |
{
"type": "object",
"title": "CardArguments",
"required": [
"card_id"
],
"properties": {
"card_id": {
"type": "integer",
"title": "Card Id",
"maximum": 2147483647,
"minimum": 1,
"description": "Valo.Data card id."
}
},
"additionalProperties": false
}Current prices of one card from Cardmarket, the US market and eBay sales, each in its native currency. 1 credit, +1 per include.
| Argument | Type | Description |
|---|---|---|
| card_id* | integer | Valo.Data card id. |
| include | array | Cards only: `graded` (+1 credit), `population` (+1 credit, Starter plan and above). |
{
"type": "object",
"title": "CardPricesArguments",
"required": [
"card_id"
],
"properties": {
"card_id": {
"type": "integer",
"title": "Card Id",
"maximum": 2147483647,
"minimum": 1,
"description": "Valo.Data card id."
},
"include": {
"type": "array",
"items": {
"enum": [
"graded",
"population"
],
"type": "string"
},
"title": "Include",
"default": [],
"description": "Cards only: `graded` (+1 credit), `population` (+1 credit, Starter plan and above)."
}
},
"additionalProperties": false
}Current prices of up to 100 cards and sealed products (`sealed:{id}`) in one call. 1 credit per call, +1 per card and include.
| Argument | Type | Description |
|---|---|---|
| ids* | array | Up to 100 card ids, or sealed product ids prefixed with `sealed:` (e.g. `sealed:1234`). |
| include | array | Extra blocks, billed per card. |
{
"type": "object",
"title": "CardsBatchArguments",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
"title": "Ids",
"maxItems": 100,
"minItems": 1,
"description": "Up to 100 card ids, or sealed product ids prefixed with `sealed:` (e.g. `sealed:1234`)."
},
"include": {
"type": "array",
"items": {
"enum": [
"graded",
"population"
],
"type": "string"
},
"title": "Include",
"description": "Extra blocks, billed per card."
}
},
"additionalProperties": false
}Daily price history of one source for a card or a sealed product, bounded by the plan's history. 3 credits.
| Argument | Type | Description |
|---|---|---|
| source* | string | |
| card_id | any | Valo.Data card id; or give `sealed_id`. |
| date_to | any | Defaults to today. |
| variant | string | Cards only: `foil` for the foil curve. |
| condition | any | With `market_language=fr`: this condition only (default: best of each day). |
| date_from | any | Defaults to the oldest day the plan allows. |
| sealed_id | any | Valo.Data sealed product id; or give `card_id`. |
| market_language | any | Cards only: `fr` for the cheapest French Cardmarket offer of a French card (`source=cardmarket`, `variant=default`); only observed days are returned. |
{
"type": "object",
"title": "PriceHistoryArguments",
"required": [
"source"
],
"properties": {
"source": {
"enum": [
"cardmarket",
"us_market",
"ebay"
],
"type": "string",
"title": "Source"
},
"card_id": {
"anyOf": [
{
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Card Id",
"default": null,
"description": "Valo.Data card id; or give `sealed_id`."
},
"date_to": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date To",
"default": null,
"description": "Defaults to today."
},
"variant": {
"enum": [
"default",
"foil"
],
"type": "string",
"title": "Variant",
"default": "default",
"description": "Cards only: `foil` for the foil curve."
},
"condition": {
"anyOf": [
{
"enum": [
"NM",
"EX",
"GD",
"LP",
"PL",
"PO"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Condition",
"default": null,
"description": "With `market_language=fr`: this condition only (default: best of each day)."
},
"date_from": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date From",
"default": null,
"description": "Defaults to the oldest day the plan allows."
},
"sealed_id": {
"anyOf": [
{
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Sealed Id",
"default": null,
"description": "Valo.Data sealed product id; or give `card_id`."
},
"market_language": {
"anyOf": [
{
"type": "string",
"const": "fr"
},
{
"type": "null"
}
],
"title": "Market Language",
"default": null,
"description": "Cards only: `fr` for the cheapest French Cardmarket offer of a French card (`source=cardmarket`, `variant=default`); only observed days are returned."
}
},
"additionalProperties": false
}Current prices of one sealed product, each source in its native currency. 1 credit.
| Argument | Type | Description |
|---|---|---|
| sealed_id* | integer | Valo.Data sealed product id. |
{
"type": "object",
"title": "SealedArguments",
"required": [
"sealed_id"
],
"properties": {
"sealed_id": {
"type": "integer",
"title": "Sealed Id",
"maximum": 2147483647,
"minimum": 1,
"description": "Valo.Data sealed product id."
}
},
"additionalProperties": false
}Identify a card from free text (name, number, edition, language in any order, typos tolerated): up to 5 candidates, best first, with the signals that matched. 1 credit.
| Argument | Type | Description |
|---|---|---|
| game | any | Game slug; every game when omitted. |
| query* | string | Name, number and edition in any order, e.g. "dracaufeu 199 151 fr", "OP05-119 luffy". |
| language | any | Only items printed in this language. |
{
"type": "object",
"title": "IdentifyCardArguments",
"required": [
"query"
],
"properties": {
"game": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Game",
"default": null,
"description": "Game slug; every game when omitted."
},
"query": {
"type": "string",
"title": "Query",
"maxLength": 120,
"minLength": 2,
"description": "Name, number and edition in any order, e.g. \"dracaufeu 199 151 fr\", \"OP05-119 luffy\"."
},
"language": {
"anyOf": [
{
"enum": [
"fr",
"en",
"ja",
"zh",
"de",
"es",
"it",
"pt"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"default": null,
"description": "Only items printed in this language."
}
},
"additionalProperties": false
}Editions (sets) of a game, newest first, with their ids; `q` finds one by its name or set code. 1 credit per page.
| Argument | Type | Description |
|---|---|---|
| q | any | Part of the edition name or its set code, accents and case ignored, e.g. `flammes`, `SV06`. |
| game* | string | Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`. |
| cursor | any | `next_cursor` of the previous page. |
| language | any | Only items printed in this language. |
| page_size | integer |
{
"type": "object",
"title": "ListEditionsArguments",
"required": [
"game"
],
"properties": {
"q": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"minLength": 2
},
{
"type": "null"
}
],
"title": "Q",
"default": null,
"description": "Part of the edition name or its set code, accents and case ignored, e.g. `flammes`, `SV06`."
},
"game": {
"type": "string",
"title": "Game",
"description": "Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null,
"description": "`next_cursor` of the previous page."
},
"language": {
"anyOf": [
{
"enum": [
"fr",
"en",
"ja",
"zh",
"de",
"es",
"it",
"pt"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"default": null,
"description": "Only items printed in this language."
},
"page_size": {
"type": "integer",
"title": "Page Size",
"default": 50,
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}Games of the catalogue with their slugs, card languages and price coverage per source. 0 credit.
No arguments.
{
"type": "object",
"title": "NoArguments",
"properties": {},
"additionalProperties": false
}The price the ValoTCG app shows for a card or a sealed product, in EUR, with its source, reliability and 7, 30 and 90-day changes. 1 credit, +1 per include.
| Argument | Type | Description |
|---|---|---|
| card_id | any | Valo.Data card id; or give `sealed_id`. |
| include | array | Cards only: `graded` (+1 credit), `population` (+1 credit, Starter plan and above). |
| sealed_id | any | Valo.Data sealed product id; or give `card_id`. |
{
"type": "object",
"title": "PriceSummaryArguments",
"properties": {
"card_id": {
"anyOf": [
{
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Card Id",
"default": null,
"description": "Valo.Data card id; or give `sealed_id`."
},
"include": {
"type": "array",
"items": {
"enum": [
"graded",
"population"
],
"type": "string"
},
"title": "Include",
"default": [],
"description": "Cards only: `graded` (+1 credit), `population` (+1 credit, Starter plan and above)."
},
"sealed_id": {
"anyOf": [
{
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Sealed Id",
"default": null,
"description": "Valo.Data sealed product id; or give `card_id`."
}
},
"additionalProperties": false
}Recognise the card in a photo (Valo.Vision): up to 5 Valo.Data cards, best first; chain with price_summary for its price. 1 scan per analysed photo; a refused photo or an error costs nothing. Photos are processed in memory and never stored.
| Argument | Type | Description |
|---|---|---|
| game* | string | Game of the card, e.g. `pokemon`. |
| image* | string | The photo, base64 encoded (a `data:image/…;base64,` URL is accepted): JPEG, PNG or WebP, at most 8 MB once decoded, shortest side at least 480 px. |
| language | any | Language of the card, used as a filter; every open language when omitted. |
{
"type": "object",
"title": "ScanCardArguments",
"required": [
"image",
"game"
],
"properties": {
"game": {
"type": "string",
"title": "Game",
"pattern": "^[a-z0-9_]{1,64}$",
"description": "Game of the card, e.g. `pokemon`."
},
"image": {
"type": "string",
"title": "Image",
"minLength": 1,
"description": "The photo, base64 encoded (a `data:image/…;base64,` URL is accepted): JPEG, PNG or WebP, at most 8 MB once decoded, shortest side at least 480 px."
},
"language": {
"anyOf": [
{
"enum": [
"fr",
"en",
"ja",
"zh",
"de",
"es",
"it",
"pt"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"default": null,
"description": "Language of the card, used as a filter; every open language when omitted."
}
},
"additionalProperties": false
}Search the cards of a game by name or number, edition, language or rarity. 1 credit per page.
| Argument | Type | Description |
|---|---|---|
| q | any | Name (FR/EN) or number. |
| game* | string | Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`. |
| cursor | any | `next_cursor` of the previous page. |
| rarity | any | Canonical rarity code (e.g. `holo_rare`) or the rarity label as printed (case-insensitive). |
| language | any | Only items printed in this language. |
| page_size | integer | |
| edition_id | any | Only this edition (`list_editions`). |
{
"type": "object",
"title": "SearchCardsArguments",
"required": [
"game"
],
"properties": {
"q": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"minLength": 2
},
{
"type": "null"
}
],
"title": "Q",
"default": null,
"description": "Name (FR/EN) or number."
},
"game": {
"type": "string",
"title": "Game",
"description": "Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null,
"description": "`next_cursor` of the previous page."
},
"rarity": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Rarity",
"default": null,
"description": "Canonical rarity code (e.g. `holo_rare`) or the rarity label as printed (case-insensitive)."
},
"language": {
"anyOf": [
{
"enum": [
"fr",
"en",
"ja",
"zh",
"de",
"es",
"it",
"pt"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"default": null,
"description": "Only items printed in this language."
},
"page_size": {
"type": "integer",
"title": "Page Size",
"default": 20,
"maximum": 100,
"minimum": 1
},
"edition_id": {
"anyOf": [
{
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Edition Id",
"default": null,
"description": "Only this edition (`list_editions`)."
}
},
"additionalProperties": false
}Search the sealed products of a game (boosters, displays, ETB…) by name, edition, type or language. 1 credit per page.
| Argument | Type | Description |
|---|---|---|
| q | any | Product name. |
| game* | string | Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`. |
| cursor | any | `next_cursor` of the previous page. |
| language | any | Only items printed in this language. |
| page_size | integer | |
| edition_id | any | Only this edition (`list_editions`). |
| product_type | any | e.g. booster, display, etb. |
{
"type": "object",
"title": "SearchSealedArguments",
"required": [
"game"
],
"properties": {
"q": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"minLength": 2
},
{
"type": "null"
}
],
"title": "Q",
"default": null,
"description": "Product name."
},
"game": {
"type": "string",
"title": "Game",
"description": "Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null,
"description": "`next_cursor` of the previous page."
},
"language": {
"anyOf": [
{
"enum": [
"fr",
"en",
"ja",
"zh",
"de",
"es",
"it",
"pt"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"default": null,
"description": "Only items printed in this language."
},
"page_size": {
"type": "integer",
"title": "Page Size",
"default": 20,
"maximum": 100,
"minimum": 1
},
"edition_id": {
"anyOf": [
{
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Edition Id",
"default": null,
"description": "Only this edition (`list_editions`)."
},
"product_type": {
"anyOf": [
{
"type": "string",
"maxLength": 50
},
{
"type": "null"
}
],
"title": "Product Type",
"default": null,
"description": "e.g. booster, display, etb."
}
},
"additionalProperties": false
}Largest price rises or falls of a game or an edition over 7, 30 or 90 days (cards of 10 EUR and more). 3 credits.
| Argument | Type | Description |
|---|---|---|
| game* | string | Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`. |
| limit | integer | |
| period | integer | Period in days. |
| language | any | Only items printed in this language. |
| reliable | boolean | `true`: only the moves the recommended price backs (not of `low` confidence, the market of the move within x2 of it, a Cardmarket trend within x2 of its 30-day average, no market moving the other way, two markets for a price doubled or halved). |
| direction | string | `up`: rises, `down`: falls. |
| edition_id | any | Only this edition of the game. |
{
"type": "object",
"title": "TopMoversArguments",
"required": [
"game"
],
"properties": {
"game": {
"type": "string",
"title": "Game",
"description": "Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 25,
"minimum": 1
},
"period": {
"enum": [
7,
30,
90
],
"type": "integer",
"title": "Period",
"default": 30,
"description": "Period in days."
},
"language": {
"anyOf": [
{
"enum": [
"fr",
"en",
"ja",
"zh",
"de",
"es",
"it",
"pt"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"default": null,
"description": "Only items printed in this language."
},
"reliable": {
"type": "boolean",
"title": "Reliable",
"default": false,
"description": "`true`: only the moves the recommended price backs (not of `low` confidence, the market of the move within x2 of it, a Cardmarket trend within x2 of its 30-day average, no market moving the other way, two markets for a price doubled or halved)."
},
"direction": {
"enum": [
"up",
"down"
],
"type": "string",
"title": "Direction",
"default": "up",
"description": "`up`: rises, `down`: falls."
},
"edition_id": {
"anyOf": [
{
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Edition Id",
"default": null,
"description": "Only this edition of the game."
}
},
"additionalProperties": false
}Most valuable cards or sealed products of a game, by the price the ValoTCG app shows (EUR): every edition and language, or one edition, one language, one sealed product type. 3 credits.
| Argument | Type | Description |
|---|---|---|
| game* | string | Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`. |
| kind* | string | `card`: cards, `sealed`: sealed products. |
| limit | integer | |
| language | any | Only items printed in this language. |
| edition_id | any | Only this edition of the game; every edition when omitted. |
| product_type | any | `kind=sealed` only: e.g. booster, display, etb. |
{
"type": "object",
"title": "TopPricedArguments",
"required": [
"game",
"kind"
],
"properties": {
"game": {
"type": "string",
"title": "Game",
"description": "Game slug from `list_games`, e.g. `pokemon`, `onepiece`, `lorcana`."
},
"kind": {
"enum": [
"card",
"sealed"
],
"type": "string",
"title": "Kind",
"description": "`card`: cards, `sealed`: sealed products."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 25,
"minimum": 1
},
"language": {
"anyOf": [
{
"enum": [
"fr",
"en",
"ja",
"zh",
"de",
"es",
"it",
"pt"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"default": null,
"description": "Only items printed in this language."
},
"edition_id": {
"anyOf": [
{
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Edition Id",
"default": null,
"description": "Only this edition of the game; every edition when omitted."
},
"product_type": {
"anyOf": [
{
"type": "string",
"maxLength": 50
},
{
"type": "null"
}
],
"title": "Product Type",
"default": null,
"description": "`kind=sealed` only: e.g. booster, display, etb."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 3, 2026.