HobbyCardIndex Card Prices
Server Details
Real sold prices for 16M+ sports and trading cards: raw and graded by grade, with card page links.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- charmanroofing-pixel/hci-api-examples
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
search_cards and get_card_prices both return prices, which is the only real overlap, but the descriptions explicitly delineate them: search by description to get a card_id and raw/PSA 10 price, then get_card_prices for every grade of a known card_id. list_plans (browsing) versus start_checkout (purchasing after plan selection) are cleanly separated, including a stated precondition ordering.
All four names follow a consistent snake_case verb_noun pattern: search_cards, get_card_prices, list_plans, start_checkout. Verbs are chosen appropriately (search/get/list/start) and nouns identify the resource unambiguously.
Four tools is on the lean side but each has a distinct role in a clear two-step workflow: discover a card, price it, browse plans, buy a plan. Nothing feels redundant, though a slightly richer surface (e.g. key status) could justify one or two more.
The core lifecycle is covered: search a card, get full graded pricing, list purchasable plans, and start checkout with an API key delivered post-payment. Minor gaps exist — no way to check an existing API key or subscription status, and price history is only reachable via an external link — but agents can complete the primary workflows.
Available Tools
4 toolsget_card_pricesCard prices by gradeARead-onlyIdempotentInspect
Current sold prices for one card at every grade: raw (ungraded), PSA 7, PSA 8, PSA 9, PSA 10, BGS 9.5, CGC 10 and SGC 10, in US dollars, with the link to the card page for recent sales and price history. Take the card_id from search_cards. Needs a HobbyCardIndex API key.
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | The card_id returned by search_cards. |
Output Schema
| Name | Required | Description |
|---|---|---|
| card | Yes | |
| prices | Yes | |
| currency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is free to add context — and it does: it discloses the HobbyCardIndex API-key requirement and that the payload includes a link to recent sales and price history. No return-shape detail beyond that, which is acceptable given an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense, front-loaded sentences: the payload description comes first, the provenance/auth constraints second. No filler, no restated tool name, every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with an output schema and full annotation coverage, the description covers the remaining gaps — what the grades are, the currency, the return link, and the auth requirement. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single card_id parameter is already documented as coming from search_cards, so the description's reference to that same origin adds little beyond the structured field. Baseline 3 is appropriate for a fully documented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — current sold prices for one card, enumerated by grade — plus currency (USD) and the exact grade breakdown. An agent can tell instantly that this is a per-card price lookup, distinct from the sibling search_cards which only locates cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names search_cards as the source for card_id, establishing the search-then-price workflow, and states the API-key prerequisite. It lacks an explicit 'do not call with X' exclusion, but the sequencing guidance is clear enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_plansCommercial API plans and pricesARead-onlyIdempotentInspect
The HobbyCardIndex plans a user can buy right now: the Commercial API sizes (requests, photo scans, sold-sale lookups, cert lookups) and the app plans Pro, Dealer and Enterprise (scans a month, dealer tools, API key on Enterprise), with monthly prices in US dollars, the terms and how to buy. Pass use_case to get the size and add-ons that fit what the user wants to do. Works without an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| use_case | No | Optional. display_prices: show prices in their app or site. copy_all_prices: keep their own copy of every price (catalogue sync). photo_scans: identify cards from photos. sold_sales: show individual sold sales. certs_and_pop: cert lookups and population reports. own_use: price their own collection only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, and the description still adds real context: 'Works without an API key' is an auth detail an agent needs before calling. It also frames the data as currently purchasable plans, implying live catalogue results rather than cached ones.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The payload sentence is front-loaded with the resource and follows with the use_case guidance; nothing is filler. The long parenthetical enumeration of plan features makes it denser than necessary, but every clause conveys distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey return content, and it does: plan sizes, monthly USD prices, terms, and purchase instructions. What remains thin is whether responses are grouped per plan or how they should be presented, but nothing blocking an agent from calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the enum values are individually explained in the schema, so the schema carries the detail. The description only adds a loose hint that use_case selects size and add-ons; it does not clarify value-specific behavior beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: the plans a user can buy right now, enumerating the Commercial API sizes and the app plans (Pro, Dealer, Enterprise) with prices in USD. This clearly separates it from get_card_prices (per-card pricing data) and start_checkout (transaction), so an agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete routing rule: 'Pass use_case to get the size and add-ons that fit what the user wants to do,' which tells the agent when the parameter is worth setting. It lacks explicit when-not-to-use guidance or named alternatives to get_card_prices/start_checkout, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cardsSearch card pricesARead-onlyIdempotentInspect
Find a sports or trading card and its current sold price. Describe the card the way a collector would, for example "1989 Upper Deck Ken Griffey Jr 1", "2018 Topps Update Acuna US250" or "Charizard Base Set". Returns up to 5 matching cards with the raw (ungraded) and PSA 10 price, a card_id, and the link to the card page. Use get_card_prices for every grade of one card. Needs a HobbyCardIndex API key.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Year, set, player or character, and card number if known. | |
| category | No | Optional: baseball, basketball, football, hockey, soccer, pokemon, magic, yugioh, one piece ... |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is free to add operational context: result cap of 5, the raw vs PSA 10 price fields, the card_id, the page link, and the API key requirement. It does not describe pagination or behavior when no match is found, but the added auth and result-shape context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, with examples, sibling routing, return shape, and auth needs following in order. The three inline examples cost some length but directly serve query construction, so they earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with a full output schema, the description covers everything an agent needs: what it finds, how to phrase the query, the result cap, sibling routing, and the API key prerequisite. Return values need not be restated, and nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; the schema documents query and category, but the description adds real meaning by prescribing the collector-style phrasing and giving three worked examples, and it explains the practical effect of limit ('up to 5 matching cards'). category is left to the schema, which is acceptable given its inline description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find a sports or trading card and its current sold price') and explicitly separates itself from the sibling tool by noting get_card_prices handles all grades of one card. An agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (get_card_prices) and the condition that selects it ('for every grade of one card'), and instructs how to phrase the query as a collector would with concrete examples. It also states the prerequisite of a HobbyCardIndex API key.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_checkoutBuy a Commercial API planAInspect
Start buying a Commercial API plan for the user. Returns a Stripe checkout_url where the user pays by card (HobbyCardIndex never sees the card) and a status_url that returns the API key once, after payment. Only call this after the user has picked a plan from list_plans and agreed to the terms (accept_terms: true). Use the user's own email: the receipt and the account sign-in go there. Works without an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | A plan id from list_plans: a Commercial API size ("lite", "growth_lite", "growth") or an app plan ("pro", "dealer", "enterprise"), monthly. | |
| Yes | The buyer's email address. | ||
| company | No | Optional: the company name for the receipt. | |
| with_addon | No | Optional: add the pop reports + cert lookups add-on. | |
| accept_terms | Yes | true only if the user agreed to the HobbyCardIndex Terms of Service (https://hobbycardindex.com/terms/), including section 8 for a Commercial API plan. | |
| with_price_files | No | Optional, growth_lite or growth only: add the daily price files ($450 a month), a daily download of current prices for the whole catalogue. Use it when the user wants to keep their own copy of the prices, instead of paging search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: the payment happens on Stripe, the server never sees the card, the API key is retrievable exactly once after payment, and no API key is required to call. It does not warn that a repeat call creates a second checkout session (idempotentHint is false), which is the one behaviorally significant omission for a non-idempotent purchase flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with no filler: what it does and returns first, then the ordering/consent precondition, then the email constraint, then the auth note. Every sentence carries information an agent needs to act.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly explains the two returned URLs and the one-time key delivery. For a non-idempotent, open-world mutation it stops short of covering failure modes (e.g., what a duplicate call does or what happens if the status_url is polled before payment).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics: the email is the receipt and sign-in address, and accept_terms must reflect an actual ToS agreement including section 8. The plan parameter is cross-referenced to list_plans rather than described in the prose, which keeps it just short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Start buying a Commercial API plan") and immediately describes the concrete outputs (Stripe checkout_url and status_url). It is clearly separable from list_plans, which it names as the upstream step, and from the read-only siblings search_cards/get_card_prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit preconditions: only call after the user has picked a plan from list_plans and agreed to the terms (accept_terms: true), and use the user's own email because the receipt and account sign-in go there. It also names the alternative path (paging search vs. price files) and states it works without an API key, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
list_plans1 field changed- added
Input schema / properties / use_caseAdded value: +{ + "description": "Optional. display_prices: show prices in their app or site. copy_all_prices: keep their own copy of every price (catalogue sync). photo_scans: identify cards from photos. sold_sales: show individual sold sales. certs_and_pop: cert lookups and population reports. own_use: price their own collection only.", + "enum": [ + "display_prices", + "copy_all_prices", + "photo_scans", + "sold_sales", + "certs_and_pop", + "own_use" + ], + "type": "string" +}
1 tool update
- Changed
start_checkout1 field changed- added
Input schema / properties / with_price_filesAdded value: +{ + "description": "Optional, growth_lite or growth only: add the daily price files ($450 a month), a daily download of current prices for the whole catalogue. Use it when the user wants to keep their own copy of the prices, instead of paging search.", + "type": "boolean" +}
1 tool update
- Changed
start_checkout2 fields changed- changed
Input schema / properties / accept_terms / descriptionPrevious value: -"true only if the user agreed to the Commercial API terms (https://hobbycardindex.com/terms/#data-license)."New value: +"true only if the user agreed to the HobbyCardIndex Terms of Service (https://hobbycardindex.com/terms/), including section 8 for a Commercial API plan." - changed
Input schema / properties / plan / descriptionPrevious value: -"A plan id from list_plans, for example \"lite\", \"growth_lite\" or \"growth\"."New value: +"A plan id from list_plans: a Commercial API size (\"lite\", \"growth_lite\", \"growth\") or an app plan (\"pro\", \"dealer\", \"enterprise\"), monthly."
2 tool updates
- Added
list_plans - Added
start_checkout
2 tool updates
- First observed
get_card_prices - First observed
search_cards
Related MCP Connectors
Pokemon card prices from real sold listings: raw and every PSA, CGC, BGS and TAG grade.
Values graded sports cards and Pokémon/TCG slabs by grade from real sales. Free, read-only.
Verified trading card sales and prices by grade: Pokemon, Magic, Yu-Gi-Oh!, sports, Harry Potter.
Trading card prices and grading ROI for 1.5M+ Pokémon, Magic, Yu-Gi-Oh! and sports cards. Read-only.
Related MCP Servers
- AlicenseAqualityDmaintenanceReal-time sports card pricing, market analysis, arbitrage detection, grading ROI, investment advice, and player stats (NBA/NFL/MLB). 9 tools for AI agents helping collectors and investors.93MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to look up trading-card market values across Pokémon, Magic, sports and other TCG catalogs, including raw prices by condition, graded ladders, price history, trending movers and set checklists. It also calculates grading ROI — gem premiums, net profit after fees, expected value and break-even gem rates — so collectors can decide whether a card is worth submitting.-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to price trading cards and sealed products across 14 games with sourced, dated quotes, graded medians, PSA populations, eBay sold data and 365 days of history. Also supports card identification from free text or photo, batch lookups, and side-by-side price comparisons through 16 read-only tools.MIT

Flipzi TCG MCP serverofficial
AlicenseAqualityAmaintenanceTrading card prices, sold comps, history and movers from the Flipzi Data API. Bring your own key.1154 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.