Skip to main content
Glama

POKEKA — Pokémon Card Prices

Card price

card_price

Use when the user asks what a card is worth, its PSA 10 / PSA 9 / CCIC 10 price, current market value, or what it last sold for. Returns a headline price (USD/CNY/JPY) from verified real sales (robust median — never listings, never interpolated) with grading company, grade, sample size, window and confidence, plus a per-grade ladder (PSA 10/9/8, CCIC, BGS, CGC …). Pass company + grade to price a specific grade (e.g. company "PSA", grade "9"); if that grade has no data the response says price_status "grade_not_available" and does NOT fall back to PSA 10. price_status "reference_only" = low confidence or thin sample — quote it with that caveat (safe_to_quote=false). "card_not_found" = wrong id, search again. Markets are kept separate: Japanese cards with Japan-domestic activity are priced from JPY marketplace sales (not converted US prices), Simplified-Chinese cards from Chinese market sales including CCIC slabs. Calls record usage and query metadata within POKEKA.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gradeNoOptional grade to price, e.g. "10", "9.5", "9". Use with company. No fallback to another grade.
card_idYesCard id from search_card / slang_lookup. An exact community nickname (e.g. "moonbreon", "鬼皮") also resolves when it maps to exactly one card.
companyNoOptional grading company to price, e.g. "PSA". Use with grade.
conditionNo"raw" = the user asked for an ungraded card. Raw prices are not offered yet; the response says so instead of returning a graded price.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cardNo
noteNo
fx_as_ofNo
headlineNoomitted when there is no verified headline price — read price_status
referenceNo
grade_ladderNo
price_statusNo
last_sold_dateNo
headline_confidenceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • addedOutput schema / properties / grade_ladder / items / properties / estimate_max_date
      Added value: +{
      +  "description": "Latest sale included in a historical estimate; not the newest source sale.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / grade_ladder / items / properties / estimate_min_date
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / grade_ladder / items / properties / finish
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / grade_ladder / items / properties / sale_date
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / headline / properties / estimate_max_date
      Added value: +{
      +  "description": "Latest sale included in a historical estimate; not the newest source sale.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / headline / properties / estimate_min_date
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / headline / properties / finish
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / headline / properties / sale_date
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / reference / properties / estimate_max_date
      Added value: +{
      +  "description": "Latest sale included in a historical estimate; not the newest source sale.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / reference / properties / estimate_min_date
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / reference / properties / finish
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / reference / properties / sale_date
      Added value: +{
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / properties / price_status / enum
      Previous value: -[
      -  "ok",
      -  "reference_only",
      -  "insufficient_data",
      -  "price_withheld_quality_gate",
      -  "card_not_found",
      -  "unreleased"
      -]New value: +[
      +  "ok",
      +  "reference_only",
      +  "insufficient_data",
      +  "price_withheld_quality_gate",
      +  "card_not_found",
      +  "unreleased",
      +  "grade_not_available",
      +  "unsupported_market_type"
      +]
  3. Changed3 schema fields changed
    • addedInput schema / properties / company
      Added value: +{
      +  "description": "Optional grading company to price, e.g. \"PSA\". Use with grade.",
      +  "enum": [
      +    "PSA",
      +    "BGS",
      +    "CGC",
      +    "CCIC",
      +    "ARS",
      +    "SGC",
      +    "PCG"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / condition
      Added value: +{
      +  "description": "\"raw\" = the user asked for an ungraded card. Raw prices are not offered yet; the response says so instead of returning a graded price.",
      +  "enum": [
      +    "graded",
      +    "raw"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / grade
      Added value: +{
      +  "description": "Optional grade to price, e.g. \"10\", \"9.5\", \"9\". Use with company. No fallback to another grade.",
      +  "type": "string"
      +}
  4. Changed3 schema fields changed
    • addedOutput schema / properties / grade_ladder / items / properties / market
      Added value: +{
      +  "description": "Which market this sale actually happened in (USD/CNY/JPY). The other two currency fields are convenience conversions at current FX rates, NOT prices observed in those markets. A USD-market sale quoted in CNY does not mean the card trades at that price in China.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / headline / properties / market
      Added value: +{
      +  "description": "Which market this sale actually happened in (USD/CNY/JPY). The other two currency fields are convenience conversions at current FX rates, NOT prices observed in those markets. A USD-market sale quoted in CNY does not mean the card trades at that price in China.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / reference / properties / market
      Added value: +{
      +  "description": "Which market this sale actually happened in (USD/CNY/JPY). The other two currency fields are convenience conversions at current FX rates, NOT prices observed in those markets. A USD-market sale quoted in CNY does not mean the card trades at that price in China.",
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • changedOutput schema / properties / price_status / enum
      Previous value: -[
      -  "ok",
      -  "reference_only",
      -  "insufficient_data",
      -  "price_withheld_quality_gate",
      -  "card_not_found"
      -]New value: +[
      +  "ok",
      +  "reference_only",
      +  "insufficient_data",
      +  "price_withheld_quality_gate",
      +  "card_not_found",
      +  "unreleased"
      +]
  6. Changed10 schema fields changed
    • addedOutput schema / properties / card / properties / character
      Added value: +{
      +  "description": "featured Pokémon (EN species name)",
      +  "type": "string"
      +}
    • addedOutput schema / properties / card / properties / dex_no
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / card / properties / finish_tiers
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / card / properties / gen_code
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / card / properties / rarity
      Added value: +{
      +  "description": "bilingual rarity bucket label",
      +  "type": "string"
      +}
    • addedOutput schema / properties / card / properties / rarity_display
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "cjk": {
      +      "description": "JP-style code (SR/RR/…)",
      +      "type": "string"
      +    },
      +    "en": {
      +      "description": "official EN star-system name",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / card / properties / rarity_tier
      Added value: +{
      +  "description": "machine rarity tier key (double_rare/ultra_rare/…)",
      +  "type": "string"
      +}
    • addedOutput schema / properties / card / properties / set_name
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / card / properties / variant
      Added value: +{
      +  "description": "variant slot (master_ball/poke_ball/…); absent for normal",
      +  "type": "string"
      +}
    • addedOutput schema / properties / card / properties / variant_kind
      Added value: +{
      +  "type": "string"
      +}
  7. Changed1 schema field changed
    • changedOutput schema / properties / headline / description
      Previous value: -"null when no verified headline price"New value: +"omitted when there is no verified headline price — read price_status"
  8. Changed3 schema fields changed
    • addedOutput schema / properties / grade_ladder / items / properties / as_of
      Added value: +{
      +  "description": "snapshot date of a reference (non-sale) price — quote it as of this date, not as today",
      +  "type": "string"
      +}
    • addedOutput schema / properties / headline / properties / as_of
      Added value: +{
      +  "description": "snapshot date of a reference (non-sale) price — quote it as of this date, not as today",
      +  "type": "string"
      +}
    • addedOutput schema / properties / reference / properties / as_of
      Added value: +{
      +  "description": "snapshot date of a reference (non-sale) price — quote it as of this date, not as today",
      +  "type": "string"
      +}
  9. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are sparse (readOnlyHint=false, destructiveHint=false) but the description carries the burden and does so richly. It discloses that prices are based on verified real sales (robust median, never listings/interpolated), explains the meaning of price_status values (grade_not_available, reference_only, card_not_found) and their implications (e.g., no fallback, safe_to_quote=false). It also notes market separation (JPY/CNY) and usage tracking within POKEKA, adding behavioral context well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though the description is lengthy, every sentence contributes essential information. The opening sentence states the trigger and scope immediately. Subsequent sentences cover edge cases, status codes, market separation, and tracking without redundancy. It is dense but structured with clear clauses and semicolons, appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers when to use it, parameter semantics, expected output (headline price, ladder), error/status handling, market nuances, and side effects (usage tracking). With an output schema present, return values are already documented, so the description completes all other aspects an agent needs to select and invoke the tool correctly. No gaps are evident.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds substantial meaning. It explains that company and grade work together, that grade has no fallback, that condition='raw' means ungraded and returns a message instead of a graded price, and that card_id can be a nickname resolving to exactly one card. These details significantly enhance the schema's descriptions and help the agent use parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('use when the user asks what a card is worth...') and enumerates the exact kinds of queries (PSA 10/9/CCIC 10 price, market value, last sold). It also distinguishes the output (headline price with confidence, per-grade ladder) and implies differentiation from siblings like card_price_history and recent_sales by focusing on current value and specific grades.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use when the user asks...' which provides clear context for invocation. It also specifies parameter combinations ('Pass company + grade to price a specific grade') and explains fallback behavior and status conditions. However, it does not name alternative tools (e.g., card_price_history) or explicitly say when NOT to use this tool, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources