khanoumi-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., "@khanoumi-mcpfind the cheapest in-stock Cinere sunscreen with delivery to Tehran"
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.
💄 khanoumi-mcp
Let your AI agent shop for cosmetics and skin care on Khanoumi. Search makeup, skin and hair care and perfume, compare real prices and shades, filter by skin type, read reviews and catch today's pink-box deals, all from Claude, Cursor or Copilot.
Quick start · What it can do · Tools · FAQ · فارسی
Why
Khanoumi lists about 67,000 beauty products from 3,200 brands. A search for "sunscreen" mixes sponsored
items, out-of-stock products and shades with different prices, and the fees only show up at checkout.
Finding the cheapest one you can actually order, and what it costs delivered, means a lot of clicking.
An agent with khanoumi-mcp does that in seconds:
You: Cheapest Cinere sunscreen I can order now, delivered in Tehran?
Agent: calls
kh_find_cheapest(query="ضد آفتاب سینره")→kh_store_info(topic="delivery")
Total
Product
Price
924,000
کرم ضد آفتاب بی رنگ با SPF45 مناسب آقایان
785,000 (25% off)
926,500
کرم ضد آفتاب بی رنگ Oil Free SPF50 مناسب پوست چرب
787,500 (25% off)
964,000
ضد آفتاب رنگی +SPF60 مات کننده پوست چرب (2 shades)
825,000 (25% off)
Totals include 20,000 packaging and the 119,000 Tehran courier fee. The SPF45 for men is cheapest; if you have oily skin the Oil Free SPF50 costs only 2,500 more. Want me to check which tinted shade is in stock with
kh_product?
Real tool output from 2026-10-06; prices change all the time. Prices are in Toman.
Related MCP server: letu-mcp
What it can do
🔎 Search products by name in Persian or English, with price, discount and stock, sponsored items removed
💸 Find the cheapest in-stock match for a keyword, optionally inside one category
🗂️ Browse any category, brand or campaign sorted by price, popularity or date, with price range and filters
🧴 Filter by skin type, hair type, free-from (paraben, sulfate), key ingredients, color and brand
💋 Read full product details: every shade or size with its own price and stock, sellers, gold price breakdown
💬 Check reviews, similar products and the routine products the shop pairs with an item
⚡ Catch deals: the daily pink box with its countdown, featured rows and the current public discount code
🚚 Know the fees: packaging, shipping, returns and payment rules from the official FAQ, plus beauty guides from the blog
🔒 Read-only by design: no login, no cart, no orders, no reviews posted
Quick start
You need uv. No API key or account.
claude mcp add khanoumi -- uvx khanoumi-mcpSettings → Developer → Edit Config, then add:
{
"mcpServers": {
"khanoumi": { "command": "uvx", "args": ["khanoumi-mcp"] }
}
}Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json.
Click Install in VS Code above, or add to .vscode/mcp.json:
{
"servers": {
"khanoumi": { "type": "stdio", "command": "uvx", "args": ["khanoumi-mcp"] }
}
}It's a standard stdio MCP server: run uvx khanoumi-mcp, or pip install khanoumi-mcp and run khanoumi-mcp.
Then just ask:
"Cheapest moisturizer for oily skin under 500,000 Toman, and what do buyers say about it?"
"Which shades of the Golden Rose Sheer Bright lipstick are in stock, and do they cost the same?"
"What's in today's pink box, and is there a discount code?"
ارزان‌ترین شامپوی ضد ریزش سریتا با ارسال به تهران چند درمیاد؟
How it works
AI agent (Claude, Cursor, Copilot, ...)
│
│ MCP over stdio
▼
khanoumi-mcp (runs on your machine)
│
│ HTTPS
└──────▶ www.khanoumi.com JSON API, FAQ page, blogkhanoumi-mcp runs locally and calls the same public endpoints the khanoumi.com website uses.
There's no hosted server in between, no API key, and nothing about you is sent anywhere else.
Tools
Tool | What it does |
| Search by keyword: price, discount, stock, plus matching categories and brands |
| Cheapest in-stock matches for a keyword, one flat list sorted by payable price |
| A category, brand or campaign tag sorted by price / popularity / date, with price range and filters |
| Sub-categories, brands, colors, skin / hair type and ingredient filters, price range and stock counts of a listing |
| Category tree with ids, paths and product counts |
| Find brands and their slugs |
| Today's pink box and featured deals, biggest discount first, with the countdown and the public discount code |
Tool | What it does |
| Price, discount, every shade / size / seller with its own price and stock, rating, attributes, description |
| Customer comments, newest first, with verified-buyer flag and photos |
| Alternatives to a product, or the products the shop pairs with it |
Tool | What it does |
| Packaging cost, shipping fees and times, returns, payment and guarantee rules from the FAQ |
| Buying guides, routines and ingredient explainers from the Khanoumi magazine |
All tools are annotated readOnlyHint: true and return compact structured JSON, so they don't flood the agent's context.
Good to know
Prices are in Toman.
final_priceis what you pay,priceis before discount,discount_pctis a whole percent.Shades can cost different amounts. A product's
final_priceis its cheapest shade or size;kh_productlists each variant with its own price, stock (in_stock) and maximum quantity per order.Order cost: items + 20,000 packaging + shipping (119,000 Tehran / Alborz courier, 113,000 post to other provinces on 2026-10-06; free for items tagged "ارسال رایگان", shown as
FreeShippingin a product'sbadges).kh_store_inforeads the current fees. The exact quote per address needs a login, so it isn't available here.Sponsored items are removed from search and listings, and
totalcounts only real matches. Pages follow on from each other without gaps or repeats, which the site's own pager doesn't manage when ads are on the page.Ratings are 0–5,
nullwhen nobody has rated the product yet. Review comments carry no stars.Persian queries match best (
کرم آبرسان,رژ لب), but English brand names work too (cerave,golden rose).
FAQ
No, and that's deliberate. It has no login and never touches the cart, order, payment, wishlist, notify-me or review endpoints. The agent finds the best option; you buy it on khanoumi.com.
It keeps only items you can order now whose Persian or English title or brand contains every word of your query
(match_all_words: false turns that off). It scans the first 300 results, cheapest first; complete: false in the reply
means more matches lie past that, so raise scan (up to 900) or narrow with category_id. kh_search shows everything.
Call kh_filters for the category (for example category_id: 145, moisturizers) and pass the keys you want to
kh_browse, e.g. facets: ["facetKey.skin-type:oily"]. Several facets must all match; several brands or colors match any.
The server retries a dropped connection once. If it still fails, check your internet connection. System proxy
variables are ignored on purpose; set KHANOUMI_MCP_PROXY if you need a proxy.
Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.
npx @modelcontextprotocol/inspector uvx khanoumi-mcpConfiguration
Variable | Default | Meaning |
| unset | HTTP proxy for every request, e.g. |
فارسی
khanoumi-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد در خانومی جستجو کند، ارزان‌ترین محصول موجود را پیدا کند، رنگ‌ها و قیمت هر رنگ را ببیند، بر اساس نوع پوست و مو فیلتر کند، نظرات خریداران را بخواند و تخفیف‌های جعبه صورتی و کد تخفیف روز را پیدا کند.
فقط خواندنی است: وارد حساب نمی‌شود، سبد خرید نمی‌سازد، سفارش ثبت نمی‌کند و نظر نمی‌فرستد.
قیمت‌ها به تومان است و محصولات تبلیغاتی (اسپانسری) از نتایج حذف می‌شوند.
روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.
نصب در Claude Code:
claude mcp add khanoumi -- uvx khanoumi-mcpبعد بپرسید: «ارزان‌ترین کرم آبرسان مناسب پوست چرب زیر ۵۰۰ هزار تومان کدام است و خریداران درباره‌اش چه می‌گویند؟»
Development
git clone https://github.com/sepehr071/khanoumi-mcp && cd khanoumi-mcp
uv sync
uv run pytest # offline, against recorded responses
uv run pytest -m live # real khanoumi.com
uv run ruff check .Tools live in src/khanoumi_mcp/catalog.py, product.py and info.py; each is a typed async function with a
docstring that tells the agent when to use it. Issues and PRs are welcome, especially new tools and fixes for site changes.
Releases: bump the version in pyproject.toml and server.json, then push a v* tag. GitHub Actions tests,
publishes to PyPI and the MCP Registry, and creates the GitHub Release.
Disclaimer
Unofficial and not affiliated with or endorsed by Khanoumi. It uses the public endpoints of the khanoumi.com website, which can change without notice. Please keep request rates reasonable.
License
Available Tools
12 toolskh_blog_searchSearch the beauty blogARead-onlyIdempotent
Search the Khanoumi magazine (مجله خانومی): buying guides, skin and hair care routines, ingredient explainers and how-tos, with links.
Use when the user asks which product type suits them or how to use something: point them to the matching article, then find products with kh_search.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 (20 posts per page). | |
| query | Yes | Topic, Persian works best, e.g. 'شامپو ریزش مو' or 'روتین پوست چرب'. |
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, openWorldHint and destructiveHint=false, so safety is covered. The description adds the content-type/link nature of results, but says nothing about result ordering, pagination behavior, or relevance beyond what the schema states.
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 short sentences; the resource and corpus are front-loaded, followed by the usage trigger and the handoff to kh_search. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, annotations covering the safety profile, and full parameter documentation, the description supplies everything else an agent needs: what the corpus is and when to prefer it over product search.
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%: query language preference (Persian) and the page/20-posts-per-page semantics are already documented in the schema. The description adds no parameter-level detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search the Khanoumi magazine') and enumerates the content corpus (buying guides, routines, ingredient explainers, how-tos). It is clearly distinguishable from kh_search by framing results as articles rather than products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use trigger ('user asks which product type suits them or how to use something') and names the follow-up alternative ('then find products with kh_search'), routing the agent along a concrete workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_brandsFind brandsARead-onlyIdempotent
Find brands by name (about 3,200 brands) with their slugs.
Use to get the brand slug for kh_browse / kh_filters brands, e.g. 'simple', 'cerave'.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1. | |
| limit | No | Brands per page. | |
| query | No | Brand name, Persian or English, e.g. 'سیمپل' or 'cerave'. Empty = all, A-Z. |
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 readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely new context beyond them: the corpus size (~3,200 brands), the nature of the returned value (slugs), and the examples of valid inputs.
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 short sentences, zero filler, with the purpose and scale front-loaded and the usage/routing instruction second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the description covers purpose, scale, and downstream use. It stops short of noting pagination behavior, but the schema already carries defaults and bounds.
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 page/limit/query are already fully documented in the schema (including Persian/English examples and 'empty = all, A-Z'). The description adds no parameter detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Find brands by name') and the key return artifact ('with their slugs'), plus dataset scale (~3,200 brands). It also routes the agent to the siblings that consume the output, so it is distinguishable from kh_search/kh_categories without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: to obtain the brand slug for kh_browse / kh_filters `brands`, with concrete examples ('simple', 'cerave'). No explicit when-not or exclusion clause, so it is clear context rather than full routing rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_browseBrowse a category, brand or tagARead-onlyIdempotent
List the products of a category, brand(s) or campaign tag with sorting, price range and filters.
Use for "cheapest CeraVe moisturizer", "sunscreens for oily skin under 800,000 Toman", "newest Golden Rose lipsticks", "everything in today's pink box". Pass at least one of category_id (kh_categories), brands (kh_brands) or tag (kh_deals). Filter ids (brands, colors, skin / hair type, free-from, ingredient facets) and the price range come from kh_filters. There is no rating or discount sort: check candidates with kh_product / kh_reviews. Details: kh_product.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Collection / campaign tag slug from kh_deals (the part after /tags/), e.g. 'festival-js' (pink box). | |
| page | No | Page number, from 1. | |
| sort | No | Order: popular (the site's default, most visited), cheapest / most_expensive (payable price), newest. | popular |
| limit | No | Products per page (sponsored items are left out). | |
| query | No | Optional keyword inside the listing. | |
| brands | No | Brand slugs from kh_brands / kh_filters (OR), e.g. ['simple', 'cerave']. | |
| colors | No | Color ids from kh_filters (OR), e.g. ['3'] (red). | |
| facets | No | Attribute filter keys from kh_filters, all must match (AND), e.g. ['facetKey.skin-type:oily']. | |
| max_price | No | Maximum payable price in Toman, e.g. 1500000. | |
| min_price | No | Minimum payable price in Toman, e.g. 500000. | |
| category_id | No | Category id from kh_categories or kh_search, e.g. 145 (moisturizers). | |
| in_stock_only | No | Only products that can be ordered now. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the description earns credit for adding real behavioral limits: no rating or discount sort exists, and results should be verified via kh_product / kh_reviews. It stops short of describing pagination or result-cap behavior, which a browse tool would benefit from.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by example queries, then constraints and pointers to sibling tools. Dense but every sentence carries information; the quoted example phrasings are slightly verbose but useful for query matching.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it instead covers the things an agent can't infer: the at-least-one-selector rule, filter provenance, sorting limits, and where to go for verification. Nothing essential is missing for a 12-param read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a genuine constraint not expressed in the schema: at least one of category_id, brands or tag must be supplied even though none are marked required. It also clarifies where each filter id must be sourced (kh_filters, kh_deals, kh_categories).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: 'List the products of a category, brand(s) or campaign tag with sorting, price range and filters.' The concrete example queries ('cheapest CeraVe moisturizer', 'sunscreens for oily skin under 800,000 Toman') make the tool's domain unmistakable against siblings like kh_search or kh_product.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the invocation constraint ('Pass at least one of category_id, brands or tag'), names the upstream lookup tools (kh_categories, kh_brands, kh_deals, kh_filters), and rules out alternatives by noting there is no rating or discount sort and directing candidates to kh_product / kh_reviews.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_categoriesList categoriesARead-onlyIdempotent
List Khanoumi's category tree with ids, URL paths and product counts.
Use to get a category_id for kh_browse / kh_filters / kh_find_cheapest. Without a query only levels up to max_level are listed; with a query every level is searched. kh_search also returns the categories matching a keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional filter on the Persian name or English slug, any level, e.g. 'ضد آفتاب' or 'shampoo'. | |
| max_level | No | Deepest level to list when no query is given (1 = top level). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description adds real operational context beyond that: without a query only levels up to max_level are returned, while with a query every level is searched, which materially affects results.
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 tight sentences with no filler; the primary purpose and the routing cue come first, followed by the query/no-query distinction and the alternative tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations carry the safety profile, so the description need not explain return shapes. What remains — purpose, routing to sibling tools, and query-mode behavior — is fully covered.
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 goes further by explaining how the two parameters interact (level truncation only applies in the no-query case; a query searches all levels), which is not stated in the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (Khanoumi's category tree) and enumerates what it returns: ids, URL paths, product counts. This is clearly distinguishable from siblings like kh_search or kh_browse, which the description positions it against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the reason to call it (to obtain a category_id for kh_browse / kh_filters / kh_find_cheapest) and names kh_search as the alternative that also surfaces matching categories. It also clarifies the query vs no-query behavior, so an agent knows which mode fits its situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_dealsCurrent deals and discount codesARead-onlyIdempotent
List today's featured deals from the Khanoumi home page (the daily pink box "جعبه صورتی" and the other product rows), biggest discount first, plus the public discount code of the current pop-up campaign.
Use for "what's on sale" / "best discounts today". pink_box_ends_in_seconds is the time left in
the daily deal box. Each section's tag lists all of its products with kh_browse(tag=...).
The voucher code is entered at checkout; its conditions are in voucher.text.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max deals to return. |
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 readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds meaningful behavior beyond that: sort order, that pink_box_ends_in_seconds is a countdown, that each section's tag feeds kh_browse, and that the voucher is redeemed at checkout with its terms in voucher.text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then usage, then output-field hints; every sentence carries information. It is dense and slightly scattershot in mixing output semantics with usage guidance, but there is 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?
An output schema exists so return shape need not be explained, yet the description still clarifies the non-obvious output fields (pink_box_ends_in_seconds, section tag, voucher.text). Combined with annotations and 100% param coverage, an agent has everything needed to call and interpret it.
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% with a single documented 'limit' parameter (default 30, max 100). The description adds no further semantics about limit, so the baseline 3 applies when the schema carries the whole burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List today's featured deals from the Khanoumi home page'), covers both the daily pink box and the pop-up campaign voucher, and is clearly distinct from siblings like kh_search or kh_browse. The ordering guarantee ('biggest discount first') further narrows what this tool is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use trigger ('Use for "what's on sale" / "best discounts today"') and routes product-level drill-down to the sibling kh_browse(tag=...). It does not state when to prefer kh_search or kh_find_cheapest over this tool, so the exclusion side is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_filtersFilters of a listingARead-onlyIdempotent
List the filters of a category, brand, tag or search: sub-categories, brands, colors and attribute facets (skin type, hair type, free-from, ingredients, gender, ...) with ids and product counts, plus price range and stock counts.
Use before kh_browse: pass brand slugs as brands, color ids as colors, facet keys as facets.
Brands are cut to the 40 biggest and each attribute group to 25 values (omitted says how many
more); ask for one group to see it all. Prices in Toman. price_range is on the list price before
discount (min 0 = out-of-stock items), so its max can be above the dearest payable price.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Collection / campaign tag slug from kh_deals (the part after /tags/), e.g. 'festival-js' (pink box). | |
| group | No | Return only attribute groups whose name contains this, in full, e.g. 'نوع پوست' (skin type). | |
| query | No | Keyword, alone or inside the listing. | |
| brands | No | Brand slugs from kh_brands / kh_filters (OR), e.g. ['simple', 'cerave']. | |
| category_id | No | Category id from kh_categories or kh_search, e.g. 145 (moisturizers). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description goes well beyond them by disclosing truncation behavior (brands cut to the 40 biggest, attribute groups to 25 values, with an `omitted` count) and non-obvious data semantics (prices in Toman, price_range based on list price before discount, min 0 meaning out-of-stock). These are exactly the quirks an agent would otherwise misread.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then progressively adds chaining guidance and gotchas in three tight paragraphs. The first sentence is dense with a long parenthetical enumerating facet types, which is slightly heavier than needed, but no sentence is 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?
An output schema exists, so return values need not be spelled out, yet the description still explains the two most confusing output aspects (truncation with `omitted`, and the list-price basis of price_range). Combined with the annotations, an agent has everything needed to call it correctly and interpret the result.
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% and each parameter already carries a description with provenance (tag from kh_deals, brands from kh_brands/kh_filters, category_id from kh_categories), so the schema does the heavy lifting. The description's 'pass brand slugs as brands' restates the same mapping, adding little parameter-level meaning beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the filters of a category, brand, tag or search') and enumerates exactly what comes back: sub-categories, brands, colors, attribute facets, ids, product counts, price range and stock counts. It is clearly distinguishable from siblings like kh_search and kh_browse without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the tool as a precursor: 'Use before kh_browse' and tells the agent how to feed the result forward ('pass brand slugs as brands, color ids as colors, facet keys as facets'). This is a concrete when-and-how-to-use directive rather than an implied one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_find_cheapestFind cheapest productARead-onlyIdempotent
Find the cheapest in-stock products for a keyword, one flat list sorted by payable price (Toman).
Use when the user wants the lowest price for X. The site sorts in-stock matches by payable
price; this drops sponsored items and, by default, loose matches whose title lacks a query
word. Narrow with category_id (kh_categories / kh_search). final_price is the cheapest shade:
check the chosen shade with kh_product. complete=false: matches go on past scanned, raise scan.
| Name | Required | Description | Default |
|---|---|---|---|
| scan | No | Max search results to scan, cheapest first, 300 per request. | |
| limit | No | Max offers to return. | |
| query | Yes | Product name or keyword, Persian or English, e.g. 'کرم مرطوب کننده' or 'cerave'. | |
| category_id | No | Category id from kh_categories or kh_search, e.g. 145 (moisturizers). | |
| match_all_words | No | Keep only products whose Persian or English title or brand contains every word of the query. |
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 readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds genuine operational behavior not in the annotations: sponsored items are dropped, loose title matches are excluded by default, results are sorted by payable price, and complete=false signals that matches continue past `scanned` and scan should be raised.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in the first sentence and then layers usage, filtering, and pagination notes compactly. The terse fragments ('complete=false: matches go on past `scanned`, raise scan') are dense but slightly clipped, costing a little polish rather than 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?
With an output schema present, return values needn't be explained, and the description covers the non-obvious behavioral quirks (sponsored-filtering, match_all_words default, scan/complete pagination loop). Cross-references to kh_product and kh_categories round out what an agent needs to act.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description earns extra credit by clarifying scan semantics (matches continue past the scanned set on complete=false), the default match_all_words filtering behavior, and that final_price is the cheapest shade to verify with kh_product.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find), resource (cheapest in-stock products), and scope (one flat list sorted by payable price in Toman). It implicitly separates itself from the broader kh_search by emphasizing 'cheapest' and dropping sponsored items, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when the user wants the lowest price for X' gives a clear triggering intent, and it points to kh_categories/kh_search for narrowing via category_id. It does not state when NOT to use this tool or explicitly contrast alternatives like kh_search for general browsing, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_productProduct detailsARead-onlyIdempotent
Get one product's full record: price and discount (Toman), every shade / size / seller variant with its own price, stock and max quantity, rating, brand, category path, attributes (skin / hair type, key ingredients, texture, country) and the description.
Use after kh_search / kh_browse when the user picks a product, or to check that the shade they want is in stock and what it costs. Reviews: kh_reviews. Alternatives: kh_similar. Fees for the order total: kh_store_info.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product slug from kh_search / kh_browse (e.g. 'golden-rose-sheer-bright-lipstick-112222') or the numeric product id (e.g. '112222'). |
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, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds depth about the record's granularity (per-shade/size/seller variant pricing and max quantity), but says nothing about authentication needs, rate limits, or behavior on a missing/ambiguous slug. Adequate but not rich beyond 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?
Front-loaded with the payload contents, then usage, then sibling routing — a sensible order. The field enumeration is long, and since an output schema exists it partly restates the return shape, but every listed field is genuinely useful for deciding whether to call this tool.
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 annotations covering safety, a 100%-documented single parameter, and an output schema handling return values, the description only needs to establish purpose and routing — which it does. The remaining gap is minor: no guidance on failure modes (invalid slug, product not found).
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% and the single parameter is fully documented there (slug pattern plus numeric id example, including the sibling tools it comes from). The tool description adds no syntax or format detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Get one product's full record') plus an enumerated content list: price/discount in Toman, per-variant price/stock/max quantity, rating, brand, category path, attributes, description. This is clearly distinguishable from kh_search (list-level) and kh_reviews (review-level) without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger ('Use after kh_search / kh_browse when the user picks a product, or to check that the shade they want is in stock and what it costs') plus direct routing for adjacent needs: kh_reviews for reviews, kh_similar for alternatives, kh_store_info for order-total fees. Nothing 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.
kh_reviewsProduct reviewsARead-onlyIdempotent
Read customer comments on a product, newest first, with a verified-buyer flag and photos.
Use as a quality check before recommending a product. Comments carry no star rating: the product's average rating and rating count are in kh_product.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1, newest first. | |
| limit | No | Reviews per page. | |
| product | Yes | Product slug from kh_search / kh_browse (e.g. 'golden-rose-sheer-bright-lipstick-112222') or the numeric product id (e.g. '112222'). | |
| with_photos | No | Only reviews that include customer photos. |
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 readOnly/openWorld/idempotent, so the safety profile is covered. The description adds genuine behavioral context beyond them: default ordering (newest first) and the absence of star ratings, which saves the agent a wasted call expecting rating data.
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 short sentences, zero waste: the core behavior first, the routing/usage note second. Nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail is not needed, and the description covers the key surprises (no ratings, photo filtering, ordering). Pagination behavior and the upper page bound are left to the schema, which is acceptable here.
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 schema already documents page, limit, product format, and with_photos. The description adds the 'newest first' ordering note, but that is already implied by the page parameter description, so it is baseline territory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read customer comments on a product') plus distinguishing attributes: newest-first ordering, verified-buyer flag, photos. It also carves out what it is not (ratings live in kh_product), though it doesn't differentiate itself from the remaining ten siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit situational trigger ('Use as a quality check before recommending a product') and routes the agent to kh_product for ratings and rating counts, which is a real alternative-selection cue. It stops short of stating when-not-to-use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_searchSearch productsARead-onlyIdempotent
Search Khanoumi products by keyword: price, discount and stock of each match, sponsored items removed.
Use first for "price of X" / "do you have X". Also returns the categories (ids for kh_browse) and brands (slugs) that match best. For the cheapest in-stock match use kh_find_cheapest; to filter by skin type, color or brand use kh_filters + kh_browse; shades, sellers and per-shade prices: kh_product.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1. | |
| sort | No | Order: popular (the site's default, most visited), cheapest / most_expensive (payable price), newest. | popular |
| limit | No | Products per page (sponsored items are left out). | |
| query | Yes | Product name or keyword, Persian or English, e.g. 'کرم مرطوب کننده' or 'cerave'. | |
| max_price | No | Maximum payable price in Toman, e.g. 1500000. | |
| min_price | No | Minimum payable price in Toman, e.g. 500000. | |
| in_stock_only | No | Only products that can be ordered now. |
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 readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: sponsored items are removed from results, and matches also yield category ids and brand slugs. It stops short of describing pagination cost or rate limits, but the added filtering/result behavior is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the returned fields, followed by a compact routing block of sibling alternatives. Dense but every clause carries routing or result information; only the parenthetical's coupling of categories to kh_browse is mildly tucked away.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description need not explain return values, yet it still signals what matches include. Combined with 100% parameter coverage and explicit sibling routing, the definition is essentially complete; only pagination/volume expectations are left implicit.
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 page, sort, limit, query, min/max_price and in_stock_only are all documented in the schema (including units in Toman and enum meanings). The description adds no syntax or format detail beyond that, so the baseline 3 is correct.
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 ('Search Khanoumi products by keyword') and enumerates what each match returns: price, discount, stock, with sponsored items removed. It also names the sibling tools it is not (kh_find_cheapest, kh_filters, kh_product), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent: 'Use first for "price of X" / "do you have X"', then maps alternatives to their conditions ('For the cheapest in-stock match use kh_find_cheapest', 'to filter by skin type, color or brand use kh_filters + kh_browse', 'shades, sellers and per-shade prices: kh_product'). Both the primary case and the exclusions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_similarSimilar and complementary productsARead-onlyIdempotent
List alternatives to a product (about 20) or the products the shop pairs with it, with prices and stock.
Use when a product is out of stock or too expensive, or to build a routine / bundle around it. Complementary lists are empty for most products.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | similar = alternatives to this product; complementary = products the shop pairs with it (routine). | similar |
| product | Yes | Product slug from kh_search / kh_browse (e.g. 'golden-rose-sheer-bright-lipstick-112222') or the numeric product id (e.g. '112222'). | |
| in_stock_only | No | Only products that can be ordered now. |
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 this a safe, idempotent, non-destructive read, so the bar is lower; the description still adds real behavioral value by disclosing the ~20-item result size and the important caveat that complementary lists are empty for most products. It does not mention pagination or ordering, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and modes followed by usage triggers. No redundant or filler text; every sentence maps to a distinct decision the agent needs to make.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not needed, and the description still summarizes the payload (prices and stock). Usage conditions, both modes, and the empty-complementary edge case are all covered for a 3-parameter, 1-required 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%, including a documented enum for kind and the slug/id pattern for product, so the schema already carries parameter meaning. The description restates the kind semantics, adding no syntax or format detail beyond it; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ('List alternatives to a product... or the products the shop pairs with it') with scope (~20 items) and payload (prices and stock) stated up front. The two modes are clearly distinguished, which separates it from generic siblings like kh_search and kh_find_cheapest.
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?
Explicit when-to-use triggers are given: out-of-stock, too expensive, or building a routine/bundle. It stops short of naming an alternative sibling (e.g. kh_find_cheapest) for the price-shopping case, so routing is strong but not fully closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kh_store_infoShipping, returns and store rulesARead-onlyIdempotent
Get Khanoumi's order rules: packaging cost, shipping fees and times, returns, payment and refunds, authenticity guarantee, pink-box rules, from the official FAQ.
Use for "how much is shipping", "can I return it", "how do I pay", and to compute the true cost of an order: sum(final_price x qty) + packaging_cost + shipping fee from the delivery answers (Tehran / Alborz courier vs post to other provinces; 0 when an item's badges include FreeShipping).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Only questions or answers containing this, e.g. 'هزینه ارسال'. | |
| topic | No | FAQ section: delivery (fees, times), returns, payment, guarantee (authenticity, expiry), order, pink_box, tracking, order_edit, comments, gold, or all (about 80 answers, long: prefer a topic or a query). | delivery |
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 destructiveHint=false, so the safety profile is covered. The description adds that answers come from the official FAQ and that delivery answers carry the courier/fee breakdown and FreeShipping badge logic, which is useful content context, but it does not mention e.g. result length limits or staleness beyond what the schema already notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the resource and reserves the second paragraph for the when-to-use cases and the cost formula, which earns its place. Slightly weakened by the hard line-break mid-sentence and dense formula, but overall tight and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers scope, trigger questions and the cost-computation usage. It is essentially complete for a two-parameter FAQ lookup; only minor behavioral detail (result size/staleness) is absent.
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 schema already documents both the free-text query and the topic enum with its default. The description adds only marginal meaning (that delivery answers distinguish Tehran/Alborz courier from provincial post and can be zero with a FreeShipping badge), which is baseline-adequate but not compensating for any gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (Khanoumi's order rules: shipping, returns, payment, refunds, guarantee, pink-box) drawn from the official FAQ. An agent can immediately distinguish this from product/search siblings like kh_product or kh_search, which return item data rather than policy answers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly enumerates triggering questions ("how much is shipping", "can I return it", "how do I pay") and a concrete use case (computing true order cost from delivery answers). It stops short of naming when NOT to use it or routing to a specific sibling, so it is clear context without 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.
12 tool updates
v0.1.0- First observed
kh_blog_search - First observed
kh_brands - First observed
kh_browse - First observed
kh_categories - First observed
kh_deals - First observed
kh_filters - First observed
kh_find_cheapest - First observed
kh_product - First observed
kh_reviews - First observed
kh_search - First observed
kh_similar - First observed
kh_store_info
TDQS
Scored across 12 tools
kh_search, kh_find_cheapest and kh_browse all return product lists, so there is genuine functional overlap, but the descriptions explicitly delineate when to use each ('Use first for price of X', 'Use when the user wants the lowest price', 'Use for cheapest CeraVe moisturizer'). The remaining tools (categories, brands, filters, product, reviews, similar, deals, blog, store info) target clearly distinct resources. Overall the boundaries are well signposted, requiring only careful reading.
Every tool uses the same kh_ prefix and snake_case, which is highly predictable. However, the verb style is mixed: some are actions (kh_search, kh_browse, kh_find_cheapest, kh_blog_search) while others are noun-only resources (kh_product, kh_reviews, kh_categories, kh_brands, kh_filters, kh_similar). This is a minor deviation from a single verb_noun pattern but stays readable and consistent in casing.
12 tools is well within the sweet spot for an e-commerce product-discovery domain. Each tool maps to a distinct capability (search, browse, filters, taxonomy lookups, product detail, reviews, alternatives, deals, blog, store policy) and none feels redundant or padded.
The surface covers the full discovery lifecycle: keyword search, category/brand browsing, filter discovery, category and brand resolution, detailed product records, reviews, alternatives, daily deals, editorial guides and store policies. Transactional operations (cart, checkout, order placement) are absent, but the server reads as a discovery/information surface rather than a purchasing one, so coverage is close to complete with only minor gaps.
Maintenance
Related MCP Connectors
Public K-beauty catalog, product search, and latest-offers tools with canonical product facts.
Verified deals, store policies & a trust score for thousands of online retailers. No auth.
AI-agent product catalog: search, lookup & purchase routing over verified merchant data.
Agent-native product catalog: 300M+ products, 150,000+ stores, deliver_to ranking.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to search beauty products from Korean catalogs (Olive Young, Daiso, e-commerce) and analyze personal skincare routines and ingredient compositions via BeauticsLab.-
- AlicenseAqualityCmaintenanceEnables LLM agents to search and retrieve live product data from L'Etoile (letu.ru), including honest price breakdowns with Club Card discounts separated, per-city delivery and store stock, ratings and reviews, and seller legal details, via plain HTTP without a browser.5MIT
- AlicenseAqualityCmaintenanceEnables LLM agents to retrieve live, honestly-labelled product data from Gold Apple (goldapple.ru), including search with sorting and price windows, category listings, full product variants with guest and signed-in prices, ratings, reviews, and delivery options.6MIT
- AlicenseAqualityAmaintenanceEnables AI agents to search Digikala's catalogue, compare every seller's offers and prices, review ~30 days of price history, read customer reviews and Q&A, and surface current deals, all through read-only tools.231MIT