Skip to main content
Glama

McClipFace

Discover deals for the shopper's interests

discover_deals
Read-onlyIdempotent

Deal browsing with no specific product or store named (categories, interests, gift ideas, "what's on sale", "a good deal on a TV", "running shoes under $150"). A named product or brand, even "a deal on AirPods": use find_product_coupons; a named store: find_coupons. Browsing or categories: interests (non-sensitive) with quick: true; several categories in parallel, one quick call each. A named store: store alone. Never mix the two. Present as a short curated edit with each pick's match_reason.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "discover_deals"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of deals, 1-20 (default 10); one store's deals, 1-100 (default 25).
quickNoTrue for a fast answer in seconds: the most promising deals only. Use it when browsing or for one category of several.
storeNoOptional: a named store's current deals (send it alone, no search terms).
generalNoTrue for the general selection (no search terms).
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
keywordsNoProducts, brands or interests, e.g. ["Sony camera"]. Leave out categories and keywords for general deals.
interestsNoSame as keywords.
categoriesNoShopping categories, e.g. ["skincare", "smart home"].
exclude_categoriesNoCategories to leave out.

Output Schema

NameRequiredDescriptionDefault
offersYes
statusYes
deep_linkNo
deep_linksNo
disclosureYes
report_hintNo
store_matchNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / quick
      Added value: +{
      +  "default": false,
      +  "description": "True for a fast answer in seconds: the most promising deals only. Use it when browsing or for one category of several.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / store
      Added value: +{
      +  "description": "Optional: a named store's current deals (send it alone, no search terms).",
      +  "maxLength": 500,
      +  "minLength": 1,
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / general
      Added value: +{
      +  "description": "True for the general selection (no search terms).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / interests
      Added value: +{
      +  "description": "Same as keywords.",
      +  "items": {
      +    "maxLength": 60,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 10,
      +  "type": "array"
      +}
  3. 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."
  4. 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"
      +}
  5. Changed37 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Number of deals, 1-20 (default 10)."New value: +"Number of deals, 1-20 (default 10); one store's deals, 1-100 (default 25)."
    • changedInput schema / properties / limit / maximum
      Previous value: -20New value: +100
    • 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 / excluded_categories
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • 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: -{
      -  "description": "A short explanation, e.g. why store_match is none.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / offers / items / description
      Removed value: -"The get_deals offer fields, plus:"
    • 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"
      -}
    • addedOutput schema / properties / offers / items / properties / code
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / offers / items / properties / description
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / offers / items / properties / ends_at
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / offers / items / properties / entry_url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / offers / items / properties / id
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / offers / items / properties / match
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / offers / items / properties / match_reason
      Removed value: -{
      -  "description": "Why it matched, from the match that was made.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / offers / items / properties / matched_categories
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / offers / items / properties / merchant_display
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / offers / items / properties / min_spend
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / offers / items / properties / offer_type
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / offers / items / properties / relevance_score
      Removed value: -{
      -  "description": "0 to 1: how well the offer fits the request.",
      -  "type": "number"
      -}
    • addedOutput schema / properties / offers / items / properties / scope
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / offers / items / properties / store_domain
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • 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"
      -}
    • addedOutput schema / properties / offers / items / properties / tracked
      Added value: +{
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / offers / items / properties / verification_status
      Removed value: -{
      -  "description": "verified: same as the verified field. Not a guarantee.",
      -  "enum": [
      -    "verified",
      -    "unverified"
      -  ],
      -  "type": "string"
      -}
    • addedOutput schema / properties / offers / items / properties / verified
      Added value: +{
      +  "type": "boolean"
      +}
    • 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"
      -}
    • addedOutput schema / properties / report_hint
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / searched_categories
      Removed value: -{
      -  "description": "The categories the terms were understood as.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / status / enum
      Removed value: -[
      -  "available",
      -  "unavailable",
      -  "invalid_arguments"
      -]
    • addedOutput schema / properties / store_match
      Added value: +{
      +  "type": "string"
      +}
  6. Changed2 schema fields changed
    • addedOutput schema / properties / offers / items / properties / suggested_display / properties / code_line
      Added value: +{
      +  "description": "Show second, as a fallback: the raw code for a shopper already in the store's app. Only with a code.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / offers / items / properties / suggested_display / properties / headline
      Added value: +{
      +  "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"
      +}
  7. 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"
      +    },
      +    "cta_label": {
      +      "type": "string"
      +    },
      +    "expiry_display": {
      +      "type": "string"
      +    },
      +    "subtitle": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  8. Changed1 schema field changed
    • changedInput schema / properties / keywords / description
      Previous value: -"Products, brands or interests, e.g. [\"Sony camera\"]. At least one category or keyword is required."New value: +"Products, brands or interests, e.g. [\"Sony camera\"]. Leave out categories and keywords for general deals."
  9. Added

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered; the description adds what annotations cannot, namely the latency tradeoff of quick mode ("a fast answer in seconds") and the expected output shaping ("a short curated edit with each pick's match_reason"). It does not mention rate limits, result caps per mode, or what happens on an empty result set.

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?

Front-loaded with the disambiguating scope, and nearly every clause carries routing information. However, the store guidance is stated twice in slightly different senses ("a named store: find_coupons" for routing versus "A named store: store alone" for the parameter), which reads as a contradiction on first pass and costs clarity.

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

Completeness5/5

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

For a 10-parameter, zero-required discovery tool this covers what matters most: mode selection, parameter combinations, and output presentation. An output schema exists so return values need no explanation, and the undocumented leftovers (general, currency, exclude_categories) are self-describing in a 100%-covered schema.

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 baseline is 3, but the description adds cross-parameter routing logic the schema cannot express: interests paired with quick:true, store used alone, and the prohibition on mixing store with search terms. It also encodes the category-vs-keyword distinction through examples ("honey for the pantry: grocery; honey face wash: beauty") that reinforce the schema's taxonomy note.

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?

Opens with a specific verb+resource plus the defining scope condition: browsing with no specific product or store named, illustrated with concrete examples (categories, gift ideas, "what's on sale", "running shoes under $150"). It explicitly names the sibling tools it is not (find_product_coupons for named products/brands, find_coupons for named stores), so an agent can route without opening another 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 explicit when-to-use and when-not-to-use rules, including the edge case that "a deal on AirPods" belongs to find_product_coupons. It also prescribes invocation patterns: interests with quick:true for browsing, one quick call per category when running several in parallel, store sent alone, and the hard constraint "Never mix the two."

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