# TCGdetect

> Any trading card question: catalog, prices, PSA population, and photo grades.

- name: com.tcgdetect/tcgdetect
- version: 1.1.0
- connection class: R1 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 75/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.tcgdetect%2Ftcgdetect
- tools: https://api.protogrid.dev/v1/servers/com.tcgdetect%2Ftcgdetect/tools

**An agent can connect on its own if it already holds `TCGDETECT_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "tcgdetect": {
      "type": "http",
      "url": "https://mcp.tcgdetect.com/mcp",
      "headers": {
        "Authorization": "Bearer ${TCGDETECT_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${TCGDETECT_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-0d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 75/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-03-26; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 75 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_report (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); account (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_prices_batch (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,016 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 0 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 16, about 3,016 tokens to load them all
- tool set hash: edb0d44cff7c8b6c1cae62c0cb3a6ae6
- badge: [![protogrid quality](https://protogrid.dev/badge/com.tcgdetect/tcgdetect.svg)](https://protogrid.dev/servers/com.tcgdetect/tcgdetect)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.tcgdetect.com/mcp (streamable-http, auth api_key ${TCGDETECT_TOKEN}, reachable true, uptime30d 1)
- https://srmjkcimpzjiamiovfrq.supabase.co/functions/v1/tcg-mcp (streamable-http, auth api_key ${TCGDETECT_TOKEN}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (16)

- `account`: Use this for any question about whether this API key works, how much wallet balance is left, remaining free catalog or identify quota, or how many free trial reports remain. The response names the key (name and prefix) so you can tell keys apart. An invalid key is rejected and is not charged. Free, limited to 120 per minute.
- `find_card`: Use this for any question that names a card in free text, including nicknames like Moonbreon, 1st edition or Shadowless, or an English or Japanese set title. Example: q="Base Set Charizard 1st edition" or q="Obsidian Flames Charizard ex". Results are ranked with match_score, exact_match, variant, and a needs_clarification hint when more than one printing fits. Free, limited to 60 per minute and 1000 per key per UTC day, shared with the other free catalog calls.
- `get_card`: Use this for any question about one catalog card once you already have its id. It returns the name, set, collector number, image, language (en or ja), and rarity for Pokémon (English and Japanese), Magic: The Gathering, Yu-Gi-Oh!, One Piece, and Riftbound. Unknown language or rarity is null, and 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.
- `get_population`: 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.01 per success, limited to 120 per minute.
- `get_prices`: Use this for any question about what one trading card is worth. raw_nm is the TCGplayer near mint market price; raw_pc is the PriceCharting ungraded average sale; graded is PriceCharting sold comps by vendor and grade, all USD, with source, as_of, and a stale flag. A card with no stored prices is still a successful free lookup; PSA 9.5 is omitted because PSA does not issue that grade. Free, limited to 60 per minute and 1000 per key per UTC day, shared with the other free catalog calls.
- `get_prices_batch`: Use this for any question that needs prices for more than about 10 trading cards at once, up to 50. For a few cards, call get_prices (free) per card instead of this $0.05 batch. Each card includes raw_nm, raw_pc, and graded prices when stored, and one successful call has one charge. $0.05 per success, limited to 30 per minute.
- `get_pricing`: 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.
- `get_report`: 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.
- `get_report_pdf`: 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.
- `grade_card`: Use this for any question that asks you to grade a trading card from photos. Prefer this name; submit_report is a deprecated alias of the same paid report (front and back photos required). It returns identity, a condition estimate (not a PSA/CGC/BGS grade), centering, defects, prices, and PSA population. $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.
- `identify_card`: Use this for any question that starts with photos and asks what the trading card is. Send a front JPEG, PNG, or WebP data URL (min 250px, keep under ~350KB); a back photo is optional and is not used, and the call typically takes 15-20 seconds. It returns a catalog match for Pokémon (English and Japanese), Magic: The Gathering, Yu-Gi-Oh!, One Piece, and Riftbound, including set_id, game_id, and release_date when known, not a grade 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.
- `kiri_chat`: Use this for any natural-language request that should search the catalog, check prices or PSA population, or work with a collection. The cost is usage-based and varies with complexity. Grades and PSA lookups it completes are charged at their listed prices. usage-based, holds $0.4212 per request, limited to 10 per minute and 100 per key per UTC day and 2 in flight.
- `kiri_estimate`: Use this for any question about what a Kiri request might cost before you spend. It returns a cost range and the maximum hold, and it does not run Kiri. Grades and PSA lookups on a live request are charged at their listed prices. Free, limited to 30 per minute and 300 per key per UTC day.
- `list_sets`: Use this for any question about set names, including mapping a Japanese set title such as Ruler of the Black Flame to Obsidian Flames. Filter by name and an optional game slug (pokemon, mtg, yugioh, onepiece, riftbound) or language en/ja. Each row includes id, name, game, language, and release_date. Free, limited to 60 per minute and 1000 per key per UTC day, shared with the other free catalog calls.
- `search_cards`: Use this for any question about which trading card printing in Pokémon (English and Japanese), Magic: The Gathering, Yu-Gi-Oh!, One Piece, and Riftbound matches a name, set, or collector number. Filters (set_name, number, language, game) are applied before the cap; the response includes total, truncated, and next_cursor, plus language, rarity, release_date, and set_id when known. For nicknames or mixed free text such as "Moonbreon" or "Base Set Charizard 1st edition", prefer find_card. Free, limited to 60 per minute and 1000 per key per UTC day, shared with the other free catalog calls.
- `submit_report`: Use this for any follow-up that already thinks of the call as submit_report; prefer grade_card, which is the same tool. Deprecated alias of grade_card: front and back JPEG, PNG, or WebP data URLs required (min 250px, keep under ~350KB). 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.
