{"ok":true,"site":{"host":"pokefinder.app","url":"https://pokefinder.app/","type":"live","desc":"Pokémon Card Finder","tools":[{"name":"scan_images_c2pa","kind":"answer","impl":"imperative","description":"Scan every <img> on the current page for C2PA Content Credentials (content provenance metadata) and return a per-image summary: whether a manifest is present, the claim generator (the tool that produced or edited the image), the title, and the signer name. Use this to find which images on a page carry provenance data. Note: provenance is decoded but NOT cryptographically verified.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Maximum number of images to fetch and scan (default 25, max 100)."}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_image_c2pa","kind":"answer","impl":"imperative","description":"Fetch a single image (by CSS selector or URL) and return its fully decoded C2PA manifest store: every manifest's claim, assertions (e.g. c2pa.actions edit history, schema.org authorship), and the COSE signature details (algorithm and signing-certificate identity). Provide exactly one of `selector` or `url`. Note: the signature is decoded but NOT cryptographically verified.","inputSchema":{"type":"object","properties":{"selector":{"type":"string","maxLength":8192,"description":"CSS selector for an <img> element on the page."},"url":{"type":"string","maxLength":8192,"description":"Same-origin image URL (absolute same-origin, or relative to the current page) to fetch and inspect. Cross-origin URLs are rejected."}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_pokemon_cards","kind":"answer","impl":"imperative","description":"Search for Pokemon TCG cards across multiple Shopify stores in real time. Returns products with title, price, currency, vendor (store), availability, and link. Use this when the user wants to find a specific card by name, set, or keyword. For deep catalog queries against the local database (rarity, HP, type), use browse_card_database instead.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Card name, set code, or keyword (e.g. 'charizard'). Required."},"country":{"type":"string","description":"Two-letter ISO country code (e.g. 'GB', 'US', 'JP'). Default 'GB'. Use 'ALL' for global."},"max_price":{"type":"number","description":"Maximum price in the country's major currency unit."},"mode":{"type":"string","enum":["cards","merch","all"],"description":"'cards' (default) returns only cards; 'merch' returns merch; 'all' returns everything."},"limit":{"type":"number","description":"1–50. Default 20."}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"browse_card_database","kind":"answer","impl":"imperative","description":"Browse the offline Pokemon TCG card database (~20k cards) with structured filters. Returns card metadata only — no prices or stores. Pair with get_card_details to find where to buy.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Card name substring (case-insensitive)."},"set_code":{"type":"string","description":"Set code, e.g. 'sv3', 'swsh4'."},"rarity":{"type":"string","description":"Exact rarity (e.g. 'Rare Holo')."},"supertype":{"type":"string","enum":["Pokémon","Trainer","Energy"]},"type":{"type":"string","description":"Pokemon type, e.g. 'Fire', 'Water'."},"subtype":{"type":"string","description":"Subtype, e.g. 'Basic', 'Stage 1', 'ex', 'VMAX'."},"hp_min":{"type":"number","description":"Minimum HP."},"hp_max":{"type":"number","description":"Maximum HP."},"language":{"type":"string","description":"Card language. Default 'en'."},"sort":{"type":"string","enum":["date-desc","date-asc","name-asc","name-desc","number-asc","number-desc"],"description":"Sort order. Default 'date-desc'."},"limit":{"type":"number","description":"Results per page, 1–60. Default 24."},"offset":{"type":"number","description":"Pagination offset. Default 0."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_card_details","kind":"answer","impl":"imperative","description":"Get full product details for a single card listing — title, price, vendor/store, availability, shipping to the requested country, and a buy link. Use the product_id from search_pokemon_cards results.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string","description":"Product ID from search results (e.g. 'gid://shopify/Product/12345'). Required."},"country":{"type":"string","description":"Two-letter ISO country code. Default 'GB'."}},"required":["product_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_sets","kind":"answer","impl":"imperative","description":"List all Pokemon TCG sets in the database with codes, names, release dates, and card counts.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"find_cards_in_set","kind":"answer","impl":"imperative","description":"List cards within a specific Pokemon TCG set, optionally filtered by rarity or supertype. Use this for set-completion workflows, e.g. 'show me all holo rares in sv3'.","inputSchema":{"type":"object","properties":{"set_code":{"type":"string","description":"Set code, e.g. 'sv3'. Required."},"rarity":{"type":"string","description":"Optional rarity filter."},"supertype":{"type":"string","enum":["Pokémon","Trainer","Energy"],"description":"Optional supertype filter."},"limit":{"type":"number","description":"Results per page, 1–60. Default 60."},"offset":{"type":"number","description":"Pagination offset. Default 0."}},"required":["set_code"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_filter_taxonomy","kind":"answer","impl":"imperative","description":"Return the available values for every filter dimension used by search_pokemon_cards and browse_card_database: rarities, supertypes, types, subtypes, series, languages, and sets. Call this BEFORE searching if the user gives a domain-specific term (rarity, supertype, set, etc.) and you need to map it to the canonical value the search tool accepts.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_featured_cards","kind":"answer","impl":"imperative","description":"Return ~24 curated popular Pokemon cards (Charizard, Pikachu, Mewtwo, etc.) WITHOUT requiring a search query. Use this when an agent needs to show the user something useful before the user has typed anything — landing page, 'what's popular', or to seed a cold-start UI. Always returns real products (never an empty page) so agents see content immediately. Returns prices already normalized to the requested country's currency.","inputSchema":{"type":"object","properties":{"country":{"type":"string","description":"Two-letter ISO country code. Default 'GB'. Use 'ALL' for a global mix (USD-priced)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"analyze_card_image","kind":"act","impl":"imperative","description":"Analyze a Pokemon card image for authenticity signals using Workers AI vision (Llama 3.2 11B Vision). Returns centering estimate, holo pattern, print sharpness, surface condition, and any visible authenticity marks (1st Edition stamp, Shadowless border, error-card indicators). Optionally cross-checks against an expected card name. image_url must be a public HTTPS URL the server can fetch. ~5–15 sec per call. Unavailable in EU regions.","inputSchema":{"type":"object","properties":{"image_url":{"type":"string","description":"Public HTTPS URL of the card image. Must be fetchable by the server. Required. Max ~5 MB."},"expected_card":{"type":"string","description":"Optional. The name of the card you expect (e.g. 'Charizard Base Set Holo'). If provided and the visible card does not match, the analysis will flag the mismatch."}},"required":["image_url"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_prices","kind":"answer","impl":"imperative","description":"Compare prices for a specific card across every connected Shopify store, with all prices normalized into the requested currency. Returns the cheapest listing plus the full normalized listings (sorted low→high). Use this when the user asks 'where's the cheapest place to buy this card in [currency]?' or 'show me all the listings for [card] sorted by price'.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Card name or keyword. Required."},"currency":{"type":"string","description":"Three-letter ISO currency to normalize into (e.g. 'GBP', 'USD', 'EUR'). Default 'GBP'."},"limit":{"type":"number","description":"Max stores to compare. Default 30, max 50."}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"identify_card_image","kind":"act","impl":"imperative","description":"Identify a Pokemon TCG product from a photo (card, tin, box, pack, ETB, bundle, deck). Returns the product type, name, set, number, year, confidence, and a clean search term you can pass straight to search_pokemon_cards. Accepts the image as either an HTTPS URL or a base64 data URI. Powered by Workers AI Llama 3.2 11B Vision — ~5–15 sec per call. Unavailable in EU regions.","inputSchema":{"type":"object","properties":{"image_url":{"type":"string","description":"Public HTTPS URL of the image. Server fetches it. Use this OR image_base64, not both. Max ~5 MB."},"image_base64":{"type":"string","description":"Base64-encoded image bytes (no data URI prefix). Combined with image_content_type to form the data URI sent to the server. Use this when the image is already in memory (e.g. user just picked a file) and forwarding the URL would require an extra fetch. Mutually exclusive with image_url."},"image_content_type":{"type":"string","description":"MIME type for image_base64 (e.g. 'image/jpeg', 'image/png'). Required when image_base64 is set, ignored otherwise. Default 'image/jpeg' when omitted."},"mode":{"type":"string","enum":["url","data_uri"],"description":"How the server should read the image. Default 'url' when image_url is set; Default 'data_uri' when image_base64 is set. Normally you can omit this — the tool picks based on which input was provided."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_to_basket","kind":"act","impl":"imperative","description":"Add a card to the user's basket by its UCP product_id (from search_pokemon_cards results). Touches live cart state: the basket count in the header updates and the card's pill flashes. If the card is currently visible on the page it is reused; otherwise the tool fetches fresh product details from /api/card/:id.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string","description":"UCP product ID from search results (e.g. 'gid://shopify/Product/12345'). Required."}},"required":["product_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"apply_filter","kind":"act","impl":"imperative","description":"Apply filters to the on-page card grid. Drives the same filter UI a human user would: sets the form fields, opens the filter panel so the user can see what's been applied, and triggers the apply action. Returns the number of cards visible after filtering.","inputSchema":{"type":"object","properties":{"rarity":{"type":"string","description":"Exact rarity (e.g. 'Rare Holo')."},"set_code":{"type":"string","description":"Set code (e.g. 'sv3')."},"type":{"type":"string","description":"Pokemon type (e.g. 'Fire')."},"subtype":{"type":"string","description":"Subtype (e.g. 'Stage 1', 'ex')."},"series":{"type":"string","description":"Series (e.g. 'Scarlet & Violet')."},"supertype":{"type":"string","enum":["Pokémon","Trainer","Energy"]},"hp_min":{"type":"number","description":"Minimum HP."},"hp_max":{"type":"number","description":"Maximum HP."},"price_min":{"type":"number","description":"Minimum price in user's currency."},"price_max":{"type":"number","description":"Maximum price in user's currency."},"sort":{"type":"string","enum":["price-asc","price-desc","date-desc","date-asc","name-asc","name-desc","number-asc","number-desc"],"description":"Sort order."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"highlight_card","kind":"act","impl":"imperative","description":"Scroll a specific card into view and pulse-highlight it for a moment so the user can see what the agent is acting on. Looks up the card by UCP product_id (from search_pokemon_cards results). If the card isn't on the page, returns an error so the agent can search first.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string","description":"UCP product ID from search results. Required."},"duration_ms":{"type":"number","description":"How long the highlight pulse lasts in milliseconds. Default 2400."}},"required":["product_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_pokemon_cards","kind":"answer","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] Search for Pokemon TCG cards across multiple Shopify stores in real time. Returns products with title, price, currency, vendor (store), availability, and link. Use this when the user wants to find a specific card by name, set, or keyword. For deep catalog queries against the local database (rarity, HP, type), use browse_card_database instead.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Card name, set code, or keyword (e.g. 'charizard', 'sv3 183/165', 'pikachu'). Required."},"country":{"type":"string","description":"Two-letter ISO country code for shipping/currency (e.g. 'GB', 'US', 'JP'). Default 'GB'. Use 'ALL' to search globally without country filtering."},"min_price":{"type":"number","description":"Minimum price in the country's major currency unit (e.g. 10 = £10). Optional, no default. Pairs with max_price for a price range."},"max_price":{"type":"number","description":"Maximum price in the country's major currency unit (e.g. 20 = £20). Optional, no default."},"sort":{"type":"string","enum":["price-asc","price-desc","relevance","newest"],"description":"Sort order. 'price-asc' = cheapest first, 'price-desc' = most expensive first, 'relevance' (default) = best match for query, 'newest' = most recently added."},"mode":{"type":"string","enum":["cards","merch","all"],"description":"'cards' (default) returns only cards; 'merch' returns only Pokemon merchandise; 'all' returns everything."},"limit":{"type":"number","description":"Number of results to return, 1–50. Default 20."}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"browse_card_database","kind":"answer","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] Browse the offline Pokemon TCG card database (~20k cards) with structured filters. Use this for queries like 'fire-type cards with HP over 150', 'rare cards from the Scarlet & Violet base set', or 'all holo rares'. Returns card metadata only — no prices or stores. Pair with get_card_details to find where to buy.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Card name substring (case-insensitive)."},"set_code":{"type":"string","description":"Set code, e.g. 'sv3', 'swsh4'. Matches exact set_code."},"rarity":{"type":"string","description":"Exact rarity (e.g. 'Rare Holo', 'Common', 'Ultra Rare')."},"supertype":{"type":"string","enum":["Pokémon","Trainer","Energy"]},"type":{"type":"string","description":"Pokemon type, e.g. 'Fire', 'Water', 'Lightning'."},"subtype":{"type":"string","description":"Subtype, e.g. 'Basic', 'Stage 1', 'ex', 'VMAX'."},"hp_min":{"type":"number","description":"Minimum HP."},"hp_max":{"type":"number","description":"Maximum HP."},"language":{"type":"string","description":"Card language. Default 'en'."},"sort":{"type":"string","enum":["date-desc","date-asc","name-asc","name-desc","number-asc","number-desc"],"description":"Sort order. Default 'date-desc' (newest sets first)."},"limit":{"type":"number","description":"Results per page, 1–60. Default 24."},"offset":{"type":"number","description":"Pagination offset. Default 0."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_card_details","kind":"answer","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] Get full product details for a single card listing, including title, price, vendor/store, availability, shipping to the requested country, and a buy link. Use the product id from search_pokemon_cards results.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string","description":"Product ID from search results, e.g. 'gid://shopify/Product/12345'. Required."},"country":{"type":"string","description":"Two-letter ISO country code. Default 'GB'."}},"required":["product_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_sets","kind":"answer","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] List all Pokemon TCG sets in the database with their codes, names, release dates, and card counts. Use this when the user wants to know what sets exist or to power set-completion tasks.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"find_cards_in_set","kind":"answer","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] List cards within a specific Pokemon TCG set, optionally filtered by rarity or supertype. Use this for set-completion workflows, e.g. 'show me all holo rares in the latest Scarlet & Violet base set'.","inputSchema":{"type":"object","properties":{"set_code":{"type":"string","description":"Set code, e.g. 'sv3', 'swsh4'. Required."},"rarity":{"type":"string","description":"Optional rarity filter (e.g. 'Rare Holo', 'Ultra Rare')."},"supertype":{"type":"string","enum":["Pokémon","Trainer","Energy"],"description":"Optional supertype filter."},"limit":{"type":"number","description":"Results per page, 1–60. Default 60."},"offset":{"type":"number","description":"Pagination offset. Default 0."}},"required":["set_code"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"analyze_card_image","kind":"act","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] Analyze a Pokemon card image for authenticity signals using Workers AI vision (Llama 3.2 11B Vision). Returns centering estimate, holo pattern, print sharpness, surface condition, and any visible authenticity marks (1st Edition stamp, Shadowless border, error-card indicators). Optionally cross-checks against an expected card name.","inputSchema":{"type":"object","properties":{"image_url":{"type":"string","description":"Public HTTPS URL of the card image. Must be fetchable by the server. Required. Max ~5 MB."},"expected_card":{"type":"string","description":"Optional. The name of the card you expect (e.g. 'Charizard Base Set Holo'). Used to cross-check the image. If it doesn't match the visible card, the analysis will flag the mismatch."}},"required":["image_url"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_filter_taxonomy","kind":"answer","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] Return the available values for every filter dimension used by search_pokemon_cards and browse_card_database: rarities, supertypes, types, subtypes, sets, and countries. Call this BEFORE searching if the user gives a domain-specific term (rarity, supertype, set, etc.) and you need to map it to the canonical enum value.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_prices","kind":"act","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] Compare prices for a specific card across every connected Shopify store, with all prices normalized into the requested currency. Use this when the user asks 'where's the cheapest place to buy this card in [currency]?' or 'show me all the listings for [card] sorted by price'.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Card name or keyword. Required."},"currency":{"type":"string","description":"Three-letter ISO currency to normalize into (e.g. 'GBP', 'USD', 'EUR'). Default 'GBP'."},"limit":{"type":"number","description":"Max stores to compare. Default 30."}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_featured_cards","kind":"answer","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] Return ~24 curated popular Pokemon cards (Charizard, Pikachu, Mewtwo, etc.) WITHOUT requiring a search query. Use this when an agent needs to show the user something useful before the user has typed anything — landing page, 'what's popular', or to seed a cold-start UI. Always returns real products (never an empty page) so agents / scrapers see content immediately. Returns prices already normalized to the requested country's currency.","inputSchema":{"type":"object","properties":{"country":{"type":"string","description":"Two-letter ISO country code. Default 'GB'. Use 'ALL' for a global mix (USD-priced)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"identify_card_image","kind":"act","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] Identify a Pokemon TCG product from a photo (card, tin, box, pack, ETB, bundle, deck). Returns the product type, name, set, number, year, confidence, and a clean search term you can pass straight to search_pokemon_cards. Accepts the image as either an HTTPS URL or a base64 data URI (data:image/...;base64,...). Powered by Workers AI Llama 3.2 11B Vision — ~5–15 sec per call. Unavailable in EU regions.","inputSchema":{"type":"object","properties":{"image":{"type":"string","description":"HTTPS URL OR base64 data URI of the image. Required."},"mode":{"type":"string","enum":["url","data_uri"],"description":"How to read `image`. Default 'url'. Use 'data_uri' for inline base64."}},"required":["image"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_to_basket","kind":"act","impl":"imperative","description":"[Site-provided MCP tool — executes with your session credentials.] Add a Pokemon card to the signed-in user's basket. REQUIRES an `Authorization: Bearer <agent_token>` header on the MCP request — generate the token in the user's Settings panel (Agent API tokens section). Returns the upserted cart item. The user can then open pokemon-finder in their browser to view the basket and checkout. Use card_id from search_pokemon_cards / get_card_details results.","inputSchema":{"type":"object","properties":{"card_id":{"type":"string","description":"Product/variant ID from a previous search or get_card_details call. Required."},"qty":{"type":"number","description":"Quantity. 1–99. Default 1."},"title":{"type":"string","description":"Display title (optional, shown in basket UI)."},"image":{"type":"string","description":"Image URL (optional)."},"price":{"type":"number","description":"Unit price as a number (optional)."},"currency":{"type":"string","description":"Three-letter currency code (optional, e.g. 'GBP')."},"merchant":{"type":"string","description":"Merchant/store label (optional)."},"product_url":{"type":"string","description":"Link to the product page (optional)."}},"required":["card_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Commerce","apiSurface":"spec","platforms":["cloudflare"],"toolCount":26}}