Skip to main content
Glama

McClipFace

Report whether a coupon code worked

report_coupon_result

Record 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. At the first confirmed success in a conversation, once the purchase is done or declined (never mid-try, mid-purchase, next to the cart offer, or before or instead of a search), ask once: "Success! worked: off. Want to turn on Community mode so other shoppers get this code too? Only the store, the code and the result are shared, never your cart or anything about you. (Yes / No)" Fill in the real code; leave out ": off" if the saving isn't known; start with "I tried N codes and" only if you tested them yourself, never for a code the shopper reports. If a try ends with no code working, ask once instead: "None of these worked. Want to turn on Community mode so other shoppers can skip codes that don't work? Only the store, the codes and the results are shared, never your cart or anything about you. (Yes / No)" 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; then ask again only for a newer version. 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 McClipFace a commission at no added cost. Say so once per chat, before you first share or open one: "Links from McClipFace may earn it a commission at no added 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.

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
queueNoreview: 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.
reasonNo
statusYes
offer_idNo
disclosureYesCommission disclosure, in every result. Offers with tracked=true (link_type "affiliate" in the text) are the affiliate links it refers to.

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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."
  2. 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."
  3. 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."
  4. 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."
  5. 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."
  6. 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."
  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."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."
  8. 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"
      +}
  9. 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"
      +]
  10. 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"
      +]
  11. 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"
      +]
  12. Added

TDQS

A4.2/5.0
Behavior4/5

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

Annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false) signal a non-idempotent write, and the description adds substantial context beyond them: consent gating, Private mode default, 'Stores no personal or cart data,' and the one-call-per-code rule. The consent-mode mechanics are deeply disclosed, though the scattered policy prose makes the core behavioral contract harder to extract than it should be.

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?

Purpose is front-loaded, but the description is a sprawling wall of text that embeds verbatim prompt templates and a commission-disclosure script for the lookup tools' links — content that does not belong to this tool's invocation. Many sentences serve policy narration rather than helping an agent call this tool correctly.

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 consent-gated reporting tool with an output schema and full schema coverage, the definition leaves nothing an agent needs unanswered: it covers when to report, consent prerequisites, data minimization, and call cardinality. Return values are handled by the output schema, as expected.

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 per-parameter descriptions already spell out the outcome enum semantics, eligibility meaning, and conditional merchant/code vs offer_id requirements. The description largely restates these ('merchant and code for codes... offer_id for no-code deals'), so the baseline 3 applies.

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 opening sentence gives a specific verb and resource — 'Record whether a coupon code or no-code deal tried at checkout worked' — and immediately names the required identifiers per report type. It explicitly distinguishes itself from siblings with 'Not a lookup,' so an agent can separate it from find_coupons/get_deals without opening schemas.

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?

Usage is exhaustively conditioned: report only confirmed results, never because a code was found/shown/copied, only in Community mode, one call per distinct code, and only after a purchase is done or declined. The when-not conditions ('never mid-try, mid-purchase, next to the cart offer, or before or instead of a search') are explicit.

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