Bestshopping Cashback — IT, DE, FR
Server Details
Find merchants in Italy, Germany and France. Prepare cashback links for the user to click.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
search_merchants (catalog discovery by name/domain/ID) and get_merchant (detailed info for a known merchant) share the merchant domain but have distinguishable intent, and prepare_cashback_link is clearly a distinct action. The boundary between searching and fetching merchant detail is explicit enough in the descriptions that misselection is unlikely.
All three tools use a consistent snake_case verb_noun pattern: get_merchant, search_merchants, prepare_cashback_link. The verb choices (get/search/prepare) map predictably onto read vs. discover vs. construct semantics.
Three tools is deliberately minimal but each maps to a real step in the discover-info-generate-link workflow, so nothing feels redundant. It sits on the lean side, though the tightly scoped read-only purpose justifies it.
The surface covers catalog search, merchant detail and link generation, but there is no way to check whether a prepared link's cashback was actually tracked or to browse categories/gift cards beyond flat search. Agents can work around these gaps by pointing users to the Bestshopping site, but the lifecycle has a visible tail missing.
Available Tools
3 toolsget_merchantARead-onlyIdempotentInspect
Read current public merchant information, cashback conditions and browser tracking rules. Exact cashback rates must be checked on the returned Bestshopping page; this tool does not provide a personalized quote or access an account.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Bestshopping ACCOUNT market: it (Italy), de (Germany), fr (France). Ask the user if missing or ambiguous; never infer it from language or reuse IDs across markets. | it |
| merchant_id | Yes | Merchant ID returned by search_merchants. Never guess or reuse IDs from another market. |
Output Schema
| Name | Required | Description |
|---|---|---|
| merchant | Yes | |
| checked_at | Yes | |
| conditions | Yes | |
| description | Yes | |
| rate_notice | Yes | |
| cashback_rate | Yes | |
| tracking_rules | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds genuinely new behavioral context by stating the data is public-only (no account access) and that rates are not a personalized quote. It does not describe pagination or rate limits, but for a read-only lookup that is a minor omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero redundancy: the scope of returned data leads, and the caveats about rates and account access follow. Every clause carries information the agent would not otherwise have.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value details need no explanation, and the annotations cover the safety profile; the description fills the remaining gaps (public-only data, no personalized quote). Only the explicit search_merchants → get_merchant sequencing is missing, a small residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself carries strong warnings ('never guess or reuse IDs from another market', market default 'it'), so the description need not repeat them. The description adds no parameter-level meaning beyond the schema, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Read') and resource ('merchant information'), and enumerates the payload (cashback conditions, browser tracking rules), which lets an agent distinguish it from search_merchants and prepare_cashback_link. It stops short of explicitly labeling it as the detail-lookup step after a search, so sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It sets clear boundaries: exact rates must be read off the returned page, and the tool gives neither a personalized quote nor account access — useful when-not signals against expect-a-quote or account-scoped siblings. However it never explicitly says 'call this after search_merchants to expand a merchant_id', leaving the workflow linkage to the schema description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_cashback_linkARead-onlyIdempotentInspect
Prepare a personal Bestshopping go.html link using an existing recipient nickname and a verified online cashback merchant. Does NOT activate cashback, follow the URL, set merchant cookies, register a purchase click or make a purchase. Show the returned link and tell the USER to click it in their shopping browser, allow tracking cookies and disable AdBlock. Never open or prefetch the link on the server. Never say cashback is already activated.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Bestshopping ACCOUNT market: it (Italy), de (Germany), fr (France). Ask the user if missing or ambiguous; never infer it from language or reuse IDs across markets. | it |
| nickname | Yes | Exact nickname for the selected Bestshopping market explicitly supplied by the user. Ask if missing. Never request a password. | |
| merchant_id | Yes | Merchant ID returned by search_merchants. Never guess or reuse IDs from another market. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes | |
| merchant | Yes | |
| checked_at | Yes | |
| conditions | Yes | |
| activation_url | Yes | |
| tracking_rules | Yes | |
| tracking_activated | Yes | |
| user_click_required | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Consistent with readOnlyHint/idempotentHint, it reinforces that nothing is activated and no purchase click or cookie is set, then adds behavior the annotations cannot express: never open or prefetch the link server-side. It also prescribes the agent's follow-up messaging (show the link, tell the user to click, allow cookies, disable AdBlock, never claim cashback is already active).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by a negative-scope sentence and two imperative usage sentences. Every sentence carries distinct operational content, though the compliance list is dense enough that a slightly tighter grouping would read better.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value documentation is not required, yet the description still explains what the returned link is for. Combined with full parameter coverage and redundant safety framing, an agent has everything needed to call it and handle the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so market, nickname, and merchant_id are already fully documented with constraints and provenance. The description only restates that the nickname must pre-exist and the merchant be verified, adding marginal meaning beyond the schema baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb ("Prepare") and resource ("personal Bestshopping go.html link") and scopes the inputs (existing recipient nickname, verified cashback merchant). It is clearly distinct from the read-only lookup siblings get_merchant and search_merchants, though it never names them directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states preconditions (nickname must already exist, merchant must be verified) and heavily delimits what the tool does not do, which implicitly routes agents that want to browse merchants to search_merchants. It stops short of an explicit "use this instead of X when Y" statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_merchantsARead-onlyIdempotentInspect
Search the current Bestshopping merchant catalog for the selected account market by name, domain or ID. Distinguishes online cashback, gift cards and top-ups. Does not activate tracking or visit merchants.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Merchant name, website domain or ID. Empty string lists the catalog. | |
| market | No | Bestshopping ACCOUNT market: it (Italy), de (Germany), fr (France). Ask the user if missing or ambiguous; never infer it from language or reuse IDs across markets. | it |
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| total | Yes | |
| market | Yes | |
| offset | Yes | |
| merchants | Yes | |
| checked_at | Yes | |
| next_offset | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so safety is covered. The description adds genuine behavioral context beyond them: no tracking activation and no merchant visits are side-effect disclosures an agent would otherwise have to guess.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, with the core action and scope front-loaded and the negative side-effect constraint placed last as a clarifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the market parameter carries rich in-schema guidance. The only real omission is pagination behavior for limit/offset, which leaves a small gap for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: query and market are well documented in the schema, and the description reinforces them ('by name, domain or ID', 'selected account market'). The limit and offset pagination parameters are documented nowhere, and the description does not compensate for that gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb+resource ('Search the current Bestshopping merchant catalog') plus the searchable keys (name, domain, ID) and entity subtypes (online cashback, gift cards, top-ups). The closing clause functionally separates it from prepare_cashback_link, though it does not name siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes the operating context ('selected account market') and a clear negative condition ('does not activate tracking or visit merchants'), which steers agents away from the link-preparation flow. It stops short of naming the alternative tool or stating prerequisites explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
get_merchant3 fields changed- changed
Input schema / properties / market / descriptionPrevious value: -"Bestshopping market. Only Italy is enabled."New value: +"Bestshopping ACCOUNT market: it (Italy), de (Germany), fr (France). Ask the user if missing or ambiguous; never infer it from language or reuse IDs across markets." - removed
Output schema / properties / merchant / properties / market / constRemoved value: -"it" - added
Output schema / properties / merchant / properties / market / enumAdded value: +[ + "it" +]
- Changed
prepare_cashback_link4 fields changed- changed
Input schema / properties / market / descriptionPrevious value: -"Bestshopping market. Only Italy is enabled."New value: +"Bestshopping ACCOUNT market: it (Italy), de (Germany), fr (France). Ask the user if missing or ambiguous; never infer it from language or reuse IDs across markets." - changed
Input schema / properties / nickname / descriptionPrevious value: -"Exact Bestshopping Italy nickname explicitly supplied by the user. Ask if missing. Never request a password."New value: +"Exact nickname for the selected Bestshopping market explicitly supplied by the user. Ask if missing. Never request a password." - removed
Output schema / properties / merchant / properties / market / constRemoved value: -"it" - added
Output schema / properties / merchant / properties / market / enumAdded value: +[ + "it" +]
- Changed
search_merchants5 fields changed- changed
Input schema / properties / market / descriptionPrevious value: -"Bestshopping market. Only Italy is enabled."New value: +"Bestshopping ACCOUNT market: it (Italy), de (Germany), fr (France). Ask the user if missing or ambiguous; never infer it from language or reuse IDs across markets." - removed
Output schema / properties / market / constRemoved value: -"it" - added
Output schema / properties / market / enumAdded value: +[ + "it" +] - removed
Output schema / properties / merchants / items / properties / market / constRemoved value: -"it" - added
Output schema / properties / merchants / items / properties / market / enumAdded value: +[ + "it" +]
3 tool updates
- First observed
get_merchant - First observed
prepare_cashback_link - First observed
search_merchants
Related MCP Connectors
Price-check product pages and build affiliate tracking links.
Search products, compare prices and discover deals across 6 European markets with your AI assistant.
Compare cashback rates from 100+ portals in 40+ countries and find discounted gift cards.
Turn product links or queries into tracked links that can earn. Carts and search too.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to search products and generate affiliate links across European and global affiliate networks, automating product discovery and link creation for monetization.5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI models to find the best online deals by browsing and interacting with multiple shopping platforms like Amazon and eBay across various regions. It uses Playwright to automate searches and retrieve product information from compatible e-commerce and deal-tracking websites.30 npm3MIT

idealo MCP Serverofficial
AlicenseNot gradedqualityFmaintenanceEnables product search, price comparison, and price history analysis across 6 European marketplaces (DE, AT, GB, FR, IT, ES).19MIT
Nexbidofficial
AlicenseNot gradedqualityCmaintenanceAgentic commerce infrastructure for AI agents. MCP-native product discovery, contextual ad matching, and purchase facilitation with European privacy compliance (nDSG/GDPR).MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.