Skip to main content
Glama

McClipFace

Report whether a coupon code worked

report_coupon_result

Call this the turn the shopper says a code worked or failed. Records whether a coupon code or no-code deal tried at checkout worked (merchant and code for codes, including a code found outside McClipFace, with merchant as the store's domain; offer_id for no-code deals). Not a lookup. Stores no personal or cart data. Optional and off by default (Private mode, which lasts until the shopper changes it). Report only a confirmed result (the shopper says a code worked or was rejected, or a no-code deal did or didn't apply, or you saw it at checkout), never because a code was found, shown or copied. A result you saw counts only if you tried the code with checkout tools the shopper authorized, never an untested or unfinished one. One call per distinct code tested; a success counts even if another code saved more. Consent: report only in Community mode. After the first answer is shown (never before or instead of a search, or mid-try), ask once: "Want to turn on Community mode? It crowdsources deals for other shoppers like you. If you say Yes, we share the store, the code or deal, and whether it worked, never which option you pick, your cart or anything about you. (Yes / No)" Remember the answer if the shopper agrees to remembering it, and don't ask again unless the shopper brings it up ("turn on Community mode", "stop sharing"). Yes turns Community mode on for that conversation: report that result and later confirmed results, the shopper's and yours, until the shopper turns it off. No, or no answer, means report nothing and don't ask again in that conversation. It carries to later conversations only if the shopper agreed to remembering it and you noted the version and choice; do not ask again unless the shopper brings it up. A Community mode yes given to older wording that didn't say the store and code are shared doesn't count: stay in Private mode until the shopper says yes to the current question. No answer is no consent; never infer it from install, lookups or coupon tests. McClipFace can't verify consent, only your statement of it. Keep shopping either way; follow the host's tool approvals. Report once per offer and outcome; for a no-code deal, pass offer_id with outcome worked, didnt_work or not_found. Send only the store, the code or offer_id, the outcome, and optionally reason; never amounts, cart, totals or user data. Commission disclosure for the links the lookup tools return: Offers with tracked=true use affiliate links: a purchase through one may earn a commission at no extra cost. Say so once per chat, before you first share or open one: "This is an affiliate link and may earn a commission at no extra cost to you." Codes are ranked on the code itself. Results come only from affiliate programs McClipFace has joined, its licensed coupon data partner, stores that share their codes with McClipFace directly and codes shoppers reported working at checkout. Commission never affects which offers are returned or how they are ranked. It never puts a pricier option first.

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": {
      "outcome": "<outcome>"
    },
    "name": "report_coupon_result"
  }
}

Input Schema

NameRequiredDescriptionDefault
codeNoThe code tried. Required for a code report; for a no-code deal omit it and pass offer_id.
reasonNoOptional short note (at most 200 characters), e.g. why a deal didn't apply. Never cart, price, total or personal data.
outcomeYesCodes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (the offer link ended on an error page or never reached the store; never counts against the code). No-code deals: worked, didnt_work (didn't apply at checkout) or not_found (not on the store page or account). A code find_coupons didn't list: merchant and code with worked or rejected and no offer_id (kept for review; once reported working it is offered to other shoppers, for a store we don't list with merchant as its domain). store_not_covered: merchant only, when find_coupons found no match. Every outcome is sent only in Community mode; Private mode, or no mode chosen yet, sends nothing.
merchantNoStore name as used with find_coupons, e.g. "Tommy John". Required with code; optional with offer_id.
offer_idNoOffer id from find_coupons. Required for no-code deal reports; for codes, used instead of merchant and code when set.
eligibilityNoeligible: the store said the code itself is invalid or expired; ineligible: the cart, product or account didn't qualify, or it can't stack with another promotion (say so in reason); unknown: can't tell. Only an eligible rejection counts against a code. Don't report inconclusive tests or a code accepted that saved nothing extra.unknown

Output Schema

NameRequiredDescriptionDefault
statusYes
offer_idNo
disclosureYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • 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 / queue
      Removed value: -{
      -  "description": "review: a code or store we don't list, kept for review; a code with worked reports is offered to other shoppers as a shopper-found code.",
      -  "enum": [
      -    "review"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / reason
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / status / enum
      Removed value: -[
      -  "stored",
      -  "duplicate",
      -  "limited",
      -  "test",
      -  "invalid_arguments",
      -  "unavailable"
      -]
  2. Changed1 schema field changed
    • changedInput schema / properties / outcome / description
      Previous value: -"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (the offer link ended on an error page or never reached the store; never counts against the code). No-code deals: worked, didnt_work (didn't apply at checkout) or not_found (not on the store page or account). A code find_coupons didn't list: merchant and code with worked or rejected and no offer_id (kept for review; once reported working it is offered to other shoppers, for a store we don't list with merchant as its domain). store_not_covered: merchant only, when find_coupons found no match. Every outcome is sent only in Community mode or with a just-this-once yes for that checkout; Private mode, or no mode chosen yet, sends nothing without that yes."New value: +"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (the offer link ended on an error page or never reached the store; never counts against the code). No-code deals: worked, didnt_work (didn't apply at checkout) or not_found (not on the store page or account). A code find_coupons didn't list: merchant and code with worked or rejected and no offer_id (kept for review; once reported working it is offered to other shoppers, for a store we don't list with merchant as its domain). store_not_covered: merchant only, when find_coupons found no match. Every outcome is sent only in Community mode; Private mode, or no mode chosen yet, sends nothing."
  3. Changed2 schema fields changed
    • changedInput schema / properties / outcome / description
      Previous value: -"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (the offer link ended on an error page or never reached the store; never counts against the code). No-code deals: worked, didnt_work (didn't apply at checkout) or not_found (not on the store page or account). A code find_coupons didn't list: merchant and code with worked or rejected and no offer_id (kept for review, never published). store_not_covered: merchant only, when find_coupons found no match. Every outcome is sent only in Community mode or with a just-this-once yes for that checkout; Private mode, or no mode chosen yet, sends nothing without that yes."New value: +"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (the offer link ended on an error page or never reached the store; never counts against the code). No-code deals: worked, didnt_work (didn't apply at checkout) or not_found (not on the store page or account). A code find_coupons didn't list: merchant and code with worked or rejected and no offer_id (kept for review; once reported working it is offered to other shoppers, for a store we don't list with merchant as its domain). store_not_covered: merchant only, when find_coupons found no match. Every outcome is sent only in Community mode or with a just-this-once yes for that checkout; Private mode, or no mode chosen yet, sends nothing without that yes."
    • changedOutput schema / properties / queue / description
      Previous value: -"review: a code or store we don't list, kept for review and never published."New value: +"review: a code or store we don't list, kept for review; a code with worked reports is offered to other shoppers as a shopper-found code."
  4. Changed1 schema field changed
    • changedInput schema / properties / outcome / description
      Previous value: -"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (the offer link ended on an error page or never reached the store; never counts against the code). No-code deals: worked, didnt_work (didn't apply at checkout) or not_found (not on the store page or account). A code find_coupons didn't list: merchant and code with worked or rejected and no offer_id (kept for review, never published). store_not_covered: merchant only, when find_coupons found no match. Every outcome is sent only in Community mode or when the shopper says yes to reporting that single result; Private mode, or no mode chosen yet, sends nothing without that yes."New value: +"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (the offer link ended on an error page or never reached the store; never counts against the code). No-code deals: worked, didnt_work (didn't apply at checkout) or not_found (not on the store page or account). A code find_coupons didn't list: merchant and code with worked or rejected and no offer_id (kept for review, never published). store_not_covered: merchant only, when find_coupons found no match. Every outcome is sent only in Community mode or with a just-this-once yes for that checkout; Private mode, or no mode chosen yet, sends nothing without that yes."
  5. Changed1 schema field changed
    • changedInput schema / properties / eligibility / description
      Previous value: -"eligible: the offer's known terms were met; ineligible: they weren't (an ineligible rejection doesn't count against the offer)."New value: +"eligible: the store said the code itself is invalid or expired; ineligible: the cart, product or account didn't qualify, or it can't stack with another promotion (say so in reason); unknown: can't tell. Only an eligible rejection counts against a code. Don't report inconclusive tests or a code accepted that saved nothing extra."
  6. Changed6 schema fields changed
    • changedInput schema / properties / code / description
      Previous value: -"The code that was tried. Required for a coupon report; omit for a no-code deal and pass offer_id instead."New value: +"The code tried. Required for a code report; for a no-code deal omit it and pass offer_id."
    • changedInput schema / properties / eligibility / description
      Previous value: -"eligible only when the code's or deal's known terms were met; ineligible when they were not (an ineligible rejection does not count against the offer)."New value: +"eligible: the offer's known terms were met; ineligible: they weren't (an ineligible rejection doesn't count against the offer)."
    • changedInput schema / properties / merchant / description
      Previous value: -"Store name as used with find_coupons, e.g. \"Tommy John\". Required with code for a coupon report; optional when offer_id is set for a no-code deal."New value: +"Store name as used with find_coupons, e.g. \"Tommy John\". Required with code; optional with offer_id."
    • changedInput schema / properties / offer_id / description
      Previous value: -"Offer id from find_coupons. Required for no-code deal reports (didnt_work / not_found); optional for codes (used instead of merchant and code when set)."New value: +"Offer id from find_coupons. Required for no-code deal reports; for codes, used instead of merchant and code when set."
    • changedInput schema / properties / outcome / description
      Previous value: -"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (dead offer link). No-code deals: worked, didnt_work (deal did not apply at checkout) or not_found (deal was not present on the store account or page). A code find_coupons didn't list (the store had no match, or the code wasn't in the results): merchant and code with worked or rejected and no offer_id; it goes to a review queue and is never published. store_not_covered: merchant only, when the lookup found no match for the store. Every outcome is sent only in Community mode or when the shopper says yes to reporting that single result; Private mode, or no mode chosen yet, sends nothing without that yes."New value: +"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (the offer link ended on an error page or never reached the store; never counts against the code). No-code deals: worked, didnt_work (didn't apply at checkout) or not_found (not on the store page or account). A code find_coupons didn't list: merchant and code with worked or rejected and no offer_id (kept for review, never published). store_not_covered: merchant only, when find_coupons found no match. Every outcome is sent only in Community mode or when the shopper says yes to reporting that single result; Private mode, or no mode chosen yet, sends nothing without that yes."
    • changedInput schema / properties / reason / description
      Previous value: -"Optional short plain note (at most 200 characters), e.g. why a deal did not apply. Never cart, price, total or personal data."New value: +"Optional short note (at most 200 characters), e.g. why a deal didn't apply. Never cart, price, total or personal data."
  7. Changed1 schema field changed
    • changedInput schema / properties / outcome / description
      Previous value: -"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (dead offer link). No-code deals: worked, didnt_work (deal did not apply at checkout) or not_found (deal was not present on the store account or page). A code find_coupons didn't list (the store had no match, or the code wasn't in the results): merchant and code with worked or rejected and no offer_id; it goes to a review queue and is never published. store_not_covered: merchant only, when the lookup found no match for the store. Every outcome is Community mode only; Private mode, or no mode chosen yet, sends no reports."New value: +"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (dead offer link). No-code deals: worked, didnt_work (deal did not apply at checkout) or not_found (deal was not present on the store account or page). A code find_coupons didn't list (the store had no match, or the code wasn't in the results): merchant and code with worked or rejected and no offer_id; it goes to a review queue and is never published. store_not_covered: merchant only, when the lookup found no match for the store. Every outcome is sent only in Community mode or when the shopper says yes to reporting that single result; Private mode, or no mode chosen yet, sends nothing without that yes."
  8. Changed1 schema field changed
    • changedInput schema / properties / outcome / description
      Previous value: -"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (dead offer link). No-code deals: worked, didnt_work (deal did not apply at checkout) or not_found (deal was not present on the store account or page). A code find_coupons didn't list (the store had no match, or the code wasn't in the results): merchant and code with worked or rejected and no offer_id; it goes to a review queue and is never published. store_not_covered: merchant only, when the lookup found no match for the store."New value: +"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (dead offer link). No-code deals: worked, didnt_work (deal did not apply at checkout) or not_found (deal was not present on the store account or page). A code find_coupons didn't list (the store had no match, or the code wasn't in the results): merchant and code with worked or rejected and no offer_id; it goes to a review queue and is never published. store_not_covered: merchant only, when the lookup found no match for the store. Every outcome is Community mode only; Private mode, or no mode chosen yet, sends no reports."
  9. Changed9 schema fields changed
    • changedInput schema / properties / code / description
      Previous value: -"The code that was tried."New value: +"The code that was tried. Required for a coupon report; omit for a no-code deal and pass offer_id instead."
    • changedInput schema / properties / eligibility / description
      Previous value: -"eligible only when the code's known terms were met; ineligible when they were not (an ineligible rejection does not count against the code)."New value: +"eligible only when the code's or deal's known terms were met; ineligible when they were not (an ineligible rejection does not count against the offer)."
    • changedInput schema / properties / merchant / description
      Previous value: -"Store name as used with find_coupons, e.g. \"Tommy John\"."New value: +"Store name as used with find_coupons, e.g. \"Tommy John\". Required with code for a coupon report; optional when offer_id is set for a no-code deal."
    • changedInput schema / properties / offer_id / description
      Previous value: -"Optional: the offer id from find_coupons; used instead of merchant and code."New value: +"Offer id from find_coupons. Required for no-code deal reports (didnt_work / not_found); optional for codes (used instead of merchant and code when set)."
    • changedInput schema / properties / outcome / description
      Previous value: -"worked: checkout accepted it and the total went down. rejected (or failed): the store refused it. link_broken: the offer's link ended on an error page or never reached the store."New value: +"Codes: worked (checkout accepted it and the total went down), rejected or failed (the store refused it), link_broken (dead offer link). No-code deals: worked, didnt_work (deal did not apply at checkout) or not_found (deal was not present on the store account or page). A code find_coupons didn't list (the store had no match, or the code wasn't in the results): merchant and code with worked or rejected and no offer_id; it goes to a review queue and is never published. store_not_covered: merchant only, when the lookup found no match for the store."
    • changedInput schema / properties / outcome / enum
      Previous value: -[
      -  "worked",
      -  "rejected",
      -  "failed",
      -  "link_broken"
      -]New value: +[
      +  "worked",
      +  "rejected",
      +  "failed",
      +  "link_broken",
      +  "didnt_work",
      +  "not_found",
      +  "store_not_covered"
      +]
    • addedInput schema / properties / reason
      Added value: +{
      +  "description": "Optional short plain note (at most 200 characters), e.g. why a deal did not apply. Never cart, price, total or personal data.",
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "merchant",
      -  "code",
      -  "outcome"
      -]New value: +[
      +  "outcome"
      +]
    • addedOutput schema / properties / queue
      Added value: +{
      +  "description": "review: a code or store we don't list, kept for review and never published.",
      +  "enum": [
      +    "review"
      +  ],
      +  "type": "string"
      +}
  10. Changed5 schema fields changed
    • removedInput schema / properties / saved_amount
      Removed value: -{
      -  "description": "Optional, worked only: amount saved. Only whether it is above 0 is stored, never the amount.",
      -  "minimum": 0,
      -  "type": "number"
      -}
    • addedOutput schema / properties / disclosure
      Added value: +{
      +  "description": "Commission disclosure, in every result. Offers with tracked=true (link_type \"affiliate\" in the text) are the affiliate links it refers to.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / reason
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / status / enum
      Previous value: -[
      -  "stored",
      -  "duplicate",
      -  "limited",
      -  "test"
      -]New value: +[
      +  "stored",
      +  "duplicate",
      +  "limited",
      +  "test",
      +  "invalid_arguments",
      +  "unavailable"
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "status"
      -]New value: +[
      +  "status",
      +  "disclosure"
      +]
  11. Changed2 schema fields changed
    • changedInput schema / properties / outcome / description
      Previous value: -"worked: checkout accepted it and the total went down. rejected (or failed): the store refused it."New value: +"worked: checkout accepted it and the total went down. rejected (or failed): the store refused it. link_broken: the offer's link ended on an error page or never reached the store."
    • changedInput schema / properties / outcome / enum
      Previous value: -[
      -  "worked",
      -  "rejected",
      -  "failed"
      -]New value: +[
      +  "worked",
      +  "rejected",
      +  "failed",
      +  "link_broken"
      +]
  12. Changed3 schema fields changed
    • changedInput schema / properties / outcome / description
      Previous value: -"worked: checkout accepted it. rejected: the store refused it."New value: +"worked: checkout accepted it and the total went down. rejected (or failed): the store refused it."
    • changedInput schema / properties / outcome / enum
      Previous value: -[
      -  "worked",
      -  "rejected"
      -]New value: +[
      +  "worked",
      +  "rejected",
      +  "failed"
      +]
    • changedOutput schema / properties / status / enum
      Previous value: -[
      -  "stored",
      -  "duplicate",
      -  "limited"
      -]New value: +[
      +  "stored",
      +  "duplicate",
      +  "limited",
      +  "test"
      +]
  13. Added

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, it discloses that the tool is optional and off by default in Private mode, requires Community-mode consent, stores no personal or cart data, and must be called once per distinct tested code. It also explains that McClipFace cannot verify consent and that the agent's statement of consent is what matters, which is substantial behavioral context for a non-readOnly tool.

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

Conciseness2/5

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

The core purpose is front-loaded, but the description is extremely long and mixes in unrelated material such as affiliate-link disclosure scripts and ranking explanations for lookup tools. For a reporting tool, many sentences do not earn their place and make the definition harder to scan.

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?

Given the tool's complexity around consent, privacy, outcome classification, and write behavior, the description covers what an agent needs: when to call, what not to report, how consent works, what data is stored, and how to handle code versus no-code reports. The output schema exists, so return-value detail is not required here.

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?

With 100% schema description coverage, the schema already documents each parameter. The description still adds useful semantic guidance: merchant is the store's domain for codes, offer_id is for no-code deals, codes found outside McClipFace can be reported with merchant plus code, and only store, code or offer_id, outcome, and optional reason should be sent.

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?

The description opens with a specific verb and resource: 'Records whether a coupon code or no-code deal tried at checkout worked.' It explicitly distinguishes itself from lookup behavior with 'Not a lookup,' so an agent can immediately tell it apart from find_coupons and the other siblings.

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?

It gives explicit timing and conditions: call this only when the shopper says a code worked or failed, report only a confirmed result, and never report because a code was merely found, shown, or copied. It also states the Community-mode consent requirement and contrasts the tool with lookups.

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