apiguru-amazon-data
Provides AI agents with access to the Apiguru Amazon Data API, enabling discovery, calling and payment for Amazon product data without an account, API key or subscription. Capabilities include product search, retrieving product details (titles, brands, ratings counts), and delivery information, with a free feedback tool for reporting defects in returned data.
Apiguru Agent Kit
Everything needed for an AI agent to discover, call and pay for the Apiguru Amazon Data API — with no account, no API key and no subscription.
The existing backend is not modified by any of this. Not one line.
Install in your agent
Client | How |
Claude Code |
|
claude.ai, Claude Desktop, ChatGPT | add connector |
Codex CLI |
|
Cursor | Add to Cursor (runs |
VS Code | |
Gemini CLI |
|
Hermes, OpenClaw, any stdio client |
|
Skill only (any agent) |
|
Related MCP server: Real Time Amazon Data MCP Server
Why this exists
The API is gated behind register → verify email → get key → top up. Every step assumes a human. Agents cannot do any of it, so agent traffic bounces off the front door.
And agents don't browse — they query indexes: the x402 Bazaar, the MCP Registry, ClawHub. Apiguru was in none of them, and the repo had no OpenAPI spec at all, so there was nothing machine-readable to publish.
Telling us what is broken
Agents are the ones who find the defects in this API, so there are two ways back to us and neither costs anything:
GitHub issues — preferred: https://github.com/apiguru-app/agent-kit/issues. A thread can hold a reply, and a fix gets linked back to it.
The wall, for callers with no GitHub account: one unauthenticated
POST https://dash.apiguru.app/api/v1/feedbackwith{"message": "...", "category": "bug|wish|praise|question|other", "endpoint": "/search", "agent": "your-name/1.0", "contact": "optional"}. No key, no signup, never billed. Read it at https://dash.apiguru.app/feedback, orGETthe same URL for JSON.Over MCP: the free
send_feedbacktool. From the skill:python scripts/probe.py feedback --message "..." --category bug.
This is not decoration. 1.1.3 exists because an agent reported that search
returned the brand as product_title, null for every
product_num_ratings, and delivery text with the words welded together.
What is in this repository
Path | What it is |
| The agent skill: SKILL.md, references, and |
| The MCP server published to PyPI as |
| The npm bridge, |
| The Claude Code plugin and its marketplace entry |
|
|
The hosted service that serves these endpoints is operated separately and is not part of this repository.
Licence
See LICENSE.
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.003 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?
With annotations already covering read-only/idempotent/open-world semantics, the description adds substantial non-obvious behavior: $0.003 per call pricing, page capped at 5 returning a 400 rather than 500, free 400s for unknown categories, and truncation behavior. This is real value beyond the structured fields.
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 core purpose is front-loaded, but the prose is long and repetitive - the amazon.com any-depth/fragment behavior and the per-marketplace department vocabulary are each stated more than once. Several sentences could be consolidated without losing information.
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 7-parameter, no-required-param tool with an output schema, the description covers the department-resolution vocabulary and error behavior an agent needs. It is close to complete, with only minor redundancy rather than a genuine gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond it: fragment resolution via category_resolution.via and its subcategory hint, the amazon.com any-depth node-id rule, and the ambiguous-name 400 behavior. Some of this restates the schema, so it lands at 4 rather than 5.
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+resource+scope up front ('Best-seller rankings for a department of one marketplace, 50 per page'), which cleanly distinguishes it from siblings like search, deals and product_details. An agent can identify the tool without opening the schema.
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 conveys useful usage context - no required parameters and a bare call returns US appliances page 1 - but never states when to choose this over siblings such as search or deals, nor any explicit exclusions. Usage is implied rather than spelled out.
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.003 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?
Goes well beyond the readOnly/openWorld/idempotent annotations: discloses per-call pricing ($0.003), the post-fetch semantics of min_price/max_price/min_discount/max_discount (rows filtered after fetch, up to 3 upstream pages scanned, pages may hold fewer than 30 rows, total_count not reflecting them), the 30-row page and 500-row total_count cap, price expiry via deal_ends_at, and that available_filters/filters_applied/filters_ignored ride along in every answer.
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-loads the return shape, then filters, answer metadata, cost, id semantics, pagination and the post-fetch caveat. Every sentence carries real information, though the single-paragraph form is dense and the legacy-parameter sentence runs long.
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 14-parameter, open-world, paginated feed with an output schema, the description covers everything an agent needs: cost, pagination contract, filter-id mechanics, post-fetch filtering caveats, expiry and empty-result behaviour. Nothing material is left to inference.
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 baseline is 3, but the description adds genuine meaning on top: categories accepts an id or a localised name/fragment (with the free 400 listing valid names), brands accepts ids only, and it documents the legacy price_range/discount_range bucket and band encodings that do not appear in the schema at all.
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?
Opens with a specific verb+resource ('Returns the current Amazon deals feed') and enumerates the exact row fields delivered (ASIN, title, deal price, list price, discount, badge, times, links). This is clearly distinguishable from siblings like best_sellers and search, which are separate feeds.
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?
Gives concrete routing guidance: brand-by-name must go through /search with brand=<name> and today_deals=true instead, categories must come from available_filters, and empty answers carry a hint explaining why. It does not spell out broader when-not conditions (e.g. vs best_sellers), so it stops 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.
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.0045 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?
Adds substantial context beyond the readOnly/idempotent annotations: per-item pricing ($0.0045, max 10), billing granularity tied to upstream requests, the empty-list-with-error case for ASINs lacking a featured offer, the filters_applied echo, and the /scrape legacy alias. This is exactly the operational detail an agent needs before calling.
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-loads the core purpose well, but the parenthetical historical notes ('it used to scope only the inventory check', 'it used to be silently treated as ALL') add length without helping selection or invocation. The dense run-on sentences make the cost and behavior points harder to parse than necessary.
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 need not be described, and the description still covers pricing, billing, filtering semantics, defaults, and edge cases. An agent has everything required to invoke it 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 coverage is 100%, so the baseline is 3, but the description adds real meaning: offers_count=winner returns only the flagged offer while offers_total preserves the full count, and it notes the historical behavior change. This clarifies semantics the enum value alone would not convey.
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 precise verb and resource ('Returns the current offer list per ASIN') and enumerates the returned fields (seller, price, condition, buy-box winner) plus the optional inventory quantity. This clearly separates it from siblings like product_details, deals, and best_sellers.
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?
Explains the cost/billing tradeoff of enabling check_inventory ('billed per upstream Amazon request, which is more than one per ASIN') and the effect of offers_count=winner, which tells the agent when the extra spend is justified. It stops short of naming sibling tools or explicit when-not-to-use conditions.
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.003 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?
Annotations already cover the safety profile (readOnly=true, idempotent=true, destructive=false, openWorld=true), yet the description adds substantial non-covered context: per-call cost of $0.003, that 404 IS billed while 503 is NOT, retry advice, null-field semantics, and the caveat that bullets/specs may describe the product family rather than the exact variant. This is exactly the behavioral detail annotations cannot 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?
Four tight sentences, front-loaded with what is fetched, then cost, then error semantics, then data caveats. No filler and every sentence carries distinct, actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value enumeration is not required, and the description still supplies the billing model, error-code handling, and null/variant caveats an agent needs to call and interpret this correctly. Nothing material 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 description coverage is 100%, so geo, asin, fields, and compact are already fully documented in the schema (including the batch-rejection note and the _omitted_fields behavior). The description adds no parameter-level detail beyond reinforcing the single-ASIN constraint, so the baseline 3 applies.
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 and resource ("fetches the complete product record for one ASIN on one marketplace") and enumerates the returned fields, so the agent knows exactly what it gets. It stops short of naming the sibling it contrasts with (product_details_batch), which the schema mentions instead, so differentiation is implicit rather than explicit.
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?
There is no explicit when-to-use / when-not-to-use guidance versus siblings like search or product_details_batch, but the scoping phrase "one ASIN on one marketplace" implies the single-item case. Error-path guidance (404 vs 503, retry) is present, which is operationally useful but not alternative-selection guidance.
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.0024 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?
Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description goes well beyond them with pricing ($0.0024/item), billing behavior on misses, dedup behavior, the 413 threshold, and two data-quality caveats (family-level bullets on variant listings, null = not shown by Amazon). This is exactly the kind of extra context the bar rewards.
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 identity and the batch advantage, then cost, then limits, then data caveats. Every sentence conveys a distinct operational fact; nothing is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required, and the description still pre-empts the two most likely misinterpretations of the response (variant-level bullets, null fields). It omits any mention of the geo parameter's effect on results, a minor gap given a 4-parameter 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 the schema carries the syntax. The description nevertheless adds non-obvious semantics about the asins parameter: it is de-duplicated before processing and billed per ASIN including not-found ones. That is genuine value beyond the structured fields.
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 ('fetch all of them concurrently') and explicitly frames itself as the 'batch variant of product_details', which names the sibling it must be distinguished from. An agent can immediately tell this apart from the single-ASIN product_details.
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?
Gives clear selection logic: 'Far cheaper and faster than N single calls', plus the hard limit 'More than 20 ASINs returns 413'. There is no explicit when-not-to-use (e.g. for a single ASIN, use product_details), but the context is strong enough to route correctly.
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.003 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?
Annotations already cover the read-only/idempotent safety profile, but the description adds substantial context beyond them: per-call price ($0.003), 404-billed vs 503-not-billed semantics, and the signed-in-customer auth limitation that explains the absence of filtering. This is rich disclosure that structured fields cannot carry.
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 the return payload and every sentence earns its place (pricing, error semantics, scope, alternative). Slight redundancy in restating the returned fields a second time, keeping it just short of 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 3-param read tool with a full output schema, the description supplies everything else an agent needs: cost, error-billing behavior, auth constraints, and the routing alternative. Nothing material 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%, so the baseline is 3, but the description adds meaning the schema cannot express: that there are deliberately no filter/paging/sort parameters and why. It does not re-explain geo or max_reviews, which the schema already documents well.
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 review block for one ASIN') and enumerates exactly what comes back: star rating, rating count, 'customers say' summary, and review list. It also implicitly differentiates from siblings by pointing to product_details for per-star histogram data.
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 scopes usage ('one ASIN', 'takes no filters') and enumerates the alternatives that do not exist (no paging, star filter, or sort), explaining why. It routes the agent to product_details for per-star counts, giving a concrete when-to-use-other-tool rule.
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.003 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 already declare read-only/idempotent/open-world, and the description goes well beyond them: per-call cost ($0.003), free-400 invalid-input semantics, unbilled retryable 503 with reason codes, filters_ignored fallback behavior per marketplace, and truncation flags. This is unusually rich behavioral disclosure for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and filters are front-loaded, and every clause is information-dense rather than filler. It is nonetheless a very long single block of prose that packs field-type, pricing, and error semantics together, which taxes scanning a bit.
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, open-world, output-schema-backed tool, it covers the gaps an agent would otherwise hit: null-field meaning, empty-result validity, pagination via metadata.total_pages, and failure taxonomy. Nothing material for correct invocation appears 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%, so baseline is 3, but the description adds real meaning: blank and literal 'null' treated as unset, invalid page/sort_by/price/condition/deal_type producing a free 400 naming allowed values, and per-marketplace node-id sourcing for category/condition/deal filters. It clarifies semantics the schema cannot express, though some params (geo, seller_id, limit) get nothing extra.
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 ('Search Amazon products by keyword') and immediately enumerates the filter surface, so the scope is unambiguous. It also distinguishes itself from siblings by directing rank claims to product_details or best_sellers, which is exactly the differentiation an agent needs against best_sellers and deals.
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?
Gives clear routing for one important conflict ('For a rank claim, use product_details or best_sellers') and explains a non-obvious success condition (empty products only valid when metadata.total is 0). It does not, however, broadly frame when to prefer this tool over deals or seller_products, so it falls short of full when/when-not coverage.
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.003 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 the read-only/idempotent annotations it discloses cost ($0.003 per call), pagination granularity (48 rows/page via metadata.total_pages), truncation behavior (_truncated) and the light-vs-full row size tradeoff. It also documents a distinctive behavioral trait: invalid sort_by/price/product_condition/deal_type yields a free 400 listing allowed values.
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 the purpose, then dense factual clauses on filters, cost, pagination and error behavior. Every sentence carries information, though the filter/response sentence runs long and could be split for scanability.
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 open-world search with an output schema, it covers cost, paging, truncation, field projection and error handling. Return-value structure is left to the output schema, which is the correct division of labor.
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 baseline is 3, but the description adds cross-parameter semantics the schema lacks: how filters map to filters_applied/filters_ignored/available_filters, and that unvalidated seller_id format differs from seller_profile_batch. It does not restate most per-field syntax, so it is modestly above baseline.
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 ('Products listed by a seller: a storefront search'), which immediately separates it from generic `search` and from `seller_profile_batch`. An agent can tell what it returns and what it is scoped to without opening the schema.
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?
Positions the tool against siblings by noting it 'takes the same filters as search' but is scoped to one seller, and contrasts it with seller_profile_batch on seller_id validation. It does not explicitly say when to prefer it over `search` or `best_sellers`, so routing is clear but not fully spelled out.
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.0036 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?
Goes well beyond the read-only/idempotent annotations: discloses per-item pricing ($0.0036, max 10), all-or-nothing ID validation with a 400, the three-valued `status` semantics, which statuses are billed, that rows are never null, and how billable_requests_count is computed. This is exactly the billing/error context annotations cannot carry.
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-loads what is returned and then layers billing and status semantics; every clause carries information. Slightly dense with a long final sentence about the pay-per-call rail, but no filler.
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 paid, validated batch tool with two params and an output schema, the description supplies the pricing, validation failure mode, row-status contract, and retry strategy an agent needs. Nothing material is missing, and it does not waste space re-explaining the output schema's fields.
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 both params including the 13-15 char pattern and max-10 constraint. The description restates the all-or-nothing validation rule but adds no syntax or format detail beyond the schema, so baseline 3 applies; `geo` is never discussed.
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?
Names a specific verb+resource+scope: returns storefront profiles for up to 10 seller ids, and enumerates the fields returned (business name, rating, feedback counts, address, marketplace presence). An agent can distinguish this batch profile lookup from seller_products and seller_reviews without inspecting schemas.
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?
Gives concrete operational guidance: retry `unavailable` ids in a separate call rather than expecting a refund, and explains when `not_found` vs `unavailable` occur. It does not name alternative sibling tools (e.g. seller_reviews for review data), so it stops short of explicit when-not guidance.
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.003 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, open-world, and non-destructive behavior. The description adds important behavioral context: per-call pricing, page size, current_page/has_next_page, no total count, and the upper page limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences, front-loaded with the core return behavior, then pricing and pagination details. Every sentence contributes useful information without 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?
With rich annotations, full schema descriptions, and an output schema, the description covers the remaining agent-relevant concerns: cost, filtering behavior, pagination mechanics, and the page cap. Nothing critical for correct invocation 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%, so the baseline is 3. The description adds meaning for from_rating/to_rating by noting they are optional and that omitting both yields unfiltered feedback, plus it adds the undocumented page 100 limit.
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 paginated seller feedback, optionally filtered to a star-rating window. This distinguishes it from sibling product_reviews because it targets seller feedback rather than product 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?
Explains when to omit rating filters for unfiltered feedback and how to page until has_next_page is false, including the page 100 cap. It gives clear usage context but does not explicitly compare against alternatives such as product_reviews.
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.
12 tool updates
v0.1.0- First observed
best_sellers - First observed
deals - First observed
list_capabilities - First observed
offers_stock - First observed
product_details - First observed
product_details_batch - First observed
product_reviews - First observed
search - First observed
seller_products - First observed
seller_profile_batch - First observed
seller_reviews - First observed
send_feedback
TDQS
Scored across 12 tools
Most tools target clearly distinct resources (products by keyword, single ASIN details, seller reviews, product reviews, offers, deals, best-sellers). The main overlaps are search vs seller_products (same filter surface, differing only in seller scope) and search's today_deals/deal_type filters vs the dedicated deals tool; descriptions flag these differences but an agent could still misselect.
Names are uniformly snake_case (product_details, seller_reviews, best_sellers, seller_profile_batch), which is predictable. Minor deviations: 'search' and 'deals' are bare verbs/nouns without a noun or verb complement, so the verb_noun pattern is not perfectly uniform.
12 tools is well within the ideal 3-15 band for an Amazon data API, and each earns its place: batch variants, the offers/reviews/seller splits, and the two free meta tools (list_capabilities, send_feedback) all serve distinct needs.
The surface covers product search, detailed records, reviews (product and seller), offers/stock, seller profiles and listings, best-sellers and deals, plus a capability-discovery tool. Gaps are minor: no explicit marketplace-list tool (folded into list_capabilities) and no related/recommendation or category-tree browsing beyond best_sellers departments, but core workflows are covered.
Maintenance
Related MCP Connectors
Real-time Amazon product, seller, and search data for AI agents across 21 marketplaces.
Amazon keyword search, product details, seller profiles and seller catalogues, as structured JSON.
Amazon Seller Central and Ads data for AI: account health, FBA inventory, reimbursements, keywords.
Amazon marketplace data for products, offers, reviews, sellers, search, categories, and deals.
Related MCP Servers
- AlicenseAqualityCmaintenanceReal-time Amazon Sponsored Products (SP) ad placements, keyword tracking, and comprehensive review data for AI Agents. Enables LLMs to autonomously conduct competitor ad audits, consumer sentiment analysis (VOC), and product optimization.196MIT
- 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
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to research and shop on Amazon using their own logged-in browser session, supporting product search, details, reviews, cart, wishlist, and order tracking without API keys.MIT