Skip to main content
Glama

McClipFace

Find coupons and deals for a store

find_coupons
Read-onlyIdempotent

One store the shopper names: its coupon codes, promo codes, sales and deals, also when they ask to buy or check out there; coupon wording not required. For a named product, use find_product_coupons. Optional target_url/target_urls: a picked product page for a deep link. Results carry the rules that apply to them.

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": {
      "merchant": "<merchant>"
    },
    "name": "find_coupons"
  }
}

Input Schema

NameRequiredDescriptionDefault
currencyNoISO 4217 code, uppercase (default USD). Only offers in this currency are returned (USD leaves out non-US stores).USD
merchantYesStore name or domain, e.g. "DHgate" or "dhgate.com".
target_urlNoOptional: a product page on the matched store's own website that the shopper picked (http or https; never a cart, checkout, account or order page), used only to return a shopping link to that page in deep_link. Any query string or fragment is removed before use; the address isn't logged, stored, cached or counted by us, and for some stores it's passed to the store's affiliate network only to build the link. Leave it out for a plain store lookup.
target_urlsNoOptional, instead of target_url: up to 5 such addresses (e.g. every pick in a roundup), same rules; deep_links then holds one link per address, in order.
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. Changed52 schema fields changed
    • removedOutput schema / properties / currency
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / deep_link / description
      Removed value: -"find_coupons with target_url only: status \"built\": url is that page's shopping link, used instead of entry_url when the shopper chooses it; \"not_available\": use entry_url (reason says why). A built Feedico link may still open the programme's usual landing page (note says so)."
    • removedOutput schema / properties / deep_link / properties
      Removed value: -{
      -  "network": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "note": {
      -    "description": "Built Feedico goUrl only: the programme may still open its usual landing page.",
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "offer_id": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "reason": {
      -    "enum": [
      -      null,
      -      "partner_link_unchanged",
      -      "deep_link_not_allowed",
      -      "no_tracked_link",
      -      "no_offers",
      -      "off_site",
      -      "unknown_store_domain"
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "status": {
      -    "enum": [
      -      "built",
      -      "not_available"
      -    ],
      -    "type": "string"
      -  },
      -  "url": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  }
      -}
    • removedOutput schema / properties / deep_links / description
      Removed value: -"find_coupons with target_urls only: one item per address, in order, like deep_link plus index; reason invalid_target means that address can't be used."
    • removedOutput schema / properties / deep_links / items
      Removed value: -{
      -  "properties": {
      -    "index": {
      -      "type": "integer"
      -    },
      -    "network": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "note": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "offer_id": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "reason": {
      -      "enum": [
      -        null,
      -        "partner_link_unchanged",
      -        "deep_link_not_allowed",
      -        "no_tracked_link",
      -        "no_offers",
      -        "off_site",
      -        "unknown_store_domain",
      -        "invalid_target"
      -      ],
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "status": {
      -      "enum": [
      -        "built",
      -        "not_available"
      -      ],
      -      "type": "string"
      -    },
      -    "url": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    }
      -  },
      -  "type": "object"
      -}
    • 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 / merchant
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / not_guaranteed
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / note
      Removed value: -{
      -  "description": "A short explanation, e.g. why store_match is none.",
      -  "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: -"find_coupons: exact (the store's name or domain) or alias (a known other name)."
    • removedOutput schema / properties / offers / items / properties / match / enum
      Removed value: -[
      -  "exact",
      -  "alias"
      -]
    • 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 / reason
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / report_hint / description
      Removed value: -"find_coupons, when an offer has a code or deal: when to report (only with the shopper's agreement, as report_coupon_result says)."
    • 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"
      -}
  2. Changed2 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."
  3. 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"
      +}
  4. Changed1 schema field changed
    • changedOutput schema / properties / report_hint / description
      Previous value: -"find_coupons, when an offer has a code or deal: the one-time Community mode question and when to report (only with the shopper's agreement)."New value: +"find_coupons, when an offer has a code or deal: when to report (only with the shopper's agreement, as report_coupon_result says)."
  5. Changed30 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)."
    • changedInput schema / properties / target_url / description
      Previous value: -"Optional: the address of a product page on the matched store's own website that the shopper picked (http or https; never a cart, checkout, account or order page), used only to return a shopping link to that page in deep_link. Any query string or fragment is removed before use, and the address isn't logged, stored, cached or counted by us; for some stores it's passed to the store's affiliate network only to build the link. Leave it out for a plain store lookup."New value: +"Optional: a product page on the matched store's own website that the shopper picked (http or https; never a cart, checkout, account or order page), used only to return a shopping link to that page in deep_link. Any query string or fragment is removed before use; the address isn't logged, stored, cached or counted by us, and for some stores it's passed to the store's affiliate network only to build the link. Leave it out for a plain store lookup."
    • changedInput schema / properties / target_urls / description
      Previous value: -"Optional, instead of target_url: up to 5 such page addresses (for example every pick in a roundup), with the same rules, in one call. deep_links then holds one link per address, in order."New value: +"Optional, instead of target_url: up to 5 such addresses (e.g. every pick in a roundup), same rules; deep_links then holds one link per address, in order."
    • changedOutput schema / properties / deep_link / description
      Previous value: -"find_coupons with target_url only (absent otherwise): a shopping link straight to that page at the store. status \"built\": url is that page's shopping link, used instead of entry_url when the shopper chooses it. status \"not_available\": no deep link for this store or page (reason says why); use entry_url as usual. Built Feedico links may still open the programme's usual landing page (note says so when that applies)."New value: +"find_coupons with target_url only: status \"built\": url is that page's shopping link, used instead of entry_url when the shopper chooses it; \"not_available\": use entry_url (reason says why). A built Feedico link may still open the programme's usual landing page (note says so)."
    • changedOutput schema / properties / deep_link / properties / note / description
      Previous value: -"When status is built for a Feedico goUrl: the store's programme may still open its usual landing page. Absent or null otherwise."New value: +"Built Feedico goUrl only: the programme may still open its usual landing page."
    • changedOutput schema / properties / deep_links / description
      Previous value: -"find_coupons with target_urls only (absent otherwise): one deep link per address, in the same order. Each item is like deep_link, plus index (its position in target_urls, from 0); reason invalid_target means that address can't be used."New value: +"find_coupons with target_urls only: one item per address, in order, like deep_link plus index; reason invalid_target means that address can't be used."
    • 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 / note / description
      Previous value: -"A short explanation, e.g. find_coupons with store_match none."New value: +"A short explanation, e.g. why store_match is none."
    • 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: -"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 / 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 / report_hint / description
      Previous value: -"find_coupons only, when an offer has a code or a no-code deal: the one-time Community mode question, and when and how to report a result (only with the shopper's agreement)."New value: +"find_coupons, when an offer has a code or deal: the one-time Community mode question and when to report (only with the shopper's agreement)."
    • 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)."
  6. Changed1 schema field changed
    • changedOutput schema / properties / report_hint / description
      Previous value: -"find_coupons only, when an offer has a code or a no-code deal: when and how to report the result (only with the shopper's agreement)."New value: +"find_coupons only, when an offer has a code or a no-code deal: the one-time Community mode question, and when and how to report a result (only with the shopper's agreement)."
  7. Changed1 schema field 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."
  8. Changed8 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."
    • 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"
      -}
  9. Changed4 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 / deep_link / description
      Previous value: -"find_coupons with target_url only (absent otherwise): a shopping link straight to that page at the store. status \"built\": open url in place of entry_url. status \"not_available\": no deep link for this store or page (reason says why); use entry_url as usual. Built Feedico links may still open the programme's usual landing page (note says so when that applies)."New value: +"find_coupons with target_url only (absent otherwise): a shopping link straight to that page at the store. status \"built\": url is that page's shopping link, used instead of entry_url when the shopper chooses it. status \"not_available\": no deep link for this store or page (reason says why); use entry_url as usual. Built Feedico links may still open the programme's usual landing page (note says so when that applies)."
    • changedOutput schema / properties / report_hint / description
      Previous value: -"find_coupons only, when an offer has a code or a no-code deal: when and how to report the result (Community mode only)."New value: +"find_coupons only, when an offer has a code or a no-code deal: when and how to report the result (only with the shopper's agreement)."
    • 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."
  10. 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."
  11. 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."
  12. 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."
  13. Changed3 schema fields 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."
    • addedInput schema / properties / target_urls
      Added value: +{
      +  "description": "Optional, instead of target_url: up to 5 such page addresses (for example every pick in a roundup), with the same rules, in one call. deep_links then holds one link per address, in order.",
      +  "items": {
      +    "maxLength": 2048,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 5,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedOutput schema / properties / deep_links
      Added value: +{
      +  "description": "find_coupons with target_urls only (absent otherwise): one deep link per address, in the same order. Each item is like deep_link, plus index (its position in target_urls, from 0); reason invalid_target means that address can't be used.",
      +  "items": {
      +    "properties": {
      +      "index": {
      +        "type": "integer"
      +      },
      +      "network": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "note": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "offer_id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "reason": {
      +        "enum": [
      +          null,
      +          "partner_link_unchanged",
      +          "deep_link_not_allowed",
      +          "no_tracked_link",
      +          "no_offers",
      +          "off_site",
      +          "unknown_store_domain",
      +          "invalid_target"
      +        ],
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "enum": [
      +          "built",
      +          "not_available"
      +        ],
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  14. 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 / deep_link / description
      Previous value: -"find_coupons with target_url only (absent otherwise): a shopping link straight to that page at the store. status \"built\": open url in place of outbound_url. status \"not_available\": no deep link for this store or page (reason says why); use outbound_url as usual. Built Feedico links may still open the programme's usual landing page (note says so when that applies)."New value: +"find_coupons with target_url only (absent otherwise): a shopping link straight to that page at the store. status \"built\": open url in place of entry_url. status \"not_available\": no deep link for this store or page (reason says why); use entry_url as usual. Built Feedico links may still open the programme's usual landing page (note says so when that applies)."
    • 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"
      +  ]
      +}
  15. Changed9 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 / report_hint / description
      Previous value: -"find_coupons only, when an offer has a code: when and how to report the code's result (Community mode only)."New value: +"find_coupons only, when an offer has a code or a no-code deal: when and how to report the result (Community mode only)."
    • 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"
      +}
  16. 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"
      +}
  17. Changed2 schema fields changed
    • changedInput schema / properties / target_url / description
      Previous value: -"Optional: the address of a product page on the matched store's own website that the shopper picked (http or https; never a cart, checkout, account or order page), used only to return a shopping link to that page in deep_link. Any query string or fragment is removed before use, and the address isn't logged, stored, cached or counted. Leave it out for a plain store lookup."New value: +"Optional: the address of a product page on the matched store's own website that the shopper picked (http or https; never a cart, checkout, account or order page), used only to return a shopping link to that page in deep_link. Any query string or fragment is removed before use, and the address isn't logged, stored, cached or counted by us; for some stores it's passed to the store's affiliate network only to build the link. Leave it out for a plain store lookup."
    • 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"
      +  ]
      +}
  18. Changed3 schema fields changed
    • changedOutput schema / properties / deep_link / description
      Previous value: -"find_coupons with target_url only (absent otherwise): a shopping link straight to that page at the store. status \"built\": open url in place of outbound_url. status \"not_available\": no deep link for this store or page (reason says why); use outbound_url as usual. Store links from the coupon data partner are never changed, so its stores return not_available."New value: +"find_coupons with target_url only (absent otherwise): a shopping link straight to that page at the store. status \"built\": open url in place of outbound_url. status \"not_available\": no deep link for this store or page (reason says why); use outbound_url as usual. Built Feedico links may still open the programme's usual landing page (note says so when that applies)."
    • addedOutput schema / properties / deep_link / properties / note
      Added value: +{
      +  "description": "When status is built for a Feedico goUrl: the store's programme may still open its usual landing page. Absent or null otherwise.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / deep_link / properties / reason / enum
      Previous value: -[
      -  null,
      -  "partner_link_unchanged",
      -  "deep_link_not_allowed",
      -  "no_tracked_link",
      -  "no_offers"
      -]New value: +[
      +  null,
      +  "partner_link_unchanged",
      +  "deep_link_not_allowed",
      +  "no_tracked_link",
      +  "no_offers",
      +  "off_site",
      +  "unknown_store_domain"
      +]
  19. Changed1 schema field changed
    • changedInput schema / properties / target_url / description
      Previous value: -"Optional: the address of a product page on the matched store's own website that the shopper picked (http or https; never a cart, checkout, account or order page), used only to return a shopping link to that page in deep_link. Any query string or fragment is removed before use, and the address is never logged or stored. Leave it out for a plain store lookup."New value: +"Optional: the address of a product page on the matched store's own website that the shopper picked (http or https; never a cart, checkout, account or order page), used only to return a shopping link to that page in deep_link. Any query string or fragment is removed before use, and the address isn't logged, stored, cached or counted. Leave it out for a plain store lookup."
  20. Changed1 schema field changed
    • addedOutput schema / properties / report_hint
      Added value: +{
      +  "description": "find_coupons only, when an offer has a code: when and how to report the code's result (Community mode only).",
      +  "type": "string"
      +}
  21. Changed5 schema fields changed
    • addedInput schema / properties / target_url
      Added value: +{
      +  "description": "Optional: the address of a product page on the matched store's own website that the shopper picked (http or https; never a cart, checkout, account or order page), used only to return a shopping link to that page in deep_link. Any query string or fragment is removed before use, and the address is never logged or stored. Leave it out for a plain store lookup.",
      +  "maxLength": 2048,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedOutput schema / properties / deep_link
      Added value: +{
      +  "description": "find_coupons with target_url only (absent otherwise): a shopping link straight to that page at the store. status \"built\": open url in place of outbound_url. status \"not_available\": no deep link for this store or page (reason says why); use outbound_url as usual. Store links from the coupon data partner are never changed, so its stores return not_available.",
      +  "properties": {
      +    "network": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "offer_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "reason": {
      +      "enum": [
      +        null,
      +        "partner_link_unchanged",
      +        "deep_link_not_allowed",
      +        "no_tracked_link",
      +        "no_offers"
      +      ],
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "enum": [
      +        "built",
      +        "not_available"
      +      ],
      +      "type": "string"
      +    },
      +    "url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • 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"
      +]
  22. Changed2 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"
      +}
  23. Changed6 schema fields changed
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "A short explanation, e.g. find_coupons with store_match none.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / offers / 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 / 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"
      +}
  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. Changed1 schema field changed
    • addedOutput schema / properties / how_to_use
      Added value: +{
      +  "type": "string"
      +}
  28. Changed3 schema fields changed
    • addedOutput schema / properties / offers / items / properties / applies_to
      Added value: +{
      +  "description": "The product a scope \"product\" code is for; null otherwise.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / offers / items / properties / scope
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / offers / items / properties / scope_note
      Added value: +{
      +  "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"
      +  ]
      +}
  29. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the bar is lower. Beyond that, the description and its accompanying parameter notes disclose real behavior: coupon wording is not required, results carry the rules that apply to them, and target URLs are stripped of query strings, not logged or cached, and passed to an affiliate network only to build the link.

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

Conciseness3/5

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

It is short and front-loads the store scope ahead of the sibling routing, which is good. However, the writing is fragmentary ('One store the shopper names: its coupon codes...') and the mid-sentence pivot to checkout intent makes the routing guidance harder to parse than it needs to be.

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, return values need not be spelled out, and the description still signals that results carry applicable rules. Store-vs-product routing and the optional deep-link behavior are covered, leaving only minor gaps such as what happens when no coupons exist for the merchant.

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself is unusually detailed, so the baseline is 3. The description only echoes the schema's points about target_url being a picked product page for a deep link and about results carrying rules; it adds no syntax, ordering, or fallback details beyond what the schema already states.

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

Purpose4/5

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

The description names the resource (coupon codes, promo codes, sales, deals for one named store) and explicitly separates it from the product-level sibling: 'For a named product, use find_product_coupons.' The telegraphic phrasing ('One store the shopper names: its coupon codes...') lacks a clean verb, but an agent can still tell exactly what the tool returns.

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

Usage Guidelines4/5

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

It gives positive triggers (shopper names a store; asks to buy or check out there) and names the alternative find_product_coupons with the condition that selects it (a named product). It does not address other siblings such as discover_deals, so when-not guidance is only partial.

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