Amazon search in 22 country stores, cross-store price comparison, one product's offers, all in PLN.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Run one query on several Amazon stores in parallel (default pl, de, fr, it, es, nl; at most 10) and merge the results in PLN — the cheapest first by default. Costs one SerpAPI credit PER STORE (6 by default). By default foreign stores are asked to deliver to Poland (shipping_location 'PL'): they list only items they ship here, with the delivery cost in `delivery`, and usually print prices already in PLN (Amazon's conversion, Polish VAT) — shipping is never included in price_pln. shipping_location 'local' compares each store as its own customers see it (NBP-converted, no delivery guarantee). Identical ASINs across stores are grouped in `asin_matches` with each store's price and the cheapest one — the reliable way to compare the exact same product. Use a precise query (brand + model) and min_price_pln to keep accessories out of a price-sorted list. Result shape: { source, fetchedAt, query, marketplaces: [{ marketplace, country, currency, status ('ok' | 'no_results' | 'error'), total_results, count, search_url, error? }], count, products: [...], asin_matches?: [{ asin, title, offers: [{ marketplace, price, currency, price_pln, url }], cheapest: { marketplace, price_pln }, spread_pln }], fx: [...], note } — the list key is `products`; each product is { marketplace, position, asin, title, brand?, url, image?, price, price_text, currency, price_pln, old_price?, discount_percent?, rating, reviews, bought_last_month?, prime?, sponsored, delivery?, stock? }. A store that fails or finds nothing is reported in `marketplaces`, not as an error.
Search query, ideally brand + model, e.g. 'sony wh-1000xm5'.
Sort sent to every store. Amazon's sort: relevance (default, Amazon's 'Featured'), price_asc, price_desc, rating (avg. customer review), newest, bestsellers. The price sorts are re-applied to the returned page by displayed price (Amazon sorts by its offer prices), with products that show no price listed last.
One brand name, e.g. 'Sony' (Amazon's brand filter on every store).
Max products in the merged list. Default 40.
Force a fresh SerpAPI fetch, bypassing this server's 5-minute result cache. Default false.
Order of the merged list: price_pln (default, cheapest first, unpriced last), relevance (the stores' own rankings interleaved) or rating.
Group the same ASIN found on 2+ stores into asin_matches. Default true.
Keep products rated at least this (0–5).
Keep products with at least this many ratings.
Delivery postal code within shipping_location's country (or the store's), e.g. '00-001'.
Stores to compare, codes or domains (pl, de, fr, it, es, nl, be, se, uk, tr, us, ca, mx, br, au, jp, in, cn, sg, ae, sa, eg). Default pl, de, fr, it, es, nl; at most 10 — one SerpAPI credit each.
Highest price in PLN, applied like min_price_pln.
Lowest price in PLN: sent to each store in its currency (NBP rate, 10% slack) and enforced exactly on price_pln.
Keep sponsored slots. Default false.
Deliver-to country for the foreign stores. Default 'PL'; 'local' = each store's own country (prices in its currency and VAT, delivery to Poland unchecked).
Drop results from an auto-corrected spelling of the query. Default false.
Max products kept per store. Default 10.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http amazon https://mcp.wondel.ai/amazon/mcp
Run one query on several Amazon stores in parallel (default pl, de, fr, it, es, nl; at most 10) and merge the results in PLN — the cheapest first by default. Costs one SerpAPI credit PER STORE (6 by default). By default foreign stores are asked to deliver to Poland (shipping_location 'PL'): they list only items they ship here, with the delivery cost in `delivery`, and usually print prices already in PLN (Amazon's conversion, Polish VAT) — shipping is never included in price_pln. shipping_location 'local' compares each store as its own customers see it (NBP-converted, no delivery guarantee). Identical ASINs across stores are grouped in `asin_matches` with each store's price and the cheapest one — the reliable way to compare the exact same product. Use a precise query (brand + model) and min_price_pln to keep accessories out of a price-sorted list. Result shape: { source, fetchedAt, query, marketplaces: [{ marketplace, country, currency, status ('ok' | 'no_results' | 'error'), total_results, count, search_url, error? }], count, products: [...], asin_matches?: [{ asin, title, offers: [{ marketplace, price, currency, price_pln, url }], cheapest: { marketplace, price_pln }, spread_pln }], fx: [...], note } — the list key is `products`; each product is { marketplace, position, asin, title, brand?, url, image?, price, price_text, currency, price_pln, old_price?, discount_percent?, rating, reviews, bought_last_month?, prime?, sponsored, delivery?, stock? }. A store that fails or finds nothing is reported in `marketplaces`, not as an error.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort sent to every store. Amazon's sort: relevance (default, Amazon's 'Featured'), price_asc, price_desc, rating (avg. customer review), newest, bestsellers. The price sorts are re-applied to the returned page by displayed price (Amazon sorts by its offer prices), with products that show no price listed last. |
| brand | string | One brand name, e.g. 'Sony' (Amazon's brand filter on every store). |
| limit | integer | Max products in the merged list. Default 40. |
| query* | string | Search query, ideally brand + model, e.g. 'sony wh-1000xm5'. |
| no_cache | boolean | Force a fresh SerpAPI fetch, bypassing this server's 5-minute result cache. Default false. |
| order_by | string | Order of the merged list: price_pln (default, cheapest first, unpriced last), relevance (the stores' own rankings interleaved) or rating. |
| match_asin | boolean | Group the same ASIN found on 2+ stores into asin_matches. Default true. |
| min_rating | number | Keep products rated at least this (0–5). |
| min_reviews | integer | Keep products with at least this many ratings. |
| delivery_zip | string | Delivery postal code within shipping_location's country (or the store's), e.g. '00-001'. |
| marketplaces | array | Stores to compare, codes or domains (pl, de, fr, it, es, nl, be, se, uk, tr, us, ca, mx, br, au, jp, in, cn, sg, ae, sa, eg). Default pl, de, fr, it, es, nl; at most 10 — one SerpAPI credit each. |
| max_price_pln | number | Highest price in PLN, applied like min_price_pln. |
| min_price_pln | number | Lowest price in PLN: sent to each store in its currency (NBP rate, 10% slack) and enforced exactly on price_pln. |
| include_sponsored | boolean | Keep sponsored slots. Default false. |
| shipping_location | string | Deliver-to country for the foreign stores. Default 'PL'; 'local' = each store's own country (prices in its currency and VAT, delivery to Poland unchecked). |
| exclude_autocorrected | boolean | Drop results from an auto-corrected spelling of the query. Default false. |
| limit_per_marketplace | integer | Max products kept per store. Default 10. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"sort": {
"enum": [
"relevance",
"price_asc",
"price_desc",
"rating",
"newest",
"bestsellers"
],
"type": "string",
"description": "Sort sent to every store. Amazon's sort: relevance (default, Amazon's 'Featured'), price_asc, price_desc, rating (avg. customer review), newest, bestsellers. The price sorts are re-applied to the returned page by displayed price (Amazon sorts by its offer prices), with products that show no price listed last."
},
"brand": {
"type": "string",
"description": "One brand name, e.g. 'Sony' (Amazon's brand filter on every store)."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max products in the merged list. Default 40."
},
"query": {
"type": "string",
"description": "Search query, ideally brand + model, e.g. 'sony wh-1000xm5'."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh SerpAPI fetch, bypassing this server's 5-minute result cache. Default false."
},
"order_by": {
"enum": [
"price_pln",
"relevance",
"rating"
],
"type": "string",
"description": "Order of the merged list: price_pln (default, cheapest first, unpriced last), relevance (the stores' own rankings interleaved) or rating."
},
"match_asin": {
"type": "boolean",
"description": "Group the same ASIN found on 2+ stores into asin_matches. Default true."
},
"min_rating": {
"type": "number",
"maximum": 5,
"minimum": 0,
"description": "Keep products rated at least this (0–5)."
},
"min_reviews": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Keep products with at least this many ratings."
},
"delivery_zip": {
"type": "string",
"description": "Delivery postal code within shipping_location's country (or the store's), e.g. '00-001'."
},
"marketplaces": {
"type": "array",
"items": {
"type": "string"
},
"description": "Stores to compare, codes or domains (pl, de, fr, it, es, nl, be, se, uk, tr, us, ca, mx, br, au, jp, in, cn, sg, ae, sa, eg). Default pl, de, fr, it, es, nl; at most 10 — one SerpAPI credit each."
},
"max_price_pln": {
"type": "number",
"minimum": 0,
"description": "Highest price in PLN, applied like min_price_pln."
},
"min_price_pln": {
"type": "number",
"minimum": 0,
"description": "Lowest price in PLN: sent to each store in its currency (NBP rate, 10% slack) and enforced exactly on price_pln."
},
"include_sponsored": {
"type": "boolean",
"description": "Keep sponsored slots. Default false."
},
"shipping_location": {
"type": "string",
"description": "Deliver-to country for the foreign stores. Default 'PL'; 'local' = each store's own country (prices in its currency and VAT, delivery to Poland unchecked)."
},
"exclude_autocorrected": {
"type": "boolean",
"description": "Drop results from an auto-corrected spelling of the query. Default false."
},
"limit_per_marketplace": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Max products kept per store. Default 10."
}
}
}List the 22 Amazon stores the other amazon_* tools support — code, domain, country, currency, the NBP table its currency converts with, default and available languages, and whether it is in the EU (no customs to Poland). Static and free: call it to pick marketplaces without guessing.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Full details of one Amazon product by ASIN (or product URL — its store is used unless marketplace says otherwise) via SerpAPI's amazon_product engine; one credit, ~10–25 s. Returns every offer with PLN prices — the main price, each purchase option (new/used/…), other sellers — and the cheapest new one, plus variants (each with its own ASIN), rating histogram, specifications, bullet points, category path and a few top reviews. The same ASIN can be looked up on another store (ASINs are mostly shared across EU stores). Result shape: { source, fetchedAt, query, marketplace, asin, title, brand?, url, categories?, images?, rating, reviews, rating_histogram?: { '5': pct, … }, reviews_summary?, bought_last_month?, price, price_text, currency, price_pln, max_price?, old_price?, discount_percent?, coupons?, promotions?, delivery?, stock?, purchase_options?: [{ type, price, currency, price_pln, stock?, delivery?, features? }], other_sellers?: [{ sold_by, ship_from, price, currency, price_pln, delivery?, seller_rating?, seller_reviews?, seller_feedback? }], cheapest_offer?: { source, seller?, price_pln }, variants?: [{ dimension, options: [{ asin, name, selected? }] }], about_item?, specifications?, details?, top_reviews?, fx, note? }.
| Argument | Type | Description |
|---|---|---|
| asin* | string | ASIN (10 characters, e.g. 'B09Y2MYL5C', from an amazon_search result) or an Amazon product URL containing /dp/<ASIN>. |
| language | string | Store language as <language>_<REGION>, e.g. 'en_GB' for English titles on amazon.de. Default: the store's own (de_DE on amazon.de) — each store only offers a few (amazon_marketplaces lists them). |
| no_cache | boolean | Force a fresh SerpAPI fetch, bypassing this server's 5-minute result cache. Default false. |
| marketplace | string |
Search one Amazon store (22 countries; default amazon.pl) via SerpAPI, with every price also in PLN at the official NBP mid rate. Costs one SerpAPI credit per call (a repeat within 5 minutes is cached and free). Refine with sort, page, min_price/max_price (store currency; enforced on the displayed price), brand, category_node, min_rating/min_reviews (applied to the returned page), include_sponsored, and any refinement Amazon offers on that page via `rh`: the result's `filters` lists each option's rh (Prime, 4★ & up, New condition, sold by Amazon, deals, features…) — pass them comma-separated. A store printing PLN itself (shipping_location 'PL' on a foreign store) is taken as-is. Use amazon_compare for several stores at once and amazon_product for one ASIN's offers, sellers and specs. Result shape: { source, fetchedAt, query, marketplace: { code, domain, country, currency, language }, search_url, total_results (Amazon's own count, before this page's post-filters), query_displayed?, page, next_page, count, products: [...], filters?: { <group>: [{ name, rh }] }, categories?: [{ name, node }], related_searches?, fx: [{ currency, rate, table, table_no, effective_date, source: 'NBP' }], note? } — the list key is `products`. Each product: { position, asin, title, brand?, url (https://www.<store>/dp/<ASIN>), image?, price (number, in `currency`), price_text (as displayed), currency (ISO, read from the displayed price), price_pln, old_price?, discount_percent?, rating, reviews, bought_last_month?, prime? (only stores that mark it), sponsored, badges?, delivery?, stock?, coupon?, offers?, more_buying_choices?, variants?: [{ asin, title }], purchase_options? }. price_pln is null when there is no price or no NBP rate (the note says why). A search Amazon answers with nothing is count: 0 plus a note on what to relax — a successful result, not an error.
| Argument | Type | Description |
|---|---|---|
| rh | string | Amazon refinements, comma-separated key:value pairs exactly as a previous result's `filters` list them (e.g. 'p_n_condition-type:776949031,p_72:419117031'). Ids are store-specific. |
| page | integer |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
| Amazon store: its code (pl, de, fr, it, es, nl, be, se, uk, tr, us, ca, mx, br, au, jp, in, cn, sg, ae, sa, eg) or domain (amazon.de, amazon.co.uk…). Default pl. Overrides a URL's own store — to look the ASIN up elsewhere. |
| delivery_zip | string | Delivery postal code within shipping_location's country (or the store's), e.g. '00-001'. |
| other_sellers | boolean | Include the other sellers' offers. Default true. |
| convert_to_pln | boolean | Add price_pln at the NBP mid rate. Default true. |
| include_reviews | boolean | Include up to 3 top reviews (600 chars each). Default true. |
| shipping_location | string | Deliver-to country as an ISO code, e.g. 'PL': a foreign store then lists only items it delivers there, adds delivery cost to `delivery`, and usually prints prices already converted to PLN by Amazon (VAT of the destination). 'local' (or omitted) = the store's own country. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"asin"
],
"properties": {
"asin": {
"type": "string",
"description": "ASIN (10 characters, e.g. 'B09Y2MYL5C', from an amazon_search result) or an Amazon product URL containing /dp/<ASIN>."
},
"language": {
"type": "string",
"description": "Store language as <language>_<REGION>, e.g. 'en_GB' for English titles on amazon.de. Default: the store's own (de_DE on amazon.de) — each store only offers a few (amazon_marketplaces lists them)."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh SerpAPI fetch, bypassing this server's 5-minute result cache. Default false."
},
"marketplace": {
"type": "string",
"description": "Amazon store: its code (pl, de, fr, it, es, nl, be, se, uk, tr, us, ca, mx, br, au, jp, in, cn, sg, ae, sa, eg) or domain (amazon.de, amazon.co.uk…). Default pl. Overrides a URL's own store — to look the ASIN up elsewhere."
},
"delivery_zip": {
"type": "string",
"description": "Delivery postal code within shipping_location's country (or the store's), e.g. '00-001'."
},
"other_sellers": {
"type": "boolean",
"description": "Include the other sellers' offers. Default true."
},
"convert_to_pln": {
"type": "boolean",
"description": "Add price_pln at the NBP mid rate. Default true."
},
"include_reviews": {
"type": "boolean",
"description": "Include up to 3 top reviews (600 chars each). Default true."
},
"shipping_location": {
"type": "string",
"description": "Deliver-to country as an ISO code, e.g. 'PL': a foreign store then lists only items it delivers there, adds delivery cost to `delivery`, and usually prints prices already converted to PLN by Amazon (VAT of the destination). 'local' (or omitted) = the store's own country."
}
}
}| Result page, 1–20. Default 1. |
| sort | string | Amazon's sort: relevance (default, Amazon's 'Featured'), price_asc, price_desc, rating (avg. customer review), newest, bestsellers. The price sorts are re-applied to the returned page by displayed price (Amazon sorts by its offer prices), with products that show no price listed last. |
| brand | string | One brand name as Amazon spells it, e.g. 'Sony' (Amazon's brand filter). |
| limit | integer | Max products returned (1–60). Default 20. |
| query | string | What you'd type in Amazon's search box, e.g. 'sony wh-1000xm5'. Required unless category_node is set. |
| language | string | Store language as <language>_<REGION>, e.g. 'en_GB' for English titles on amazon.de. Default: the store's own (de_DE on amazon.de) — each store only offers a few (amazon_marketplaces lists them). |
| no_cache | boolean | Force a fresh SerpAPI fetch, bypassing this server's 5-minute result cache. Default false. |
| max_price | number | Highest price in the store's currency, applied like min_price. |
| min_price | number | Lowest price in the STORE's currency (EUR on amazon.de). Sent to Amazon, then enforced on the displayed price: out-of-range products and products without a price are dropped (the note counts them). |
| min_rating | number | Keep products rated at least this (0–5), filtered on the returned page. |
| marketplace | string | Amazon store: its code (pl, de, fr, it, es, nl, be, se, uk, tr, us, ca, mx, br, au, jp, in, cn, sg, ae, sa, eg) or domain (amazon.de, amazon.co.uk…). Default pl. |
| min_reviews | integer | Keep products with at least this many ratings, filtered on the returned page. |
| delivery_zip | string | Delivery postal code within shipping_location's country (or the store's), e.g. '00-001'. |
| category_node | string | Amazon browse-node id (digits) to search within — from a result's `categories`, or node=… in an Amazon category URL. Ids differ per store. Without a query this browses the category. |
| convert_to_pln | boolean | Add price_pln at the NBP mid rate. Default true. |
| include_filters | boolean | Return the page's refinement `filters` (name + rh per option). Default true. |
| include_sponsored | boolean | Keep sponsored slots (marked sponsored: true). Default false — ads repeat and distort ranking. |
| shipping_location | string | Deliver-to country as an ISO code, e.g. 'PL': a foreign store then lists only items it delivers there, adds delivery cost to `delivery`, and usually prints prices already converted to PLN by Amazon (VAT of the destination). 'local' (or omitted) = the store's own country. |
| exclude_autocorrected | boolean | Drop results Amazon adds from an auto-corrected spelling of the query. Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"rh": {
"type": "string",
"description": "Amazon refinements, comma-separated key:value pairs exactly as a previous result's `filters` list them (e.g. 'p_n_condition-type:776949031,p_72:419117031'). Ids are store-specific."
},
"page": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Result page, 1–20. Default 1."
},
"sort": {
"enum": [
"relevance",
"price_asc",
"price_desc",
"rating",
"newest",
"bestsellers"
],
"type": "string",
"description": "Amazon's sort: relevance (default, Amazon's 'Featured'), price_asc, price_desc, rating (avg. customer review), newest, bestsellers. The price sorts are re-applied to the returned page by displayed price (Amazon sorts by its offer prices), with products that show no price listed last."
},
"brand": {
"type": "string",
"description": "One brand name as Amazon spells it, e.g. 'Sony' (Amazon's brand filter)."
},
"limit": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Max products returned (1–60). Default 20."
},
"query": {
"type": "string",
"description": "What you'd type in Amazon's search box, e.g. 'sony wh-1000xm5'. Required unless category_node is set."
},
"language": {
"type": "string",
"description": "Store language as <language>_<REGION>, e.g. 'en_GB' for English titles on amazon.de. Default: the store's own (de_DE on amazon.de) — each store only offers a few (amazon_marketplaces lists them)."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh SerpAPI fetch, bypassing this server's 5-minute result cache. Default false."
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Highest price in the store's currency, applied like min_price."
},
"min_price": {
"type": "number",
"minimum": 0,
"description": "Lowest price in the STORE's currency (EUR on amazon.de). Sent to Amazon, then enforced on the displayed price: out-of-range products and products without a price are dropped (the note counts them)."
},
"min_rating": {
"type": "number",
"maximum": 5,
"minimum": 0,
"description": "Keep products rated at least this (0–5), filtered on the returned page."
},
"marketplace": {
"type": "string",
"description": "Amazon store: its code (pl, de, fr, it, es, nl, be, se, uk, tr, us, ca, mx, br, au, jp, in, cn, sg, ae, sa, eg) or domain (amazon.de, amazon.co.uk…). Default pl."
},
"min_reviews": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Keep products with at least this many ratings, filtered on the returned page."
},
"delivery_zip": {
"type": "string",
"description": "Delivery postal code within shipping_location's country (or the store's), e.g. '00-001'."
},
"category_node": {
"type": "string",
"description": "Amazon browse-node id (digits) to search within — from a result's `categories`, or node=… in an Amazon category URL. Ids differ per store. Without a query this browses the category."
},
"convert_to_pln": {
"type": "boolean",
"description": "Add price_pln at the NBP mid rate. Default true."
},
"include_filters": {
"type": "boolean",
"description": "Return the page's refinement `filters` (name + rh per option). Default true."
},
"include_sponsored": {
"type": "boolean",
"description": "Keep sponsored slots (marked sponsored: true). Default false — ads repeat and distort ranking."
},
"shipping_location": {
"type": "string",
"description": "Deliver-to country as an ISO code, e.g. 'PL': a foreign store then lists only items it delivers there, adds delivery cost to `delivery`, and usually prints prices already converted to PLN by Amazon (VAT of the destination). 'local' (or omitted) = the store's own country."
},
"exclude_autocorrected": {
"type": "boolean",
"description": "Drop results Amazon adds from an auto-corrected spelling of the query. Default false."
}
}
}