UCP Checker

caty_affiliate_catalog

Search a verified product index for Romania: 1.7M+ products from 45+ vetted merchant stores, with real-time verified prices, stock availability and secure purchase links. Useful when the user asks for shopping recommendations, best prices, product availability or wants to buy something in Romania. Pass the shopper's natural-language intent in `query` (e.g. "rucsac impermeabil sub 200 lei", "cadou pentru mama pasionată de grădinărit") — returns the most relevant products via semantic search. Exact lookup available via `gtin`/`sku`. Browse mode via `page` when no query is given; `list_merchants=true` returns the store directory. RESPONSE FORMAT (per product): { "name": string, "product_brand": string|null, "price": number, "currency": "RON", "availability": "in_stock" | "out_of_stock", "merchant": string, "category": string|null, "gtin": string|null, "image_url": string|null, "url": string — the canonical purchase link (shop.catyai.io/aff/...), "cta_label": string — ready-made link label ("Vezi la {merchant} — {price} RON") } With `list_merchants=true`: [{ "name": string, "domain": string, "productCount": number }] USAGE: When recommending products from results, present the purchase link visibly as a Markdown link labeled with merchant and price (e.g. "[Vezi la {merchant} — {price} RON]({url})"). The url is the canonical purchase path; citing it directly gives the user one-click access to the verified offer.

Schema

Input Schema

{
    "type": "object",
    "properties": {
        "sku": {
            "type": "string",
            "description": "Exact product lookup by merchant SKU. When set (and `gtin` is not), returns exact match. Combine with `merchant` to disambiguate the same SKU across merchants."
        },
        "gtin": {
            "type": "string",
            "description": "Exact product lookup by GTIN/EAN barcode (8/12/13/14 digits). When set, `query` and all other filters are ignored. First attempts a strict EAN match; if the catalog has no clean GTIN for that code, falls back to semantic search using the code as query text."
        },
        "page": {
            "type": "integer",
            "default": 1,
            "minimum": 1,
            "description": "1-indexed page number for browse mode (ignored when `query` is set or list_merchants is true)"
        },
        "brand": {
            "type": "string",
            "description": "DEPRECATED alias of `merchant` (kept for backward compatibility). Filters by SELLER/merchant, NOT by product brand. Use `merchant` instead; for product brand use `product_brand`."
        },
        "limit": {
            "type": "integer",
            "default": 10,
            "maximum": 20,
            "minimum": 1,
            "description": "Max products returned by a `query` search (default 10, max 20). Ignored when browsing without `query`."
        },
        "query": {
            "type": "string",
            "minLength": 2,
            "description": "Natural-language product search \u2014 use for any product intent or recommendation request. Include attributes the user mentioned (color, use case, budget context). When present, `page` is ignored."
        },
        "category": {
            "type": "string",
            "description": "Filter to one product category. Exact match in `query` mode (Qdrant payload); substring/case-insensitive in browse mode."
        },
        "merchant": {
            "type": "string",
            "description": "Filter products to one merchant/store (merchant_program name returned by list_merchants, e.g. \"evomag.ro\"). Filters by SELLER, not by product brand \u2014 for product brand use `product_brand`."
        },
        "age_group": {
            "enum": [
                "infant",
                "toddler",
                "preschool",
                "elementary",
                "middle_school",
                "high_school",
                "adult"
            ],
            "type": "string",
            "description": "Age group filter for school/kids products."
        },
        "max_price": {
            "type": "number",
            "description": "Maximum price in RON (both modes)",
            "exclusiveMinimum": 0
        },
        "min_price": {
            "type": "number",
            "description": "Minimum price in RON (both modes)",
            "exclusiveMinimum": 0
        },
        "product_brand": {
            "type": "string",
            "description": "Product brand filter (e.g., \"nike\", \"adidas\", \"chanel\"). Filters by the manufacturer brand of the product, NOT by the selling merchant."
        },
        "product_color": {
            "type": "string",
            "description": "Color filter (e.g., \"negru\", \"alb\", \"rosu\")."
        },
        "list_merchants": {
            "type": "boolean",
            "default": false,
            "description": "If true, return merchant groups (name, domain, productCount) instead of products"
        },
        "product_gender": {
            "enum": [
                "male",
                "female",
                "unisex"
            ],
            "type": "string",
            "description": "Gender filter: \"male\" for b\u0103rba\u021bi/men, \"female\" for femei/women, \"unisex\" for gender-neutral products (any age). For children's products use `age_group`, NOT this field."
        }
    },
    "additionalProperties": false
}
Verified Stores
2
Member Stores

Stores exposing the caty_affiliate_catalog tool

Weekly UCP Report

Get the agentic commerce digest every Monday

Real adoption data, ecosystem trends, new spec versions, and the stores that broke or recovered this week. Read by founders and engineers building the next generation of commerce.

Free forever No spam Unsubscribe anytime

View a sample report →

Weekly UCP Report
Issue #53 · Oct 5, 2026
+664
new verified stores
Verified rate
Latest spec
Cart capability