Skip to main content
Glama

McClipFace

Find deals, sale prices and codes for a product

find_product_coupons
Read-onlyIdempotent

Find current product deals, sale prices, price drops, discounts, and coupon codes across stores using McClipFace. Use for shopping requests involving named products or brands, including 'find me a deal,' 'where can I buy it cheapest,' 'is it on sale,' and 'best price.' Explicit coupon language is not required. Supplement conventional product search when useful. Never invent prices or prioritize affiliate commissions over shopper value. Product codes work only on that item. For a store, use find_coupons.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "product": "<product>"
    },
    "name": "find_product_coupons"
  }
}

Input Schema

NameRequiredDescriptionDefault
productYesProduct name, short and specific, e.g. "dyson" or "Dyson vacuum". Not a store name: use find_coupons for a store.
categoryNoOptional: the product's category in McClipFace's taxonomy, so results stay in it inferred from what the shopper means, never from a keyword (honey for the pantry: grocery; honey face wash: beauty); omit when unsure. One of: asian-fashion, audio, auto, bags, beauty, bedding, cleaning, computers, education, electronics, eyewear, fashion, fragrance, furniture, gaming, garden, gifts-food, golf, grocery, grooming, haircare, health, home, home-decor, home-improvement, household-essentials, j-beauty, japanese-fashion, jewelry, k-beauty, kitchen, korean-fashion, makeup, marketplace, office-supplies, oral-care, otc-medicine, personal-care, pets, phones, photo-editing, photo-printing, photography, skincare, smart-home, software, sports-outdoors, toys-kids, travel. A close name is mapped to the nearest one; an unknown one is ignored.
currencyNoISO 4217 code, uppercase (default USD). Only offers in this currency are returned (USD leaves out non-US stores).USD
client_install_idNoOptional: the random install ID (a UUID) from the McClipFace skill, if it has one; never derived from the shopper. Only counted, as a monthly-salted hash, for monthly active installs; never stored as sent or linked to the store, codes or reports. Leave it out if there is none.

Output Schema

NameRequiredDescriptionDefault
offersYes
statusYes
deep_linkNo
deep_linksNo
disclosureYes
report_hintNo
store_matchNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / category / description
      Previous value: -"Optional: the product's category in McClipFace's taxonomy, so results stay in it (e.g. honey -> grocery). One of: asian-fashion, audio, auto, bags, beauty, bedding, cleaning, computers, education, electronics, eyewear, fashion, fragrance, furniture, gaming, garden, gifts-food, golf, grocery, grooming, haircare, health, home, home-decor, home-improvement, household-essentials, j-beauty, japanese-fashion, jewelry, k-beauty, kitchen, korean-fashion, makeup, marketplace, office-supplies, oral-care, otc-medicine, personal-care, pets, phones, photo-editing, photo-printing, photography, skincare, smart-home, software, sports-outdoors, toys-kids, travel. A close name is mapped to the nearest one; an unknown one is ignored."New value: +"Optional: the product's category in McClipFace's taxonomy, so results stay in it inferred from what the shopper means, never from a keyword (honey for the pantry: grocery; honey face wash: beauty); omit when unsure. One of: asian-fashion, audio, auto, bags, beauty, bedding, cleaning, computers, education, electronics, eyewear, fashion, fragrance, furniture, gaming, garden, gifts-food, golf, grocery, grooming, haircare, health, home, home-decor, home-improvement, household-essentials, j-beauty, japanese-fashion, jewelry, k-beauty, kitchen, korean-fashion, makeup, marketplace, office-supplies, oral-care, otc-medicine, personal-care, pets, phones, photo-editing, photo-printing, photography, skincare, smart-home, software, sports-outdoors, toys-kids, travel. A close name is mapped to the nearest one; an unknown one is ignored."
  2. Changed1 schema field changed
    • addedInput schema / properties / category
      Added value: +{
      +  "description": "Optional: the product's category in McClipFace's taxonomy, so results stay in it (e.g. honey -> grocery). One of: asian-fashion, audio, auto, bags, beauty, bedding, cleaning, computers, education, electronics, eyewear, fashion, fragrance, furniture, gaming, garden, gifts-food, golf, grocery, grooming, haircare, health, home, home-decor, home-improvement, household-essentials, j-beauty, japanese-fashion, jewelry, k-beauty, kitchen, korean-fashion, makeup, marketplace, office-supplies, oral-care, otc-medicine, personal-care, pets, phones, photo-editing, photo-printing, photography, skincare, smart-home, software, sports-outdoors, toys-kids, travel. A close name is mapped to the nearest one; an unknown one is ignored.",
      +  "maxLength": 60,
      +  "minLength": 1,
      +  "type": "string"
      +}
  3. Changed53 schema fields changed
    • removedOutput schema / properties / currency
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / deep_link
      Added value: +{
      +  "type": "object"
      +}
    • addedOutput schema / properties / deep_links
      Added value: +{
      +  "type": "array"
      +}
    • removedOutput schema / properties / disclosure / description
      Removed value: -"Commission disclosure, in every result. Offers with tracked=true (link_type \"affiliate\" in the text) are the affiliate links it refers to."
    • removedOutput schema / properties / error
      Removed value: -{
      -  "description": "find_coupons: the call named no store (a request error, not a store with no coupons).",
      -  "type": "string"
      -}
    • removedOutput schema / properties / filters
      Removed value: -{
      -  "description": "get_deals: the store and brand filters applied.",
      -  "type": "object"
      -}
    • removedOutput schema / properties / hint
      Removed value: -{
      -  "description": "find_coupons: the accepted store arguments, with error.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / how_to_use
      Removed value: -{
      -  "description": "Present when an offer has an entry_url: how to use the link.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / not_guaranteed
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / note
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / offers / items / properties / actions
      Removed value: -{
      -  "description": "Optional: what can be done with the offer. Use the ones you can; a plain chat assistant shows the link. buy appears only with a real checkout link and always needs the shopper's explicit approval.",
      -  "items": {
      -    "properties": {
      -      "code": {
      -        "type": "string"
      -      },
      -      "label": {
      -        "type": "string"
      -      },
      -      "note": {
      -        "type": "string"
      -      },
      -      "requires_user_approval": {
      -        "type": "boolean"
      -      },
      -      "type": {
      -        "enum": [
      -          "open_link",
      -          "apply_code",
      -          "buy"
      -        ],
      -        "type": "string"
      -      },
      -      "url": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / offers / items / properties / applies_to
      Removed value: -{
      -  "description": "The item a product code is for, else null.",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / code / description
      Removed value: -"Enter it exactly as served; if the store rejects it, try it once in all caps."
    • removedOutput schema / properties / offers / items / properties / community_evidence
      Removed value: -{
      -  "type": "object"
      -}
    • removedOutput schema / properties / offers / items / properties / currency
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / discount_type
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / discount_value
      Removed value: -{
      -  "type": [
      -    "number",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / end_date_unknown
      Removed value: -{
      -  "description": "End date is a feed placeholder; ends_at is null.",
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / offers / items / properties / exclusive
      Removed value: -{
      -  "description": "A code the store gave McClipFace directly; label it \"Exclusive McClipFace code\".",
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / offers / items / properties / last_verified
      Removed value: -{
      -  "description": "Date (YYYY-MM-DD) of the latest worked report when verified, else null. Not a guarantee; codes can still fail.",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / match / description
      Removed value: -"product: a product code for the searched item (works only on applies_to). offer_text: a store offer whose text names the product. brand_store: no offer names the product, so an offer at a store in the brand's or product's category that may carry it (not limited to the product; check that the store has it and it applies). category_store: likewise, an offer at a multi-brand retailer that may carry this type of product."
    • removedOutput schema / properties / offers / items / properties / match / enum
      Removed value: -[
      -  "product",
      -  "offer_text",
      -  "brand_store",
      -  "category_store"
      -]
    • removedOutput schema / properties / offers / items / properties / match_note
      Removed value: -{
      -  "description": "What the code applies to.",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / match_score
      Removed value: -{
      -  "description": "find_coupons: store match score, 0 to 1.",
      -  "type": "number"
      -}
    • removedOutput schema / properties / offers / items / properties / max_savings
      Removed value: -{
      -  "type": [
      -    "number",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / may_have_expired
      Removed value: -{
      -  "description": "Always false: stale codes are left out.",
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / offers / items / properties / merchant
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / offers / items / properties / needs_recheck
      Removed value: -{
      -  "description": "Demoted: recently reported as not working.",
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / offers / items / properties / offer_type / description
      Removed value: -"coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; say so and never place it above a better option."
    • removedOutput schema / properties / offers / items / properties / offer_type / enum
      Removed value: -[
      -  "coupon",
      -  "deal",
      -  "link_only"
      -]
    • removedOutput schema / properties / offers / items / properties / outbound_url
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / recheck_label
      Removed value: -{
      -  "description": "Label to show with a needs_recheck offer.",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / restrictions
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / scope / description
      Removed value: -"product: works only on the item in applies_to; never offer it as a store-wide code. store: not limited to one product."
    • removedOutput schema / properties / offers / items / properties / scope / enum
      Removed value: -[
      -  "store",
      -  "product"
      -]
    • removedOutput schema / properties / offers / items / properties / scope_note
      Removed value: -{
      -  "description": "For a product code, which item it is for, else null.",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / starts_at
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / store_domain / description
      Removed value: -"find_coupons and find_product_coupons: the store's domain, if known."
    • removedOutput schema / properties / offers / items / properties / suggested_display
      Removed value: -{
      -  "description": "Optional rendering hint for a deal card; the offer's own fields stay the source of truth.",
      -  "properties": {
      -    "card_title": {
      -      "type": "string"
      -    },
      -    "code_line": {
      -      "description": "Show second, as a fallback: the raw code for a shopper already in the store's app. Only with a code.",
      -      "type": "string"
      -    },
      -    "cta_label": {
      -      "type": "string"
      -    },
      -    "expiry_display": {
      -      "type": "string"
      -    },
      -    "headline": {
      -      "description": "Show first: the offer's link. Link-first wording only for a tracked mcclipface.com /go link, else a neutral 'Store link: <url>'. Present when the offer has an https link.",
      -      "type": "string"
      -    },
      -    "subtitle": {
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}
    • removedOutput schema / properties / offers / items / properties / terms
      Removed value: -{
      -  "description": "No-code deals only: parsed deal terms when confident, else null (never guessed).",
      -  "properties": {
      -    "category": {
      -      "description": "Goods category the deal text names, if any.",
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "conditions": {
      -      "items": {
      -        "enum": [
      -          "email_signup",
      -          "membership",
      -          "new_customer",
      -          "app_only",
      -          "in_store_only"
      -        ],
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "ends_at": {
      -      "description": "End date YYYY-MM-DD when known.",
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "min_spend": {
      -      "description": "Minimum spend in USD, when stated.",
      -      "type": [
      -        "number",
      -        "null"
      -      ]
      -    },
      -    "reward_type": {
      -      "enum": [
      -        "gift_card",
      -        "dollars_off",
      -        "percent_off",
      -        "free_item",
      -        "free_shipping",
      -        "other"
      -      ],
      -      "type": "string"
      -    },
      -    "reward_value": {
      -      "description": "Amount or percent.",
      -      "type": [
      -        "number",
      -        "null"
      -      ]
      -    }
      -  },
      -  "type": [
      -    "object",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / offers / items / properties / verified / description
      Removed value: -"A recent shopper reported this code worked at checkout (more worked than failed reports in 14 days); ranked first. Not a guarantee; codes can still fail."
    • removedOutput schema / properties / offers_returned
      Removed value: -{
      -  "type": "integer"
      -}
    • removedOutput schema / properties / offers_total
      Removed value: -{
      -  "type": "integer"
      -}
    • removedOutput schema / properties / product
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / reason
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / report_hint
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / sensitive
      Removed value: -{
      -  "description": "get_deals: excluded (sensitive-category stores left out of the general list) or included (a store or brand filter was sent). Prohibited goods are never returned.",
      -  "enum": [
      -    "excluded",
      -    "included"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / status / enum
      Removed value: -[
      -  "available",
      -  "unavailable",
      -  "invalid_arguments"
      -]
    • removedOutput schema / properties / store_match / description
      Removed value: -"find_coupons: exact or alias when a store matched; none when no store did (offers is then empty)."
    • removedOutput schema / properties / store_match / enum
      Removed value: -[
      -  "exact",
      -  "alias",
      -  "none"
      -]
    • removedOutput schema / properties / stores
      Removed value: -{
      -  "description": "find_coupons: the matched stores (store, domain, match, match_score).",
      -  "type": "array"
      -}
    • removedOutput schema / properties / supported_stores
      Removed value: -{
      -  "description": "Only when no codes match: code-less links to supported stores that may carry the product (not a claim that they stock it). Absent when codes are found.",
      -  "items": {
      -    "properties": {
      -      "applies_to": {
      -        "description": "The item a product code is for, else null.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "code": {
      -        "description": "Enter it exactly as served; if the store rejects it, try it once in all caps.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "community_evidence": {
      -        "type": "object"
      -      },
      -      "currency": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "description": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "discount_type": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "discount_value": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "end_date_unknown": {
      -        "description": "End date is a feed placeholder; ends_at is null.",
      -        "type": "boolean"
      -      },
      -      "ends_at": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "entry_url": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "exclusive": {
      -        "description": "A code the store gave McClipFace directly; label it \"Exclusive McClipFace code\".",
      -        "type": "boolean"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "last_verified": {
      -        "description": "Date (YYYY-MM-DD) of the latest worked report when verified, else null. Not a guarantee; codes can still fail.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "match": {
      -        "description": "find_coupons: exact (the store's name or domain) or alias (a known other name).",
      -        "enum": [
      -          "exact",
      -          "alias"
      -        ],
      -        "type": "string"
      -      },
      -      "match_score": {
      -        "description": "find_coupons: store match score, 0 to 1.",
      -        "type": "number"
      -      },
      -      "max_savings": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "may_have_expired": {
      -        "description": "Always false: stale codes are left out.",
      -        "type": "boolean"
      -      },
      -      "merchant": {
      -        "type": "string"
      -      },
      -      "merchant_display": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "min_spend": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "needs_recheck": {
      -        "description": "Demoted: recently reported as not working.",
      -        "type": "boolean"
      -      },
      -      "offer_type": {
      -        "description": "coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; say so and never place it above a better option.",
      -        "enum": [
      -          "coupon",
      -          "deal",
      -          "link_only"
      -        ],
      -        "type": "string"
      -      },
      -      "outbound_url": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "recheck_label": {
      -        "description": "Label to show with a needs_recheck offer.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "restrictions": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "scope": {
      -        "description": "product: works only on the item in applies_to; never offer it as a store-wide code. store: not limited to one product.",
      -        "enum": [
      -          "store",
      -          "product"
      -        ],
      -        "type": "string"
      -      },
      -      "scope_note": {
      -        "description": "For a product code, which item it is for, else null.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "starts_at": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "store_domain": {
      -        "description": "find_coupons and find_product_coupons: the store's domain, if known.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "terms": {
      -        "description": "No-code deals only: parsed deal terms when confident, else null (never guessed).",
      -        "properties": {
      -          "category": {
      -            "description": "Goods category the deal text names, if any.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "conditions": {
      -            "items": {
      -              "enum": [
      -                "email_signup",
      -                "membership",
      -                "new_customer",
      -                "app_only",
      -                "in_store_only"
      -              ],
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "ends_at": {
      -            "description": "End date YYYY-MM-DD when known.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "min_spend": {
      -            "description": "Minimum spend in USD, when stated.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "reward_type": {
      -            "enum": [
      -              "gift_card",
      -              "dollars_off",
      -              "percent_off",
      -              "free_item",
      -              "free_shipping",
      -              "other"
      -            ],
      -            "type": "string"
      -          },
      -          "reward_value": {
      -            "description": "Amount or percent.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "tracked": {
      -        "type": "boolean"
      -      },
      -      "verified": {
      -        "description": "A recent shopper reported this code worked at checkout (more worked than failed reports in 14 days); ranked first. Not a guarantee; codes can still fail.",
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / terms
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
  4. Changed3 schema fields changed
    • addedInput schema / properties / client_install_id
      Added value: +{
      +  "description": "Optional: the random install ID (a UUID) from the McClipFace skill, if it has one; never derived from the shopper. Only counted, as a monthly-salted hash, for monthly active installs; never stored as sent or linked to the store, codes or reports. Leave it out if there is none.",
      +  "maxLength": 36,
      +  "minLength": 36,
      +  "type": "string"
      +}
    • changedOutput schema / properties / offers / items / properties / store_domain / description
      Previous value: -"find_coupons: the matched store's domain, if known."New value: +"find_coupons and find_product_coupons: the store's domain, if known."
    • changedOutput schema / properties / supported_stores / items / properties / store_domain / description
      Previous value: -"find_coupons: the matched store's domain, if known."New value: +"find_coupons and find_product_coupons: the store's domain, if known."
  5. Changed2 schema fields changed
    • addedOutput schema / properties / offers / items / properties / actions
      Added value: +{
      +  "description": "Optional: what can be done with the offer. Use the ones you can; a plain chat assistant shows the link. buy appears only with a real checkout link and always needs the shopper's explicit approval.",
      +  "items": {
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "label": {
      +        "type": "string"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "requires_user_approval": {
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "enum": [
      +          "open_link",
      +          "apply_code",
      +          "buy"
      +        ],
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / offers / items / properties / suggested_display
      Added value: +{
      +  "description": "Optional rendering hint for a deal card; the offer's own fields stay the source of truth.",
      +  "properties": {
      +    "card_title": {
      +      "type": "string"
      +    },
      +    "code_line": {
      +      "description": "Show second, as a fallback: the raw code for a shopper already in the store's app. Only with a code.",
      +      "type": "string"
      +    },
      +    "cta_label": {
      +      "type": "string"
      +    },
      +    "expiry_display": {
      +      "type": "string"
      +    },
      +    "headline": {
      +      "description": "Show first: the offer's link. Link-first wording only for a tracked mcclipface.com /go link, else a neutral 'Store link: <url>'. Present when the offer has an https link.",
      +      "type": "string"
      +    },
      +    "subtitle": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  6. Changed2 schema fields changed
    • changedOutput schema / properties / offers / items / properties / match / description
      Previous value: -"product: a product code for the searched item (works only on applies_to). offer_text: a store offer whose text names the product. brand_store: no offer names the product, so an offer at a store in the brand's or product's category that may carry it (not limited to the product; check that the store has it and it applies)."New value: +"product: a product code for the searched item (works only on applies_to). offer_text: a store offer whose text names the product. brand_store: no offer names the product, so an offer at a store in the brand's or product's category that may carry it (not limited to the product; check that the store has it and it applies). category_store: likewise, an offer at a multi-brand retailer that may carry this type of product."
    • changedOutput schema / properties / offers / items / properties / match / enum
      Previous value: -[
      -  "product",
      -  "offer_text",
      -  "brand_store"
      -]New value: +[
      +  "product",
      +  "offer_text",
      +  "brand_store",
      +  "category_store"
      +]
  7. Changed2 schema fields changed
    • changedOutput schema / properties / offers / items / properties / match / description
      Previous value: -"product: a product code for the searched item (works only on applies_to). offer_text: a store offer whose text names the product."New value: +"product: a product code for the searched item (works only on applies_to). offer_text: a store offer whose text names the product. brand_store: no offer names the product, so an offer at a store in the brand's or product's category that may carry it (not limited to the product; check that the store has it and it applies)."
    • changedOutput schema / properties / offers / items / properties / match / enum
      Previous value: -[
      -  "product",
      -  "offer_text"
      -]New value: +[
      +  "product",
      +  "offer_text",
      +  "brand_store"
      +]
  8. Changed41 schema fields changed
    • changedInput schema / properties / currency / description
      Previous value: -"ISO 4217 currency code, uppercase. Defaults to USD. Only offers in this currency are returned; non-US stores are left out of USD results."New value: +"ISO 4217 code, uppercase (default USD). Only offers in this currency are returned (USD leaves out non-US stores)."
    • changedOutput schema / properties / error / description
      Previous value: -"find_coupons only: set when the call named no store (a request error, not a store with no coupons)."New value: +"find_coupons: the call named no store (a request error, not a store with no coupons)."
    • changedOutput schema / properties / filters / description
      Previous value: -"get_deals only: the store and brand filters applied."New value: +"get_deals: the store and brand filters applied."
    • changedOutput schema / properties / hint / description
      Previous value: -"find_coupons only: the accepted store arguments, with error."New value: +"find_coupons: the accepted store arguments, with error."
    • changedOutput schema / properties / offers / items / properties / applies_to / description
      Previous value: -"The product a scope \"product\" code is for; null otherwise."New value: +"The item a product code is for, else null."
    • changedOutput schema / properties / offers / items / properties / end_date_unknown / description
      Previous value: -"The feed's end date is a far-future placeholder, so ends_at is null."New value: +"End date is a feed placeholder; ends_at is null."
    • changedOutput schema / properties / offers / items / properties / exclusive / description
      Previous value: -"An exclusive McClipFace code the store's affiliate program gave McClipFace directly (label it \"Exclusive McClipFace code\"). Same rules as every other offer."New value: +"A code the store gave McClipFace directly; label it \"Exclusive McClipFace code\"."
    • changedOutput schema / properties / offers / items / properties / last_verified / description
      Previous value: -"Date (YYYY-MM-DD) of the latest report that the code worked at checkout, when verified; else null. Not a guarantee; codes can still fail."New value: +"Date (YYYY-MM-DD) of the latest worked report when verified, else null. Not a guarantee; codes can still fail."
    • changedOutput schema / properties / offers / items / properties / match / description
      Previous value: -"\"product\": a product code for the searched item (works only on applies_to). \"offer_text\": a store offer whose text names the product. Store names are not searched."New value: +"product: a product code for the searched item (works only on applies_to). offer_text: a store offer whose text names the product."
    • changedOutput schema / properties / offers / items / properties / match_note / description
      Previous value: -"One line saying what the code applies to."New value: +"What the code applies to."
    • changedOutput schema / properties / offers / items / properties / match_score / description
      Previous value: -"find_coupons only: store match score, 0 to 1."New value: +"find_coupons: store match score, 0 to 1."
    • changedOutput schema / properties / offers / items / properties / may_have_expired / description
      Previous value: -"Always false. Codes more than 60 days old whose end date is unknown or a placeholder are left out; the field is kept for compatibility."New value: +"Always false: stale codes are left out."
    • changedOutput schema / properties / offers / items / properties / offer_type / description
      Previous value: -"coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; label it as not a discount and never place it above a better option."New value: +"coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; say so and never place it above a better option."
    • changedOutput schema / properties / offers / items / properties / recheck_label / description
      Previous value: -"Short label to show with a needs-recheck offer (\"Recently reported as not working\")."New value: +"Label to show with a needs_recheck offer."
    • changedOutput schema / properties / offers / items / properties / scope / description
      Previous value: -"\"product\": the code works only on the one item in applies_to. Offer it only for that item and never as a store-wide code. \"store\": not limited to one product in the feed (store terms still apply)."New value: +"product: works only on the item in applies_to; never offer it as a store-wide code. store: not limited to one product."
    • changedOutput schema / properties / offers / items / properties / scope_note / description
      Previous value: -"For a product code, says which item it is for, e.g. \"DYUV: for the Dyson V11 Upright Cordless Stick Vacuum only, not store-wide\"; null otherwise."New value: +"For a product code, which item it is for, else null."
    • changedOutput schema / properties / offers / items / properties / store_domain / description
      Previous value: -"find_coupons only: the matched store's domain, when known."New value: +"find_coupons: the matched store's domain, if known."
    • changedOutput schema / properties / offers / items / properties / terms / description
      Previous value: -"No-code deals only: structured deal terms when the parser is confident, else null. Never guessed. Coupons and link_only rows are always null."New value: +"No-code deals only: parsed deal terms when confident, else null (never guessed)."
    • changedOutput schema / properties / offers / items / properties / terms / properties / category / description
      Previous value: -"Goods category when the deal text names one (e.g. household)."New value: +"Goods category the deal text names, if any."
    • changedOutput schema / properties / offers / items / properties / terms / properties / reward_value / description
      Previous value: -"Gift-card or dollars-off amount, or percent value."New value: +"Amount or percent."
    • changedOutput schema / properties / offers / items / properties / verified / description
      Previous value: -"Verified means a recent shopper reported this code worked at checkout (more worked than failed reports in the last 14 days). It is not a guarantee; codes can still fail. Verified codes rank first."New value: +"A recent shopper reported this code worked at checkout (more worked than failed reports in 14 days); ranked first. Not a guarantee; codes can still fail."
    • changedOutput schema / properties / sensitive / description
      Previous value: -"get_deals only: whether stores whose names suggest a sensitive category were left out of the general digest (excluded) or a store or brand filter was sent (included). Prohibited goods stores are never returned either way."New value: +"get_deals: excluded (sensitive-category stores left out of the general list) or included (a store or brand filter was sent). Prohibited goods are never returned."
    • changedOutput schema / properties / store_match / description
      Previous value: -"find_coupons only: exact or alias when a store matched; none when no store matches exactly or by a known alias (offers is then empty)."New value: +"find_coupons: exact or alias when a store matched; none when no store did (offers is then empty)."
    • changedOutput schema / properties / stores / description
      Previous value: -"find_coupons only: the matched stores (store, domain, match, match_score)."New value: +"find_coupons: the matched stores (store, domain, match, match_score)."
    • changedOutput schema / properties / supported_stores / description
      Previous value: -"Only when no codes match: code-less store links of stores McClipFace supports that may carry the product (no code, store link only). Not a claim that the store stocks the item. Absent when codes are found."New value: +"Only when no codes match: code-less links to supported stores that may carry the product (not a claim that they stock it). Absent when codes are found."
    • changedOutput schema / properties / supported_stores / items / properties / applies_to / description
      Previous value: -"The product a scope \"product\" code is for; null otherwise."New value: +"The item a product code is for, else null."
    • changedOutput schema / properties / supported_stores / items / properties / end_date_unknown / description
      Previous value: -"The feed's end date is a far-future placeholder, so ends_at is null."New value: +"End date is a feed placeholder; ends_at is null."
    • changedOutput schema / properties / supported_stores / items / properties / exclusive / description
      Previous value: -"An exclusive McClipFace code the store's affiliate program gave McClipFace directly (label it \"Exclusive McClipFace code\"). Same rules as every other offer."New value: +"A code the store gave McClipFace directly; label it \"Exclusive McClipFace code\"."
    • changedOutput schema / properties / supported_stores / items / properties / last_verified / description
      Previous value: -"Date (YYYY-MM-DD) of the latest report that the code worked at checkout, when verified; else null. Not a guarantee; codes can still fail."New value: +"Date (YYYY-MM-DD) of the latest worked report when verified, else null. Not a guarantee; codes can still fail."
    • changedOutput schema / properties / supported_stores / items / properties / match / description
      Previous value: -"find_coupons only: how the store matched the merchant asked for. \"exact\": its name, domain or the label of its own domain; \"alias\": a known other name of the store."New value: +"find_coupons: exact (the store's name or domain) or alias (a known other name)."
    • changedOutput schema / properties / supported_stores / items / properties / match_score / description
      Previous value: -"find_coupons only: store match score, 0 to 1."New value: +"find_coupons: store match score, 0 to 1."
    • changedOutput schema / properties / supported_stores / items / properties / may_have_expired / description
      Previous value: -"Always false. Codes more than 60 days old whose end date is unknown or a placeholder are left out; the field is kept for compatibility."New value: +"Always false: stale codes are left out."
    • changedOutput schema / properties / supported_stores / items / properties / offer_type / description
      Previous value: -"coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; label it as not a discount and never place it above a better option."New value: +"coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; say so and never place it above a better option."
    • changedOutput schema / properties / supported_stores / items / properties / recheck_label / description
      Previous value: -"Short label to show with a needs-recheck offer (\"Recently reported as not working\")."New value: +"Label to show with a needs_recheck offer."
    • changedOutput schema / properties / supported_stores / items / properties / scope / description
      Previous value: -"\"product\": the code works only on the one item in applies_to. Offer it only for that item and never as a store-wide code. \"store\": not limited to one product in the feed (store terms still apply)."New value: +"product: works only on the item in applies_to; never offer it as a store-wide code. store: not limited to one product."
    • changedOutput schema / properties / supported_stores / items / properties / scope_note / description
      Previous value: -"For a product code, says which item it is for, e.g. \"DYUV: for the Dyson V11 Upright Cordless Stick Vacuum only, not store-wide\"; null otherwise."New value: +"For a product code, which item it is for, else null."
    • changedOutput schema / properties / supported_stores / items / properties / store_domain / description
      Previous value: -"find_coupons only: the matched store's domain, when known."New value: +"find_coupons: the matched store's domain, if known."
    • changedOutput schema / properties / supported_stores / items / properties / terms / description
      Previous value: -"No-code deals only: structured deal terms when the parser is confident, else null. Never guessed. Coupons and link_only rows are always null."New value: +"No-code deals only: parsed deal terms when confident, else null (never guessed)."
    • changedOutput schema / properties / supported_stores / items / properties / terms / properties / category / description
      Previous value: -"Goods category when the deal text names one (e.g. household)."New value: +"Goods category the deal text names, if any."
    • changedOutput schema / properties / supported_stores / items / properties / terms / properties / reward_value / description
      Previous value: -"Gift-card or dollars-off amount, or percent value."New value: +"Amount or percent."
    • changedOutput schema / properties / supported_stores / items / properties / verified / description
      Previous value: -"Verified means a recent shopper reported this code worked at checkout (more worked than failed reports in the last 14 days). It is not a guarantee; codes can still fail. Verified codes rank first."New value: +"A recent shopper reported this code worked at checkout (more worked than failed reports in 14 days); ranked first. Not a guarantee; codes can still fail."
  9. Changed2 schema fields changed
    • addedOutput schema / properties / offers / items / properties / code / description
      Added value: +"Enter it exactly as served; if the store rejects it, try it once in all caps."
    • addedOutput schema / properties / supported_stores / items / properties / code / description
      Added value: +"Enter it exactly as served; if the store rejects it, try it once in all caps."
  10. Changed10 schema fields changed
    • removedInput schema / properties / client_skill_version
      Removed value: -{
      -  "description": "Optional alias of client_version (client_version wins when both are sent).",
      -  "maxLength": 32,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / client_version
      Removed value: -{
      -  "description": "Optional: the installed McClipFace skill version (for example 2.0.0), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data.",
      -  "maxLength": 32,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • changedOutput schema / properties / offers / items / properties / offer_type / description
      Previous value: -"coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; label it as not a discount and pick it first only at a true tie."New value: +"coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; label it as not a discount and never place it above a better option."
    • removedOutput schema / properties / offers / items / properties / source_network
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / refreshed_at
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • changedOutput schema / properties / sensitive / description
      Previous value: -"get_deals only: whether weapons, vape, tobacco, smoke shop, CBD/THC and adult stores were left out (the default) or included."New value: +"get_deals only: whether stores whose names suggest a sensitive category were left out of the general digest (excluded) or a store or brand filter was sent (included). Prohibited goods stores are never returned either way."
    • changedOutput schema / properties / supported_stores / items / properties / offer_type / description
      Previous value: -"coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; label it as not a discount and pick it first only at a true tie."New value: +"coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; label it as not a discount and never place it above a better option."
    • removedOutput schema / properties / supported_stores / items / properties / source_network
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / update_notice
      Removed value: -{
      -  "description": "The first field when present: this client's skill version is older than the current one (on every such result; never sent when the call gives no version). The update is offered as a question before every update (yes / no); it happens only on the user's yes. latest is the current skill version; current is the version the caller sent (null when it could not be read); install is where the new SKILL.md is. Absent when the caller is current.",
      -  "properties": {
      -    "changes": {
      -      "description": "One line: what changed in the latest version.",
      -      "type": "string"
      -    },
      -    "current": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "install": {
      -      "type": "string"
      -    },
      -    "latest": {
      -      "type": "string"
      -    },
      -    "message": {
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}
    • removedOutput schema / properties / update_notice_text
      Removed value: -{
      -  "description": "Transitional: the same notice as one sentence (the shape before skill 1.4.14). Sent only with update_notice.",
      -  "type": "string"
      -}
  11. Changed2 schema fields changed
    • changedInput schema / properties / client_version / description
      Previous value: -"Optional: the installed McClipFace skill version (for example 1.4.24), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."New value: +"Optional: the installed McClipFace skill version (for example 2.0.0), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."
    • changedOutput schema / properties / update_notice / description
      Previous value: -"The first field when present: this client's skill version is older than the current one (on every such result; never sent when the call gives no version). Read it before the offers. When latest is newer than the installed skill, update automatically from install without asking, then tell the user in one line the new version and what changed (changes); never update silently. If the skill file can't be written, tell the user once, in one line, that a newer version exists and how to install it. latest is the current skill version; current is the version the caller sent (null when it could not be read). Absent when the caller is current."New value: +"The first field when present: this client's skill version is older than the current one (on every such result; never sent when the call gives no version). The update is offered as a question before every update (yes / no); it happens only on the user's yes. latest is the current skill version; current is the version the caller sent (null when it could not be read); install is where the new SKILL.md is. Absent when the caller is current."
  12. Changed2 schema fields changed
    • changedInput schema / properties / client_version / description
      Previous value: -"Optional: the installed McClipFace skill version (for example 1.4.23), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."New value: +"Optional: the installed McClipFace skill version (for example 1.4.24), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."
    • changedOutput schema / properties / sensitive / description
      Previous value: -"get_deals only: whether weapons, vape, tobacco, smoke shop and CBD/THC stores were left out (the default) or included."New value: +"get_deals only: whether weapons, vape, tobacco, smoke shop, CBD/THC and adult stores were left out (the default) or included."
  13. Changed2 schema fields changed
    • changedInput schema / properties / client_version / description
      Previous value: -"Optional: the installed McClipFace skill version (for example 1.4.22), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."New value: +"Optional: the installed McClipFace skill version (for example 1.4.23), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."
    • changedOutput schema / properties / sensitive / description
      Previous value: -"get_deals only: whether weapons, vape, tobacco, smoke shop, CBD/THC and adult stores were left out (the default) or included."New value: +"get_deals only: whether weapons, vape, tobacco, smoke shop and CBD/THC stores were left out (the default) or included."
  14. Changed1 schema field changed
    • changedInput schema / properties / client_version / description
      Previous value: -"Optional: the installed McClipFace skill version (for example 1.4.20), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."New value: +"Optional: the installed McClipFace skill version (for example 1.4.22), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."
  15. Changed1 schema field changed
    • changedInput schema / properties / client_version / description
      Previous value: -"Optional: the installed McClipFace skill version (for example 1.4.19), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."New value: +"Optional: the installed McClipFace skill version (for example 1.4.20), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."
  16. Changed4 schema fields changed
    • changedInput schema / properties / client_version / description
      Previous value: -"Optional: the installed McClipFace skill version (for example 1.4.17), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."New value: +"Optional: the installed McClipFace skill version (for example 1.4.19), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."
    • changedOutput schema / properties / how_to_use / description
      Previous value: -"Present when an offer has an outbound_url: how to use the link."New value: +"Present when an offer has an entry_url: how to use the link."
    • addedOutput schema / properties / offers / items / properties / entry_url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / supported_stores / items / properties / entry_url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  17. Changed8 schema fields changed
    • addedInput schema / properties / client_skill_version
      Added value: +{
      +  "description": "Optional alias of client_version (client_version wins when both are sent).",
      +  "maxLength": 32,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / client_version / description
      Previous value: -"Optional: the installed McClipFace skill version (for example 1.4.12), used only for anonymous version mix counts and a once-a-day update_notice when outdated. Use this argument rather than the HTTP header X-McClipFace-Version. No other client or user data."New value: +"Optional: the installed McClipFace skill version (for example 1.4.17), used only for anonymous version mix counts and an update_notice on every result when outdated. Omit it when no McClipFace skill is installed (connector only): then no update_notice is sent. Use this argument (or its alias client_skill_version) rather than the HTTP header X-McClipFace-Version. No other client or user data."
    • addedOutput schema / properties / error
      Added value: +{
      +  "description": "find_coupons only: set when the call named no store (a request error, not a store with no coupons).",
      +  "type": "string"
      +}
    • addedOutput schema / properties / hint
      Added value: +{
      +  "description": "find_coupons only: the accepted store arguments, with error.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / update_notice / description
      Previous value: -"Present when this client's skill version is older than the current one, or missing, and at most once per day per caller: ask the user once in plain words whether to update now. On yes, install from the existing install URL. Absent when current or already nudged today."New value: +"The first field when present: this client's skill version is older than the current one (on every such result; never sent when the call gives no version). Read it before the offers. When latest is newer than the installed skill, update automatically from install without asking, then tell the user in one line the new version and what changed (changes); never update silently. If the skill file can't be written, tell the user once, in one line, that a newer version exists and how to install it. latest is the current skill version; current is the version the caller sent (null when it could not be read). Absent when the caller is current."
    • addedOutput schema / properties / update_notice / properties
      Added value: +{
      +  "changes": {
      +    "description": "One line: what changed in the latest version.",
      +    "type": "string"
      +  },
      +  "current": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "install": {
      +    "type": "string"
      +  },
      +  "latest": {
      +    "type": "string"
      +  },
      +  "message": {
      +    "type": "string"
      +  }
      +}
    • changedOutput schema / properties / update_notice / type
      Previous value: -"string"New value: +"object"
    • addedOutput schema / properties / update_notice_text
      Added value: +{
      +  "description": "Transitional: the same notice as one sentence (the shape before skill 1.4.14). Sent only with update_notice.",
      +  "type": "string"
      +}
  18. Changed2 schema fields changed
    • addedInput schema / properties / client_version
      Added value: +{
      +  "description": "Optional: the installed McClipFace skill version (for example 1.4.12), used only for anonymous version mix counts and a once-a-day update_notice when outdated. Use this argument rather than the HTTP header X-McClipFace-Version. No other client or user data.",
      +  "maxLength": 32,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedOutput schema / properties / update_notice
      Added value: +{
      +  "description": "Present when this client's skill version is older than the current one, or missing, and at most once per day per caller: ask the user once in plain words whether to update now. On yes, install from the existing install URL. Absent when current or already nudged today.",
      +  "type": "string"
      +}
  19. Changed2 schema fields changed
    • addedOutput schema / properties / offers / items / properties / terms
      Added value: +{
      +  "description": "No-code deals only: structured deal terms when the parser is confident, else null. Never guessed. Coupons and link_only rows are always null.",
      +  "properties": {
      +    "category": {
      +      "description": "Goods category when the deal text names one (e.g. household).",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "conditions": {
      +      "items": {
      +        "enum": [
      +          "email_signup",
      +          "membership",
      +          "new_customer",
      +          "app_only",
      +          "in_store_only"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "ends_at": {
      +      "description": "End date YYYY-MM-DD when known.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "min_spend": {
      +      "description": "Minimum spend in USD, when stated.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "reward_type": {
      +      "enum": [
      +        "gift_card",
      +        "dollars_off",
      +        "percent_off",
      +        "free_item",
      +        "free_shipping",
      +        "other"
      +      ],
      +      "type": "string"
      +    },
      +    "reward_value": {
      +      "description": "Gift-card or dollars-off amount, or percent value.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / supported_stores / items / properties / terms
      Added value: +{
      +  "description": "No-code deals only: structured deal terms when the parser is confident, else null. Never guessed. Coupons and link_only rows are always null.",
      +  "properties": {
      +    "category": {
      +      "description": "Goods category when the deal text names one (e.g. household).",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "conditions": {
      +      "items": {
      +        "enum": [
      +          "email_signup",
      +          "membership",
      +          "new_customer",
      +          "app_only",
      +          "in_store_only"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "ends_at": {
      +      "description": "End date YYYY-MM-DD when known.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "min_spend": {
      +      "description": "Minimum spend in USD, when stated.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "reward_type": {
      +      "enum": [
      +        "gift_card",
      +        "dollars_off",
      +        "percent_off",
      +        "free_item",
      +        "free_shipping",
      +        "other"
      +      ],
      +      "type": "string"
      +    },
      +    "reward_value": {
      +      "description": "Gift-card or dollars-off amount, or percent value.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  20. Changed3 schema fields changed
    • addedOutput schema / properties / disclosure / description
      Added value: +"Commission disclosure, in every result. Offers with tracked=true (link_type \"affiliate\" in the text) are the affiliate links it refers to."
    • addedOutput schema / properties / how_to_use / description
      Added value: +"Present when an offer has an outbound_url: how to use the link."
    • changedOutput schema / properties / status / enum
      Previous value: -[
      -  "available",
      -  "unavailable"
      -]New value: +[
      +  "available",
      +  "unavailable",
      +  "invalid_arguments"
      +]
  21. Changed3 schema fields changed
    • addedOutput schema / properties / offers / items / properties / offer_type
      Added value: +{
      +  "description": "coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; label it as not a discount and pick it first only at a true tie.",
      +  "enum": [
      +    "coupon",
      +    "deal",
      +    "link_only"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / sensitive
      Added value: +{
      +  "description": "get_deals only: whether weapons, vape, tobacco, smoke shop, CBD/THC and adult stores were left out (the default) or included.",
      +  "enum": [
      +    "excluded",
      +    "included"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / supported_stores / items / properties / offer_type
      Added value: +{
      +  "description": "coupon: has a code. deal: a discount with no code. link_only: a store link, not a discount; label it as not a discount and pick it first only at a true tie.",
      +  "enum": [
      +    "coupon",
      +    "deal",
      +    "link_only"
      +  ],
      +  "type": "string"
      +}
  22. Changed9 schema fields changed
    • changedOutput schema / properties / offers / items / properties / match / description
      Previous value: -"\"product\": a product code for the searched item (works only on applies_to). \"offer_text\": a store offer whose text names the product. \"store\": a store-wide code at a store whose name matches the search, not limited to one product."New value: +"\"product\": a product code for the searched item (works only on applies_to). \"offer_text\": a store offer whose text names the product. Store names are not searched."
    • changedOutput schema / properties / offers / items / properties / match / enum
      Previous value: -[
      -  "product",
      -  "offer_text",
      -  "store"
      -]New value: +[
      +  "product",
      +  "offer_text"
      +]
    • addedOutput schema / properties / offers / items / properties / match_score
      Added value: +{
      +  "description": "find_coupons only: store match score, 0 to 1.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / offers / items / properties / store_domain
      Added value: +{
      +  "description": "find_coupons only: the matched store's domain, when known.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / store_match
      Added value: +{
      +  "description": "find_coupons only: exact or alias when a store matched; none when no store matches exactly or by a known alias (offers is then empty).",
      +  "enum": [
      +    "exact",
      +    "alias",
      +    "none"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / stores
      Added value: +{
      +  "description": "find_coupons only: the matched stores (store, domain, match, match_score).",
      +  "type": "array"
      +}
    • addedOutput schema / properties / supported_stores / items / properties / match
      Added value: +{
      +  "description": "find_coupons only: how the store matched the merchant asked for. \"exact\": its name, domain or the label of its own domain; \"alias\": a known other name of the store.",
      +  "enum": [
      +    "exact",
      +    "alias"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / supported_stores / items / properties / match_score
      Added value: +{
      +  "description": "find_coupons only: store match score, 0 to 1.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / supported_stores / items / properties / store_domain
      Added value: +{
      +  "description": "find_coupons only: the matched store's domain, when known.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  23. Changed1 schema field changed
    • addedOutput schema / properties / supported_stores
      Added value: +{
      +  "description": "Only when no codes match: code-less store links of stores McClipFace supports that may carry the product (no code, store link only). Not a claim that the store stocks the item. Absent when codes are found.",
      +  "items": {
      +    "properties": {
      +      "applies_to": {
      +        "description": "The product a scope \"product\" code is for; null otherwise.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "code": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "community_evidence": {
      +        "type": "object"
      +      },
      +      "currency": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "description": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "discount_type": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "discount_value": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "end_date_unknown": {
      +        "description": "The feed's end date is a far-future placeholder, so ends_at is null.",
      +        "type": "boolean"
      +      },
      +      "ends_at": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "exclusive": {
      +        "description": "An exclusive McClipFace code the store's affiliate program gave McClipFace directly (label it \"Exclusive McClipFace code\"). Same rules as every other offer.",
      +        "type": "boolean"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "last_verified": {
      +        "description": "Date (YYYY-MM-DD) of the latest report that the code worked at checkout, when verified; else null. Not a guarantee; codes can still fail.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "max_savings": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "may_have_expired": {
      +        "description": "Always false. Codes more than 60 days old whose end date is unknown or a placeholder are left out; the field is kept for compatibility.",
      +        "type": "boolean"
      +      },
      +      "merchant": {
      +        "type": "string"
      +      },
      +      "merchant_display": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "min_spend": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "needs_recheck": {
      +        "description": "Demoted: recently reported as not working.",
      +        "type": "boolean"
      +      },
      +      "outbound_url": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "recheck_label": {
      +        "description": "Short label to show with a needs-recheck offer (\"Recently reported as not working\").",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "restrictions": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "scope": {
      +        "description": "\"product\": the code works only on the one item in applies_to. Offer it only for that item and never as a store-wide code. \"store\": not limited to one product in the feed (store terms still apply).",
      +        "enum": [
      +          "store",
      +          "product"
      +        ],
      +        "type": "string"
      +      },
      +      "scope_note": {
      +        "description": "For a product code, says which item it is for, e.g. \"DYUV: for the Dyson V11 Upright Cordless Stick Vacuum only, not store-wide\"; null otherwise.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "source_network": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "starts_at": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "tracked": {
      +        "type": "boolean"
      +      },
      +      "verified": {
      +        "description": "Verified means a recent shopper reported this code worked at checkout (more worked than failed reports in the last 14 days). It is not a guarantee; codes can still fail. Verified codes rank first.",
      +        "type": "boolean"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  24. Changed1 schema field changed
    • changedOutput schema / properties / offers / items / properties / exclusive / description
      Previous value: -"An exclusive Clippy code the store's affiliate program gave Clippy directly (label it \"Exclusive Clippy code\"). Same rules as every other offer."New value: +"An exclusive McClipFace code the store's affiliate program gave McClipFace directly (label it \"Exclusive McClipFace code\"). Same rules as every other offer."
  25. Changed2 schema fields changed
    • addedOutput schema / properties / offers / items / properties / last_verified
      Added value: +{
      +  "description": "Date (YYYY-MM-DD) of the latest report that the code worked at checkout, when verified; else null. Not a guarantee; codes can still fail.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / offers / items / properties / verified
      Added value: +{
      +  "description": "Verified means a recent shopper reported this code worked at checkout (more worked than failed reports in the last 14 days). It is not a guarantee; codes can still fail. Verified codes rank first.",
      +  "type": "boolean"
      +}
  26. Changed1 schema field changed
    • addedOutput schema / properties / filters
      Added value: +{
      +  "description": "get_deals only: the store and brand filters applied.",
      +  "type": "object"
      +}
  27. Changed2 schema fields changed
    • changedInput schema / properties / product / description
      Previous value: -"Product name, short and specific, e.g. \"iphone\", \"dyson v11\" or \"macbook air\". Not a store name: use find_coupons for a store."New value: +"Product name, short and specific, e.g. \"dyson\" or \"Dyson vacuum\". Not a store name: use find_coupons for a store."
    • addedOutput schema / properties / how_to_use
      Added value: +{
      +  "type": "string"
      +}
  28. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already carry readOnly, idempotent, openWorld and non-destructive, so the description focuses on real behavioral constraints: codes apply only to the matched item, prices must never be invented, affiliate commission must not distort ranking, and results are sourced via McClipFace. It omits freshness/latency and result-count behavior, which keeps it from a 5.

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

Conciseness4/5

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

Purpose is front-loaded, followed by trigger examples, then constraints and the sibling redirect. Dense but purposeful; the ethical admonitions ('never invent prices') are slightly padded but arguably earn their place for a shopping agent.

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

Completeness4/5

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

With an output schema present and annotations covering the safety profile, the description need not explain return values, and it covers when to use, disambiguation from find_coupons, and integrity constraints. Only minor operational details (freshness, result volume) are absent.

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

Parameters4/5

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

Schema coverage is 100%, so the schema does the heavy lifting on product, category, currency and client_install_id. The description still adds value by clarifying that coupon codes are scoped to the specific product rather than the store, reinforcing the product parameter's meaning and the store-vs-product split.

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?

Names a specific verb (find) and resource (product deals, sale prices, price drops, discounts, coupon codes) and explicitly distinguishes itself from the store-oriented sibling: "For a store, use find_coupons." An agent can route correctly 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.

Usage Guidelines5/5

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

Gives concrete shopper utterances that should trigger it ('find me a deal,' 'where can I buy it cheapest,' 'is it on sale,' 'best price'), states that explicit coupon language is not required, and names the alternative for store queries. Both when-to-use and which-sibling guidance are present.

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