Skip to main content
Glama
houtini-ai

Amazon Creators MCP

by houtini-ai

Amazon Creators API MCP - paste-ready affiliate product cards, straight from a chat

npm version MCP Registry License: MIT TypeScript Known Vulnerabilities

If you write product round-ups, you already know the boring part. You find the product on Amazon, copy the image, grab the price, paste your affiliate link, and hope the price hasn't moved by the time someone reads the post. Then you do it again for the next nine products.

This does that part for you. You ask Claude to find something, it searches the live Amazon catalogue, and it hands you back a finished HTML card - image, price, savings, star rating, your Associates tag already baked into the link, and the disclosure footer Amazon requires. Paste it into WordPress, Ghost, Substack, whatever you write in. In Claude Desktop you even see the card render before you copy it.

Built on the Amazon Creators API - the REST API that replaced Product Advertising API 5.0 when Amazon retired the old endpoint on 15 May 2026. If your workflow still points at PA-API, it's been dead for a while now. This is the way back in.

Quick nav

Who it's for · How you'll actually use it · Getting your API key · Install · Environment variables · Tools · Output formats · Styling · Associates compliance · Troubleshooting


Who it's for

  • Affiliate bloggers and niche-site owners who live in round-ups and "best X for Y" posts, and want the product embeds done in seconds instead of by hand.

  • Content and SEO teams who need consistent, on-brand product cards across a lot of articles, without a developer wiring up the API each time.

  • Newsletter writers on Substack, Ghost or beehiiv who just want clean HTML they can drop into an issue.

  • Anyone migrating off PA-API 5.0 who needs a working replacement now that the old endpoint is gone.

You don't need to know what an API is to use it - if you can add an MCP server to Claude and paste your Associates keys once, you're set. The key bit is having an eligible Associates account.


Related MCP server: Amazon MCP Server

How you'll use it

The whole thing is built around a conversation, not a form. You describe what you're writing about, Claude searches and summarises, and it only spits out HTML when you actually ask for the embed. Here's the shape of it.

1. Find products for a post

"Find me the best direct-drive racing wheels under £500"

Claude runs search_items and comes back with a plain summary - no HTML yet:

Found 8 direct-drive wheels under £500. The ones worth a look: • Fanatec CSL DD (£349) - well reviewed, 5 Nm motor • Moza R5 Bundle (£469) - comes with pedals, 5.5 Nm • Cammus C5 (£399) - compact Want me to build an embeddable grid for these?

2. Build the card or grid

"Yes, make a grid of the top three"

Now it switches to format: 'html-grid' and returns a complete HTML document. Images, prices, savings, stars, your tag, the "as of" timestamp, the disclosure footer. All of it. Paste and you're done.

3. Restyle it without burning your rate limit

This is the bit that saves you. The Creators API has real rate limits (roughly a request a second to start with, climbing as you drive more sales), so you don't want to re-query Amazon every time you fancy a different colour. You don't have to. Claude keeps the data from the last call and re-renders locally:

"Same grid, but dark cards and hotpink buttons"

{
  "response": { "searchResult": { "items": [ /* from the previous call */ ] } },
  "format": "html-grid",
  "customStyles": ".amzn-card{background:#0f172a;color:#f1f5f9} .amzn-card__cta{background:hotpink;color:#111}"
}

Twenty style tweaks, zero extra API calls. Iterate on the look as much as you like.

4. Look up specific ASINs

"Get me the current details for B09B2SBHQK, B08N5M7S6K and B0BZC6YR7Q"

Claude calls get_items and summarises the three. One thing worth knowing: the API doesn't promise to return items in the order you asked for them, and it quietly drops any ASIN it can't find (those land in a separate errors array). Claude matches on the asin field so you don't have to think about it.

5. List colour and size variations

"What colours does the Echo Show 5 come in?"

That's get_variations - it lists the child products of a parent ASIN, each with its own price.


Getting your API key

This is where most people get stuck, so I'll be straight with you: the Creators API isn't open to everyone, and there's a sales gate. Worth knowing before you spend an afternoon on it.

What you need first

  • An approved Amazon Associates account for the marketplace you're targeting (a .com account won't work against .co.uk - the credentials are tied to a region).

  • At least 10 qualifying shipped sales in the trailing 30 days. This is the one that catches people. If your account dips under 10 sales across any rolling 30-day window, access gets suspended until you're back over the line. New or quiet accounts simply won't have API access yet.

  • You have to be the primary account owner. Secondary users on an Associates account can't see the Creators API page or generate keys. In my experience this trips up teams more than anything else.

  • Node.js 20 or newer on the machine running the MCP.

Where to create the credentials

Sign in to Associates Central, open the Tools menu, and pick Creators API - or just go straight to affiliate-program.amazon.com/creatorsapi. Then it's three steps.

1. Create a Creators API application

Associates Central Creators API page with the Create application button

2. Name it and pick your region

The region you choose here decides your AMAZON_CREDENTIAL_VERSION (NA = 3.1, EU = 3.2, FE = 3.3 - full table below). Pick the region that matches the marketplace you actually write for.

Application creation form showing name, description and region selector

3. Copy the Credential ID and Secret

Amazon generates a Login with Amazon (v3.x) credential pair. Copy both - the ID goes in AMAZON_CLIENT_ID, the secret in AMAZON_CLIENT_SECRET. These never leave your own machine. The MCP server talks to Amazon directly; nothing is sent to Houtini or anyone else.

Generated credentials screen with Credential ID and Secret fields

On older v2.x credentials: if you set an app up before early 2026 you might have v2.x Cognito credentials lying around. They don't work here. Create a fresh Login with Amazon application to get v3.x keys - the server checks on startup and refuses v2.x with a message telling you exactly this, so you won't be left guessing.


Install

You don't clone anything to use it - npx pulls the published package. You just need your five environment variables to hand.

Claude Desktop

Open your config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "amazon-creators": {
      "command": "npx",
      "args": ["-y", "@houtini/amazon-creators-mcp"],
      "env": {
        "AMAZON_CLIENT_ID": "amzn1.application-oa2-client.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "AMAZON_CLIENT_SECRET": "amzn1.oa2-cs.v1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "AMAZON_PARTNER_TAG": "yourtag-20",
        "AMAZON_CREDENTIAL_VERSION": "3.1",
        "AMAZON_MARKETPLACE": "www.amazon.com"
      }
    }
  }
}

Restart Claude Desktop, then say "find me [whatever you're writing about] on Amazon" and you're off.

Claude Code (CLI)

claude mcp add \
  -e AMAZON_CLIENT_ID=amzn1.application-oa2-client.xxx \
  -e AMAZON_CLIENT_SECRET=amzn1.oa2-cs.v1.xxx \
  -e AMAZON_PARTNER_TAG=yourtag-20 \
  -e AMAZON_CREDENTIAL_VERSION=3.1 \
  -e AMAZON_MARKETPLACE=www.amazon.com \
  -s user amazon-creators -- npx -y @houtini/amazon-creators-mcp

Check it took with claude mcp get amazon-creators - you want to see Status: Connected.


Environment variables

Variable

Required

Example

Notes

AMAZON_CLIENT_ID

Yes

amzn1.application-oa2-client.…

"Credential Id" from your Creators API app

AMAZON_CLIENT_SECRET

Yes

amzn1.oa2-cs.v1.…

"Secret" from the same place

AMAZON_PARTNER_TAG

Yes

yourtag-20

Your Associates tracking ID

AMAZON_CREDENTIAL_VERSION

Yes

3.1 / 3.2 / 3.3

Region-specific - see table below

AMAZON_MARKETPLACE

Yes

www.amazon.com

The full marketplace host

AMAZON_MAX_CONCURRENCY

No

4

Max requests in flight at once. Default 4.

DEBUG

No

1

Noisy stderr logging. Off by default.

Credential version by region

Your credentials are tied to one region, and calling a marketplace outside it fails auth - so the server cross-checks these at startup and stops you early rather than letting you find out mid-request.

Region

Version

Marketplaces

NA

3.1

www.amazon.com, www.amazon.ca, www.amazon.com.mx, www.amazon.com.br

EU

3.2

www.amazon.co.uk, www.amazon.de, www.amazon.fr, www.amazon.it, www.amazon.es, www.amazon.nl, www.amazon.com.be, www.amazon.eg, www.amazon.in, www.amazon.ie, www.amazon.pl, www.amazon.sa, www.amazon.se, www.amazon.com.tr, www.amazon.ae

FE

3.3

www.amazon.co.jp, www.amazon.sg, www.amazon.com.au


Tools

Tool

Input

What it does

search_items

keywords / actor / author / brand / title + filters

Search the catalogue. Max 10 items a page; page through with itemPage.

get_items

asins: string[] (1-10)

Look up specific ASINs. Match results on asin, not on the order you sent them.

get_variations

asin: string

The size / colour children of a parent ASIN.

get_browse_nodes

browseNodeIds: string[]

Category metadata and the ancestor chain. json / markdown only.

format_items

response or items[] from a prior call

Re-render data you already fetched. Doesn't call Amazon. This is how you restyle for free.

The four Amazon-facing tools all take:

  • format - 'json' | 'markdown' | 'html-card' | 'html-grid' (default markdown; get_browse_nodes is json | markdown only)

  • resources - which fields to pull, as camelCase paths (itemInfo.title, offersV2.listings.price). Leave it off for a sensible default set.

  • customStyles - extra CSS tacked onto the built-in stylesheet when you're rendering HTML.

  • titleMaxChars - cap the rendered title (default 80). Amazon titles are often 150-plus characters of keyword soup, and 80 keeps a card to one line. Set 0 to turn it off. Markdown and JSON always get the full title.

  • hideItemsWithoutPrice - for html-grid, drop anything with no price (default true). A card with no price is a weak embed - no hook, nothing to click for. Set false if you're building a comparison table where you want the product shown regardless.


Deal rows that match your site, not the tool

The formats below all produce a card that looks like a card. That's right for a one-off embed and wrong the moment you drop it into a post that already has house styling - you end up with somebody else's design sitting in the middle of your article.

html-deals emits structural markup instead: .amazon-deals-section wrapping one .amazon-deal-row per product. If your theme already defines those classes, the output inherits them and there's nothing to restyle. If it doesn't, pass includeCss: true and you get a sensible default:

A row of three product deals - thumbnail, title, brand, price, savings and a View on Amazon button, in a compact 70px row

Find me three burr coffee grinders and give me deal rows for the post

Each row is a fixed 70px so ten products read as a scannable list rather than ten screens of scrolling. Feature bullets are off by default for the same reason - set featureCount if you want them, and unset the row's max-height in your own CSS to make room.

Two things it will not print:

  • A Prime badge. Nothing in the Creators API response says whether an item is Prime-eligible, so claiming it would be inventing a delivery promise on a page someone might buy from.

  • Empty stars. Review data is restricted per Associates account; where Amazon returns none, the rating line is dropped rather than rendered as zero.

A note on star ratings

customerReviews.starRating and customerReviews.count are requested on every call, but Amazon only returns them for accounts eligible for that data. If your rows have no stars, that's the account, not the tool - the fields are being asked for correctly and the formatter degrades rather than inventing a number.


Output formats

  • markdown - image, linked title, price, disclosure. Drops straight into a blog editor. Full untruncated titles.

  • html-deals - structural deal rows that inherit your site's CSS. See above. The one to use for articles.

  • html-card - one self-contained <article class="amzn-card"> with its styles inlined. Title capped at titleMaxChars. If there's no price, it renders a muted "Check price on Amazon" link so the card still has somewhere to click.

  • html-grid - a responsive grid of those cards for a search or a list. No-price items dropped by default.

  • json - the parsed response, pretty-printed. For when you want to see what Amazon actually sent.

If you'd rather not touch HTML at all, markdown is the friendliest. Ask for it and you get exactly this, ready to drop into a post:

[![Fanatec CSL DD Direct Drive Wheel Base (5 Nm)](https://m.media-amazon.com/images/…jpg)](https://www.amazon.com/dp/B0EXAMPLE01?tag=yourtag-20)
**[Fanatec CSL DD Direct Drive Wheel Base (5 Nm)](https://www.amazon.com/dp/B0EXAMPLE01?tag=yourtag-20)**
Brand: Fanatec · 4.7★ (1,284 reviews)
**£349.95** — save £40.00 (10% off) _(as of 20 Jul 2026, 15:24 UTC)_
ASIN: `B0EXAMPLE01`

> *As an Amazon Associate we earn from qualifying purchases. Prices and availability are accurate as of the time shown and are subject to change.*

In Claude Desktop the card renders inline before you copy it, using the official MCP Apps protocol - a sandboxed preview so you're not pasting blind. On a host that doesn't do MCP Apps yet, you still get the HTML as plain text, which is the exact thing you paste anyway. Nothing lost.


Styling the cards

Every visible bit of a card has a stable class hook, so you can restyle the whole thing through conversation without anyone touching the code:

.amzn-card                    .amzn-card__image              .amzn-card__title
.amzn-card__meta              .amzn-card__brand              .amzn-card__rating
.amzn-card__price             .amzn-card__price--unavailable .amzn-card__savings
.amzn-card__cta               .amzn-card__disclosure         .amzn-grid

So this works:

"Make the CTA hotpink and the card a dark rounded rectangle."

{
  "keywords": "coffee grinder",
  "format": "html-card",
  "customStyles": ".amzn-card{background:#0f172a;color:#f1f5f9;border-radius:20px} .amzn-card__cta{background:hotpink;color:#111}"
}

customStyles is appended after the default stylesheet, so your rules win on ordering. Match your site's look once, then reuse the same CSS on every render.


Associates compliance

Displaying Amazon product data comes with rules, and it's your account on the line if you get them wrong. So the server bakes the boring-but-important bits in for you:

  • Your AMAZON_PARTNER_TAG goes on every outbound link. It prefers the already-tagged detailPageURL Amazon returns, and falls back to a /dp/ASIN?tag=… link if it has to.

  • Every link carries rel="nofollow sponsored noopener".

  • Whenever a price shows, so does the time it was retrieved (as of <timestamp>).

  • Every card and grid ends with the Associates disclosure footer.

None of that is optional under the Associates Operating Agreement, which is exactly why it's automatic rather than something you have to remember.


Development

git clone https://github.com/houtini-ai/amazon-creators-api-mcp
cd amazon-creators-api-mcp
npm install
npm run build

Command

What it does

npm run build

Build everything (viewer bundle + TypeScript)

npm run build:viewer

Just the MCP Apps viewer HTML bundle

npm run dev

Watch mode for the server TypeScript

npm run test

vitest (103 tests, unit + integration)

npm run typecheck

Types only, no emit

npm run lint

ESLint

If you've got live credentials, npx tsx scripts/smoke-auth.ts runs a real token fetch plus one searchItems call - the quickest way to confirm your keys actually work end to end.

See SCOPE.md for the architecture and the API quirks worth knowing.


Troubleshooting

"Credential version rejected" on startup - you're on v2.x Cognito credentials. Create a fresh Login with Amazon app in Associates Central → Creators API, then set AMAZON_CREDENTIAL_VERSION to 3.1, 3.2 or 3.3 for your region.

401 or 403 errors - usually one of two things. Either your Associates account doesn't have the 10 qualifying sales in the last 30 days, or Creators API access isn't switched on for the account yet. Both are checked in Associates Central.

A region mismatch error at startup - your credential version and your marketplace are in different regions (a 3.1 NA key pointed at www.amazon.co.uk, say). Use credentials issued for the same region as the marketplace you're calling.

Preview images not showing in Claude Desktop - the viewer only allowlists Amazon's own image CDNs. On a host with a stricter policy the preview images might not load, but the plain HTML output is fine - it renders once it's pasted into your site.

"The items came back in the wrong order" - that's expected. get_items can return items in any order and drops any ASIN it can't find into a separate errors array. Match on the asin field. Claude does this for you when it summarises.


Licence

MIT. See LICENSE.


Built by Houtini for the Model Context Protocol community. Part of the houtini-ai MCP suite.

Available Tools

5 tools
format_itemsA
Read-only

Re-render Amazon items you already have (from a previous search_items, get_items, or get_variations call) without hitting the API again. Pass the exact structuredContent you received back as response, or pass items directly as an array. This tool IS for producing HTML embeds — the user has by this point explicitly asked for a card/grid/preview. Use it specifically when iterating on customStyles ("make the border hotpink", "dark mode", "bigger price") — it avoids rate-limit pressure and is much faster than re-querying Amazon.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoAlternative to `response`: an array of Item objects.
formatNoOutput format. DEFAULT TO 'markdown' OR 'json' when you plan to summarise the results in chat. Use 'html-card' / 'html-grid' ONLY when the user has explicitly asked for an embed, preview, card, widget, grid, or paste-ready HTML — these formats return a full HTML document the user pastes into their blog and are not for in-chat reading. 'markdown' = friendly summary source; 'json' = raw API data for programmatic use; 'html-card' = single product card; 'html-grid' = responsive grid of all items.markdown
responseNoRaw response envelope previously returned in `structuredContent` by search_items / get_items / get_variations. Pass this OR `items`.
retrievedAtNoISO-8601 timestamp marking when the original response was fetched from Amazon. Rendered next to the price as "as of <ts>". If omitted, defaults to now — but you should pass the original fetch time when re-rendering old data so the displayed timestamp stays truthful.
customStylesNoExtra CSS appended to the default stylesheet when format is 'html-card' or 'html-grid'. Target stable class-name anchors: .amzn-card, .amzn-card__image, .amzn-card__title, .amzn-card__meta, .amzn-card__brand, .amzn-card__rating, .amzn-card__price, .amzn-card__price--unavailable, .amzn-card__savings, .amzn-card__cta, .amzn-card__disclosure, .amzn-grid. Ignored for 'markdown' and 'json'.
titleMaxCharsNoMaximum rendered title length for HTML card/grid output. Amazon titles are often 150+ chars of keyword stuffing; clamping to ~80 keeps cards one-line on typical widths. Defaults to 80. Set to 0 to disable. Ignored by 'markdown' and 'json' — those formats get the full untruncated title.
hideItemsWithoutPriceNoWhen format is 'html-grid', drop items that have no price. Defaults to true — cards without a price are weak embeds (no deal hook, reader must click through to learn anything). Set false for comparison tables where availability can lapse but you still want the product visible. Ignored for 'html-card', 'markdown', and 'json'.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses that no API call is made, data must come from a previous call, and that it is a re-rendering operation. This adds meaningful behavioral context (rate-limit avoidance, no external mutation) that complements 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence establishes the core purpose and inputs, the second provides concrete usage scenarios and benefits. Well structured and properly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While there is no output schema, the rich parameter descriptions (especially the format enum) effectively explain what the tool produces. The description could explicitly say 'returns the formatted output' but this is strongly implied by the verb 're-render' and the format details. Overall it is complete enough for reliable tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with detailed descriptions for each parameter. The description adds workflow value by clarifying the two alternative input paths (response vs. items) and linking to previous calls, but the schema alone is largely sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool re-renders already-fetched Amazon items without re-hitting the API, using a specific verb ('re-render') and naming the exact prior calls that produce the input. It explicitly contrasts with sibling retrieval tools by emphasizing it is for formatting existing data, not fetching new data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells when to use the tool: for producing HTML embeds after the user asks for a card/grid/preview, and specifically when iterating on customStyles. It also mentions avoiding rate-limit pressure and being faster than re-querying, giving clear reasons to prefer this over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_browse_nodesA
Read-only

Returns browse-node metadata (category tree) for up to 10 IDs — ancestor chain and direct children for each node. Use the browseNodeInfo.websiteSalesRank resource to find top-selling categories. Supports markdown and json output; HTML product-card formats don't apply here.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. 'markdown' is friendly for humans; 'json' is raw API data.markdown
resourcesNoWhich fields Amazon should return for browse nodes. Valid: "browseNodes.children", "browseNodes.ancestor". Omit to use both.
browseNodeIdsYes1–10 browse-node IDs.
languagesOfPreferenceNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and openWorldHint=true, covering safety. The description adds meaningful behavioral context beyond annotations: the output includes 'ancestor chain and direct children for each node', supports 'markdown' and 'json' output, and explicitly excludes 'HTML product-card formats'. It does not address rate limits or pagination, but the bar is lower given strong annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose. The first sentence states the function and scope, the second adds a usage tip and a format constraint. Every sentence earns its place with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only metadata tool with strong annotations, the description is reasonably complete: it explains the return content (ancestor chain, children, up to 10 IDs), mentions resource options via the sales rank tip, and discloses format limitations. It does not detail every parameter (e.g., languagesOfPreference), but that is a minor gap given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75% (three of four parameters have descriptions). The tool description reinforces some parameter semantics ('up to 10 IDs' aligns with browseNodeIds maxItems, and it mentions the supported formats), but it does not explain 'languagesOfPreference', which lacks a schema description. Given the schema still handles most parameter meaning, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Returns browse-node metadata (category tree) for up to 10 IDs — ancestor chain and direct children for each node.' This uses a specific verb ('Returns') and resource ('browse-node metadata'), and the scope ('up to 10 IDs', 'ancestor chain and direct children') distinguishes it from sibling tools like get_items or search_items, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool, including a specific use case: 'Use the `browseNodeInfo.websiteSalesRank` resource to find top-selling categories.' It also gives a when-not constraint: 'HTML product-card formats don't apply here.' However, it does not explicitly name alternative tools or exclusions relative to siblings, so it misses the highest bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_itemsA
Read-only

Look up 1–10 ASINs on Amazon. IMPORTANT: the returned items array is NOT guaranteed to be in the same order as the input asins array — always match items to inputs by the asin field, not by index. Invalid or inaccessible ASINs appear in a separate errors array rather than in items — check both.

PRESENTATION GUIDANCE (important): default to format: 'markdown' or format: 'json'. After the tool returns, summarise conversationally (e.g. "Here's what I found for those 3 ASINs: • Echo Show 5 ($79.99) • Kindle Paperwhite ($139.99) …") — DO NOT paste the raw tool output. Then ASK the user whether they'd like an embeddable HTML card/grid before calling the tool again with an HTML format. Only use format: 'html-card' or format: 'html-grid' when the user has explicitly asked for a preview, card, widget, embed, or paste-ready HTML.

ParametersJSON Schema
NameRequiredDescriptionDefault
asinsYes1–10 Amazon ASINs.
formatNoOutput format. DEFAULT TO 'markdown' OR 'json' when you plan to summarise the results in chat. Use 'html-card' / 'html-grid' ONLY when the user has explicitly asked for an embed, preview, card, widget, grid, or paste-ready HTML — these formats return a full HTML document the user pastes into their blog and are not for in-chat reading. 'markdown' = friendly summary source; 'json' = raw API data for programmatic use; 'html-card' = single product card; 'html-grid' = responsive grid of all items.markdown
merchantNo
conditionNo
resourcesNoWhich fields Amazon should return. Names are camelCase (e.g. "itemInfo.title"). Omit to use a sensible default set.
offerCountNoHow many offers per item (max 10).
customStylesNoExtra CSS appended to the default stylesheet when format is 'html-card' or 'html-grid'. Target stable class-name anchors: .amzn-card, .amzn-card__image, .amzn-card__title, .amzn-card__meta, .amzn-card__brand, .amzn-card__rating, .amzn-card__price, .amzn-card__price--unavailable, .amzn-card__savings, .amzn-card__cta, .amzn-card__disclosure, .amzn-grid. Ignored for 'markdown' and 'json'.
titleMaxCharsNoMaximum rendered title length for HTML card/grid output. Amazon titles are often 150+ chars of keyword stuffing; clamping to ~80 keeps cards one-line on typical widths. Defaults to 80. Set to 0 to disable. Ignored by 'markdown' and 'json' — those formats get the full untruncated title.
hideItemsWithoutPriceNoWhen format is 'html-grid', drop items that have no price. Defaults to true — cards without a price are weak embeds (no deal hook, reader must click through to learn anything). Set false for comparison tables where availability can lapse but you still want the product visible. Ignored for 'html-card', 'markdown', and 'json'.
languagesOfPreferenceNo

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint and openWorldHint, and the description adds high-value behavioral details: the returned items array is not ordered, invalid ASINs appear in an errors array, format defaults are specified, and HTML-only styling parameters are explained. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear first sentence, bolded warnings, and a separate presentation guidance section. It is longer than necessary with some repetition of format guidance, but the key information is front-loaded and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 10 parameters and no output schema, the description covers critical runtime behavior: array ordering, error handling, output formats, and post-tool presentation. It does not detail merchant/condition/resources, but the schema provides those descriptions. Overall, it is sufficient for correct invocation and result handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 70%, and the description enriches several parameters: it explains format defaulting and HTML usage, titleMaxChars clamping behavior, hideItemsWithoutPrice default, and the asins ordering caveat. This goes beyond the schema's descriptions for those parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Look up 1–10 ASINs on Amazon', which clearly states the specific verb and resource. However, it does not explicitly differentiate from sibling tools like search_items or get_variations, though the focus on ASINs is implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Extensive guidance is provided for choosing output formats (markdown/json vs html-card/html-grid) and for post-tool conversational summarization. However, there is no explicit guidance on when to use get_items versus sibling tools like search_items or get_variations; usage is only implied by the phrase 'Look up ... ASINs'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_variationsA
Read-only

List colour/size/style variations of a parent ASIN. Max 10 variations per call; paginate via variationPage (1–10). Pass the parent ASIN of a product that has variants — non-variant products return an empty result.

PRESENTATION GUIDANCE (important): default to format: 'markdown' or format: 'json'. Summarise the variations conversationally (e.g. "The Echo Show 5 comes in 3 colours: • Charcoal ($79.99) • Glacier White ($79.99) • Deep Sea Blue ($84.99)") — DO NOT paste the raw tool output. Then ASK the user whether they'd like an embeddable HTML grid of the variations for their blog. Only use format: 'html-card' or format: 'html-grid' when the user has explicitly asked for a preview, card, widget, embed, or paste-ready HTML.

ParametersJSON Schema
NameRequiredDescriptionDefault
asinYesParent ASIN whose variations to list.
formatNoOutput format. DEFAULT TO 'markdown' OR 'json' when you plan to summarise the results in chat. Use 'html-card' / 'html-grid' ONLY when the user has explicitly asked for an embed, preview, card, widget, grid, or paste-ready HTML — these formats return a full HTML document the user pastes into their blog and are not for in-chat reading. 'markdown' = friendly summary source; 'json' = raw API data for programmatic use; 'html-card' = single product card; 'html-grid' = responsive grid of all items.markdown
merchantNo
conditionNo
resourcesNoWhich fields Amazon should return. Names are camelCase (e.g. "itemInfo.title"). Omit to use a sensible default set.
offerCountNo
customStylesNoExtra CSS appended to the default stylesheet when format is 'html-card' or 'html-grid'. Target stable class-name anchors: .amzn-card, .amzn-card__image, .amzn-card__title, .amzn-card__meta, .amzn-card__brand, .amzn-card__rating, .amzn-card__price, .amzn-card__price--unavailable, .amzn-card__savings, .amzn-card__cta, .amzn-card__disclosure, .amzn-grid. Ignored for 'markdown' and 'json'.
titleMaxCharsNoMaximum rendered title length for HTML card/grid output. Amazon titles are often 150+ chars of keyword stuffing; clamping to ~80 keeps cards one-line on typical widths. Defaults to 80. Set to 0 to disable. Ignored by 'markdown' and 'json' — those formats get the full untruncated title.
variationPageNoPage number (1-10).
variationCountNoVariations per page (max 10).
hideItemsWithoutPriceNoWhen format is 'html-grid', drop items that have no price. Defaults to true — cards without a price are weak embeds (no deal hook, reader must click through to learn anything). Set false for comparison tables where availability can lapse but you still want the product visible. Ignored for 'html-card', 'markdown', and 'json'.
languagesOfPreferenceNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations already declare readOnlyHint and openWorldHint, the description adds substantial behavioral detail: max 10 variations per call, pagination via variationPage (1–10), empty results for non-variant products, and explicit instructions to avoid pasting raw output and to ask before using HTML formats. These are critical behaviors not captured by 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a terse core statement covering purpose, pagination, and variant requirement, followed by a clearly-labelled PRESENTATION GUIDANCE block. Every sentence earns its place, with no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool, the description addresses the most critical usage points: pagination, variant requirement, and output format selection. It leverages rich schema descriptions and readOnly annotations effectively, though it doesn't detail the return payload structure (no output schema), which is partially mitigated by the format guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, so the description doesn't need to compensate fully. It enriches key parameters: variationPage (1–10 pagination), format (default to markdown/json, HTML only when explicitly requested), and the notion of a sensible default set for resources. It doesn't describe merchant/condition/languagesOfPreference, but those are self-explanatory via enums and naming.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List colour/size/style variations of a parent ASIN' — a specific verb and resource that clearly distinguishes it from sibling tools like search_items or get_browse_nodes. It also adds scope details (max 10 per call, pagination, empty result for non-variant products), which further clarifies the tool's exact function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for use (pass parent ASIN of a product with variants) and a clear exclusion (non-variant products return empty result). It does not explicitly name alternative tools, but the purpose is distinct enough that the agent can infer when to choose this tool. The presentation guidance also specifies when to use markdown/json vs HTML formats, which aids correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_itemsA
Read-only

Search Amazon's catalog by keywords (plus optional title/actor/author/brand/browse-node filters). Returns up to 10 items per page; paginate via itemPage: 2..10 (100 items max). totalResultCount = results that exist, not results accessible. Prices are in the marketplace's currency.

PRESENTATION GUIDANCE (important): default to format: 'markdown' or format: 'json'. After the tool returns, DO NOT paste the raw output into the chat. Instead, summarise the results conversationally — e.g. "I found 5 coffee grinders. The standouts are: • Baratza Encore ($179, highly rated burr grinder) • OXO Brew ($99, solid budget pick) …" — then END your reply by asking the user whether they'd like an embeddable HTML card/grid for their blog. Only call the tool with format: 'html-card' or format: 'html-grid' when the user has explicitly asked for a preview, card, widget, embed, or paste-ready HTML. Never default to HTML output.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorNo
brandNo
titleNoSearch within product titles.
artistNo
authorNo
formatNoOutput format. DEFAULT TO 'markdown' OR 'json' when you plan to summarise the results in chat. Use 'html-card' / 'html-grid' ONLY when the user has explicitly asked for an embed, preview, card, widget, grid, or paste-ready HTML — these formats return a full HTML document the user pastes into their blog and are not for in-chat reading. 'markdown' = friendly summary source; 'json' = raw API data for programmatic use; 'html-card' = single product card; 'html-grid' = responsive grid of all items.markdown
sortByNo
itemPageNoPage number (1-10).
keywordsNoSearch keywords. Required unless a different scoping field (title/actor/author/brand/browseNodeId) is provided.
maxPriceNoMax price in smallest currency unit (cents/pence).
merchantNo
minPriceNoMin price in smallest currency unit (cents/pence).
conditionNo
itemCountNoItems per page (max 10).
resourcesNoWhich fields Amazon should return. Names are camelCase (e.g. "itemInfo.title"). Omit to use a sensible default set.
searchIndexNoProduct category, e.g. "Electronics", "Books", "All".
availabilityNo
browseNodeIdNoRestrict results to a browse node (category).
customStylesNoExtra CSS appended to the default stylesheet when format is 'html-card' or 'html-grid'. Target stable class-name anchors: .amzn-card, .amzn-card__image, .amzn-card__title, .amzn-card__meta, .amzn-card__brand, .amzn-card__rating, .amzn-card__price, .amzn-card__price--unavailable, .amzn-card__savings, .amzn-card__cta, .amzn-card__disclosure, .amzn-grid. Ignored for 'markdown' and 'json'.
deliveryFlagsNo
titleMaxCharsNoMaximum rendered title length for HTML card/grid output. Amazon titles are often 150+ chars of keyword stuffing; clamping to ~80 keeps cards one-line on typical widths. Defaults to 80. Set to 0 to disable. Ignored by 'markdown' and 'json' — those formats get the full untruncated title.
minReviewsRatingNoMinimum star rating (1-5).
minSavingPercentNo
hideItemsWithoutPriceNoWhen format is 'html-grid', drop items that have no price. Defaults to true — cards without a price are weak embeds (no deal hook, reader must click through to learn anything). Set false for comparison tables where availability can lapse but you still want the product visible. Ignored for 'html-card', 'markdown', and 'json'.
languagesOfPreferenceNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and openWorldHint annotations, the description discloses pagination limits (itemPage 2..10, 100 items max), the totalResultCount caveat, and marketplace currency. It also spells out that HTML formats return a full document only when explicitly requested, and that raw output should not be pasted into chat. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-sentence purpose, then adds concise pagination and currency facts, and closes with an important (clearly labeled) presentation block. The example summary is a bit verbose, but it vividly illustrates the expected chat behavior. No fluff; structure is logical.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 25-parameter tool with no output schema, the description covers the essential operational model: search scoping, pagination, result-count caveat, currency, and output-format semantics. It doesn't describe the exact response shape (e.g., where items live in the JSON) or error/empty cases, but the resource parameter and presentation guidance partially cover that. Overall it is complete enough for effective autonomous use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description groups actor/author/brand/title/browseNodeId as optional search scoping filters, adding meaning beyond their bare schema entries. It also clarifies that minPrice/maxPrice are in cents/pence implicitly via 'prices are in the marketplace's currency'. However, several enum parameters (sortBy, condition, merchant, availability) remain unexplained in both prose and schema, so parameter coverage is only partially enhanced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Search Amazon's catalog by keywords', a specific verb and resource. It lists optional filters (title/actor/author/brand/browse-node) which distinguishes it from sibling tools like get_items that likely retrieve by ID. The purpose is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that this tool is for searching the catalog, but it never names sibling tools or says when not to use it. The PRESENTATION GUIDANCE covers output-format choice (markdown/json vs html-card/grid), which is intra-tool usage, not tool-vs-alternative guidance. Thus usage is implied, not explicit.

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. Dates show when Glama detected each change.

  1. 5 tool updatesv0.3.3
    • First observedformat_items
    • First observedget_browse_nodes
    • First observedget_items
    • First observedget_variations
    • First observedsearch_items

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct operation: fetching variations, searching by keywords, fetching by ASIN, retrieving browse node metadata, and formatting items. The descriptions clearly separate these concerns, with no overlapping purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: get_variations, search_items, get_items, get_browse_nodes, format_items. This makes the tool set predictable and easy to navigate.

Tool Count5/5

Five tools is well-scoped for an Amazon product data server. Each tool serves a distinct, necessary role without redundancy or bloat.

Completeness5/5

The tool surface covers the core workflows for Amazon product lookup: searching, retrieving by identifier, viewing variations, exploring category structure, and formatting results. No critical gaps are apparent for a read-only product retrieval server.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables scraping Amazon product details and searching for products on Amazon through natural language queries. No API keys required as it scrapes publicly available Amazon pages.
    10
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Lets Claude search Amazon products via multiple keyword queries and present curated results in an interactive carousel widget with add-to-cart functionality.
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/houtini-ai/amazon-creators-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server