Apiguru Amazon Data
Server Details
Live Amazon product, review, search, deal, offer/stock and seller data across 20 marketplaces.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-11-25
- URL
- Repository
- apiguru-app/agent-kit
- GitHub Stars
- 0
TDQS
Scored across 12 tools
Most tools target clearly distinct resources: products, offers, sellers, deals, and reviews. The main overlap is between search and seller_products, but seller_products is explicitly scoped to a storefront, so the boundary is clear enough.
Names are all readable and underscore-based, but conventions are mixed: some use verb_noun (list_capabilities, send_feedback), some are bare noun phrases (best_sellers, product_details), and one is a bare verb (search). The batch suffix is also applied inconsistently across product_details_batch and seller_profile_batch.
12 tools is well-scoped for an Amazon data server covering products, search, offers, sellers, deals, reviews, and best-seller rankings. Each tool serves a distinct purpose and none feel redundant.
The surface covers the core read-only Amazon dataset well: product details and batch lookup, reviews, offers/stock, search, seller products/profile/reviews, deals, and best sellers. Minor gaps like standalone category browsing or finer-grained review filtering are workarounds rather than blockers.
Available Tools
12 toolsbest_sellersBest-seller rankings for a categoryARead-onlyIdempotentInspect
Best-seller rankings for a department of one marketplace, 50 per page. 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 the node 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 - calling it bare returns US appliances page 1. category accepts a slug, a display name, one of the older US department 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. page is capped at 5 (a 400 beyond, not a 500). rank is the position within the requested list on this page. Rows are the same for every marketplace; only the department vocabulary differs, and the answer carries it.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| page | No | Result page, 1-based, 50 rows each; Amazon's lists stop at page 5. | |
| limit | No | How many ranked products to return from this page (0 = all of them). A full page is up to 48 rows and about 54 KB, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims. | |
| fields | No | Comma-separated row fields to return instead of the light set, e.g. "asin,product_title,product_price". Rows list what they left out under _omitted_fields. | |
| compact | No | Return light rows: identity, price, rating, badges and one delivery_date, dropping the long delivery prose that repeats itself across three fields. false returns every field the REST API sends (roughly 3x the size). | |
| category | No | Best-seller department, by slug or by name as Amazon shows it 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: amazon.com has electronics, amazon.de has ce-de (Electronics & Photo). Every answer lists that marketplace's departments under available_categories; an unknown or ambiguous name is a free 400 listing them. | appliances |
| subcategory_code | No | Browse node id under `category`: one from available_subcategories of a previous answer, or on amazon.com any node id at any depth (679410011 is Women > Shoes > Mules & Clogs) or a name resolved under the department ("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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| page | No | |
| success | No | |
| category | No | |
| max_page | No | |
| page_size | No | |
| request_id | No | |
| category_resolution | No | |
| available_categories | No | |
| available_subcategories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, the description discloses cost ($0.01 per call), hard limits (page capped at 5, a 400 not a 500), truncation signals (_truncated, _omitted_fields), and the full shape of the response envelope (category_resolution, available_categories, available_subcategories). That is substantial operational context the annotations do not provide.
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?
The description repeats itself: the amazon.com any-depth node-id rule appears three times ('subcategory_code also takes any browse node id at any depth', 'the whole browse tree is known: subcategory_code takes any node id...') and the fragment-resolution hint is explained twice. The key routing information is buried mid-paragraph behind repeated asides, so several sentences do not earn their place.
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?
Given an output schema exists and annotations cover the safety profile, the description still supplies everything needed to call it correctly: defaults, geography vocabulary differences, pagination ceiling, cost, and error semantics. Nothing material is missing for a zero-required-parameter ranking 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 already 100%, so baseline is 3, but the description adds real meaning: category accepts slug, display name, legacy US names, or a unique fragment with category_resolution.via reporting which; subcategory_code takes any browse-node id at any depth on amazon.com or a resolved name. The ambiguity 400 behavior is also explained.
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 opening sentence names a specific resource ('Best-seller rankings for a department of one marketplace, 50 per page'), which is clearly distinct from a generic search or deals listing. It stops short of explicitly contrasting with siblings like search or deals, but the verb+resource+scope is unambiguous.
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?
Usage is implied rather than stated: 'No required parameters - calling it bare returns US appliances page 1' tells the agent how a default call behaves, and the free-400 behavior for unknown names steers recovery. There is no explicit 'use this instead of X when Y' guidance against the search or deals siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dealsCurrent Amazon deals with filtersARead-onlyIdempotentInspect
Returns the current Amazon deals feed: ASIN, title, deal price, list price, discount, deal badge, start/end time and product links. Filter by department (categories), brand id (brands), rating cut-off, price bounds, minimum discount and Prime program. Every answer carries available_filters (the category and brand ids this marketplace accepts, with names), filters_applied / filters_ignored (what took effect) and next_offset (the next page, null when the feed ends). Price: $0.01 per call. Filters are by id: categories takes a department id or name, brands takes brand ids only; available_filters in every answer lists both with names, and filters_applied / filters_ignored report what Amazon honoured. A page is 30 rows; page with offset=next_offset (null when exhausted); total_count caps at 500. min_price, max_price, min_discount and max_discount are applied to the rows after the fetch, scanning up to 3 upstream pages per call, so a page can hold fewer than 30 rows and total_count does not reflect them. An empty answer carries a hint saying why. Deal prices expire: check deal_ends_at. The older price_range and discount_range parameters are still accepted, as buckets (1-5 = under 25 / 25-50 / 50-100 / 100-200 / 200 and up; 1-4 = 10 / 25 / 50 / 70 percent off or more) or as bands such as 25-50 and 70+.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| limit | No | How many deals to return from this page (0 = all of them). A full page is 30 rows and roughly 35 KB with every field, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims. | |
| brands | No | Comma-separated brand ids, e.g. 46655 for Samsung on US. Take them from brand_id on any deals row or from available_filters.brands (the brands present in the current result). Names resolve only when this marketplace has already shown that brand; for a brand by name use /search with brand=<name> and today_deals=true instead. | |
| fields | No | Comma-separated row fields to return instead of the light set, e.g. "asin,product_title,product_price". Rows list what they left out under _omitted_fields. | |
| offset | No | Row to start at. A page is 30 rows; pass the previous answer's next_offset for the next page. | |
| compact | No | Return light rows: identity, prices, discount, badge, end time, links, brand_id and department_ids, dropping the image arrays. false returns every field the REST API sends. | |
| max_price | No | Highest deal price to return, in the marketplace currency. | |
| min_price | No | Lowest deal price to return, in the marketplace currency. Applied to the fetched rows; see notes. | |
| categories | No | Department to restrict to: its id from available_filters.categories, or its name as Amazon shows it for that marketplace (case-insensitive; a unique fragment such as "electronics" works). US departments: Amazon Devices & Accessories, Appliances, Arts Crafts & Sewing, Audible Books & Originals, Automotive, Baby Products, Beauty & Personal Care, Books, CDs & Vinyl, Cell Phones & Accessories, Clothing Shoes & Jewelry, Collectibles & Fine Art, Electronics, Everything Else, Grocery & Gourmet Food, Handmade Products, Health & Household, Home & Kitchen, Industrial & Scientific, Kindle Store, Movies & TV, Musical Instruments, Office Products, Patio Lawn & Garden, Pet Supplies, Software, Sports & Outdoors, Tools & Home Improvement, Toys & Games, Video Games. Other marketplaces use their own localised names -- read them from available_filters.categories of any deals answer for that geo. An unknown name is a free 400 listing the valid names. | |
| max_discount | No | Largest discount percentage to return. | |
| min_discount | No | Smallest discount percentage to return, e.g. 50 for half price or better. | |
| prime_exclusive | No | Only deals in Amazon's Prime Exclusive program. | |
| prime_early_access | No | Only Prime Early Access deals. A marketplace lists the programs it is running under available_filters.prime_programs; when Early Access is not running the answer is empty with a hint saying so. | |
| min_product_star_rating | No | Amazon's deals feed offers one rating cut-off: 4 = four stars and up. ALL or omitted = no cut-off. Other values are rejected with a free 400. |
Output Schema
| Name | Required | Description |
|---|---|---|
| deals | No | |
| success | No | |
| request_id | No | |
| amazon_request_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description goes far beyond that: it discloses the $0.01 per-call price, pagination mechanics (30-row pages, next_offset, total_count cap at 500), that min/max price and discount filters are applied post-fetch (so a page can hold fewer than 30 rows), that deal prices expire (check deal_ends_at), that empty answers carry a hint, and that deprecated price_range/discount_range parameters still work. This is rich behavioral disclosure well beyond the annotations.
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?
The description is long but well structured: purpose first, then filters, then pagination, then pricing, then deprecated params. Every sentence carries information. It could be tightened (e.g., the long list of US departments could be shortened since available_filters lists them), but it is front-loaded and organized, so it earns a 4.
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 14 parameters, an output schema, and many behavioral nuances, the description covers everything an agent needs: pagination, filtering rules, pricing, deprecated parameters, hints for empty results, and expiration. The output schema likely details the return structure, and the description complements it with explanations of filters_applied/filters_ignored, next_offset, and total_count. Nothing critical is missing.
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% โ every parameter has a description. The description adds significant extra meaning: for categories it lists all US departments and explains name matching; for brands it explains where to get IDs and when names resolve; for limit it explains truncation and _truncated; for offset it ties to next_offset; for min_product_star_rating it explains the only accepted value and the free 400. It also clarifies deprecated bucket parameters. This is far above the baseline for high schema coverage.
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 opens with 'Returns the current Amazon deals feed: ASIN, title, deal price, list price, discount, deal badge, start/end time and product links.' That is a specific verb (returns) + resource (deals feed) and enumerates the output fields. It clearly distinguishes this tool from siblings like search, best_sellers, or product_details because it is exclusively about the deals feed and its filters.
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 explains the main use case (fetching current deals with filters) and gives one explicit routing rule: 'for a brand by name use /search with brand=<name> and today_deals=true instead.' It also explains when certain filters are ignored (e.g., 'filters_applied / filters_ignored report what Amazon honoured'). It does not systematically compare against every sibling, but it gives enough context for an agent to know this is the deals tool and points to search for a specific alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_capabilitiesList endpoints, prices and marketplaces (free)ARead-onlyIdempotentInspect
List every Apiguru endpoint with its price, required parameters and supported marketplaces, plus your current access mode, cache and session budget. Free: answers locally with no network request and no charge. Call this before paid tools if you need to plan.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context by stating it is free, answers locally with no network request, and avoids any charge, which goes beyond what the annotations convey.
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?
The description is compact, front-loaded with the core purpose, and every sentence adds value. It efficiently conveys what the tool lists, that it is free and local, and when to call it.
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, no return-format explanation is needed, and the zero-parameter schema leaves no input ambiguity. The description covers purpose, cost behavior, local execution, and usage timing, making it fully sufficient for an agent to invoke the tool 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?
The tool has zero parameters, so the description carries no parameter burden; the baseline of 4 applies. The description does not need to explain input semantics since there are none.
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 clearly states the tool lists every Apiguru endpoint with price, required parameters, and supported marketplaces, making its purpose unmistakable. It also distinguishes itself from the sibling tools by being a free, meta-level capability listing rather than a data retrieval tool.
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 explicitly advises calling this tool before paid tools when planning is needed, giving clear usage context. It does not enumerate when-not-to-use cases or name alternative tools, but the guidance is sufficiently clear for an agent to choose it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
offers_stockLive offers and inventory for up to 10 ASINsARead-onlyIdempotentInspect
Returns the current offer list per ASIN (seller, price, condition, buy-box winner) and, optionally, the actual purchasable stock quantity. Price: $0.015 per item (max 10). Billed per upstream Amazon request, which is more 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.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| asins | Yes | Comma-separated ASIN list, maximum 10. Each must be 10 uppercase alphanumeric characters; malformed entries are rejected with 400. | |
| condition | No | Comma-separated condition filter: ALL, NEW, USED_LIKE_NEW, USED_VERY_GOOD, USED_GOOD, USED_ACCEPTABLE (case-insensitive). Omit for every offer. An unknown value is a free 400 listing the allowed ones; it used to be silently treated as ALL. | |
| offers_count | No | '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. | all |
| check_inventory | No | Resolve the true purchasable stock quantity. Slower and bills more upstream requests, so leave off unless you need the number. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No | |
| request_id | No | |
| country_code | No | |
| response_time | No | |
| filters_applied | No | |
| amazon_request_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive, but the description goes beyond them: it discloses the pricing model ($0.015 per item, billing per upstream request), that check_inventory multiplies requests, the exact behavior of offers_count=winner (including a historical change note), the legacy alias /scrape, and edge cases like empty lists and filters_applied. This is rich behavioral context with no contradiction.
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?
The description is compact (three sentences) and front-loaded with the core function, followed by pricing, then behavior details, then alias. No redundancy; every clause adds unique information. It avoids repeating schema content and stays under 100 words.
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?
Given the complexity (5 params, output schema, annotations), the description covers the essential behavioral nuances: billing, offer filtering, legacy alias, and edge cases. The output schema exists, so return format doesn't need to be described. The description is complete for an agent to call correctly and predict outcomes.
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% with detailed descriptions for all five parameters, so the baseline is 3. The description adds value by explaining cost implications (billing per request, more when check_inventory is true) and legacy behavior for offers_count, which are not in the schema. It doesn't fully re-explain parameter syntax but supplements with operational context, earning a 4.
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?
States a specific verb and resource: returns the current offer list per ASIN with seller, price, condition, and buy-box winner, optionally adding the purchasable stock quantity. The title and description clearly distinguish it from siblings like product_details or product_reviews, making its scope unambiguous.
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 implies when to use it (for offers and inventory) and gives usage tips within the tool (e.g., 'leave off unless you need the number' for check_inventory), but it never explicitly compares it to sibling tools or states when not to use it. No exclusions or alternative routing are given, so the agent must infer from the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
product_detailsFull product detail for a single ASINARead-onlyIdempotentInspect
Fetches the complete product record for one ASIN on one marketplace: title, price, star rating, rating count, images, description, feature bullets, variations and category. Price: $0.01 per call. 404 means the ASIN is absent from that marketplace and IS billed. 503 means our fetch failed and is NOT billed - retry. Bullet points and specs are what Amazon shows for the listing; on multi-variant listings they can describe the product family rather than the exact variant. A null field means Amazon did not show it.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| asin | Yes | Single Amazon ASIN, 10 uppercase alphanumeric characters. Exactly one - comma-separated lists are rejected; use product_details_batch for many. | |
| fields | No | Comma-separated top-level fields to return instead of the compact set, e.g. "tech_specs,product_information". Any response lists what it left out under _omitted_fields. | |
| compact | No | Return the compact record (about 4 KB: identity, price, rating, availability, bullets, category, offer, buy box). false returns the full record (about 75 KB, includes from_manufacturer, tech_specs, product_information, product_reviews). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| success | No | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only, idempotent, open-world annotations, the description discloses per-call pricing, billing consequences of 404s, retry behavior for 503s, the multi-variant caveat about bullets/specs, and the meaning of null fields. This is exactly the behavioral context an agent needs to set expectations and handle failures.
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?
Each sentence earns its place: scope and data list, cost, billing/error semantics, data-acuracy caveat, and null-field meaning. The most important information is front-loaded, and the prose is dense without being verbose.
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 available, annotations covering safety and idempotence, and parameters fully documented in the schema, the description supplies the missing operational pieces: cost, billing on 404, retry on 503, multi-variant semantics, and null meaning. Nothing essential for using the tool correctly is left out.
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?
The input schema already covers all four parameters fully: asin has a pattern and format, geo has an enum, fields has an example, and compact describes sizes and outputs. The description does not add new parameter-level meaning beyond confirming the single-ASIN scope, so the schema-heavy baseline of 3 is appropriate.
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 clearly states the tool fetches the complete product record for one ASIN on one marketplace, and it enumerates the data returned: title, price, rating, images, bullets, variations, category. The 'one ASIN' scoping distinguishes it from batch and search tools, and the title reinforces the purpose.
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 gives clear operational guidance: it works on a single ASIN per marketplace, and it explains when to retry (503, not billed) versus when not to (404, billed). It does not explicitly name alternatives such as product_details_batch for multiple ASINs, but the single-ASIN framing and error-handling instructions make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
product_details_batchProduct detail for up to 20 ASINs in one callARead-onlyIdempotentInspect
Batch variant of product_details. Accepts a comma-separated ASIN list, deduplicates it, and fetches all of them concurrently. Far cheaper and faster than N single calls. Price: $0.008 per item (max 20). Billed per ASIN processed, including ones that come back not-found. More than 20 ASINs returns 413. Bullet points and specs are what Amazon shows for the listing; on multi-variant listings they can describe the product family rather than the exact variant. A null field means Amazon did not show it.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| asins | Yes | Comma-separated ASIN list, maximum 20 after de-duplication. Each must be 10 uppercase alphanumeric characters. | |
| fields | No | Comma-separated top-level fields to return instead of the compact set, e.g. "tech_specs,product_information". Any response lists what it left out under _omitted_fields. | |
| compact | No | Return the compact record (about 4 KB: identity, price, rating, availability, bullets, category, offer, buy box). false returns the full record (about 75 KB, includes from_manufacturer, tech_specs, product_information, product_reviews). |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No | |
| request_id | No | |
| country_code | No | |
| response_time | No | |
| amazon_request_count | No | |
| billable_requests_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and idempotent annotations, the description discloses deduplication, concurrent fetching, pricing per ASIN including not-found results, a 413 error for over 20 ASINs, the caveat about multi-variant listing data, and the meaning of null fields. This is substantial behavioral context that annotations alone would not provide.
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?
The description is compact yet information-dense: it states the tool's relationship to product_details, the core behavior, pricing, limits, and important data caveats in a few sentences. Every sentence adds useful information without padding.
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?
The description covers what the tool does, when to use it, cost, limits, error behavior, data quality caveats, and response field meanings. Given that an output schema exists and annotations cover safety, nothing essential is missing for an agent to select and invoke this tool 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?
The input schema already fully documents all four parameters, so the baseline is 3. The description adds valuable semantics by explaining that ASINs are deduplicated, that billing applies even to not-found ASINs, and that bullet/spec fields may describe the product family rather than the exact variant.
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 states a specific verb ('fetches'), a resource (product details for ASINs), and a defining constraint (up to 20 ASINs per call). It explicitly identifies itself as a 'Batch variant of product_details', which immediately distinguishes it from the sibling tool.
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 clearly establishes when to use this tool: for multiple ASINs, because it is 'far cheaper and faster than N single calls', and the 20-ASIN limit sets a boundary. It does not explicitly name the alternative tool for single calls, but 'Batch variant of product_details' makes the alternative obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
product_reviewsCustomer reviews for a single ASINARead-onlyIdempotentInspect
Returns the review block for one ASIN: overall star rating, total rating count, Amazon's 'customers say' AI summary, and the individual review list. Price: $0.01 per call. Same 404-billed / 503-not-billed semantics as product_details. Takes no filters: it returns the rating, rating count, the 'customers say' summary and the reviews Amazon shows on the product page itself. There is no paging, star filter or sort -- Amazon's review pages require a signed-in customer, and the API does not sign in. For per-star counts read the rating histogram on product_details.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| asin | Yes | Single Amazon ASIN, 10 uppercase alphanumeric characters. | |
| max_reviews | No | Cap on individual reviews returned (0 = all). The rating summary and customers_say are always returned; _reviews_total says how many exist. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| success | No | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses pricing per call, billing semantics for 404 vs 503 responses, and the reason no paging exists: Amazon's review pages require a signed-in customer and the API does not sign in. This adds substantial behavioral context beyond the structured hints.
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?
The description is compact and front-loaded, with each sentence earning its place: what it returns, cost and billing context, constraints, and an alternative. No filler or repetition.
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?
Given the rich annotations, complete schema coverage, and the presence of an output schema, the description covers the key operational constraints, pricing, and alternative routing. An agent has everything needed to decide whether and how to call it.
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 the schema already documents asin, geo, and max_reviews clearly. The tool description adds general behavioral context but no additional parameter-level semantics beyond what the input schema provides.
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 opens with a specific verb and resource: 'Returns the review block for one ASIN' and enumerates the exact contents (star rating, rating count, 'customers say' summary, review list). It also distinguishes itself from product_details by explicitly noting what it does not provide, such as star filters and paging.
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 clearly states that this tool takes no filters and has no paging, star filter, or sort, which tells an agent what not to expect. It explicitly directs agents to product_details for per-star counts, giving an actionable alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch Amazon products by keywordARead-onlyIdempotentInspect
Search Amazon products by keyword. Filters: page, sort_by, category_id (browse node), min_price / max_price (decimals), product_condition (NEW / USED / RENEWED), brand, seller_id, today_deals and deal_type (coupons, all_discounts, buy_more_save_more). Every answer carries filters_applied, filters_ignored (with the reason) and available_filters for that marketplace. Price: $0.01 per call. Blank values and the literal string 'null' are treated as unset. Invalid page, sort_by, price, product_condition or deal_type is a free 400 naming the parameter and the allowed values. Condition and deal refinements use per-marketplace node ids captured from Amazon's own search pages; a marketplace that lacks one gets the unfiltered feed plus an entry under filters_ignored, never a silent empty page. product_num_ratings and offers_count are integers; product_star_rating, product_price and product_original_price are decimal strings; a null field means Amazon did not show it. is_prime is true when the result carries a Prime badge or its delivery line offers Prime delivery. metadata.total_pages says how far page can go. A full page is up to 48 results and about 54 KB; the tool returns the first 10 as light rows by default and the 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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| page | No | Result page, 1-based. metadata.total_pages says how far it goes. | |
| brand | No | Brand name as Amazon spells it (case-insensitive), e.g. Samsung. | |
| limit | No | How many search results to return from this page (0 = all of them). A full page is up to 48 rows and about 54 KB, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims. | |
| query | Yes | Search keywords. Required and must be non-empty. | |
| fields | No | Comma-separated row fields to return instead of the light set, e.g. "asin,product_title,product_price". Rows list what they left out under _omitted_fields. | |
| compact | No | Return light rows: identity, price, rating, badges and one delivery_date, dropping the long delivery prose that repeats itself across three fields. false returns every field the REST API sends (roughly 3x the size). | |
| sort_by | No | Result ordering. | RELEVANCE |
| deal_type | No | A specific promotion refinement: today_deals, all_discounts, coupons or buy_more_save_more. available_filters.deal_type lists the ones this marketplace has. | |
| max_price | No | Highest price, in the marketplace currency. | |
| min_price | No | Lowest price, in the marketplace currency; decimals such as 19.99 are fine. | |
| seller_id | No | Restrict results to one seller's offers (Amazon seller id). | |
| category_id | No | Amazon browse node id to restrict to, e.g. 172282 (Electronics on US). Take one from a best_sellers answer's available_subcategories, a product's category_path, or node= in an Amazon URL. Ids differ per marketplace. | |
| today_deals | No | Only items in Today's Deals, using that marketplace's own refinement. Where a marketplace has none (amazon.fr on 2026-09-08) it is reported under filters_ignored. | |
| product_condition | No | NEW, USED or RENEWED (case-insensitive). Applied with the marketplace's own condition node; where a marketplace does not offer one, the answer's filters_ignored says so and available_filters lists what it does offer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | |
| metadata | No | |
| products | No | |
| request_id | No | |
| filters_applied | No | |
| filters_ignored | No | |
| available_filters | No | |
| amazon_request_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say read-only, open-world, and idempotent; the description adds a huge amount of behavioral context: $0.01 pricing, free 400s naming invalid parameters, blank/null semantics, marketplace-specific node fallbacks with filters_ignored, truncation, is_prime derivation, upstream 503 retry behavior, and exact empty-result semantics. Nothing contradicts the annotations.
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?
The description is long, but the tool is complex with 15 parameters and rich failure modes. It is front-loaded with the purpose and filter list, and nearly every sentence adds operational value; minor redundancy with schema descriptions and output-schema field notes keeps it from a 5.
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?
For a tool of this complexity, nothing necessary for correct invocation is missing: pagination bounds, field types, projection/truncation behavior, marketplace caveats, error codes with retry semantics, and cost are all covered. The output schema handles return-value structure, leaving the description free to focus on behavior.
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%, so the schema already documents every parameter; the description earns extra credit by explaining cross-cutting semantics such as unset blank/'null' values, invalid value error behavior, decimal price handling, and per-marketplace availability for deal_type and product_condition. It does not restate each schema description but adds meaning beyond the JSON Schema.
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 states a specific verb and resource: 'Search Amazon products by keyword', and the description immediately enumerates the available filters. This cleanly separates it from siblings like deals, best_sellers, and product_details, whose names imply different entry points.
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 keyword-search scope provides clear context for when to choose it over the other product-listing tools, and it explicitly routes rank claims to 'product_details or best_sellers'. There is no general exclusion list for deals or seller tools, but the core use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seller_productsProducts listed by a sellerARead-onlyIdempotentInspect
Products listed by a seller: a storefront search. Takes the same filters as search -- query, page, sort_by, category_id, min_price / max_price, product_condition, brand, today_deals, deal_type -- and answers with filters_applied, filters_ignored and available_filters like search does. Price: $0.01 per call. Unlike seller_profile_batch, seller_id format is not pattern-validated here. metadata.total_pages says how far page goes (48 rows a page). Invalid sort_by, price, product_condition or deal_type is a free 400 that lists the allowed values.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| page | No | Result page, 1-based. metadata.total_pages says how far it goes. | |
| brand | No | Brand name as Amazon spells it (case-insensitive), e.g. Samsung. | |
| limit | No | How many the seller's products to return from this page (0 = all of them). A full page is up to 48 rows and about 54 KB, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims. | |
| query | No | Optional keywords to search within this seller's storefront. | |
| fields | No | Comma-separated row fields to return instead of the light set, e.g. "asin,product_title,product_price". Rows list what they left out under _omitted_fields. | |
| compact | No | Return light rows: identity, price, rating, badges and one delivery_date, dropping the long delivery prose that repeats itself across three fields. false returns every field the REST API sends (roughly 3x the size). | |
| sort_by | No | Result ordering. | RELEVANCE |
| deal_type | No | A specific promotion refinement: today_deals, all_discounts, coupons or buy_more_save_more. available_filters.deal_type lists the ones this marketplace has. | |
| max_price | No | Highest price, in the marketplace currency. | |
| min_price | No | Lowest price, in the marketplace currency; decimals such as 19.99 are fine. | |
| seller_id | Yes | Restrict results to one seller's offers (Amazon seller id). | |
| category_id | No | Amazon browse node id to restrict to, e.g. 172282 (Electronics on US). Take one from a best_sellers answer's available_subcategories, a product's category_path, or node= in an Amazon URL. Ids differ per marketplace. | |
| today_deals | No | Only items in Today's Deals, using that marketplace's own refinement. Where a marketplace has none (amazon.fr on 2026-09-08) it is reported under filters_ignored. | |
| product_condition | No | NEW, USED or RENEWED (case-insensitive). Applied with the marketplace's own condition node; where a marketplace does not offer one, the answer's filters_ignored says so and available_filters lists what it does offer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| success | No | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, it discloses pricing ($0.01 per call), page size (48 rows), output keys (filters_applied, filters_ignored, available_filters), and free 400 errors listing allowed values for invalid filters. It also calls out the seller_id validation difference versus seller_profile_batch, which is useful non-obvious behavior.
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?
The description is compact, with the core purpose first and high-value caveats (cost, validation, pagination) following in a few sentences. No sentence is redundant with the annotations, and the structure lets an agent scan the key facts quickly.
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?
For a 15-parameter tool, the description plus the detailed schema and output schema covers selection and invocation: cost, error behavior, pagination, and output shape. The annotations already supply the read-only/idempotent safety profile, so nothing critical is missing.
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?
With 100% schema description coverage, the schema already documents all 15 parameters; the description adds semantic grouping by saying they are the same filters as search and that invalid values yield a free 400. This is meaningful context beyond the individual schema entries.
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 opens with 'Products listed by a seller: a storefront search' and immediately establishes the resource and scoped operation. It differentiates from siblings by noting that seller_id is not pattern-validated, unlike seller_profile_batch, though it lacks a direct imperative verb like 'lists' or 'searches'.
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 tells the agent that this is a storefront search taking the same filters as search, giving clear context for when the tool applies. It contrasts seller_id handling with seller_profile_batch but does not explicitly spell out when to choose this over marketplace-wide search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seller_profile_batchSeller profiles for up to 10 seller IDsARead-onlyIdempotentInspect
Returns the storefront profile for each seller id: business name, rating, feedback counts, address and marketplace presence. Price: $0.012 per item (max 10). Seller ID validation is all-or-nothing: one 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.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| seller_ids | Yes | Comma-separated seller IDs, maximum 10. Each must be 13-15 alphanumeric characters or the whole call 400s. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| results | No | |
| request_id | No | |
| unavailable | No | |
| country_code | No | |
| response_time | No | |
| amazon_request_count | No | |
| billable_requests_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond annotations: it discloses all-or-nothing validation, billing rules for each status, that rows are never null, the billable_requests_count semantics, and the pay-per-call settlement. It also explains the 'unavailable' status is not billed and is retryable. This is comprehensive behavioral disclosure that annotations alone do not provide.
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?
The description is dense but every sentence adds value: return contents, pricing, validation rule, status semantics, billing count, and retry advice. It is front-loaded with the core purpose and then details edge cases. No wasted words or redundancy.
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 format is covered. The description thoroughly addresses edge cases (malformed IDs, not_found, unavailable), billing behavior, retry strategy, and the max limit. For a batch tool with nuanced error handling, this is complete and actionable.
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%, with both parameters already well-documented in the schema (geo enum with default, seller_ids pattern and max 10). The description adds minor context about validation and pricing, but the schema already carries the semantic weight. Baseline 3 is appropriate given high schema coverage.
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 clearly states the tool returns storefront profiles for seller IDs, listing specific data fields (business name, rating, feedback counts, address, marketplace presence). The verb 'returns' and resource 'storefront profile' are unambiguous, and the batch nature distinguishes it from singular profile tools among siblings like seller_products or seller_reviews.
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 provides explicit usage guidance on handling different statuses (ok, not_found, unavailable), billing implications, and a direct instruction to retry unavailable IDs in a separate call. However, it does not explicitly compare against alternative tools or state when to prefer this over siblings, so a slight gap remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seller_reviewsFeedback reviews for a sellerARead-onlyIdempotentInspect
Returns paginated seller feedback, optionally filtered to a star-rating window. Price: $0.01 per call. from_rating and to_rating are optional; omit both for unfiltered feedback. A page holds 5 reviews and the answer carries current_page and has_next_page; Amazon exposes no total, so page until has_next_page is false (up to page 100).
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Marketplace country code. | US |
| page | No | Result page, 1-based, 5 reviews a page; has_next_page in the answer says whether another exists. | |
| limit | No | How many seller reviews to return from this page (0 = all of them). A full page is up to 48 rows and about 54 KB, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims. | |
| fields | No | Comma-separated row fields to return instead of the light set, e.g. "asin,product_title,product_price". Rows list what they left out under _omitted_fields. | |
| compact | No | Return light rows: identity, price, rating, badges and one delivery_date, dropping the long delivery prose that repeats itself across three fields. false returns every field the REST API sends (roughly 3x the size). | |
| seller_id | Yes | Amazon seller ID. Required. | |
| to_rating | No | Highest star rating to include, 1-5. | |
| from_rating | No | Lowest star rating to include, 1-5. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| success | No | |
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond annotations: the $0.01 per-call cost, the 5-review page size, the lack of a total count, and the page-100 cap. This gives an agent important operational expectations.
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?
The description is compact: three sentences, each earning its place. It front-loads the core purpose, then adds cost, filtering, and pagination guidance. No filler or redundant restating of the tool name.
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 a rich input schema, output schema, and strong annotations, the description covers the essential operational details well. The only gap is the unresolved contradiction between the stated page size and the `limit` parameter's description, which prevents it from being fully complete for an autonomous agent.
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 the baseline is 3. The description adds meaning by explaining that from_rating/to_rating are optional and omitting both yields unfiltered feedback, and by clarifying pagination behavior. However, it does not reconcile the internal inconsistency between the '5 reviews a page' statement and the `limit` parameter's 'full page is up to 48 rows' description, so it could confuse agents about page size and limit semantics.
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 opens with a specific verb and resource: 'Returns paginated seller feedback'. It also clarifies the optional star-rating window, immediately distinguishing it from sibling tools like product_reviews. This is unambiguous and names exactly what the tool does.
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 gives concrete instructions: omit both rating parameters for unfiltered feedback, and page until has_next_page is false (up to page 100). It does not explicitly name sibling alternatives or state when not to use this tool, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_feedbackReport a bug or request a feature (free)AInspect
Report a bug, ask for a field, or say what would make this API more useful. Free: never billed, no API key needed.
Prefer GitHub if you have an account -- an issue at
https://github.com/apiguru-app/agent-kit/issues gets a reply on the
thread, this wall does not. Use this tool when you have no GitHub
account or nothing to attach one to.
message: what happened or what you want. Be specific: the tool, the
parameters, the field, what you expected, what you 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 | question | other
endpoint: which tool or path it is about, e.g. "search".
agent: what you are, e.g. "acme-pricing-bot/2.1". Optional.
contact: a GitHub handle or email if you want a reply. Shown
publicly on the wall. Optional.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | ||
| contact | No | ||
| message | Yes | ||
| category | No | other | |
| endpoint | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, open-world, non-idempotent but non-destructive call. The description adds real value beyond that: no billing, no API key, contact details are shown publicly on the wall, and replies do not come back on this channel. It stops short of stating what a submission returns or whether repeated submissions create duplicate entries, so not a full 5.
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?
Front-loaded with purpose, then routing advice, then a clean per-field block โ a sensible order with no filler sentences. It runs somewhat long and the embedded advice about 'one issue per entry / five-point list' blurs the line between guidance and field definition, but nothing is truly wasteful.
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 values need not be explained. The description covers the remaining obligations: purpose, routing rule, privacy of contact, cost/auth profile, and per-parameter meaning. For a 5-parameter, 0%-coverage schema this is complete enough to invoke 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 0%, so the description carries the entire burden and does so: every one of the five parameters is explained with intent and examples (category values bug|wish|praise|question|other, endpoint e.g. 'search', agent e.g. 'acme-pricing-bot/2.1', contact as GitHub handle/email, message content guidance). It also flags agent and contact as optional, matching the required-only 'message' in the schema.
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 opening sentence states a specific action (report a bug, request a field, give feedback) and the resource (this API itself), which is a sharp contrast to every sibling tool (best_sellers, search, product_details) that queries catalog data. An agent can immediately tell this is the only write/feedback channel in the toolset. The 'free / no API key' clause further frames it as a zero-cost fallback path.
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?
Explicitly names the preferred alternative (GitHub issue on apiguru-app/agent-kit, which gets a threaded reply) and the precise condition for selecting this tool instead ('when you have no GitHub account or nothing to attach one to'). This is exactly the when/when-not/alternative structure that earns a top score.
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.
2 tool updates
- Changed
offers_stock2 fields changed- changed
Input schema / properties / offers_count / descriptionPrevious value: -"'all' for every offer, 'winner' for the buy-box offer only, or a specific alphanumeric Offer ID."New value: +"'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." - added
Output schema / properties / filters_appliedAdded value: +{ + "default": null, + "title": "Filters Applied" +}
- Changed
seller_profile_batch2 fields changed- added
Output schema / properties / noteAdded value: +{ + "default": null, + "title": "Note" +} - added
Output schema / properties / unavailableAdded value: +{ + "default": null, + "title": "Unavailable" +}
1 tool update
- Changed
best_sellers3 fields changed- changed
Input schema / properties / category / descriptionPrevious value: -"Best-seller department, by slug or by name as Amazon shows it for that marketplace (case-insensitive; a unique fragment works). Departments and their slugs differ per marketplace: amazon.com has electronics, amazon.de has ce-de (Electronics & Photo). Every answer lists that marketplace's departments under available_categories; an unknown or ambiguous name is a free 400 listing them."New value: +"Best-seller department, by slug or by name as Amazon shows it 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: amazon.com has electronics, amazon.de has ce-de (Electronics & Photo). Every answer lists that marketplace's departments under available_categories; an unknown or ambiguous name is a free 400 listing them." - changed
Input schema / properties / subcategory_code / descriptionPrevious value: -"Browse node id of a child of `category`, from available_subcategories of a previous answer for that category (a name from that list works too)."New value: +"Browse node id under `category`: one from available_subcategories of a previous answer, or on amazon.com any node id at any depth (679410011 is Women > Shoes > Mules & Clogs) or a name resolved under the department (\"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." - added
Output schema / properties / category_resolutionAdded value: +{ + "default": null, + "title": "Category Resolution" +}
5 tool updates
- Changed
best_sellers10 fields changed- changed
Input schema / properties / category / descriptionPrevious value: -"Category slug, lowercased by the server. Defaults to 'appliances'."New value: +"Best-seller department, by slug or by name as Amazon shows it for that marketplace (case-insensitive; a unique fragment works). Departments and their slugs differ per marketplace: amazon.com has electronics, amazon.de has ce-de (Electronics & Photo). Every answer lists that marketplace's departments under available_categories; an unknown or ambiguous name is a free 400 listing them." - changed
Input schema / properties / page / descriptionPrevious value: -"Result page, 1-based."New value: +"Result page, 1-based, 50 rows each; Amazon's lists stop at page 5." - added
Input schema / properties / page / maximumAdded value: +5 - changed
Input schema / properties / subcategory_code / descriptionPrevious value: -"Optional subcategory node id to drill into."New value: +"Browse node id of a child of `category`, from available_subcategories of a previous answer for that category (a name from that list works too)." - added
Output schema / properties / available_categoriesAdded value: +{ + "default": null, + "title": "Available Categories" +} - added
Output schema / properties / available_subcategoriesAdded value: +{ + "default": null, + "title": "Available Subcategories" +} - added
Output schema / properties / categoryAdded value: +{ + "default": null, + "title": "Category" +} - added
Output schema / properties / max_pageAdded value: +{ + "default": null, + "title": "Max Page" +} - added
Output schema / properties / pageAdded value: +{ + "default": null, + "title": "Page" +} - added
Output schema / properties / page_sizeAdded value: +{ + "default": null, + "title": "Page Size" +}
- Changed
offers_stock1 field changed- changed
Input schema / properties / condition / descriptionPrevious value: -"Comma-separated condition filter. Any of ALL, NEW, USED_LIKE_NEW, USED_VERY_GOOD, USED_GOOD, USED_ACCEPTABLE. Unrecognised values silently fall back to ALL."New value: +"Comma-separated condition filter: ALL, NEW, USED_LIKE_NEW, USED_VERY_GOOD, USED_GOOD, USED_ACCEPTABLE (case-insensitive). Omit for every offer. An unknown value is a free 400 listing the allowed ones; it used to be silently treated as ALL."
- Changed
search16 fields changed- changed
Input schema / properties / brand / descriptionPrevious value: -"Brand name filter."New value: +"Brand name as Amazon spells it (case-insensitive), e.g. Samsung." - changed
Input schema / properties / category_id / descriptionPrevious value: -"Restrict to an Amazon category id."New value: +"Amazon browse node id to restrict to, e.g. 172282 (Electronics on US). Take one from a best_sellers answer's available_subcategories, a product's category_path, or node= in an Amazon URL. Ids differ per marketplace." - added
Input schema / properties / deal_typeAdded value: +{ + "anyOf": [ + { + "enum": [ + "today_deals", + "all_discounts", + "coupons", + "buy_more_save_more" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific promotion refinement: today_deals, all_discounts, coupons or buy_more_save_more. available_filters.deal_type lists the ones this marketplace has.", + "title": "Deal Type" +} - changed
Input schema / properties / max_price / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / max_price / descriptionPrevious value: -"Maximum price filter, marketplace currency."New value: +"Highest price, in the marketplace currency." - changed
Input schema / properties / min_price / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / min_price / descriptionPrevious value: -"Minimum price filter, marketplace currency."New value: +"Lowest price, in the marketplace currency; decimals such as 19.99 are fine." - changed
Input schema / properties / page / descriptionPrevious value: -"Result page, 1-based."New value: +"Result page, 1-based. metadata.total_pages says how far it goes." - changed
Input schema / properties / product_condition / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "NEW", + "USED", + "RENEWED" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / product_condition / descriptionPrevious value: -"Condition filter, e.g. NEW or USED."New value: +"NEW, USED or RENEWED (case-insensitive). Applied with the marketplace's own condition node; where a marketplace does not offer one, the answer's filters_ignored says so and available_filters lists what it does offer." - changed
Input schema / properties / seller_id / descriptionPrevious value: -"Restrict results to one seller."New value: +"Restrict results to one seller's offers (Amazon seller id)." - changed
Input schema / properties / today_deals / descriptionPrevious value: -"Restrict to items in today's deals."New value: +"Only items in Today's Deals, using that marketplace's own refinement. Where a marketplace has none (amazon.fr on 2026-09-08) it is reported under filters_ignored." - added
Output schema / properties / amazon_request_countAdded value: +{ + "default": null, + "title": "Amazon Request Count" +} - added
Output schema / properties / available_filtersAdded value: +{ + "default": null, + "title": "Available Filters" +} - added
Output schema / properties / filters_appliedAdded value: +{ + "default": null, + "title": "Filters Applied" +} - added
Output schema / properties / filters_ignoredAdded value: +{ + "default": null, + "title": "Filters Ignored" +}
- Changed
seller_products11 fields changed- added
Input schema / properties / brandAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Brand name as Amazon spells it (case-insensitive), e.g. Samsung.", + "title": "Brand" +} - added
Input schema / properties / category_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Amazon browse node id to restrict to, e.g. 172282 (Electronics on US). Take one from a best_sellers answer's available_subcategories, a product's category_path, or node= in an Amazon URL. Ids differ per marketplace.", + "title": "Category Id" +} - added
Input schema / properties / deal_typeAdded value: +{ + "anyOf": [ + { + "enum": [ + "today_deals", + "all_discounts", + "coupons", + "buy_more_save_more" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A specific promotion refinement: today_deals, all_discounts, coupons or buy_more_save_more. available_filters.deal_type lists the ones this marketplace has.", + "title": "Deal Type" +} - added
Input schema / properties / max_priceAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Highest price, in the marketplace currency.", + "title": "Max Price" +} - added
Input schema / properties / min_priceAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Lowest price, in the marketplace currency; decimals such as 19.99 are fine.", + "title": "Min Price" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Result page, 1-based."New value: +"Result page, 1-based. metadata.total_pages says how far it goes." - added
Input schema / properties / product_conditionAdded value: +{ + "anyOf": [ + { + "enum": [ + "NEW", + "USED", + "RENEWED" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "NEW, USED or RENEWED (case-insensitive). Applied with the marketplace's own condition node; where a marketplace does not offer one, the answer's filters_ignored says so and available_filters lists what it does offer.", + "title": "Product Condition" +} - added
Input schema / properties / queryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional keywords to search within this seller's storefront.", + "title": "Query" +} - changed
Input schema / properties / seller_id / descriptionPrevious value: -"Amazon seller ID. Required."New value: +"Restrict results to one seller's offers (Amazon seller id)." - added
Input schema / properties / sort_byAdded value: +{ + "default": "RELEVANCE", + "description": "Result ordering.", + "enum": [ + "RELEVANCE", + "BEST_SELLERS", + "LOW_HIGH_PRICE", + "HIGH_LOW_PRICE", + "REVIEWS", + "NEWEST" + ], + "title": "Sort By", + "type": "string" +} - added
Input schema / properties / today_dealsAdded value: +{ + "default": false, + "description": "Only items in Today's Deals, using that marketplace's own refinement. Where a marketplace has none (amazon.fr on 2026-09-08) it is reported under filters_ignored.", + "title": "Today Deals", + "type": "boolean" +}
- Changed
seller_reviews3 fields changed- changed
Input schema / properties / from_rating / descriptionPrevious value: -"Lower bound of the star-rating filter."New value: +"Lowest star rating to include, 1-5." - changed
Input schema / properties / page / descriptionPrevious value: -"Result page, 1-based."New value: +"Result page, 1-based, 5 reviews a page; has_next_page in the answer says whether another exists." - changed
Input schema / properties / to_rating / descriptionPrevious value: -"Upper bound of the star-rating filter."New value: +"Highest star rating to include, 1-5."
1 tool update
- Changed
deals15 fields changed- changed
Input schema / properties / brands / descriptionPrevious value: -"Brand filter."New value: +"Comma-separated brand ids, e.g. 46655 for Samsung on US. Take them from brand_id on any deals row or from available_filters.brands (the brands present in the current result). Names resolve only when this marketplace has already shown that brand; for a brand by name use /search with brand=<name> and today_deals=true instead." - changed
Input schema / properties / categories / descriptionPrevious value: -"Category filter."New value: +"Department to restrict to: its id from available_filters.categories, or its name as Amazon shows it for that marketplace (case-insensitive; a unique fragment such as \"electronics\" works). US departments: Amazon Devices & Accessories, Appliances, Arts Crafts & Sewing, Audible Books & Originals, Automotive, Baby Products, Beauty & Personal Care, Books, CDs & Vinyl, Cell Phones & Accessories, Clothing Shoes & Jewelry, Collectibles & Fine Art, Electronics, Everything Else, Grocery & Gourmet Food, Handmade Products, Health & Household, Home & Kitchen, Industrial & Scientific, Kindle Store, Movies & TV, Musical Instruments, Office Products, Patio Lawn & Garden, Pet Supplies, Software, Sports & Outdoors, Tools & Home Improvement, Toys & Games, Video Games. Other marketplaces use their own localised names -- read them from available_filters.categories of any deals answer for that geo. An unknown name is a free 400 listing the valid names." - changed
Input schema / properties / compact / descriptionPrevious value: -"Return light rows: identity, price, rating, badges and one delivery_date, dropping the long delivery prose that repeats itself across three fields. false returns every field the REST API sends (roughly 3x the size)."New value: +"Return light rows: identity, prices, discount, badge, end time, links, brand_id and department_ids, dropping the image arrays. false returns every field the REST API sends." - removed
Input schema / properties / discount_rangeRemoved value: -{ - "anyOf": [ - { - "enum": [ - "1", - "2", - "3", - "4", - "ALL" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Discount band bucket 1-4, or ALL.", - "title": "Discount Range" -} - changed
Input schema / properties / limit / descriptionPrevious value: -"How many deals to return from this page (0 = all of them). A full page is up to 48 rows and about 54 KB, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims."New value: +"How many deals to return from this page (0 = all of them). A full page is 30 rows and roughly 35 KB with every field, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims." - added
Input schema / properties / max_discountAdded value: +{ + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Largest discount percentage to return.", + "title": "Max Discount" +} - added
Input schema / properties / max_priceAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Highest deal price to return, in the marketplace currency.", + "title": "Max Price" +} - added
Input schema / properties / min_discountAdded value: +{ + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Smallest discount percentage to return, e.g. 50 for half price or better.", + "title": "Min Discount" +} - added
Input schema / properties / min_priceAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Lowest deal price to return, in the marketplace currency. Applied to the fetched rows; see notes.", + "title": "Min Price" +} - changed
Input schema / properties / min_product_star_rating / anyOfPrevious value: -[ - { - "enum": [ - "1", - "2", - "3", - "4", - "ALL" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "4", + "ALL" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / min_product_star_rating / descriptionPrevious value: -"Minimum star rating. Only 1, 2, 3, 4 or ALL are accepted - 5 is rejected with 400."New value: +"Amazon's deals feed offers one rating cut-off: 4 = four stars and up. ALL or omitted = no cut-off. Other values are rejected with a free 400." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset, non-negative."New value: +"Row to start at. A page is 30 rows; pass the previous answer's next_offset for the next page." - removed
Input schema / properties / price_rangeRemoved value: -{ - "anyOf": [ - { - "enum": [ - "1", - "2", - "3", - "4", - "5", - "ALL" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Price band bucket 1-5, or ALL.", - "title": "Price Range" -} - changed
Input schema / properties / prime_early_access / descriptionPrevious value: -"Restrict to Prime early access deals."New value: +"Only Prime Early Access deals. A marketplace lists the programs it is running under available_filters.prime_programs; when Early Access is not running the answer is empty with a hint saying so." - added
Input schema / properties / prime_exclusiveAdded value: +{ + "default": false, + "description": "Only deals in Amazon's Prime Exclusive program.", + "title": "Prime Exclusive", + "type": "boolean" +}
Related MCP Connectors
Real-time Amazon product, seller, and search data for AI agents across 21 marketplaces.
Amazon marketplace data for products, offers, reviews, sellers, search, categories, and deals.
Amazon keyword search, product details, seller profiles and seller catalogues, as structured JSON.
Amazon keyword volume, reverse-ASIN, and SERP data across 11 marketplaces.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to normalized Amazon marketplace data, including product details, search, offers, reviews, sellers, categories, deals, best sellers, identifiers, stock, and sales estimates across 13 marketplaces.MIT

Easyparserofficial
AlicenseAqualityBmaintenanceReal-time, structured Amazon data for AI agents across 21 marketplaces: product details, seller offers, search results, 12-month sales history, Best Sellers Rank, package dimensions, and seller intelligence. 16 tools including free bulk-job monitoring and account usage tracking, available as a hosted endpoint or via npx.1730 npmMIT- FlicenseBqualityDmaintenanceProvides tools to access real-time Amazon data, including product details, reviews, offers, influencer profiles, and deals, through a FastMCP-based server.18-
- AlicenseAqualityAmaintenanceReal Amazon (US, UK, DE, CA, AU) & Walmart shopping data for AI assistants: ranked product shortlists, current prices, live stock, real ratings, and price/BSR history from a 17M+ product warehouse. Free hosted endpoint, no signup โ 30 queries a day.31MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.