PokeFocus
Pokémon card and sealed prices, recent eBay sales, sets, Market Pulse, and active eBay listings.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"mcp": {
"url": "https://pokefocus.com/api/mcp"
}
}
}Remote endpoints
https://pokefocus.com/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢search_listings(q, grade, listingType, sort, cards, ...)
Use this when the user wants to find, compare, or buy Pokémon card listings on eBay, including raw cards, graded slabs, deals, and well-centered copies. Active eBay listings for Pokémon cards with every pokefocus.com/listings filter: card search, cards or set, grade, era, rarity, centering, price, free shipping, listing checks (tags), seller feedback, seller location, and under-market auctions. Each listing has price, shipping, grade or seller condition, its market reference (TCGplayer for raw cards, the eBay sold median for PSA 9 and PSA 10), the card page, and the eBay listing page (ebayUrl). Each deal listing has a deal object saying why (priced under market, or at or under market after a 14-day dip). For deals, set deals to true (deal listings only) or sort by best_match (newest listings with deals mixed in, as pokefocus.com does); the market_gap sorts cover only listings with an exact condition market. Results match pokefocus.com/listings for the same filters.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 120,
"description": "Card name, optionally with the number before the slash."
},
"grade": {
"type": "string",
"enum": [
"raw",
"graded",
"psa9",
"psa10"
],
"description": "Raw (ungraded), any graded slab, PSA 9, or PSA 10."
},
"listingType": {
"type": "string",
"enum": [
"FixedPriceRecent",
"Auction",
"All"
],
"default": "FixedPriceRecent",
"description": "FixedPriceRecent is Buy It Now."
},
"sort": {
"type": "string",
"enum": [
"default",
"best_match",
"newest",
"price_asc",
"price_desc",
"market_gap_percent",
"market_gap_dollars",
"fixed_opportunity",
"best_deal",
"ending_soon",
"title_asc",
"title_desc",
"timing_asc",
"timing_desc",
"recently_synced"
],
"description": "Default: newest for Buy It Now, ending_soon for auctions. best_match (Buy It Now only) lists the newest listings with deal listings from sellers at 98% or more positive feedback at every third position; a deal is priced under a trusted market, or is a raw card in a market dip whose price plus known shipping is at or under its market. price_asc and price_desc sort by item price. market_gap_percent and market_gap_dollars list the largest gaps under market first and include only listings with a confirmed market comparison, and auctions only in their final hour because a current bid is not the final price; best_deal is the same as market_gap_percent, and fixed_opportunity ranks by market gap, then newest. title_asc, title_desc, timing_asc, timing_desc, and recently_synced match the site."
},
"cards": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 250,
"description": "Only these cards, by PokeFocus card id (`card.id` in listing and card results)."
},
"setId": {
"type": "string",
"description": "Only cards from this set, by PokeFocus set id (`card.setId` in listing results, `id` in set results)."
},
"era": {
"type": "string",
"enum": [
"mega-evolution",
"scarlet-violet",
"sword-shield",
"sun-moon",
"xy",
"black-white",
"heartgold-soulsilver",
"diamond-pearl",
"ex",
"wizards"
],
"description": "Only sets from one era."
},
"rarities": {
"type": "array",
"items": {
"type": "string",
"maxLength": 128
},
"maxItems": 50,
"description": "Only these card rarities, such as Special Illustration Rare."
},
"centered": {
"type": "boolean",
"description": "Only listings whose front photo measured centeringThreshold or better on every side. Measured from the photo; not a grade."
},
"centeringThreshold": {
"type": "number",
"enum": [
40,
45,
47.5,
50
],
"default": 45,
"description": "Minimum share for every side: 45 means 45/55 or better."
},
"minPrice": {
"type": "number",
"minimum": 0,
"description": "Minimum item price in US dollars."
},
"maxPrice": {
"type": "number",
"minimum": 0,
"description": "Maximum item price in US dollars."
},
"freeShipping": {
"type": "boolean",
"description": "Only listings with free shipping."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"enum": [
"hide_over_market",
"hide_quantity_based",
"hide_no_returns",
"only_authenticity_guarantee",
"hide_seller_description_caution",
"hide_missing_back",
"hide_missing_corners",
"hide_holder_present",
"only_near_mint_or_better",
"only_card_condition_excellent",
"only_card_condition_very_good",
"only_card_condition_poor"
]
},
"description": "Listing checks: hide_over_market (Avoid listings more than 15% above captured market); hide_quantity_based (Hide quantity listings); hide_no_returns (Hide listings with no returns); only_authenticity_guarantee (Only eBay Authenticity Guarantee); hide_seller_description_caution (Hide seller description cautions); hide_missing_back (Require a back photo); hide_missing_corners (Require corner detection); hide_holder_present (Exclude holder or stand photos); only_near_mint_or_better (Raw: Near Mint or better); only_card_condition_excellent (Raw: Lightly Played (Excellent)); only_card_condition_very_good (Raw: Moderately Played (Very Good)); only_card_condition_poor (Raw: Heavily Played (Poor)). The raw condition checks apply with grade=raw."
},
"minSellerFeedbackScore": {
"type": "integer",
"minimum": 0,
"description": "Minimum seller feedback score."
},
"minSellerFeedbackPercent": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Minimum positive seller feedback percentage."
},
"locationScope": {
"type": "string",
"enum": [
"us",
"outside_us",
"both"
],
"default": "us",
"description": "Seller location."
},
"auctionFilter": {
"type": "string",
"enum": [
"all",
"underMarket"
],
"default": "all",
"description": "underMarket keeps auctions in their final hour whose next bid is under market by minDiscountPercent and minProfit; it sets listingType=Auction. Only auctions with a confirmed market comparison qualify."
},
"minDiscountPercent": {
"type": "number",
"minimum": 0,
"maximum": 95,
"default": 15,
"description": "Under-market auctions: minimum discount from market, in percent."
},
"minProfit": {
"type": "number",
"minimum": 0,
"maximum": 5000,
"default": 8,
"description": "Under-market auctions: minimum dollars under market."
},
"maxHoursRemaining": {
"type": "number",
"minimum": 0.25,
"maximum": 1,
"default": 1,
"description": "Under-market auctions: ending within this many hours. Only the final hour counts, so larger values are capped at 1."
},
"deals": {
"type": "boolean",
"description": "Only deal listings (Buy It Now): priced under a trusted market at least 7% and $0.50, or a raw card in a 14-day market dip priced with known shipping at or under its market. PokeFocus confirms the card and its print first. The deal set refreshes every five minutes. Combine with any other filter; sorts newest first unless sort is set."
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1,
"description": "Page of results."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 24,
"description": "Results per page."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"capturedAt": {
"type": "string",
"description": "When PokeFocus answered; market.asOf is when a price was refreshed."
},
"filters": {
"type": "array",
"items": {
"type": "string"
},
"description": "The applied filters in plain language."
},
"viewUrl": {
"type": "string",
"description": "The same view on pokefocus.com."
},
"page": {
"type": "integer"
},
"hasMore": {
"type": "boolean"
},
"listings": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"itemId",
"listingType",
"price",
"ebayUrl"
],
"properties": {
"title": {
"type": "string",
"description": "The eBay listing title."
},
"itemId": {
"type": "string"
},
"listingType": {
"type": "string",
"enum": [
"buy_it_now",
"auction"
]
},
"price": {
"type": "number",
"description": "Item price, or the current bid for an auction, in US dollars."
},
"shipping": {
"type": [
"string",
"null"
],
"description": "\"free shipping\", \"+ $1.50 shipping\", or \"calculated shipping\"."
},
"grade": {
"type": [
"string",
"null"
],
"description": "PSA 10, PSA 9, or \"Raw, <seller-declared condition>\"."
},
"market": {
"type": [
"object",
"null"
],
"description": "The market reference PokeFocus shows for this listing, or null. label names the source with the price as the site prints it, such as \"TCGplayer NM $85.00\" or \"PSA 10 market $1,499.98\"; price is US dollars.",
"properties": {
"label": {
"type": "string"
},
"price": {
"type": "number"
}
}
},
"deal": {
"type": [
"object",
"null"
],
"description": "Why the listing is a deal, as the deal chip on pokefocus.com says, or null. kind under-market: PokeFocus confirmed the exact card and printing and the Buy It Now total is at least 7% and $0.50 under market. kind dip: a raw card whose market fell at least 10% over 14 days, priced with known shipping at or under that market; marketChange14dPercent is the fall.",
"properties": {
"kind": {
"type": "string",
"enum": [
"under-market",
"dip"
]
},
"label": {
"type": "string"
},
"percentBelowMarket": {
"type": "integer"
},
"marketChange14dPercent": {
"type": [
"number",
"null"
]
}
}
},
"priceTier": {
"type": "string",
"enum": [
"great",
"good",
"fair",
"high",
"veryHigh",
"none"
],
"description": "How the site colors the price against market: great or good deal, fair, above (high) or well above (veryHigh) market, or none without a trusted reference."
},
"bidCount": {
"type": [
"integer",
"null"
],
"description": "Auctions only."
},
"marketTrend": {
"type": [
"array",
"null"
],
"items": {
"type": "number"
},
"description": "30-day graded market trend points, oldest first, for PSA 9 and PSA 10 listings."
},
"card": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": "string",
"description": "PokeFocus card id, the value the `cards` filter takes."
},
"name": {
"type": "string"
},
"setId": {
"type": [
"string",
"null"
],
"description": "PokeFocus set id, the value the `setId` filter takes."
},
"set": {
"type": [
"string",
"null"
]
},
"setImageUrl": {
"type": [
"string",
"null"
],
"description": "The set logo."
},
"url": {
"type": "string",
"description": "The PokeFocus card page with market price and history."
}
}
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"listedAt": {
"type": [
"string",
"null"
]
},
"endsAt": {
"type": [
"string",
"null"
],
"description": "Auctions only."
},
"lastCheckedAt": {
"type": [
"string",
"null"
],
"description": "When PokeFocus last saw the listing active."
},
"ebayUrl": {
"type": [
"string",
"null"
],
"description": "The eBay listing page."
}
}
}
}
},
"required": [
"capturedAt",
"filters",
"viewUrl",
"listings"
]
}🟢search_cards(q, limit)
Use this when the user names or describes a Pokémon card and wants to identify it or see its price, value, or sold comps. Finds Pokémon cards the way the pokefocus.com search box does, best match first. Each card has its id, TCGplayer market price, 30-day raw and PSA 10 eBay sold medians and sale counts, image, card page, and a link to its active listings. When match is partial, no card matched every word and the results leave out ignoredTerms, so they may be a different card. Not for sealed products.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Card name, number (\"173/165\", \"GG35\"), set name or code, rarity, or a mix, as in the pokefocus.com search box."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 24,
"default": 10,
"description": "Results to return."
}
},
"required": [
"q"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"match": {
"type": "string",
"enum": [
"exact",
"corrected",
"partial"
],
"description": "exact: the cards match every word. corrected: they match after a typo or nickname was fixed (see matchedQuery). partial: no card matched every word, so these leave out ignoredTerms and may be a different card; confirm the name, number, and set before using a price."
},
"matchedQuery": {
"type": "string",
"description": "The query as PokeFocus read and matched it."
},
"ignoredTerms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Words a partial match left out."
},
"total": {
"type": [
"number",
"null"
]
},
"cards": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"url",
"listingsUrl"
],
"properties": {
"id": {
"type": "string",
"description": "PokeFocus card id."
},
"name": {
"type": "string"
},
"number": {
"type": [
"string",
"null"
]
},
"set": {
"type": [
"string",
"null"
]
},
"year": {
"type": [
"integer",
"null"
]
},
"rarity": {
"type": [
"string",
"null"
]
},
"printing": {
"type": [
"string",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"marketPrice": {
"type": [
"number",
"null"
],
"description": "TCGplayer market price (Near Mint), US dollars."
},
"rawSalesMedian30d": {
"type": [
"number",
"null"
],
"description": "Median raw eBay sale over 30 days, US dollars."
},
"psa10SalesMedian30d": {
"type": [
"number",
"null"
],
"description": "Median PSA 10 eBay sale over 30 days, US dollars."
},
"rawSales30d": {
"type": [
"number",
"null"
]
},
"psa10Sales30d": {
"type": [
"number",
"null"
]
},
"url": {
"type": "string",
"description": "The PokeFocus card page."
},
"listingsUrl": {
"type": "string",
"description": "Active eBay listings for this card on PokeFocus."
}
}
}
},
"capturedAt": {
"type": "string",
"description": "When PokeFocus answered; market.asOf is when a price was refreshed."
}
},
"required": [
"query",
"cards",
"capturedAt"
]
}🟢get_card(card, grade, range, sales)
Use this when the user asks what a specific Pokémon card is worth or has sold for, raw or graded (PSA 9 or PSA 10 slabs), or wants its sold comps or price trend. One card as its pokefocus.com page shows it: TCGplayer market price with 7- and 30-day change, 30-day range, and the overbought/oversold reading; for raw, PSA 9, and PSA 10 the 30-day eBay sold median and sale count and the lowest trusted eBay Buy It Now; the offers for the requested grade cheapest first with links; the PSA 10 premium over raw; the active listing count; and the verified recent eBay sales for one grade, newest first.
Input Schema
{
"type": "object",
"properties": {
"card": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "The card as a PokeFocus id, the slug from its pokefocus.com URL, or the full pokefocus.com URL."
},
"grade": {
"type": "string",
"enum": [
"raw",
"psa9",
"psa10"
],
"default": "raw",
"description": "Grade for the recent sales list."
},
"range": {
"type": "string",
"enum": [
"7d",
"30d",
"90d"
],
"default": "30d",
"description": "Window for recent sales. Individual sales are kept for 90 days."
},
"sales": {
"type": "integer",
"minimum": 0,
"maximum": 50,
"default": 10,
"description": "How many recent sales to list."
}
},
"required": [
"card"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"number": {
"type": [
"string",
"null"
]
},
"rarity": {
"type": [
"string",
"null"
]
},
"printing": {
"type": [
"string",
"null"
]
},
"set": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
],
"description": "The set logo."
},
"url": {
"type": [
"string",
"null"
],
"description": "The set card list on PokeFocus."
},
"sealedUrl": {
"type": [
"string",
"null"
],
"description": "The set sealed products on PokeFocus."
}
}
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string",
"description": "The PokeFocus card page with price history."
},
"listingsUrl": {
"type": "string",
"description": "Active eBay listings for this card on PokeFocus."
},
"tcgplayerUrl": {
"type": [
"string",
"null"
],
"description": "The card on TCGplayer (affiliate link)."
},
"market": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"price": {
"type": [
"number",
"null"
],
"description": "US dollars."
},
"asOf": {
"type": [
"string",
"null"
]
},
"stale": {
"type": "boolean",
"description": "TCGplayer stopped refreshing the price; it is the last known one, not current."
},
"change7dPercent": {
"type": [
"number",
"null"
]
},
"change30dPercent": {
"type": [
"number",
"null"
]
},
"low30d": {
"type": [
"number",
"null"
],
"description": "Lowest daily market price in the last 30 days, US dollars."
},
"high30d": {
"type": [
"number",
"null"
],
"description": "Highest daily market price in the last 30 days, US dollars."
},
"rsi14": {
"type": [
"object",
"null"
],
"description": "The overbought/oversold reading of the market price, as the card page shows it.",
"properties": {
"value": {
"type": "number",
"description": "14-day RSI, 0 to 100."
},
"band": {
"type": "string",
"enum": [
"oversold",
"neutral",
"overbought"
],
"description": "Oversold at RSI 30 or below with a 5%+ fall over 14 days; overbought at 70 or above with a 5%+ rise; otherwise neutral."
},
"change14dPercent": {
"type": [
"number",
"null"
]
}
}
},
"history": {
"type": "array",
"description": "Daily TCGplayer market price for 90 days, oldest first, as the card page charts it.",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"price": {
"type": "number"
}
}
}
}
}
},
"ebaySoldMedians": {
"type": "object",
"description": "Stored eBay sold medians and sale counts by grade, US dollars.",
"properties": {
"raw": {
"type": "object",
"properties": {
"median7d": {
"type": [
"number",
"null"
]
},
"median30d": {
"type": [
"number",
"null"
]
},
"sales7d": {
"type": [
"number",
"null"
]
},
"sales30d": {
"type": [
"number",
"null"
]
}
}
},
"psa9": {
"type": "object",
"properties": {
"median7d": {
"type": [
"number",
"null"
]
},
"median30d": {
"type": [
"number",
"null"
]
},
"sales7d": {
"type": [
"number",
"null"
]
},
"sales30d": {
"type": [
"number",
"null"
]
}
}
},
"psa10": {
"type": "object",
"properties": {
"median7d": {
"type": [
"number",
"null"
]
},
"median30d": {
"type": [
"number",
"null"
]
},
"sales7d": {
"type": [
"number",
"null"
]
},
"sales30d": {
"type": [
"number",
"null"
]
}
}
}
}
},
"activeListings": {
"type": [
"number",
"null"
]
},
"grades": {
"type": [
"object",
"null"
],
"description": "The card page's grade table: live 30-day sold median and sale count, and the lowest trusted eBay Buy It Now, for raw, PSA 9, and PSA 10. A median needs one raw sale or three graded sales; an ask must be the exact card (raw: Near Mint per the seller) and near the market.",
"properties": {
"raw": {
"type": "object",
"properties": {
"soldMedian30d": {
"type": [
"number",
"null"
],
"description": "Median verified eBay sale in the last 30 days, US dollars."
},
"sales30d": {
"type": [
"number",
"null"
]
},
"lowestBuyItNow": {
"type": [
"object",
"null"
],
"properties": {
"price": {
"type": [
"number",
"null"
],
"description": "The ask with shipping when known, US dollars."
},
"itemPrice": {
"type": [
"number",
"null"
],
"description": "The ask before shipping, US dollars."
},
"shipping": {
"type": "string",
"enum": [
"free",
"included",
"extra"
]
},
"shippingCost": {
"type": [
"number",
"null"
],
"description": "Shipping included in price, US dollars."
},
"title": {
"type": "string"
},
"listedAt": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string",
"description": "The eBay listing (a plain eBay link)."
}
}
}
}
},
"psa9": {
"type": "object",
"properties": {
"soldMedian30d": {
"type": [
"number",
"null"
],
"description": "Median verified eBay sale in the last 30 days, US dollars."
},
"sales30d": {
"type": [
"number",
"null"
]
},
"lowestBuyItNow": {
"type": [
"object",
"null"
],
"properties": {
"price": {
"type": [
"number",
"null"
],
"description": "The ask with shipping when known, US dollars."
},
"itemPrice": {
"type": [
"number",
"null"
],
"description": "The ask before shipping, US dollars."
},
"shipping": {
"type": "string",
"enum": [
"free",
"included",
"extra"
]
},
"shippingCost": {
"type": [
"number",
"null"
],
"description": "Shipping included in price, US dollars."
},
"title": {
"type": "string"
},
"listedAt": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string",
"description": "The eBay listing (a plain eBay link)."
}
}
}
}
},
"psa10": {
"type": "object",
"properties": {
"soldMedian30d": {
"type": [
"number",
"null"
],
"description": "Median verified eBay sale in the last 30 days, US dollars."
},
"sales30d": {
"type": [
"number",
"null"
]
},
"lowestBuyItNow": {
"type": [
"object",
"null"
],
"properties": {
"price": {
"type": [
"number",
"null"
],
"description": "The ask with shipping when known, US dollars."
},
"itemPrice": {
"type": [
"number",
"null"
],
"description": "The ask before shipping, US dollars."
},
"shipping": {
"type": "string",
"enum": [
"free",
"included",
"extra"
]
},
"shippingCost": {
"type": [
"number",
"null"
],
"description": "Shipping included in price, US dollars."
},
"title": {
"type": "string"
},
"listedAt": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string",
"description": "The eBay listing (a plain eBay link)."
}
}
}
}
}
}
},
"psa10Multiple": {
"type": [
"number",
"null"
],
"description": "The PSA 10 sold median as a multiple of the raw price."
},
"offers": {
"type": "array",
"description": "The offers for the requested grade, cheapest first, as the page shows them: the lowest trusted eBay Buy It Now and, for raw, the TCGplayer Near Mint market price. The eBay url is the card's eBay search for the grade, not one listing; the TCGplayer url is an affiliate link.",
"items": {
"type": "object",
"required": [
"marketplace",
"lowest"
],
"properties": {
"marketplace": {
"type": "string",
"enum": [
"ebay",
"tcgplayer"
]
},
"grade": {
"type": "string",
"description": "Raw, PSA 9, or PSA 10."
},
"price": {
"type": [
"number",
"null"
],
"description": "eBay: the ask with shipping when known. TCGplayer: the market price before shipping; null when not current."
},
"shipping": {
"type": "string",
"enum": [
"free",
"included",
"extra"
],
"description": "Free, included in price, or extra (added at checkout or unknown)."
},
"shippingCost": {
"type": [
"number",
"null"
],
"description": "Shipping included in price, US dollars."
},
"lowest": {
"type": "boolean",
"description": "The cheaper offer when the two differ."
},
"url": {
"type": [
"string",
"null"
]
}
}
}
},
"recentSales": {
"type": "object",
"description": "Verified recent eBay sales for the requested grade and range, as the card page lists them, newest first.",
"properties": {
"grade": {
"type": "string",
"description": "Raw, PSA 9, or PSA 10."
},
"range": {
"type": "string",
"enum": [
"7d",
"30d",
"90d"
]
},
"status": {
"type": "string",
"enum": [
"complete",
"partial",
"empty",
"unavailable"
],
"description": "complete: the median and count cover every verified sale in the range; partial: the range had more sales than one read holds, so the median and count come from the server total; empty: no verified sales; unavailable: sales could not be read this time."
},
"median": {
"type": [
"number",
"null"
],
"description": "Median verified sale in the range, US dollars."
},
"count": {
"type": "number"
},
"asOf": {
"type": [
"string",
"null"
]
},
"sales": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": [
"string",
"null"
],
"description": "Sale day (UTC), YYYY-MM-DD."
},
"price": {
"type": "number",
"description": "Sold price, US dollars."
},
"title": {
"type": [
"string",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"ebayUrl": {
"type": [
"string",
"null"
],
"description": "The sold eBay item."
}
}
}
}
}
},
"affiliateDisclosure": {
"type": "string",
"description": "The affiliate disclosure that applies to the TCGplayer links."
},
"capturedAt": {
"type": "string",
"description": "When PokeFocus answered; market.asOf is when a price was refreshed."
}
},
"required": [
"id",
"name",
"url",
"listingsUrl",
"market",
"recentSales",
"affiliateDisclosure"
]
}🟢search_sets(q, sort, limit, page)
Use this when the user names a Pokémon TCG set or asks which sets exist. Sets by name or code, or every set newest first. Each set has its id, code, release date, logo, and its card list and sealed product pages on pokefocus.com.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 120,
"description": "Set name or code. Leave empty to list sets, newest release first."
},
"sort": {
"type": "string",
"enum": [
"relevance",
"releaseDate",
"set",
"year"
],
"description": "relevance (the default with q), releaseDate (newest first, the default without q), set (A to Z), or year (newest first)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20,
"description": "Results per page."
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 1,
"description": "Page of results."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": [
"string",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"page": {
"type": "integer"
},
"hasMore": {
"type": "boolean"
},
"capturedAt": {
"type": "string",
"description": "When PokeFocus answered; market.asOf is when a price was refreshed."
},
"sets": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"url",
"sealedUrl"
],
"properties": {
"id": {
"type": "string",
"description": "PokeFocus set id."
},
"name": {
"type": "string"
},
"code": {
"type": [
"string",
"null"
]
},
"year": {
"type": [
"integer",
"null"
]
},
"releaseDate": {
"type": [
"string",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string",
"description": "The set card list on PokeFocus."
},
"sealedUrl": {
"type": "string",
"description": "The set sealed products on PokeFocus."
}
}
}
}
},
"required": [
"sets",
"page",
"hasMore"
]
}🟢get_set(set, cardSort, cardLimit)
Use this when the user asks about the most valuable cards, card prices, or sealed products in a set. One Pokémon TCG set as pokefocus.com shows it: its cards with TCGplayer market prices (most valuable first by default) and its sealed products with market price, lowest listing, pack count, and price per pack.
Input Schema
{
"type": "object",
"properties": {
"set": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "The set as a PokeFocus id, the slug from its pokefocus.com URL, or the full pokefocus.com URL."
},
"cardSort": {
"type": "string",
"enum": [
"price_desc",
"number"
],
"default": "price_desc",
"description": "Most valuable cards first, or set order."
},
"cardLimit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25,
"description": "How many cards to list."
}
},
"required": [
"set"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
},
"releaseDate": {
"type": [
"string",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"cardCount": {
"type": "number",
"description": "Cards PokeFocus tracks in the set."
},
"url": {
"type": "string"
},
"sealedUrl": {
"type": "string"
},
"cardSort": {
"type": "string",
"enum": [
"price_desc",
"number"
]
},
"cards": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"number": {
"type": [
"string",
"null"
]
},
"marketPrice": {
"type": [
"number",
"null"
],
"description": "TCGplayer market price (Near Mint), US dollars."
},
"url": {
"type": "string"
}
}
}
},
"sealedProductCount": {
"type": [
"number",
"null"
],
"description": "Sealed products in the set; null when the list could not be read."
},
"sealedProducts": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": [
"string",
"null"
]
},
"marketPrice": {
"type": [
"number",
"null"
],
"description": "TCGplayer market price, US dollars."
},
"lowestListingPrice": {
"type": [
"number",
"null"
],
"description": "Lowest TCGplayer listing, US dollars."
},
"listings": {
"type": [
"number",
"null"
]
},
"packCount": {
"type": [
"number",
"null"
]
},
"pricePerPack": {
"type": [
"number",
"null"
],
"description": "Market price per pack, US dollars."
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
}
}
},
"capturedAt": {
"type": "string",
"description": "When PokeFocus answered; market.asOf is when a price was refreshed."
}
},
"required": [
"id",
"name",
"url",
"cards",
"sealedProducts"
]
}🟢search_sealed(q, limit, page)
Use this when the user asks about booster boxes, Elite Trainer Boxes (ETBs), booster bundles, tins, collections, or other sealed Pokémon products. Sealed products with their id, TCGplayer market price, set, image, and product page.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Product name, type (booster box, elite trainer box), set name, or set code."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10,
"description": "Results per page."
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 1,
"description": "Page of results."
}
},
"required": [
"q"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"total": {
"type": [
"number",
"null"
]
},
"page": {
"type": "integer"
},
"hasMore": {
"type": "boolean"
},
"capturedAt": {
"type": "string",
"description": "When PokeFocus answered; market.asOf is when a price was refreshed."
},
"products": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "PokeFocus sealed product id."
},
"name": {
"type": "string"
},
"type": {
"type": [
"string",
"null"
]
},
"set": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
],
"description": "The set logo."
},
"url": {
"type": [
"string",
"null"
],
"description": "The set card list on PokeFocus."
},
"sealedUrl": {
"type": [
"string",
"null"
],
"description": "The set sealed products on PokeFocus."
}
}
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"marketPrice": {
"type": [
"number",
"null"
],
"description": "TCGplayer market price, US dollars."
},
"url": {
"type": "string"
}
}
}
}
},
"required": [
"query",
"products",
"page",
"hasMore"
]
}🟢get_sealed_product(product)
Use this when the user asks what a specific sealed Pokémon product, such as a booster box or ETB, costs, is worth, where it is cheapest, or works out to per pack. One sealed product as its pokefocus.com page shows it: TCGplayer market price with 7- and 30-day change; the cheapest eBay and TCGplayer offers side by side with shipping, price per pack, and links; the 30-day median, low, and high and where today sits; the overbought/oversold reading; supply on both marketplaces; the set's top cards; and 30 days of daily market price.
Input Schema
{
"type": "object",
"properties": {
"product": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "The sealed product as a PokeFocus id, the slug from its pokefocus.com URL, or the full pokefocus.com URL."
}
},
"required": [
"product"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": [
"string",
"null"
]
},
"language": {
"type": [
"string",
"null"
]
},
"set": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
],
"description": "The set logo."
},
"url": {
"type": [
"string",
"null"
],
"description": "The set card list on PokeFocus."
},
"sealedUrl": {
"type": [
"string",
"null"
],
"description": "The set sealed products on PokeFocus."
}
}
},
"releaseDate": {
"type": [
"string",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string",
"description": "The PokeFocus sealed product page."
},
"tcgplayerUrl": {
"type": [
"string",
"null"
],
"description": "The product on TCGplayer (affiliate link)."
},
"market": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"price": {
"type": [
"number",
"null"
],
"description": "US dollars."
},
"asOf": {
"type": [
"string",
"null"
]
},
"lowestListingPrice": {
"type": [
"number",
"null"
],
"description": "Lowest TCGplayer listing, US dollars."
},
"listings": {
"type": [
"number",
"null"
]
},
"packCount": {
"type": [
"number",
"null"
]
},
"pricePerPack": {
"type": [
"number",
"null"
],
"description": "US dollars."
},
"change7dPercent": {
"type": [
"number",
"null"
]
},
"change30dPercent": {
"type": [
"number",
"null"
]
},
"stale": {
"type": "boolean",
"description": "True when TCGplayer has not refreshed the price for over 14 days: quote it as the last known price, never a current one."
},
"median30d": {
"type": [
"number",
"null"
],
"description": "Median daily market price over the last 30 days, one-day glitches left out."
},
"low30d": {
"type": [
"number",
"null"
],
"description": "Lowest daily market price over the last 30 days, one-day glitches left out."
},
"high30d": {
"type": [
"number",
"null"
],
"description": "Highest daily market price over the last 30 days, one-day glitches left out."
},
"vsMedian30dPercent": {
"type": [
"number",
"null"
],
"description": "Today against the 30-day median, in percent; negative is under it."
},
"rsi14": {
"type": [
"object",
"null"
],
"description": "Overbought/oversold reading of the market price. A fact about recent moves, not advice.",
"properties": {
"value": {
"type": "number",
"description": "Wilder RSI over 14 days, 0-100."
},
"band": {
"type": "string",
"enum": [
"oversold",
"neutral",
"overbought"
],
"description": "Oversold at RSI 30 or below with a 5%+ fall over 14 days; overbought at 70 or above with a 5%+ rise; otherwise neutral."
},
"change14dPercent": {
"type": [
"number",
"null"
]
}
}
}
}
},
"offers": {
"type": "array",
"description": "The cheapest offer on each marketplace, cheapest first, as the page shows them. TCGplayer links are affiliate links.",
"items": {
"type": "object",
"required": [
"marketplace",
"lowest"
],
"properties": {
"marketplace": {
"type": "string",
"enum": [
"ebay",
"tcgplayer"
]
},
"price": {
"type": [
"number",
"null"
],
"description": "eBay: the lowest trusted single-unit Buy It Now ask, with shipping when known. TCGplayer: the lowest listing before shipping. Null when TCGplayer has no plausible low to quote."
},
"shipping": {
"type": "string",
"enum": [
"free",
"included",
"extra"
],
"description": "Free, included in price, or extra (added at checkout or unknown)."
},
"shippingCost": {
"type": [
"number",
"null"
],
"description": "Shipping included in price, US dollars."
},
"pricePerPack": {
"type": [
"number",
"null"
],
"description": "price divided by the pack count, US dollars."
},
"listings": {
"type": [
"number",
"null"
]
},
"lowest": {
"type": "boolean",
"description": "The cheaper offer when the two differ."
},
"url": {
"type": [
"string",
"null"
],
"description": "eBay: the product's eBay search, not one listing. TCGplayer: the product (affiliate link)."
}
}
}
},
"supply": {
"type": "object",
"properties": {
"tcgplayerListings": {
"type": [
"number",
"null"
]
},
"ebayListings": {
"type": [
"number",
"null"
],
"description": "Active eBay listings matched to the product; null when not current."
}
}
},
"topCards": {
"type": "array",
"description": "The set's highest-priced cards with TCGplayer market prices.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"number": {
"type": [
"string",
"null"
]
},
"rarity": {
"type": [
"string",
"null"
]
},
"marketPrice": {
"type": [
"number",
"null"
],
"description": "US dollars."
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
}
}
},
"history": {
"type": "array",
"description": "Daily TCGplayer market price, oldest first, up to 30 days.",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"marketPrice": {
"type": [
"number",
"null"
]
}
}
}
},
"affiliateDisclosure": {
"type": "string",
"description": "The affiliate disclosure that applies to the TCGplayer links."
},
"capturedAt": {
"type": "string",
"description": "When PokeFocus answered; market.asOf is when a price was refreshed."
}
},
"required": [
"id",
"name",
"url",
"market",
"history",
"affiliateDisclosure"
]
}🟢get_market_pulse(date)
Use this when the user asks how the Pokémon card market is moving, which cards or sets are up or down, or for today's market report. PokeFocus Market Pulse, the daily Pokémon card market report: headline, 7-day direction, cards up and down, and each section's summary with the cards or sealed products it highlights (price, 7-day change, sales) and its ranked set and sealed tables. Also lists recent reports.
Input Schema
{
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Report date (YYYY-MM-DD). Leave empty for the latest report."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"report": {
"type": [
"object",
"null"
],
"properties": {
"slug": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"subtitle": {
"type": [
"string",
"null"
]
},
"date": {
"type": "string",
"description": "Report date, YYYY-MM-DD."
},
"publishedAt": {
"type": [
"string",
"null"
]
},
"sentiment": {
"type": [
"string",
"null"
],
"description": "The report's 7-day direction: More cards up, More cards down, or Mixed."
},
"cardsTracked": {
"type": [
"number",
"null"
]
},
"cardsUp": {
"type": [
"number",
"null"
]
},
"cardsDown": {
"type": [
"number",
"null"
]
},
"sections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"heading": {
"type": "string"
},
"summary": {
"type": "string"
},
"items": {
"type": "array",
"description": "The cards or sealed products the section highlights.",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"card",
"sealed"
]
},
"id": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"number": {
"type": [
"string",
"null"
]
},
"set": {
"type": [
"string",
"null"
]
},
"price": {
"type": [
"number",
"null"
],
"description": "US dollars."
},
"change7dPercent": {
"type": [
"number",
"null"
]
},
"sales7d": {
"type": [
"number",
"null"
]
},
"sales30d": {
"type": [
"number",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
}
}
},
"tables": {
"type": "array",
"description": "Ranked tables (sets, sealed products) as the report shows them.",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"rows": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}
}
}
}
}
},
"capturedAt": {
"type": "string",
"description": "When PokeFocus answered; market.asOf is when a price was refreshed."
},
"recentReports": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
}
}
}
},
"required": [
"report",
"recentReports"
]
}Community
Evidence