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.
Changed the definition of "offers_stock", "product_details", "product_details_batch" and 3 more
⟨152 unchanged words⟩ sellers' offers and stock are then not included. With check_inventory, a cart check that cannot read a quantity is retried once on another session; one that still fails says so on the offer, inventory_response {"error": "cart check failed", "code": "cart_check_failed", "retryable": true}, is not billed, and never reads as a quantity of 0. Each offer carries `ships_from` (the "Ships from" name: Amazon for FBA, else the seller), `delivery_message` (the offer's own delivery promise, e.g. "FREE delivery Friday, October 16 on orders shipped by Amazon over $35") and `delivery_message_secondary` (the "Or fastest delivery ..." line), null when the offer shows none. `delivery` is the same value as `ships_from`, kept for existing integrations; it never held delivery information. A row for an ASIN that could not be answered carries `error`, `code`, `http_status`, `billed`, `retryable` and `next_step`, like a top-level error: `upstream_unavailable` (not billed, retry that ASIN), `no_offers` ("No offers found": the offer list holds no offer that can be bought as is -- customizable listings have none; billed like a 404) or `asin_redirected` (Amazon answers the ASIN with another listing's offers; billed like a 404). On agent.apiguru.app the answer also carries `success` and `_links` (self, and `details_url` per row); `billable_requests_count` is there on your own key only.
⟨51 unchanged words⟩ "check_inventory":{"default":false,"description":"ResolveAddtheeachtrueoffer's purchasable stockquantity.quantity (`inventory_response`), read with a cart check. Slower, andbillseachmorechecklookupsthat reads a quantity is billed, so leave off unless you need the ⟨155 unchanged words⟩
⟨101 unchanged words⟩ null field means Amazon did not show it. Keys of `product_information`, `tech_specs` and the other specification tables are trimmed: Amazon prints some rows twice, once with a trailing space ("Package Dimensions "), and the copies are merged under the clean name; when they differ the listing's own value wins (the second copy of "ASIN" on a variant often names the parent).
⟨118 unchanged words⟩ not-found product_details call; retrying will not help). The batch record comes from Amazon's app, not the product page: price, rating, availability, images, bullets and variants, but no best-seller ranks, no category path and no merchant (seller) id. For those call product_details per ASIN. On an API key both cost one request per ASIN, so the batch saves calls and time, not money; keyless (x402) it is also cheaper per item.
⟨117 unchanged words⟩ filters_ignored, never a silent empty page. `product_num_ratings`andis an integer; `offers_count`areisintegers;the "N offers" count a result card shows, an integer, and null when the card shows none (most cards; it used to default to 1); `product_brand` is the brand line Amazon prints above some titles (fashion and many branded listings) and null on cards without one -- product_details has `brand_name` for every ASIN; `product_star_rating`, `product_price` and `product_original_price` are decimal strings; a ⟨17 unchanged words⟩ badge or its delivery line offers Prime delivery.`metadata.total_pages``metadata.reachable_pages` says how far `page` cango.go: Amazon serves at most 7 pages of a query even when `metadata.total_pages` counts more (then `pagination_note` says how to split the query). `_links.next` is the next page while there is one; a page past the end is a free 400 `page_out_of_range`. A full page is up to 48 results ⟨128 unchanged words⟩
⟨40 unchanged words⟩ like search does. Price: $0.003 per call.UnlikeAseller_profile_batch,malformed seller_idformatisnotapattern-validatedfreehere.400,metadata.total_pagesassaysonhowseller_profile_batch.farmetadata.total_pages counts every pagegoesof the result (48 rows a page), but Amazon serves at most 7 pages of one query: metadata.reachable_pages is how far page can go, and when it is less, pagination_note says how to see the rest (min_price/max_price bands or category_id)
⟨123 unchanged words⟩ separate call rather than expecting a partial refund. On agent.apiguru.app the answer also carries `success` and `_links.self`; `billable_requests_count` is there on your own key only.
Changed the definition of "best_sellers" and "product_reviews"
⟨59 unchanged words⟩ on the whole 'Clothing, Shoes & Jewelry' department, or 'subcategory' when a word such as 'camera' named a subcategory), available_categories (that marketplace's departments withslugsslugs; MCP: with compact=false) and available_subcategories (the children of the node ⟨185 unchanged words⟩
⟨66 unchanged words⟩ amazon.de has ce-de (Electronics & Photo).Every answerAlistsword that names a subcategory works too: category=camera on amazon.es is Electronics > Camera & Photo (category_resolution.via says 'subcategory'; several equally good matches are a free 400 listing each as category + subcategory_code). REST answers list the
Changed the definition of "best_sellers", "deals", "offers_stock" and 7 more
⟨197 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨175 unchanged words⟩
⟨308 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨293 unchanged words⟩
Changed the definition of "best_sellers", "deals", "offers_stock" and 7 more
Use for what sells best in a department right now. The rank is Amazon's, not a sales figure. Best-seller rankings for a department of one marketplace, ⟨239 unchanged words⟩
Use for items currently promoted in Amazon's deals feed. Not for one product's price (product_details); for a brand by name use search with brand= and today_deals=true. Returns the current Amazon deals feed: ASIN, ⟨115 unchanged words⟩ and max_discount are applied to the rows afterthe fetchretrieval, scanning up to 3upstreamfeed
Changed the definition of "search", "seller_products", "seller_profile_batch" and 1 more
⟨394 unchanged words⟩ string"},"seller_id":{"anyOf":[{"pattern":"^[Aa][A-Za-z0-9]{9,20}$","type":"string"},{"type":"null" ⟨2 unchanged words⟩ "description":"Restrict results to one seller's offers:(an Amazon seller id, 'A' followed by 9-20 letters and digits (e.g. A2A1RNLLUK3HYA).","title":"Seller Id"}," ⟨56 unchanged words⟩
⟨399 unchanged words⟩ Changed the definition of "best_sellers", "deals", "offers_stock" and 7 more
⟨101 unchanged words⟩ category.heading the page's own title line. Price:$0.01$0.003 per call. No required parameters - calling it ⟨130 unchanged words⟩
⟨61 unchanged words⟩ null when the feed ends). Price:$0.01$0.003 per call. Filters are by id: categories ⟨138 unchanged words⟩
Changed the definition of "offers_stock", "search" and "seller_profile_batch"
⟨34 unchanged words⟩ than one per ASIN when check_inventory is true. offers_count=winner returns only the offer flagged is_buybox_winner (offers_total keeps the full count); it used to scope only the inventory check and return every offer. /scrape is a legacy alias for the same handler.
⟨140 unchanged words⟩ "all","description":"'all' for every offer (default), 'winner' for the buy-box offer only, or a specific alphanumeric Offer ID. Every offer carries is_buybox_winner; with 'winner' the per-ASIN data holds that one offer and offers_total says how many exist. An ASIN with no featured offer answers an empty list with an explanatory error. The response echoes filters_applied.","title":"Offers Count","type": ⟨7 unchanged words⟩
Certificate recorded, valid to 2026-12-02
Authorization not required
Changed the definition of "best_sellers", "search" and "send_feedback"
⟨11 unchanged words⟩ Every answer carries the department it resolved to and how (category_resolution: by slug, name or a fragment of a name, with a hint when a fragment such as 'shoes' landed on the whole 'Clothing, Shoes & Jewelry' department), available_categories (that marketplace's departments with slugs) and available_subcategories (the children of thedepartmentnode shown, with the ids subcategory_code takes). On amazon.com subcategory_code also takes any browse node id at any depth, or a name resolved under the department ("women's shoes", "mules & clogs"); category.subcategory_path gives the node's full path and category.heading the page's own title line. Price: $0.01 per call. No required parameters - ⟨8 unchanged words⟩ `category` accepts a slug, a display name,orone of the older US departmentnames;names, or a unique fragment; category_resolution.via says which, and a fragment match adds a hint naming the subcategories that carry the word, with ids. On amazon.com the whole browse tree is known: subcategory_code takes any node id or a name at any depth, subcategory_name and subcategory_path are filled without a fetch, and available_subcategories lists the node's real children (empty on a leaf). Other marketplaces name only what their navigation showed.
First tool surface recorded: 12 tools (server version 1.1.22)
Showing the latest 11 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨6 unchanged words⟩ one product. Not for its full review historyor(Amazon serves full and star-filteredreviewsreview(notlistsavailableonly to signed-in accounts),or for seller feedback (seller_reviews). Returns thereviewoverallblockrating,forratingonecount,ASIN:review_histogramoverall(percentstarofrating,alltotalratingsratingpercountstar), Amazon's 'customers say' AI summary where that marketplace shows one, and theindividualreviewsreviewonlist.the product page (typically up to 8 from this marketplace and 5 from other countries), each with rating, review_date, review_country, from_this_marketplace, verified flag and helpful_votes; from_rating/to_rating keep a star window. Price: $0.003 per call. Same 404-billed / 503-not-billed semantics as product_details.Takes noNofilters:pagingitorreturnssort: therating,reviewsratingarecount,those on the'customersproductsay'page;summaryreview_coverage says how many andthefromreviewswhere.Amazonfrom_rating/to_ratingshowsfilteronthem.thereview_histogramproduct(herepageanditself.onThereproduct_details)isgivesnothepaging,sharestaroffiltereveryorrating.sort,customers_sayandisnonullfullwherereviewAmazonhistory.showsFornoper-starsummarycounts(severalreadmarketplacestheneverratingdo);histogramcustomers_say_noteonthenproduct_details.says so.
⟨45 unchanged words⟩ ":"Asin","type":"string"},"from_rating":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Lowest star rating to include, 1-5. Filters the reviews the product page shows (see review_coverage).","title":"From Rating"},"geo":{"default":"US","description": ⟨39 unchanged words⟩ returned (0 = all). The rating summary, review_histogram and customers_say are always returned; _reviews_totalsaysishowthemanynumberexist.of reviews on the product page (not all reviews; see review_coverage).","minimum":0,"title":"Max Reviews","type":"integer"},"to_rating":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Highest star rating to include, 1-5. from_rating=1&to_rating=3 keeps the critical ones among them.","title":"To Rating"}},"required":["asin"],"title ⟨3 unchanged words⟩
⟨148 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨69 unchanged words⟩
⟨157 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨6 unchanged words⟩
⟨145 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨6 unchanged words⟩
⟨72 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨39 unchanged words⟩
⟨200 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨282 unchanged words⟩
⟨200 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨289 unchanged words⟩
⟨25 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨52 unchanged words⟩
⟨124 unchanged words⟩ ,"SG","SE","TR","BE","IE","ZA","EG"],"title":"Geo","type":"string ⟨149 unchanged words⟩
Use to compare sellers' current offers and see who holds the buy box, and, with check_inventory, how many units a buyer can add to the cart now. The stock number is not a sales estimate. Not for the listing's own details (product_details). Returns the current offer list per ASIN (seller ⟨13 unchanged words⟩ per item (max 10). Billed perupstream Amazon requestlookup, which is more than one per ASIN ⟨30 unchanged words⟩ is a legacy alias for the same handler. When Amazon will not return the offer list for an ASIN, the result carries source=product_page: the featured (buy-box) offer read from the product page, offers_on_amazon (how many offers Amazon says exist) and a note; other sellers' offers and stock are then not included.
⟨13 unchanged words⟩ alphanumeric characters; malformed entries are rejected with 400.","pattern":"^[A-Z0-9]{10}An Amazon product URL (,[A-Z0-9]{10}…/dp/ASIN)*$works too, in place of an ASIN; lower case is fine. A URL's domain sets the marketplace unless geo says otherwise.","title":"Asins","type":"string ⟨6 unchanged words⟩ true purchasable stock quantity. Slower and bills moreupstream requestslookups, so leave off unless you need the ⟨152 unchanged words⟩
Use for one product's current listing. Not for several ASINs (product_details_batch), seller offers or stock (offers_stock), or review text (product_reviews). Fetches the complete product record for one ASIN ⟨25 unchanged words⟩ absent from that marketplace and IS billed. 503meansisourafetchtemporaryfailedfailure on our side and is NOT billed - retry. Bullet points ⟨32 unchanged words⟩
⟨13 unchanged words⟩ comma-separated lists are rejected; use product_details_batch for many. An Amazon product URL (…/dp/ASIN) works too, in place of an ASIN; lower case is fine. A URL's domain sets the marketplace unless geo says otherwise.","pattern":"^^\\s*(?:[A-Z0-9A-Za-z0-9]{10}$|https?://\\S+)\\s*$","title":"Asin","type":"string ⟨112 unchanged words⟩
Use to enrich a list of ASINs in one call; compare the ASINs in `results` with the ones you sent. Batch variant of product_details. Accepts a comma-separated ASIN ⟨66 unchanged words⟩ null field means Amazon did not show it. ASINs Amazon has no record for on that marketplace are listed in not_returned (billed, like a not-found product_details call; retrying will not help).
⟨9 unchanged words⟩ de-duplication. Each must be 10 uppercase alphanumeric characters.","pattern":"^[A-Z0-9]{10}An Amazon product URL (,[A-Z0-9]{10}…/dp/ASIN)*$works too, in place of an ASIN; lower case is fine. A URL's domain sets the marketplace unless geo says otherwise.","title":"Asins","type":"string ⟨112 unchanged words⟩
Use for what customers say about one product. Not for its full review history or star-filtered reviews (not available), or for seller feedback (seller_reviews). Returns the review block for one ASIN: overall ⟨49 unchanged words⟩ There is no paging, star filter or sort-- Amazon's review pages require a signed-in customer, andthe API doesnonotfullsignreviewin.history. For per-star counts read the rating histogram on product_details.
⟨3 unchanged words⟩ :"Single Amazon ASIN, 10 uppercase alphanumeric characters. An Amazon product URL (…/dp/ASIN) works too, in place of an ASIN; lower case is fine. A URL's domain sets the marketplace unless geo says otherwise.","pattern":"^^\\s*(?:[A-Z0-9A-Za-z0-9]{10}$|https?://\\S+)\\s*$","title":"Asin","type":"string ⟨71 unchanged words⟩
Use to find products by keyword and filters. Rows are result snippets; for the authoritative record of one ASIN call product_details. Search Amazon products by keyword. Filters: page, ⟨65 unchanged words⟩ and the allowed values. Condition and deal refinementsuse per-marketplace node ids captured from Amazon's ownaresearchperpages;marketplace; a marketplace that lacks one gets the unfiltered ⟨168 unchanged words⟩ metadata.total is 0 and `hint` says so).A bot wall, a page we could not parse orAnythinganythingelse that is not aresultsusablepayloadresult is an unbilled, retryable 503 with codeupstream_unavailable and a `reason` (wall, parse_fault, unusable); up to three sessions are tried before that answer.upstream_unavailable.
Use to list one seller's storefront. Products listed by a seller: a storefront search. ⟨67 unchanged words⟩
Use to vet sellers: name, rating and feedback counts as Amazon displays them. Returns the storefront profile for each seller id: ⟨53 unchanged words⟩ billed, like a 404) or `unavailable` (Amazon servedcouldnothingnotusablebeonretrievedanyrightroute;now; NOT billed on the keyed path, `retryable: ⟨38 unchanged words⟩
Use for a seller's customer feedback (service, shipping). Not for product reviews (product_reviews). Returns paginated seller feedback, optionally filtered to a ⟨43 unchanged words⟩
⟨36 unchanged words⟩ seller IDs, maximum 10. Each must be13-15analphanumericAmazoncharactersseller id -- 'A' followed by 9-20 letters and digits, e.g. A2A1RNLLUK3HYA -- or the whole call 400s.","pattern":"^[Aa][A-Za-z0-9]{139,1520}(,[Aa][A-Za-z0-9]{139,1520})*$","title":"Seller Ids"," ⟨8 unchanged words⟩
⟨216 unchanged words⟩ },"seller_id":{"description":"Amazon sellerID.id: 'A' followed by 9-20 letters and digits, the seller= or me= value of a storefront URL (e.g. A2A1RNLLUK3HYA). Required.","pattern":"^[Aa][A-Za-z0-9]{9,20}$","title":"Seller Id","type": ⟨29 unchanged words⟩
⟨13 unchanged words⟩ optionally, the actual purchasable stock quantity. Price:$0.015$0.0045 per item (max 10). Billed per ⟨48 unchanged words⟩
⟨19 unchanged words⟩ , feature bullets, variations and category. Price:$0.01$0.003 per call. 404 means the ASIN is absent ⟨51 unchanged words⟩
⟨19 unchanged words⟩ and faster than N single calls. Price:$0.008$0.0024 per item (max 20). Billed per ⟨48 unchanged words⟩
⟨17 unchanged words⟩ summary, and the individual review list. Price:$0.01$0.003 per call. Same 404-billed / 503-not-billed semantics as ⟨56 unchanged words⟩
⟨37 unchanged words⟩ reason) and available_filters for that marketplace. Price:$0.01$0.003 per call. Blank values and the literal string ⟨262 unchanged words⟩
⟨31 unchanged words⟩ filters_ignored and available_filters like search does. Price:$0.01$0.003 per call. Unlike seller_profile_batch, seller_id format is ⟨29 unchanged words⟩
⟨11 unchanged words⟩ feedback counts, address and marketplace presence. Price:$0.012$0.0036 per item (max 10). Seller ID ⟨93 unchanged words⟩
Returns paginated seller feedback, optionally filtered to a star-rating window. Price:$0.01$0.003 per call. from_rating and to_rating are optional; omit ⟨31 unchanged words⟩
⟨12 unchanged words⟩ ":null,"title":"Country Code"},"filters_applied":{"default":null,"title":"Filters Applied"},"request_id":{"default":null,"title":"Request ⟨16 unchanged words⟩
⟨243 unchanged words⟩ For a rank claim, use product_details or best_sellers. An empty `products` list is served as success only when Amazon itself reports 0 results (metadata.total is 0 and `hint` says so). A bot wall, a page we could not parse or anything that is not a results payload is an unbilled, retryable 503 with code upstream_unavailable and a `reason` (wall, parse_fault, unusable); up to three sessions are tried before that answer.
⟨30 unchanged words⟩ malformed id rejects the entire request with 400. Every row in results is an object with `status`: `ok` (the profile), `not_found` (Amazon has no page for that id on this marketplace; billed, like a 404) or `unavailable` (Amazon served nothing usable on any route; NOT billed on the keyed path, `retryable: true`). A row is never null. billable_requests_count counts ok + not_found rows; on the pay-per-call rail the per-item quote is settled up front, so retry `unavailable` ids in a separate call rather than expecting a partial refund.
⟨19 unchanged words⟩ ":null,"title":"Country Code"},"note":{"default":null,"title":"Note"},"request_id":{"default":null,"title":"Request ⟨7 unchanged words⟩ results":{"default":null,"title":"Results"},"unavailable":{"default":null,"title":"Unavailable"}},"title":"seller_profile_batch_output","type":"object"}
⟨16 unchanged words⟩ for that marketplace (case-insensitive; a unique fragment works, and the answer's category_resolution says when a fragment was used -- 'shoes' is the whole 'Clothing, Shoes & Jewelry' department, and the hint then lists the Shoes subcategories with their ids). Departments and their slugs differ per marketplace ⟨231 unchanged words⟩ default":null,"description":"Browse node idof a child ofunder `category`,: one from available_subcategories of a previous answer,fororthatoncategoryamazon.com any node id at any depth (679410011 is Women > Shoes > Mules & Clogs) or a namefromresolvedthatunderlisttheworksdepartmenttoo(\"women's shoes\", \"mens boots\", \"mules & clogs\"). A name that fits two nodes equally (Men > Shoes > Boots and Women > Shoes > Boots) is a free 400 listing both ids with their paths.","title":"Subcategory Code"}},"title ⟨3 unchanged words⟩
⟨16 unchanged words⟩ "default":null,"title":"Category"},"category_resolution":{"default":null,"title":"Category Resolution"},"data":{"default":null,"title":"Data ⟨32 unchanged words⟩
⟨179 unchanged words⟩ answer carries `_truncated`, `_omitted_fields`, `_projection` and `_notes`. filters_applied echoes the effective sort_by (RELEVANCE when none was sent). A BEST_SELLERS ordering is Amazon's query-scoped popularity, not a category rank: a row's `badges` / `is_best_seller` are what the result card showed for this query, and an ASIN that is #1 in its subcategory can carry no badge here while product_details reports best_seller=true with the rank. For a rank claim, use product_details or best_sellers.
⟨74 unchanged words⟩ the field, what you expected, what yougot.got, and the request_id from the answer. One issue per entry -- a five-point list cannot be closed point by point. category: bug | wish | praise | ⟨39 unchanged words⟩