yandex-market-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yandex-market-mcpSearch for 'Sony WH-1000XM5' and sort by price ascending"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
yandex-market-mcp
English · Русский
An MCP server that gives LLM agents live, honestly-labelled data from Yandex Market: search with real pages, the site's sort orders and price windows; seller cards with the three prices kept apart; all sellers' offers of a product; reviews at the right level; buyers' questions; seller details with the legal entity.
Buyer side: reads the public storefront pages, no Yandex account needed. Looking for your seller cabinet (the official Partner API)? That is a different tool, e.g. dontsovcmc/mcp-server-yandex-market-seller.
Why another Yandex Market server
Market's pages are full of numbers that look like one thing and are another. Scrapers that take the big number on the page return data a buyer never pays. This server is built around not doing that:
Market trap | What this server does |
The big green price on tiles, cards and in schema.org data is the price with the Yandex Pay card; the plain price is visible only in the «Детали цены» popup |
|
«Скидка 41%» is counted from the Pay-card price |
|
The search price filter and price sorting work on the Pay-card price | Every answer says so ( |
The rating on a card belongs to the seller's card, which can pool several different products (one seller's card pools seven Fiskars axes, 745 ratings) |
|
«Отзывы и оценки у всех продавцов» is a model group that merges different products (JBL Tune 520BT + 720BT + 770NC) |
|
Page 1 of "popular" is almost entirely ads |
|
One product from several sellers = several tiles; | Tiles deduplicated by offer id; |
Promo codes and «−200 ₽ с доставкой по клику» look like price cuts |
|
Cross-border offers, markdown («Уценка»), «Версия: для других стран», «Оригинал» |
|
Market picks the city from the IP; | No fake |
«6.9K оценок», «72K» | Numbers with |
Every normal page contains an empty | Captchas are recognised by URL and SmartCaptcha markers only; empty frames and foreign pages are retried once, then reported as errors, never as data |
Every response carries fetched_at (UTC) and city.
Related MCP server: wildberries-mcp
Tools
Tool | What it returns |
| Page 1 = 8 tiles, later pages 16; sort |
| One seller's card ( |
| All sellers' offers of one product as tiles (sort |
| 10 per page; |
| 10 per page; questions with the answers shown on the site, exact dates, |
| Rating, exact ratings count and star split, orders, years on Market, status; legal entity (name, INN, OGRN, address, cross-border flag) |
| Up to 10 cards side by side: three prices, card rating with the pooling flag, seller, fastest delivery, «все предложения от» |
Author names, user ids and order numbers never appear in answers; names in sellers' greetings («Здравствуйте, Анна!», «Анна, добрый день!»), e-mails and phone numbers in texts are masked.
Requirements
Measured on 2026-09-25 (Linux, Python 3.13, a Russian home IP):
Python | ≥ 3.10, with uv (or pip) |
Browser | Not needed. Plain HTTP with a Chrome TLS fingerprint (curl_cffi) gets the same pages a browser does |
Display | Not needed |
Docker | Not needed |
Disk | ≈ 85 MB for the environment (curl_cffi 38 MB, the rest is the MCP SDK and pydantic) |
Memory | Peak RSS of the server process 110–113 MB during a full run of all tools (two runs; pages are 1.3–2.6 MB of HTML) |
Cold start | 0.4–0.5 s until the MCP client sees the tools (0.7 s via |
Request time | A page answers in 0.6–1.2 s; requests are spaced 4–5 s apart, so a call takes ≈ 1 s when idle, ≈ 5 s back-to-back; |
Network | A Russian home or residential IP. Market maps the city from it; datacenter IPs abroad have been reported to get a captcha at once |
Install
Claude Code:
claude mcp add yandex-market -- uvx --from git+https://github.com/SZhukovWork/yandex-market-mcp yandex-market-mcpAny MCP client (claude_desktop_config.json, .mcp.json, …):
{
"mcpServers": {
"yandex-market": {
"command": "uvx",
"args": ["--from", "git+https://github.com/SZhukovWork/yandex-market-mcp", "yandex-market-mcp"]
}
}
}From a checkout: uv venv && uv pip install -e . && .venv/bin/yandex-market-mcp.
Configuration (environment variables)
Variable | Default | Meaning |
|
| Region id you expect Market to assign to your IP (213 Москва, 2 Санкт-Петербург). If the page says otherwise, answers carry a |
|
| Seconds between requests (never below 3). The IP is usually shared with your own browsing |
|
| After a captcha the server does not query the site for this many seconds, also across restarts |
|
| The same pause after HTTP 403 / 429 persisted through one retry |
| — | Proxy URL, e.g. |
|
| Where the cookies ( |
yandex-market-mcp status shows whether a pause is active; yandex-market-mcp unblock clears it (for example
after you solved the captcha in your own browser).
What the numbers mean
price_rub— the price without the Yandex Pay card for an anonymous buyer in the reported city. Use it for comparisons and the landed price.price_with_pay_card_rubapplies only when paying with the Pay card.price_before_discount_rubis the crossed-out «Обычная цена» and can be inflated (Fiskars X21 was seen at «79 567 → 33 915» while honest sellers ask about 9 000).conditional_offers— promo codes and offers with conditions (minimum order, delivery mode, shop subscribers). They are listed, never subtracted.rating_of_this_card— the seller's card;pools_other_products: truemeans the reviews shown on the card are partly about other products of the seller.model_group_rating— all sellers of a Market "model", which can merge different products. There is no separate rating of one variant on Market; its reviews are available withget_reviews(scope="variant").low_evidence= fewer than 10 ratings.Delivery — dates and prices for the IP city without an address, as the card shows them; «Доставка Маркета» options are often 0 ₽, sellers' couriers can cost more. A missing price means unknown.
stock_left— units the offer has according to the page.all_offers.from_pay_card_price_rub— «Все N предложений от X»: X is the lowest price with the Pay card.
Limitations
City = the IP's city. Market ignores
lr/yandex_gid; choosing an address requires a login. Prices and delivery for another city are not available. Whether prices depend on the city at all was not verified.Search depth: at most 30 pages (≈ 470 items) per query, sort and price window. Page 1 has 8 tiles, later pages 16. With more results the answer carries
depth_cap: split the price range into windows.get_offersshows at most 16 offers per sort order. Market's server-rendered offers page ignorespage(checked: page 2 returns page 1 again). Call it with other sorts to see more offers.No price history — Market removed it in 2022 and the pages do not carry it.
Anonymous prices only. The site says «Войдите, и станет дешевле»: prices after login, personal discounts, split amounts, Plus points and cashback are not available (split is a yes/no flag; the raw
isPersonalDiscountflag is passed aspersonal_discount_flag_raw, its meaning unconfirmed).Search totals count loose matches and drift: the same query reported 2308 and, an hour later, 419 results; a nonsense query «finds» thousands. Check titles; do not treat
total_foundas a catalogue size.Legal entity of a seller comes from the site's seller-info popup, which the page loads with a POST to
/api/render-lazy— a path that robots.txt disallows. Onlyget_sellerandget_product(include_seller_legal=true)make that request; everything else reads regular pages.Customs duty — Market's rule for cross-border orders (duty above 200 € or 31 kg per order) is passed on; a fixed «Пошлина N ₽» is reported only when a tile shows one.
Unofficial: the server reads the state Market embeds in its pages. Market changes it without notice; parsers are isolated in
parse.pyand covered by tests on recorded pages. Implausible pages become errors.Captcha: the server never solves or bypasses it. It stops and pauses (30 min by default).
Roadmap
Optional account mode (personal prices after login) and the cart — later.
Checkout, payment and address changes are out of scope.
Development
uv venv && uv pip install -e '.[dev]'
.venv/bin/pytest # offline tests on recorded, anonymised pages
.venv/bin/pytest -m live -s # every tool over MCP stdio against the live site (14 requests, ~1.5 min)Please run the live test rarely: the IP is shared with your own browsing, and a captcha pauses the server for 30 minutes.
Disclaimer & credits
Not affiliated with Yandex. The server reads Market's internal page state, not an official API; use it for personal price research at a human request rate and respect Market's terms of use. Ideas for recognising real captchas (URL and SmartCaptcha markers, not the substring "captcha"), "empty frame" pages and retrying an empty redirect come from Vladimir-Human/ru-marketplace-mcp (MIT); no code was copied.
License: MIT.
Available Tools
7 toolscompare_productsARead-onlyIdempotent
Side-by-side rows for up to 10 seller cards: the three prices, rating of the card, seller, delivery.
One request per card, sequentially (about 5 s each). A card that fails gets an error row;
a captcha or rate limit stops the whole comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| products | Yes | Up to 10 card ids («Артикул Маркета») or /card/ URLs |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description's extra details are genuinely additive. It discloses sequential per-card requests, approximate 5-second latency, per-card error rows, and that captcha/rate limits abort the whole comparison—exactly the behavioral traits an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: the result shape is front-loaded, followed by two tightly written caveat sentences. Every line earns its place and there is 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the single well-documented parameter, and safety annotations, the description covers the remaining operational concerns: item limit, sequential latency, failure behavior, and abort conditions. Nothing critical is missing for a read-only comparison tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single `products` parameter is fully documented by the schema. The description reinforces the 'up to 10' limit but adds no new parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (up to 10 seller cards) and the output shape (side-by-side rows with prices, rating, seller, delivery), which makes the tool's purpose recognizable. It does not explicitly name a sibling, so it stops short of fully distinguishing itself from tools like get_product or get_offers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: compare multiple seller cards side-by-side, and the latency/failure caveats help an agent judge whether it is appropriate. However, it never explicitly says when to prefer this over alternatives such as get_offers or get_product, so the routing guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offersARead-onlyIdempotent
All sellers' offers of one product (the site's «Все N предложений»), as tiles.
Market's server pages show the first 16 offers per sort and ignore page (checked
2026-09-25), so this returns at most 16; call again with another sort to see more (dedupe by
offer_id). Also returns the model group's rating — labelled: it can merge different products.
One request.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | The site's orders; price sorting uses the Pay-card price | price_asc |
| sku_id | Yes | `sku_id` (marketSku) from search_products / get_product: the exact product whose offers to list | |
| model_id | Yes | `model_id` from search_products / get_product |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 significant behavioral facts beyond those: the server ignores `page` and returns at most 16 offers per sort, different sorts yield overlapping but different subsets requiring dedupe, and the model group's rating can merge different products. These are non-obvious runtime behaviors an agent must know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the opening sentence states the core purpose, followed by the critical limit, the workaround, and the rating caveat. Every sentence carries essential information, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with full annotations and an output schema, the description covers all non-obvious operational details: the 16-offer cap, the page-ignoring server behavior, dedupe guidance, rating-merge caveat, and single-request nature. Nothing critical is missing for an agent to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds functional meaning for `sort` by explaining that each sort returns a different first-16 subset, making repeated calls with different sorts an explicit expansion strategy. It also links `sku_id` and `model_id` to 'one product,' though this is modest extra value over the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'All sellers' offers of one product (the site's «Все N предложений»), as tiles.' It clearly scopes the tool to listing offers for a single product and distinguishes it from siblings such as search_products, get_product, and compare_products by the resource it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when this tool is appropriate ('offers of one product') and provides a concrete usage workaround: 'call again with another sort to see more (dedupe by offer_id).' However, it does not explicitly name alternatives or state when not to use this tool, so it falls just short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productARead-onlyIdempotent
One seller's product card, live: the three labelled prices, promo conditions, delivery, seller.
Also: rating of this seller's card with stars and a check whether the card pools other products, «Все N предложений от X» (X = lowest Pay-card price; list them with get_offers), badges with their real meaning, cross-border / markdown / version flags, stock, characteristics and question count. One request (three with include_seller_legal).
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Market card id («Артикул Маркета», `card_id` from search_products, e.g. '103266817440') or a market.yandex.ru/card/… URL | |
| include_specs | No | Characteristics filled in by the seller/Market | |
| include_description | No | Full description text | |
| include_seller_legal | No | Also load the seller's legal entity (INN/OGRN/address): +2 requests, one of them to Market's /api/ (robots.txt Disallow) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds valuable behavioral details: it notes the number of HTTP requests ('One request (three with include_seller_legal)') and warns that one of those calls hits '/api/' disallowed by robots.txt, which is critical for rate-limit and compliance awareness. This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but well-structured: a lead sentence captures the core purpose, followed by a compact list of additional features. It is front-loaded with the essential 'one seller's product card' and avoids redundancy. The style is efficient, though the bullet-like formatting (line breaks) is not perfectly concise but remains clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to explain return values. It covers all major aspects of the product card (prices, promo, delivery, seller, rating, badges, flags, stock, characteristics, question count) and mentions the optional include flags. It also notes the interaction with get_offers. This is comprehensive enough for an agent to understand the tool's scope without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% parameter description coverage, so baseline is 3. The description enriches include_seller_legal by explaining the extra request cost and robots.txt issue, giving the agent a reason to set it to true/false. It does not repeat the other parameter descriptions, relying on schema clarity, which is acceptable. The added nuance justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool returns 'One seller's product card' and enumerates its contents (labelled prices, promo conditions, delivery, seller). It also highlights unique aspects like the seller rating and the 'Все N предложений от X' aggregation check. This is a specific verb-resource pair that clearly distinguishes it from siblings like get_offers or get_seller.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description references get_offers for listing offers, which is a hint about separation of concerns, but it does not explicitly state when to use this tool versus alternatives (e.g., 'use get_seller for legal entity details' or 'use get_reviews for reviews'). The usage context is implied but not fully articulated, leaving an agent to infer the boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_questionsARead-onlyIdempotent
Buyers' questions about a card with the answers shown on the site; by_seller marks the seller's answers.
Dates are exact. Names of buyers are never returned; greetings with a name in answers are masked. One request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page of 10 questions | |
| product | Yes | Market card id («Артикул Маркета», `card_id` from search_products, e.g. '103266817440') or a market.yandex.ru/card/… URL |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, idempotent, and non-destructive; the description adds valuable behavior: buyer names are never returned, greetings with names are masked, dates are exact, and seller answers are flagged by_seller. The phrase 'One request' adds context but is ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences carry meaningful information with the core resource stated first. There is no padding, though 'One request' is terse and could be more explicit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a complete parameter schema and an output schema present, the description covers important behavioral quirks like privacy masking and exact dates. It lacks explicit usage guidance and leaves 'One request' open to interpretation, but is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters fully (100%), including defaults, constraints, and an example value for product. The description adds no additional parameter-level semantics; the by_seller mention concerns output rather than input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource clearly: buyers' questions about a card, with answers as shown on the site. It distinguishes the tool from siblings like get_reviews by topic, though it does not explicitly name alternatives or use a direct verb like 'returns'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for buyer questions rather than reviews or offers, but it never states when to prefer it over get_reviews or when not to use it. There is no explicit context, exclusion, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reviewsARead-onlyIdempotent
Buyer reviews with date, stars, pros, cons, comment, votes, photo count and the product each is about.
The header numbers (rating, counts, stars) are the site's for the chosen scope; for scope="variant" the site still shows the whole card's numbers (labelled). Items without text are ratings only. Author names and order numbers are never returned. One request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page of 10 | |
| sort | No | 'worst' = the site's «С низкой оценкой», complaints first | helpful |
| scope | No | 'card' = this seller's card as the site shows it (can pool other products of the seller; each review says which product); 'variant' = only this exact product at this seller; 'model' = all sellers of the model group (can merge DIFFERENT products) | card |
| product | Yes | scope card/variant: card id («Артикул Маркета») or /card/ URL; scope model: `model_id` |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavioral details: it clarifies that author names and order numbers are never returned, explains the header-number behavior for scope='variant', and notes that items without text are ratings only. It also states 'One request' which implies a single call fetches all results. This goes beyond the annotations and is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose. The first sentence lists the returned fields, and the second paragraph adds necessary edge-case behavior. There is no redundant repetition of schema details. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core output contents, scope behavior, and explicit exclusions (author names/order numbers). It also mentions the single-request nature. The existence of an output schema means return-value details are not needed. It could mention pagination explicitly, but the schema's 'Page of 10' already covers that. Overall, it is sufficiently complete for a read-only tool with these annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is documented. The description adds significant semantic value by explaining the nuances of the 'scope' parameter (e.g., how 'variant' still shows the whole card's numbers labelled) and the 'sort' parameter (e.g., 'worst' means complaints first). These clarifications are not fully captured in the schema and help the agent choose correct values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns buyer reviews with specific fields (date, stars, pros, cons, comment, votes, photo count) and identifies the product each review is about. It is distinct from sibling tools like get_questions (questions) and get_offers (offers), so an agent can immediately understand its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the three scopes ('card', 'variant', 'model') and how they affect the results, which gives usage context. However, it does not explicitly state when to use this tool versus alternatives like get_questions or get_offers, nor does it mention any exclusions. Usage guidance is implied by the resource type but not stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sellerARead-onlyIdempotent
A seller's storefront header (rating, ratings count, orders, years on Market, status) and legal entity.
The legal entity (name, INN, OGRN, address, cross-border flag) comes from the site's seller-info popup, loaded with a POST to Market's /api/ (robots.txt Disallow) — two requests.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | Yes | `business_id` of a seller from search_products / get_product |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only/idempotent/non-destructive behavior. The description adds value by revealing that the data is assembled from the seller-info popup via two POST requests to Market's /api/ and that the endpoint is disallowed in robots.txt. This is useful behavioral context, though it doesn't discuss auth or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the first front-loads the primary output, the second adds relevant implementation detail. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter, full schema coverage, an output schema present, and safety annotations, the description supplies the additional behavioral context (request count and source) needed to understand the call. It doesn't enumerate return values, but that is unnecessary given the output schema. A small gap is the lack of explicit usage guidance, but that is already scored separately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: business_id has a description identifying it as a seller id from search_products/get_product. The tool description adds no further parameter semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the resource (seller) and enumerates the returned components: storefront header fields (rating, ratings count, orders, years, status) and legal entity fields (name, INN, OGRN, address, cross-border flag). This clearly differentiates get_seller from siblings like get_product or get_reviews, which concern product or review data rather than seller identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: an agent needs a seller's storefront rating/status or legal entity after obtaining a business_id from search_products/get_product. However, the description never states when to prefer this tool over siblings or gives exclusions, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsARead-onlyIdempotent
Search Yandex Market like the site: real pages, the site's sort orders and a price window.
Each item: offer/card/model/SKU ids, title, card URL, the three labelled prices (without the Pay card, with it, crossed-out), discounts, seller, sponsored flag, rating of this seller's card with its count, badges, cross-border / markdown flags, stock and delivery dates. One request per call.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Result page: page 1 has 8 tiles, every later page 16 | |
| sort | No | The site's orders. Price sorting uses the Pay-card price. 'popular' page 1 is almost all ads: for depth use price_asc with price windows | popular |
| query | Yes | Search phrase as typed on the site (Russian works best) | |
| price_max | No | Upper price bound, rubles (Pay-card price) | |
| price_min | No | Lower price bound, rubles (the site filters by the Pay-card price) | |
| include_sponsored | No | Keep sponsored tiles in `items` (they are always flagged and counted) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive. The description adds valuable behavior beyond that: real pages, site sort orders, price window, page size differences (8 vs 16 tiles), ad-heavy first page on popular sort, and the 'one request per call' constraint. This gives the agent a much richer behavioral model without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in one clear sentence, then provides a structured list of output fields. The field list is long but each item is relevant and not redundant; overall it is efficient without being terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with six parameters and an output schema, the description covers everything needed: it clarifies the search behaves like the real site, specifies the result fields, notes the one-request-per-call limit, and the schema already documents pagination and sort values. Nothing critical is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: every parameter (page, sort, price_max/min, include_sponsored, query) already has a clear description in the schema. The tool description does not add further parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair ('Search Yandex Market') and a clear scope ('like the site'), then enumerates the exact fields each item returns (ids, prices, seller, sponsored flag, etc.), making it easy to distinguish from the sibling get_product or get_offers tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly describes what the tool does and offers internal tips (e.g., using price_asc with price windows for depth, and noting that popular page 1 is ad-heavy), but it never explicitly contrasts this tool against siblings like get_product or get_offers. The context makes the intended use clear without formal 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.
7 tool updates
v0.1.0- First observed
compare_products - First observed
get_offers - First observed
get_product - First observed
get_questions - First observed
get_reviews - First observed
get_seller - First observed
search_products
TDQS
Scored across 7 tools
Each tool targets a distinct resource and action: search, single product card, all offers, comparison, reviews, questions, and seller info. Even the overlapping get_product and get_offers are clearly separated by scope (one seller vs. all sellers).
All tool names follow a consistent verb_noun snake_case pattern: search_products, get_product, get_offers, compare_products, get_reviews, get_questions, get_seller. No mixed conventions or vague verbs.
Seven tools is well-scoped for a marketplace research API. Each tool covers a distinct user need without redundancy or bloat.
The set covers the full product research lifecycle: discovery (search), deep dive (product, offers, compare), social proof (reviews, questions), and seller trust (seller info). No obvious dead ends or missing core operations for a read-only marketplace tool.
Maintenance
Related MCP Connectors
Web search, page reading and structured extraction for AI agents, with strong RU coverage
Yandex search results, images, and SERP data via the Apify Yandex Search Scraper, hosted MCP.
RU merchant catalog for AI agents: live price, stock, choices and controlled checkout. Not x402.
AI-agent product catalog: search, lookup & purchase routing over verified merchant data.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to run RU-first web searches through the Yandex index and extract web pages into clean reader-mode Markdown, bypassing anti-bot blocks.355 npmMIT
- AlicenseAqualityBmaintenanceEnables LLM agents to query live Wildberries marketplace data — product search with pages, sorting, price filters, per-article ratings and reviews, weekly price history, and seller legal details — with honest, sanity-checked answers and automatic anti-bot handling.5MIT
- AlicenseAqualityCmaintenanceEnables LLM agents to retrieve live, accurately-labelled product data from Ozon's public storefront, including search with pagination and sorting, all price variants, delivery dates, seller legal details, variants, and SKU-specific ratings and reviews, all without an Ozon account.4MIT
- AlicenseAqualityCmaintenanceEnables LLM agents to access live aliexpress.ru storefront data, including variant-specific ruble prices, order-accurate coupons, delivery quotes to Russian cities, seller info, and paginated buyer reviews with filters.4MIT