We count page visits with Google Analytics to see which pages are read. Nothing is stored until you accept, and we never store search queries. Privacy.
Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
⟨46 unchanged words⟩ channel/country. Nothing is withheld silently: `total_count` is howthemanyREALnumber of codes the query found before any of that (for the collection list the full count over everything, never just the window), `examined` is how many codes this call looked at, and `withheld` breaks the difference down by reason ({expired, verified_rejected, reserved_test_domain, policy}) — total_countexamined minus results.length always equals the sum of `withheld`, and `note` states the same balance in one sentence. WITHOUT shop_domain the call returns one window of at most `limit` codes (default 100, max 100) starting at `offset` (default 0), ordered by a stable id: `truncated` is true when more codes lie beyond it and `next_offset` is the offset to pass for the next page (null on the last page) — page until `truncated` is false to see every code. limit/offset are rejected together with shop_domain, which already returns every code of that shop.
Status
Live → Recently observed
Status
Recently observed → Live
Status
Live → Recently observed
Tool surface changed
Changed the definition of "list_coupons"
list_couponschanged
description
List currently visibleUSABLE discount codes/coupons, optionally filtered by shop_domain (e.g. "otto.de"). OnlyApubliclycodedisplayableiscouponswithheldarefromreturned`results`—wheninternal/candidate-shopitis EXPIRED (valid_until has passed), when a real checkout test PROVED it does not work (verification_status "verified_rejected"),
TLS
Certificate recorded, valid to 2026-11-04
Authorization
Authorization not required
Tool surface
First tool surface recorded: 8 tools (server version 0.1.1)
a display policy suppresses it on this channel/country. Nothing is withheld silently: `total_count` is how many
codes
are
the
excluded
query found before any of that
, and
EXPIRED
`withheld`
codes
breaks
are
the
never
difference
returned
down
by reason
(
a
{expired,
code
verified_rejected,
whose
reserved_test_domain,
valid_until
policy})
— total_count minus results.length always equals the sum of `withheld`, and `note` states the same balance in one sentence. So an empty `results` NEVER
has
passed
to
be guessed at: read `total_count` and `note` to tell "this shop has no codes at all" apart from "it has codes and every one of them
is
withheld)
proven dead"
.
An UNKNOWN or internal-review shop_domain is a different answer again — it is an error ("shop not found"), not an empty list; and a backend failure is reported as a failure, never as an empty list.
Each result carries validUntil: an ISO timestamp when
⟨19 unchanged words⟩
validUntil against the current time before relaying a
code; including the shop domain and the expiry avoids sending users to codes that will not apply for them.
code.
Each result ALSO carries verificationStatus, the verdict
⟨23 unchanged words⟩
proof on file — safe to recommend; "
verified_rejected" means the code was proven NOT to work by an actual checkout attempt — do NOT recommend it; "
unverified" means no proof exists either way yet
⟨11 unchanged words⟩
do not imply it was tested and failed.
("verified_rejected" is defined as before but no longer appears in `results` — it is counted in `withheld.verified_rejected` instead.)