Skip to main content
Glama

keepa-mcp

Amazon price and sales-rank history for your AI assistant, via the Keepa API.

CI npm


Unofficial package. keepa-mcp is not affiliated with, endorsed by, or supported by Keepa GmbH. "Keepa" and "Amazon" are trademarks of their respective owners. This is an independent open-source client for the publicly documented Keepa API.


What it does

Tool

Description

Example prompt

get_product

Title, brand, category, current prices, buy box, review count and rating

"What is the current Amazon price and rating for ASIN B08N5WRWNW?"

get_price_history

Decoded price time series for Amazon, new, used, and buy-box prices

"Show me the price history for B08N5WRWNW over the past year"

get_sales_rank_history

Sales rank over time plus a demand trend summary

"Is demand trending up or down for B07PXGQC1Q?"

search_products

Keyword product search, returns matching ASINs

"Find ASINs for 'wireless earbuds' on Amazon"

get_best_sellers

Top ASINs in a Keepa category

"What are the best sellers in Electronics?"

get_deals

Current price-drop deals filtered by drop % and rating

"Show deals with at least 30% off and 4.5 stars"


Related MCP server: ShopSavvy Data API MCP Server

Quick start

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "keepa": {
      "command": "npx",
      "args": ["-y", "keepa-mcp"],
      "env": {
        "KEEPA_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Claude Code

claude mcp add keepa -e KEEPA_API_KEY=your_key -- npx -y keepa-mcp

OpenAI Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.keepa]
command = "npx"
args = ["-y", "keepa-mcp"]

[mcp_servers.keepa.env]
KEEPA_API_KEY = "YOUR_API_KEY_HERE"

Getting a Keepa API key

Sign up at https://keepa.com/#!api to get your API key.

The free tier provides 100 tokens per minute. Each product data request costs tokens proportional to the data retrieved (history length, number of offers, etc.). Typical product lookups cost 1-5 tokens; best-seller lists and deals cost more. See the Keepa API docs for the full token cost table.

Token economics at a glance:

  • get_product: ~2-4 tokens — the product record plus the stats, rating and buybox add-ons it needs. Keepa returns no current price, rating, review count or offer count without them.

  • get_price_history / get_sales_rank_history: ~2-4 tokens

  • get_best_sellers: 50-100 tokens per request

  • get_deals: 5-25 tokens per page

  • Free tier refills at 100 tokens/minute

Live offer data (offers) is not requested. It triggers a real-time marketplace lookup costing 10+ extra tokens per call, which on a small bucket can fail the request outright. Versions before 0.1.2 always sent offers=20, so get_product never actually cost the 1 token this table used to claim.

If you hit the quota, the tool returns a clear error message and you can retry after the bucket refills.


Example conversations

1. Product research

"Look up B08N5WRWNW, then show me the last 6 months of price history and tell me whether demand has been growing."

The assistant calls get_product, then get_price_history with range="6m", then get_sales_rank_history with range="6m", and synthesises a verdict.

2. Category opportunity scan

"Pull the top 20 best sellers in Electronics (category 172282), then get current details and sales rank trends for the first three."

The assistant calls get_best_sellers, then get_product and get_sales_rank_history for the first three ASINs, and summarises the demand signals.

3. Deal hunting

"Find highly-rated Amazon deals with at least 25% off, then show me the price history for the top result to confirm it is a genuine dip."

The assistant calls get_deals with min_price_drop_pct=25, min_rating=45, picks the top ASIN, then calls get_price_history with range="6m" to validate the claimed price drop against historical data.


Development

# Install dependencies
npm install

# Run tests (no live HTTP; all upstream calls are mocked)
npm test

# Build TypeScript to dist/
npm run build

# Start the server (requires KEEPA_API_KEY in environment)
KEEPA_API_KEY=your_key node dist/index.js

Project structure

src/
  index.ts                 # Server entry point, tool registration
  constants.ts             # API base URL, Keepa time offset, limits
  types.ts                 # TypeScript interfaces
  services/
    keepa-client.ts        # Fetch wrapper, time utilities, history decoder
  tools/
    get-product.ts
    get-price-history.ts
    get-sales-rank-history.ts
    search-products.ts
    get-best-sellers.ts
    get-deals.ts
tests/
  keepa-client.test.ts     # Unit tests for time conversion and history decoding
  tools.test.ts            # Integration tests with mocked fetch + fixture JSON
  fixtures/                # Realistic Keepa response shapes

Built by

Built by Puya Ventures LLC. I build custom MCP servers and AI integrations for product-research, e-commerce, and SaaS teams. Get in touch: purahmanian@gmail.com | Portfolio: puyarahmanian.com

Part of the Product-Research MCP Suite: keepa-mcp · google-trends-mcp · junglescout-mcp


Privacy

This server runs entirely on your machine. It collects no telemetry and stores no data. The only network calls it makes are to the Keepa API (api.keepa.com), sending your API key and the ASINs, keywords, or category ids you ask about. Your API key is read from the KEEPA_API_KEY environment variable and never written to disk or sent anywhere except Keepa. See Keepa's privacy policy: https://keepa.com/#!privacy

License

MIT. See LICENSE.

Available Tools

6 tools
get_best_sellersGet Best SellersA
Read-onlyIdempotent

Get the top-selling ASINs in a Keepa category.

Returns an ordered list of ASINs. Find category ids at: https://keepa.com/#!categorytree/1

Common category ids (amazon.com):

  • 172282: Electronics

  • 1055398: Computers & Accessories

  • 3760901: Camera & Photo

  • 2619533: Musical Instruments

  • 284507: Kitchen & Dining

Args:

  • category_id (number): Keepa category id

  • domain (number, optional): Keepa domain id (default 1 = amazon.com)

Examples:

  • "What are the best sellers in Electronics?" -> category_id=172282

  • "Top Kitchen products" -> category_id=284507

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoKeepa domain id (1 = amazon.com)
category_idYesKeepa category id (e.g. 172282 for Electronics on amazon.com). Find ids in the Keepa category tree at https://keepa.com/#!categorytree/1

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds useful behavioral context: it returns an ordered list of ASINs, explains where to find category IDs, and gives common examples. 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 clear purpose, then provides a link and examples. The Args and Examples sections add practical value, and the overall length is justified. Slightly longer than minimal, but each part earns its place.

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?

Given the tool's simplicity (two parameters, no output schema), the description is complete: it explains what the tool returns (ordered list of ASINs), how to find category IDs, and provides common examples. No major missing context for an agent to select and invoke the tool.

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 100%, so the schema already documents both parameters thoroughly. The description marginally adds value with example category mappings, but these are also present in the schema's category_id description. The description does not add meaning beyond the schema.

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 'Get the top-selling ASINs in a Keepa category' with a specific verb and resource. It also differentiates from siblings like search_products and get_deals by focusing on top-selling ASINs.

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 (when you need top-selling ASINs in a category), examples of use cases, and a link to find category IDs. It does not explicitly exclude alternatives like search_products or get_deals, but the context implies the tool is for best sellers.

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

get_dealsGet DealsA
Read-onlyIdempotent

Fetch current Amazon price-drop deals from Keepa.

Returns products where the price has dropped significantly, filtered by minimum price drop percentage and minimum rating.

Args:

  • min_price_drop_pct (number, optional): Minimum % price drop (1-99). Default: 20

  • min_rating (number, optional): Min rating 0-50 (45 = 4.5 stars). Default: 40

  • page (number, optional): Page offset for pagination. Default: 0

  • domain (number, optional): Keepa domain id (default 1 = amazon.com)

Examples:

  • "Show me deals with at least 30% off" -> min_price_drop_pct=30

  • "Find highly-rated products on sale" -> min_rating=45, min_price_drop_pct=20

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage offset for pagination. Default: 0 (first page)
domainNoKeepa domain id (1 = amazon.com)
min_ratingNoMinimum product rating (0-50, where 45 = 4.5 stars). Default: 40
min_price_drop_pctNoMinimum price drop percentage to include. Default: 20

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the description's additional context about returning products with significant price drops and filtering by rating is useful. It does not describe return structure, sorting, or edge cases, but given strong annotations, the bar is lower.

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 compact, front-loaded with purpose, and organized with an Args list and examples. Every sentence serves a purpose; no fluff or redundancy.

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?

Given the simple parameter set (all optional, no enums) and the lack of an output schema, the description covers the essential context: purpose, filters, defaults, pagination, and domain selection. It could mention return format or sorting, but is largely complete for practical 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?

Schema covers all four parameters with descriptions, but the tool description adds practical mapping examples ('Show me deals with at least 30% off' → min_price_drop_pct=30), which helps an agent translate natural language into parameter values. This goes beyond the schema's terse definitions.

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 'Fetch current Amazon price-drop deals from Keepa', clearly identifying the action and resource. It distinguishes itself from sibling tools like get_best_sellers and search_products by focusing specifically on price-drop deals with rating and drop-percentage filters.

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 gives clear context for when to use the tool (to find products with significant price drops) and provides concrete examples of user queries. However, it does not explicitly compare with alternatives or state when not to use this tool, so it falls just short of full guidance.

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

get_price_historyGet Price HistoryA
Read-onlyIdempotent

Fetch historical price data for an Amazon ASIN from Keepa.

Returns a decoded, downsampled time series (at most 60 data points) for:

  • Amazon price (sold by Amazon directly)

  • New (3P) price (lowest new third-party price)

  • Used price (lowest used price)

  • Buy box price

Keepa stores prices in cents. All prices returned are in USD. Keepa time values (minutes since 2011-01-01) are decoded to ISO dates.

Args:

  • asin (string): Amazon ASIN

  • range (string, optional): Time range. "30d", "6m", "1y", "all". Default: "90d"

  • domain (number, optional): Keepa domain id (default 1 = amazon.com)

Examples:

  • "Show price history for B08N5WRWNW over the past year" -> range="1y"

  • "What has the Amazon price been for B07PXGQC1Q in the last 30 days?" -> range="30d"

ParametersJSON Schema
NameRequiredDescriptionDefault
asinYesAmazon ASIN
rangeNoTime range for history. Examples: "30d" (30 days), "6m" (6 months), "1y" (1 year), "all" (full history). Default: 90d90d
domainNoKeepa domain id (1 = amazon.com)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior. The description adds valuable behavioral details: downsampling to at most 60 data points, cents-to-USD conversion, and decoding Keepa time to ISO dates. This goes beyond annotation coverage.

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 and front-loaded: main purpose, return data, unit/time conventions, args, and examples. Every section earns its place with no redundancy or fluff.

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

Completeness5/5

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

Despite having no output schema, the description explains what data points are returned and the format. Combined with strong annotations (read-only, idempotent, non-destructive), it gives a complete picture for a 3-parameter read tool.

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 covers all parameters (100% coverage), so baseline is 3. The description adds concrete examples for range values and clarifies domain default, which helps the agent map natural language to parameter values.

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 the specific action ('Fetch historical price data') on a specific resource ('Amazon ASIN from Keepa') and clearly lists the returned data series. It distinguishes itself from siblings like get_product (product info) and get_sales_rank_history (sales rank), though not explicitly.

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 through examples and parameter descriptions, showing when to use (e.g., 'Show price history for B08N5WRWNW over the past year'). Does not mention alternative tools or exclusions, so it's not a 5, but it's more than implied usage.

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

get_productGet Product DetailsA
Read-onlyIdempotent

Fetch current product details from Keepa for a given Amazon ASIN.

Returns: title, brand, category path, current Amazon price, new (3P) price, buy box price, review count, star rating, number of new offers, and latest sales rank.

Prices are in USD. A value of "N/A" means the price type is not currently available.

Args:

  • asin (string): Amazon ASIN, e.g. "B08N5WRWNW"

  • domain (number, optional): Keepa domain id (default 1 = amazon.com)

Examples:

  • "What is the current price of ASIN B08N5WRWNW?" -> use get_product with asin="B08N5WRWNW"

  • "Show me product details for B07PXGQC1Q" -> use get_product with asin="B07PXGQC1Q"

Error handling:

  • Returns an instructional message if KEEPA_API_KEY is missing.

  • Returns a not-found message for invalid ASINs.

ParametersJSON Schema
NameRequiredDescriptionDefault
asinYesAmazon ASIN or product code (e.g. B08N5WRWNW)
domainNoKeepa domain id: 1=amazon.com, 2=amazon.co.uk, 3=amazon.de, 4=amazon.fr, 5=amazon.co.jp, 6=amazon.ca, 8=amazon.it, 9=amazon.es, 10=amazon.in

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate a read-only, idempotent operation, but the description adds valuable context: it details the return fields, explains the 'N/A' sentinel, notes USD currency, and describes error handling for missing API key and invalid ASINs. This goes beyond the annotation baseline.

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 clear sections (Returns, Prices, Args, Examples, Error handling) and is front-loaded with the primary purpose. It is slightly long due to repeating schema info for the 'Args' section, but every section serves a useful role, so it earns a 4.

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

Completeness5/5

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

Despite having no output schema, the description thoroughly enumerates the return fields, clarifies value semantics, and covers error scenarios. For a simple 2-param tool, this is complete enough for an agent to correctly select and invoke the tool.

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 coverage is 100% for both asin and domain, so the schema already provides parameter meaning. The description repeats the asin argument and domain default without adding new semantic detail beyond a couple of examples, which is marginal value. Baseline 3 applies.

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 fetches current product details for a given Amazon ASIN, naming the specific resource (Keepa product data) and scope (current snapshot). It distinguishes itself from sibling tools like get_price_history and get_best_sellers by focusing on current details and listing the exact returned fields.

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?

Examples provide concrete use cases ('What is the current price...') and imply when to use this tool, but it does not explicitly contrast with alternatives like get_price_history for historical data. The description gives clear contextual guidance without formal exclusions, so it earns a 4 rather than 5.

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

get_sales_rank_historyGet Sales Rank HistoryA
Read-onlyIdempotent

Fetch historical sales rank data for an Amazon ASIN from Keepa.

Sales rank (BSR) is a proxy for demand: lower rank = faster sales velocity. Returns a decoded, downsampled time series plus a trend summary.

The trend summary indicates whether demand is improving (rank decreasing), worsening (rank increasing), or stable.

Args:

  • asin (string): Amazon ASIN

  • range (string, optional): Time range. "30d", "6m", "1y", "all". Default: "90d"

  • domain (number, optional): Keepa domain id (default 1 = amazon.com)

Examples:

  • "Is demand trending up or down for B08N5WRWNW?" -> use get_sales_rank_history

  • "Show 6-month BSR history for B07PXGQC1Q" -> range="6m"

ParametersJSON Schema
NameRequiredDescriptionDefault
asinYesAmazon ASIN
rangeNoTime range for history. Examples: "30d", "6m", "1y", "all". Default: 90d90d
domainNoKeepa domain id (1 = amazon.com)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the agent knows it's a safe read. The description adds that the tool returns a decoded, downsampled time series plus a trend summary, and explains how to interpret rank changes (improving/worsening/stable). This goes beyond the safety profile to set expectations about the response.

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 structured with a purpose statement, a brief explanation of BSR relevance, output summary, argument list, and examples. While longer than necessary, each section adds context and the format is easy to scan.

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?

The description covers the tool's purpose, output structure (time series + trend summary), parameter semantics, and provides two use-case examples. Without an output schema, it could be more explicit about the exact time series format (e.g., array of points), but given the simplicity and the annotations, it's adequately complete.

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?

All three parameters are documented in the schema (100% coverage), so the description's Args section is largely redundant. It does reinforce defaults and adds an example using range='6m', but doesn't provide substantial new meaning beyond the schema descriptions.

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 'Fetch historical sales rank data for an Amazon ASIN from Keepa', which clearly states a specific verb, resource, and scope. It distinguishes itself from siblings like get_price_history and get_best_sellers by focusing on BSR history, further clarified by examples.

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 includes concrete example queries ('Is demand trending up or down...') that signal when to invoke this tool. It doesn't explicitly name alternatives or exclusions, but the examples imply the tool is for demand/BSR history questions, not for price or current best-seller data.

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

search_productsSearch ProductsA
Read-onlyIdempotent

Search for Amazon products on Keepa by keyword.

Returns a list of matching ASINs. Use get_product on any returned ASIN to fetch full product details, prices, and history.

Args:

  • keyword (string): Search term, e.g. "wireless earbuds"

  • category_id (number, optional): Restrict to a Keepa category id.

  • domain (number, optional): Keepa domain id (default 1 = amazon.com)

Examples:

  • "Find products for 'yoga mat'" -> keyword="yoga mat"

  • "Search Electronics for 'USB-C hub'" -> keyword="USB-C hub", category_id=172282

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoKeepa domain id (1 = amazon.com)
keywordYesSearch keyword or phrase (e.g. 'wireless earbuds')
category_idNoOptional Keepa category id to restrict results. Find ids via get_best_sellers or Keepa category tree.

TDQS

A4.5/5.0
Behavior4/5

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

The description adds value beyond annotations by stating that the return is a list of ASINs and that full details require a separate call to get_product. This clarifies the tool's scope. Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description supplements with return format and next-step guidance, justifying a 4.

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, beginning with a clear one-sentence purpose, followed by return behavior and a pointer to a sibling tool. It includes an Args section and Examples, but each element contributes meaningfully to usage understanding. No redundant filler, making it both concise and informative.

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

Completeness5/5

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

For a search tool with no output schema, the description adequately explains the return value (list of ASINs) and how to consume it. It also covers all parameters, provides examples, and notes the optional nature of category_id and domain. The description is self-contained and complete for the agent to select and invoke the tool correctly.

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 100%, but the description goes beyond schema by providing concrete examples that map natural language requests to parameters (e.g., "yoga mat" -> keyword). This helps the agent understand how to infer values from user intents, adding semantic value over the schema's field descriptions.

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 it searches for Amazon products on Keepa by keyword, returns a list of matching ASINs, and distinguishes itself from get_product by explicitly directing users to use get_product for full details. This is a specific verb+resource combination that differentiates it from sibling tools.

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?

It provides clear context by telling users to call get_product on any returned ASIN for full details, giving a direct follow-up action. It also gives usage examples, but it does not explicitly state when not to use the tool or compare against alternatives like get_best_sellers. Thus it has clear context but no exclusions.

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.

  1. 6 tool updatesv0.1.1
    • First observedget_best_sellers
    • First observedget_deals
    • First observedget_price_history
    • First observedget_product
    • First observedget_sales_rank_history
    • First observedsearch_products

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a clearly distinct data type: current product details, price time series, sales rank history, best-seller lists, keyword search, and deals. Even the two history tools are cleanly separated by price vs. rank.

Naming Consistency5/5

All tools follow a consistent get_* or search_* verb + noun pattern in snake_case (e.g., get_product, get_price_history, search_products). No mixed conventions or vague verbs.

Tool Count5/5

Six tools is well within the ideal 3-15 range and covers the core Keepa workflows without redundancy. The count feels deliberate, and each tool earns its place.

Completeness4/5

The surface covers the main read-only product intelligence needs: current data, historical prices and ranks, search, best sellers, and deals. Minor gaps like category tree lookup or offer-level detail exist, but workflows are not blocked.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

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

  • A
    license
    A
    quality
    C
    maintenance
    Provides conversational access to Keepa's product and sales data for product research, sales velocity analysis, inventory optimization, and competitive intelligence.
    11
    42
    32
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides AI assistants with access to ShopSavvy's comprehensive product data, pricing information, and historical price tracking, enabling product lookup by barcode or ASIN, current offers, price history, and scheduling for automatic monitoring.
    9
    67
    8
    MIT