Skip to main content
Glama
SZhukovWork

aliexpress-ru-mcp

by SZhukovWork

aliexpress-ru-mcp

English · Русский

Buyer side: works with the public aliexpress.ru storefront; no account needed.

An MCP server that gives LLM agents live, honestly-labelled data from aliexpress.ru, the Russian AliExpress storefront: ruble prices per variant, coupons with the order total they really need, delivery dates and costs to a Russian city, sellers, and buyer reviews with real pagination.

Why another AliExpress server

Most AliExpress scrapers either work with aliexpress.com (dollars, no Russian delivery, no ruble coupons) or return numbers that are not what a buyer pays. This one is built around not doing that:

Pitfall

What this server does

"Price" taken from the card's min–max range over all variants — lower than what the card shows

Price of the variant the card pre-selects (or the one you ask for), plus every variant with its options, price and stock

A search listing shows the price of another variant than the card (observed: the 2-pack for 499 ₽ while the card opens on 1 piece for 299 ₽)

Every hit says which variant its price is for (listing_sku_id); get_product prices exactly that variant on request

A coupon subtracted from one item although it needs an order of 908 ₽ or more

Every coupon with its minimum order; only what the ordered quantity unlocks is applied (one store coupon + one order-total tier), plus the next threshold

Empty delivery: the ship-from country guessed as "RU", the API answers "no methods"

The delivery quote is requested exactly as the product page does; an empty answer is reported as "unknown", never as free

Delivery quoted for a different city than asked (the region lives in a cookie)

The region is set on every request, and the city the site echoes back is checked

A lot of 100 pieces compared with a single piece (the payload's lot flag stays false on lot cards)

Lot size read from the card's own unit text ("Цена за 1 лот (100 штук)")

/item/1_XXXX.html items fail with the bare id

source_id is handled everywhere and corrected automatically

"Sellers leave characteristics empty" — they are loaded by an async widget

Characteristics (and optionally the description) come from the same widget endpoint the page uses

Only the first page of review texts

Real review pagination, sort by lowest rating first, star / photo / "from Russia" filters

Deep search pages repeat earlier items

Pages are chained with the site's own continuation token

Anti-bot captcha, blocked sessions

Headless Chromium mints a session once; a blocked session is re-minted automatically; otherwise a clear error

Every response carries fetched_at; price and delivery answers also say which city they are for.

Related MCP server: Kettu Marketplace Intelligence

Tools

Tool

What it returns

search_products(query, page, sort, price_min, price_max, limit, city)

20 items per page; sort relevance / orders / price_asc / price_desc / newest; total_found, has_more. Per item: listing price and pre-discount price with the variant they belong to (listing_sku_id), the listing's "with coupon" price, rating, orders, listing delivery estimate, number of variants, Choice and sponsored flags, seller, item_id, source_id, URL

get_product(item_id, source_id, sku_id, quantity, city, include_description)

Selected variant (price, pre-discount price, stock, options); all variants; all coupons with thresholds; what coupons give at quantity and the next threshold; Choice combo terms; delivery methods with dates and cost to the city; rating with star split; orders; seller (positive feedback %, followers, badges, orders shipped, store age); characteristics; buyer protection and returns

get_reviews(item_id, source_id, sort, stars, with_photos, from_russia, with_follow_up, page, limit, include_aspects)

Reviews with date, stars, text and original text, bought variant, photos, helpful votes, buyer country, seller reply, follow-up; the star split; AliExpress's aspect tags ("Яркий свет" — 16 mentions, 100 % positive)

compare_products(items, city)

Up to 10 items side by side: price, variant, price range, price after coupons for one unit, cheapest and fastest delivery, rating, reviews, orders, flags

Requirements

Python

≥ 3.10, with uv (or pip)

Browser

Chromium via Playwright, downloaded automatically on first run (≈300 MB download, ≈650 MB on disk in ~/.cache/ms-playwright, shared by all Playwright tools). Warms up the aliexpress.ru session for a few seconds on first use and again if the anti-bot blocks it; all data requests are plain HTTP

Docker

Not needed: Chromium runs as a child process of the server on the host

System libraries

Already present on desktop Linux, macOS and Windows. On a minimal Debian/Ubuntu server install them once (root): uvx --from playwright playwright install --with-deps chromium

Network

aliexpress.ru answered from a foreign IP in our tests; delivery quotes are always for the Russian city in AE_CITY

Memory

The browser takes ≈1 GB while it runs — ≈10 s of warm-up (measured on a cold start), then it is closed

Display

Not needed (AE_HEADLESS=0 shows the window to solve a captcha by hand)

Tested on

Linux (CachyOS; Playwright uses its Ubuntu build there). macOS and Windows are supported by Playwright but untested

Install

Claude Code:

claude mcp add aliexpress -e AE_CITY=Москва -- uvx --from git+https://github.com/SZhukovWork/aliexpress-ru-mcp aliexpress-ru-mcp

Any MCP client (claude_desktop_config.json, .mcp.json, …):

{
  "mcpServers": {
    "aliexpress": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/SZhukovWork/aliexpress-ru-mcp", "aliexpress-ru-mcp"],
      "env": {"AE_CITY": "Москва"}
    }
  }
}

From a checkout: uv venv && uv pip install -e . && .venv/bin/aliexpress-ru-mcp.

Configuration (environment variables)

Variable

Default

Meaning

AE_CITY

Москва

City for prices and delivery quotes, as named on the site. Add the region for namesakes: Кировск, Мурманская. Every tool also takes a city argument

AE_PROXY

—

Proxy URL for both HTTP and the browser, e.g. http://user:pass@host:3128

AE_MIN_INTERVAL

1.0

Seconds between requests to aliexpress.ru. The site throttles bursts

AE_CACHE_DIR

~/.cache/aliexpress-ru-mcp

Anti-bot session (file mode 0600) and resolved cities

AE_HEADLESS

1

0 opens a visible browser window when a session is minted — use it once if the site shows a captcha; solve it and the session is reused

What the numbers mean

  • price_rub is the variant's price for an anonymous buyer right now ("цена сейчас" on the card); price_before_discount_rub is the crossed-out one. A card's variants can differ a lot in price — the answer always names the variant (sku_id, options).

  • Coupons gate on the whole order subtotal. with_coupons applies only the coupons the given quantity unlocks; next_threshold tells how much more to order for a bigger one. Store coupons have to be claimed on the card (free, one click): needs_claim. site_card_coupon_price_rub is the card's own "X ₽ with coupon" figure; if it disagrees with the thresholds, the answer says so. multi_piece discounts (−2 % from 3 pieces…) are listed but not added to totals: how they stack with coupons is not verified.

  • Search prices belong to the variant the listing shows (listing_sku_id); the card may pre-select a cheaper or dearer one — pass listing_sku_id as sku_id to get_product to price the same variant. The price window filters on AliExpress's own price field, so a shown price can fall outside it. listing_coupon_price_rub is what the listing advertises "с купоном"; the coupon may need a bigger order.

  • Choice combo items (combo): the card price and free delivery are advertised for combo-cart orders from a threshold (usually 1 000 ₽). Below it the answer warns that the order may cost more and gives the API's "buy now" price for the variant alone — not verified at checkout.

  • delivery is the real quote for the city: methods, date range, cost, whether a passport is needed. No methods means "unknown", not "free". delivery_estimate in search results is the listing's summary (cost_rub_from = cheapest method, days = the listing's range).

  • Rating covers the whole item (all variants). orders is the "купили" counter — purchases, not reviews.

  • Seller: positive_feedback_percent is the seller rating shown on the card; badges: brand (certified brand representative), official (the seller's own brand), top (top store); orders_shipped with orders_shipped_period is the closest thing to the store's age the site shows.

  • lot / lot_pieces: the card sells lots ("Цена за 1 лот (100 штук)"), so every price on it is per lot. price_unit repeats the card's unit text.

  • stock is the exact number the API reports (the card caps it at "99+").

  • fulfilment: own_warehouse — shipped from an AliExpress warehouse (Choice); dropshipping — shipped by the seller (observed values).

  • Review texts written in another language are machine-translated by AliExpress; original_text holds the original.

Limitations

  • Unofficial: relies on the storefront's internal endpoints, which can change at any time. Parsers are isolated in parse.py and covered by tests on recorded responses.

  • Anonymous only: a signed-in buyer may see personal prices and coupons (new-user coupons, loyalty). Checkout is the final authority on totals.

  • Tested from a Russian IP. After many fresh sessions from one IP the anti-bot can show a captcha even to the browser: wait, or run once with AE_HEADLESS=0.

  • Search price sorting and the price window use AliExpress's own price field; a shown price can fall outside the window (see "What the numbers mean").

  • Reviews come 10 per request; the star filter takes one star value at a time.

  • Read-only: no account, cart or orders (see Roadmap).

Roadmap

  • Later: optional account mode (off by default). Log in once in a visible browser window — credentials never pass through the MCP client — to see your personal prices, claimed coupons and exact delivery to your address.

  • Later: cart — add_to_cart / get_cart on top of the account mode, to check coupon and combo totals exactly. Checkout, payment and address changes are deliberately out of scope.

Development

uv venv && uv pip install -e '.[dev]'
.venv/bin/pytest            # offline tests on recorded responses
.venv/bin/pytest -m live    # end-to-end over MCP stdio against live aliexpress.ru (Russian IP)

Disclaimer

Not affiliated with AliExpress or Alibaba Group. Intended for personal price research; respect aliexpress.ru's terms of use and keep request rates low.

License: MIT.

Available Tools

4 tools
compare_productsA
Read-onlyIdempotent

Side by side: the pre-selected variant's price, price range over variants, price after coupons for one unit, cheapest delivery with its date, rating, reviews, orders, Choice/local flags — for up to 10 items. Seller details and characteristics are only in get_product.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoRussian city for prices and delivery, e.g. 'Екатеринбург' or 'Кировск, Мурманская'. Default: the server's AE_CITY
itemsYesUp to 10 items: ids ('1005005416845229'), source-prefixed ids ('1_438997055') or product URLs

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds valuable behavioral context: it reveals that the tool computes the cheapest delivery with its date, price after coupons, and price range over variants—behaviors not inferable from the schema alone. 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.

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the primary purpose and output attributes, followed by a concise exclusion note. Every phrase contributes value; no redundancy or fluff. It is efficient and easy to parse.

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 tool is moderately complex (comparison with up to 10 items, multiple output dimensions, city-based pricing). The description covers the key output elements and explicitly notes what is NOT included (seller details). Since an output schema exists, return format is not required. It does not mention error handling or edge cases, but the essential information for calling the tool correctly is present.

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% for both parameters (city and items), so the baseline is 3. The description adds meaning by clarifying that the comparison uses the 'pre-selected variant' and details coupon pricing and delivery selection, which enriches understanding of how the 'items' parameter is interpreted. This goes beyond the schema's generic 'ids or URLs' description.

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: comparing up to 10 products side-by-side, listing specific attributes (price, price range, coupon price, delivery, rating, etc.). It also explicitly contrasts with get_product for seller details, distinguishing it from a sibling. The verb 'compare' and resource 'products' are precise and unambiguous.

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 an explicit exclusion: seller details and characteristics are only in get_product, so an agent knows not to use this tool for that. It implicitly indicates usage for multi-product comparison via 'up to 10 items' and the side-by-side framing, but does not explicitly state when to prefer it over search_products or get_reviews. Clear enough for typical cases.

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

get_productA
Read-onlyIdempotent

Full live card for one item, priced for one variant.

Returns the selected variant's price (and pre-discount price, stock), every variant with its options and price, all coupons with their minimum order, what the coupons really give at quantity (with_coupons, next_threshold), the delivery quote to the city (methods, dates, cost), Choice/combo terms, rating with the star split, orders, the seller (name, positive feedback %, followers, badges, orders shipped, store age), characteristics, buyer protection and returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoRussian city for prices and delivery, e.g. 'Екатеринбург' or 'Кировск, Мурманская'. Default: the server's AE_CITY
sku_idNoVariant to price and quote delivery for; default: the one the card pre-selects. Ids are in `variants`
item_idYesaliexpress.ru item id: the number in /item/<id>.html or /item/1_<id>.html
quantityNoUnits of this variant in the order — coupons unlock on the order subtotal
source_idNo1 for items whose URL is /item/1_<id>.html (search results say so), else 0. A wrong value is corrected automatically.
include_descriptionNoAlso return the seller's description text (often mostly images)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context like 'live' (real-time data) and the effect of quantity on coupons, but no additional behavioral traits (e.g., rate limits, error handling) are disclosed. The bar is lower due to annotations, and the description adds some value without contradicting them.

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 dense but well-structured: a lead sentence capturing the essence, followed by a comma-separated list of returned items. It is front-loaded with the core purpose and each clause earns its place. While long, the complexity of the return data justifies the detail, and it avoids 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 tool's complexity (6 parameters, output schema present, annotations provided), the description covers the return content thoroughly, listing all major data categories. It doesn't address error cases or usage prerequisites, but the required item_id is self-evident and the output schema likely details return structure. The 'live' and 'priced for one variant' framing add important context.

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 100%, so parameters are already documented. The tool description adds semantic value by explaining how parameters affect the output: quantity influences coupon calculations ('what the coupons really give at `quantity`'), city affects the delivery quote, and sku_id selects the variant to price. This goes beyond the schema's isolated parameter 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 the tool's function: 'Full live card for one item, priced for one variant.' It specifies the verb (returns) and resource (product card) and enumerates a comprehensive set of returned data. The purpose is unmistakable and distinct from siblings like search_products (search) and get_reviews (reviews).

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 implies usage: when you need a complete product card for a single item. However, it does not explicitly mention alternatives or when not to use it, nor does it contrast with sibling tools. The detailed output list makes it obvious this is the single-item detail tool, but no explicit guidance is given.

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

get_reviewsA
Read-onlyIdempotent

Buyer reviews with real pagination, sorting and filters.

Each review: date, stars, text (machine-translated into Russian when the buyer wrote in another language — original_text then holds the original), bought variant, photo count, helpful votes, buyer country, seller reply and follow-up review. Also the item's rating with the star split (all variants together) and, optionally, aspect tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage of `limit` reviews
sortNo'lowest' surfaces complaints first — the fastest way to real drawbackshelpful
limitNoReviews per page
starsNoOnly reviews with exactly this many stars
item_idYesaliexpress.ru item id: the number in /item/<id>.html or /item/1_<id>.html
source_idNo1 for items whose URL is /item/1_<id>.html (search results say so), else 0. A wrong value is corrected automatically.
from_russiaNoOnly reviews the site marks as from Russia
with_photosNoOnly reviews with buyer photos
with_follow_upNoOnly reviews the buyer later amended ('Дополненные') — long-term experience
include_aspectsNoAlso return AliExpress's aspect tags mined from reviews ('Яркий свет' — 90 mentions, 97% positive)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

The description goes well beyond the readOnly/idempotent annotations by disclosing real behavioral quirks: texts are machine-translated into Russian with the original preserved in original_text, the rating is aggregated across all variants, and aspect tags are optional. It also flags the review-composition details that affect how an agent interprets results.

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 and front-loaded: the first sentence states the core capability, and the second efficiently lists return fields in a scannable colon-list format. Every sentence adds either scope or behavioral detail, 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.

Completeness5/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, an output schema, and read-only/idempotent annotations, the description is complete enough for an agent to call it correctly. It explains the key output semantics, while the schema covers all input parameters and the output schema covers return structure, leaving no critical gap.

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%, and the input schema already explains each parameter thoroughly, including sort semantics, item_id URL formats, source_id auto-correction, and aspect-tag examples. The main description adds only a general mention of sorting/filters and optional aspect tags, so it does not materially improve parameter understanding 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 names a specific resource ('buyer reviews') and a clear action ('get'), then details exactly what is returned: review fields, item rating, star split, and optional aspect tags. It is immediately distinguishable from the sibling tools, which target search, single-product details, and comparison rather than reviews.

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 intended use is implied clearly by 'Buyer reviews with real pagination, sorting and filters' and the item_id requirement, but there is no explicit statement of when to use this tool versus a sibling like get_product. The description also mentions the item rating, which could overlap with get_product, so exclusions or routing guidance would help.

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

search_productsA
Read-onlyIdempotent

Search aliexpress.ru like the site does: real pages, sorting, a price window.

Per item: listing price (and pre-discount price) of the variant the listing shows (listing_sku_id — the card may pre-select another one; pass it to get_product as sku_id to price the same variant), the price the listing advertises "с купоном" (may need a bigger order), rating, orders, listing delivery estimate, number of variants, Choice and sponsored flags, seller, item_id and source_id. Review counts are not in listings. total_found is AliExpress's match count; has_more whether another page exists. Price sorting and the price window use AliExpress's own price field, so a shown price can fall outside the window.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoRussian city for prices and delivery, e.g. 'Екатеринбург' or 'Кировск, Мурманская'. Default: the server's AE_CITY
pageNoResult page, 20 items per page. Request pages in order (1, 2, 3…) so they do not overlap
sortNoOrder of results; 'orders' = most bought firstrelevance
limitNoReturn at most this many items of the page
queryYesSearch phrase as typed on the site (Russian works best)
price_maxNoUpper price bound, rubles
price_minNoLower price bound, rubles

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds meaningful behavioral context beyond these: it clarifies that the tool mimics real-site behavior, explains that price sorting uses AliExpress's own price field which can cause shown prices to fall outside the requested window, and warns that listing_sku_id may pre-select a different variant than what's shown. This significantly enhances an agent's understanding of edge cases without contradicting any annotation.

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 and information-dense, with every sentence serving a purpose. It front-loads the core purpose, then systematically lists output fields, explains pagination fields, and closes with a crucial caveat about price sorting. There is no redundancy or filler, making it easy for an agent to parse quickly.

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 an output schema and seven parameters, the description is remarkably complete. It explains the meaning of key output fields (listing price, coupon price, rating, orders, delivery estimate, flags), notes that review counts are absent, clarifies pagination via total_found and has_more, and references get_product for pricing the correct variant. This covers all essential aspects an agent needs to use the tool correctly.

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 all seven parameters with descriptions. The tool description adds value by explaining the price-window caveat (relevant to interpreting price_min/price_max) and the pagination ordering (already in the schema's page parameter). However, it doesn't introduce any new parameter meaning beyond what the schema provides; it only contextualizes existing definitions. Thus a baseline 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 opens with 'Search aliexpress.ru like the site does: real pages, sorting, a price window,' which precisely states the tool's purpose and its key capabilities. It goes on to detail the per-item output fields and explicitly references the sibling tool get_product when discussing listing_sku_id, distinguishing this search tool from that product-detail tool. Though it doesn't contrast with get_reviews or compare_products, the purpose is unmistakable and specific.

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 operational context: it explains how to use listing_sku_id with get_product, notes that review counts are not in listings (implying the use of get_reviews), and describes pagination ordering. However, it does not explicitly state 'use this tool when you need to find products' or give direct exclusions against alternatives. The guidance is implicit rather than explicit, so it falls 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedcompare_products
    • First observedget_product
    • First observedget_reviews
    • First observedsearch_products

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: searching listings, fetching detailed product data, fetching reviews, and comparing products. There is no ambiguity in which tool to use for a given task.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: search_products, get_product, get_reviews, compare_products. This is predictable and clear.

Tool Count5/5

With 4 tools, the server is tightly scoped to the core e-commerce workflow: search, detail, reviews, and comparison. Each tool is essential and none are redundant.

Completeness3/5

The tool set covers search, detail, reviews, and comparison, which are the primary consumer-facing operations. However, there is no tool for placing orders or managing a cart, which might be expected from an e-commerce server, but this may be intentional as the server is read-only.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers