Card catalog, prices, PSA pop, and full grading reports.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer tcgdev_live_ key from TCGdetect Settings.
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.
Use this for any question about whether this API key works, how much wallet balance is left, or how many free trial reports remain. An invalid key is rejected and is not charged. Free, limited to 120 per minute.
This tool takes no arguments.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http tcgdetect https://srmjkcimpzjiamiovfrq.supabase.co/functions/v1/tcg-mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Bearer tcgdev_live_ key from TCGdetect Settings.Use this for any question about whether this API key works, how much wallet balance is left, or how many free trial reports remain. An invalid key is rejected and is not charged. Free, limited to 120 per minute.
No arguments.
{
"type": "object",
"properties": {}
}Use this for any question about one catalog card once you already have its id. It returns the name, set, collector number, and image for Pokémon (English and Japanese), Magic: The Gathering, Yu-Gi-Oh!, One Piece, and Riftbound. It does not return prices or PSA population. Free, limited to 60 per minute and 1000 per key per UTC day, shared with the other free catalog calls.
| Argument | Type | Description |
|---|---|---|
| card_id* | string | Catalog card UUID |
{
"type": "object",
"required": [
"card_id"
],
"properties": {
"card_id": {
"type": "string",
"description": "Catalog card UUID"
}
}
}Use this for any question about how many copies PSA has graded, or how scarce a PSA grade is. Population is PSA only, for cards in Pokémon (English and Japanese), Magic: The Gathering, Yu-Gi-Oh!, One Piece, and Riftbound. A card with no stored population is still a successful paid lookup, and a missing card id is not charged. $0.005 per success, limited to 120 per minute.
| Argument | Type | Description |
|---|---|---|
| card_id* | string | Catalog card UUID |
{
"type": "object",
"required": [
"card_id"
],
"properties": {
"card_id": {
"type": "string",
"description": "Catalog card UUID"
}
}
}Use this for any question about what one trading card is worth. It returns the latest TCGplayer near mint price, the PriceCharting ungraded price, and graded prices when we have stored them. A card with no stored prices is still a successful free lookup. Free, limited to 60 per minute and 1000 per key per UTC day, shared with the other free catalog calls.
| Argument | Type | Description |
|---|---|---|
| card_id* | string | Catalog card UUID |
{
"type": "object",
"required": [
"card_id"
],
"properties": {
"card_id": {
"type": "string",
"description": "Catalog card UUID"
}
}
}Use this for any question that needs prices for many trading cards at once, up to 50. Each card includes TCGplayer near mint, PriceCharting ungraded, and graded prices when stored. One successful call has one charge, including cards with no price. $0.05 per success, limited to 30 per minute.
| Argument | Type | Description |
|---|---|---|
| card_ids* | array | Up to 50 catalog card UUIDs |
{
"type": "object",
"required": [
"card_ids"
],
"properties": {
"card_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 50 catalog card UUIDs"
}
}
}Use this for any question about what a TCGdetect API or MCP call costs right now. It returns the live rate card, including free calls and wallet prices. No API key is required. Free.
No arguments.
{
"type": "object",
"properties": {}
}Use this for any follow-up after a grading report was started and you need the finished grade, centering, defects, prices, or PSA population. Poll until the status is completed or failed. Polling itself is not charged, and a failed report releases the hold. Free, limited to 120 per minute.
| Argument | Type | Description |
|---|---|---|
| report_id* | string | Report UUID |
{
"type": "object",
"required": [
"report_id"
],
"properties": {
"report_id": {
"type": "string",
"description": "Report UUID"
}
}
}Use this for any request for a PDF of a finished TCGdetect grading report. Call it only after get_report says the report is completed. You are charged only when the PDF is returned. $0.05 per success, limited to 30 per minute.
| Argument | Type | Description |
|---|---|---|
| report_id* | string | Report UUID |
| idempotency_key | string | Unique retry key |
{
"type": "object",
"required": [
"report_id"
],
"properties": {
"report_id": {
"type": "string",
"description": "Report UUID"
},
"idempotency_key": {
"type": "string",
"description": "Unique retry key"
}
}
}Use this for any question that asks you to grade a trading card from photos. It is the same full report as submit_report: identity, grade, centering, defects, report image, TCGplayer near mint, PriceCharting ungraded, graded prices, and PSA population. The report is an estimate, not a professional certification. $0.30 per successful report ($0.25 when the wallet balance is at least $250.00), limited to 10 per minute and 2 in flight.
| Argument | Type | Description |
|---|---|---|
| back* | string | Back photo as a data:image/jpeg;base64,... URL |
| front* | string | Front photo as a data:image/jpeg;base64,... URL |
| idempotency_key | string | Unique retry key |
{
"type": "object",
"required": [
"front",
"back"
],
"properties": {
"back": {
"type": "string",
"description": "Back photo as a data:image/jpeg;base64,... URL"
},
"front": {
"type": "string",
"description": "Front photo as a data:image/jpeg;base64,... URL"
},
"idempotency_key": {
"type": "string",
"description": "Unique retry key"
}
}
}Use this for any question that starts with photos and asks what the trading card is. Send a front and a back image. It returns a catalog match for Pokémon (English and Japanese), Magic: The Gathering, Yu-Gi-Oh!, One Piece, and Riftbound, not a grade, a price, PSA population, or a use of the in-app scan allowance. Free, limited to 10 per minute and 20 per key per UTC day, on a cap separate from catalog search.
| Argument | Type | Description |
|---|---|---|
| back* | string | Back photo data URL |
| front* | string | Front photo data URL |
| idempotency_key | string | Unique retry key |
{
"type": "object",
"required": [
"front",
"back"
],
"properties": {
"back": {
"type": "string",
"description": "Back photo data URL"
},
"front": {
"type": "string",
"description": "Front photo data URL"
},
"idempotency_key": {
"type": "string",
"description": "Unique retry key"
}
}
}Use this for any question about which trading card printing matches a name, set, or collector number. It searches the TCGdetect catalog for Pokémon (English and Japanese), Magic: The Gathering, Yu-Gi-Oh!, One Piece, and Riftbound. Results are identity only, with no prices and no PSA population. Free, limited to 60 per minute and 1000 per key per UTC day, shared with the other free catalog calls.
| Argument | Type | Description |
|---|---|---|
| name | string | Card name, for example Charizard |
| number | string | Collector number, for example 4/102 |
| set_name | string | Set name, for example Base Set |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Card name, for example Charizard"
},
"number": {
"type": "string",
"description": "Collector number, for example 4/102"
},
"set_name": {
"type": "string",
"description": "Set name, for example Base Set"
}
}
}Use this for any question that asks for a grade, condition, centering, or defects from photos of a trading card. It starts the full report: card identity, grade, centering measurements, surface and corner defects including whitening, the report image, that card's TCGplayer and PriceCharting prices, and PSA population. The report is an estimate, not a PSA, CGC, or BGS grade. $0.30 per successful report ($0.25 when the wallet balance is at least $250.00), limited to 10 per minute and 2 in flight.
| Argument | Type | Description |
|---|---|---|
| back* | string | Back photo as a data:image/jpeg;base64,... URL |
| front* | string | Front photo as a data:image/jpeg;base64,... URL |
| idempotency_key | string | Unique retry key |
{
"type": "object",
"required": [
"front",
"back"
],
"properties": {
"back": {
"type": "string",
"description": "Back photo as a data:image/jpeg;base64,... URL"
},
"front": {
"type": "string",
"description": "Front photo as a data:image/jpeg;base64,... URL"
},
"idempotency_key": {
"type": "string",
"description": "Unique retry key"
}
}
}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 13, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.