Khanoumi
PYPI · KHANOUMI-MCP
Unofficial read-only Khanoumi: search cosmetics and skin care, compare prices, shades, reviews.
Available components
Last scanned (13 hours ago)
Scores higher than 77% of PyPI servers
Category E-commerce
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 35 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to sepehr071/khanoumi-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability64
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2540 tokens (~211/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability check failed: the tool surface changed between 0.1.4 and 0.3.1: 0 tool removals, 12 breaking changes, 0 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Oct 26 +15
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 0.3.0 → 0.3.1 functional
- 21 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 20 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 19 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 0.1.4 → 0.3.0 functional
- 18 Oct 26 0
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 0.1.4 → 0.3.0 functional
- Package version: 0.2.0 → 0.3.0 functional
- 16 Oct 26 +15
- Stability: unverified → fail ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 237 → 207 ▲ functional
- Package version: 0.1.4 → 0.2.0 functional
- 14 Oct 26 +15
- Malware scan: pass → unverified ▼ security
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Destructive annotations: pass functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 100 functional
- First check of Tool coverage: 100 functional
- 13 Oct 26 0
- Package version: 0.1.3 → 0.1.4 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 22 Oct 2026 · Analysed pypi/khanoumi-mcp@0.3.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | sepehr071/khanoumi-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/sepehr071/khanoumi-mcp/.github/workflows/publish.yml@refs/tags/v0.3.1 |
| Rekor log index | 3390395663 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:0d9004cf0fe1ede2d475b31ce0461b4f87dde430a281eaf3e4e572e4f6eb4766 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 35 packages
| Packages resolved | 35 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
kh_blog_search Search the beauty blog ~106
Search the Khanoumi magazine (مجله خانومی): buying guides, care routines, ingredient explainers, with links. Use when the user asks what suits them or how to use something; then find products with kh_search.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, from 1 (20 posts per page). |
| query | string | yes | Topic, Persian works best, e.g. 'شامپو ریزش مو' or 'روتین پوست چرب'. |
No output schema declared.
No examples provided.
kh_brands Find brands ~92
Find brands by name (about 3,200) with their slugs, for the `brands` of kh_browse / kh_filters.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Brands per page. |
| page | integer | – | Page number, from 1. |
| query | – | – | Brand name, Persian or English, e.g. 'سیمپل' or 'cerave'. Empty = all, A-Z. |
No output schema declared.
No examples provided.
kh_browse Browse a category, brand or tag ~327
List products of a category, brand(s) or campaign tag with sorting, price range and filters. Use for "sunscreens for oily skin under 800,000 Toman". Pass at least one of category_id (kh_categories), brands (kh_brands) or tag (kh_deals); filter ids come from kh_filters. No rating or discount sort. Next: kh_product / kh_reviews.
| Name | Type | Req | Description |
|---|---|---|---|
| brands | – | – | Brand slugs from kh_brands / kh_filters (OR), e.g. ['simple', 'cerave']. |
| category_id | – | – | Category id from kh_categories or kh_search, e.g. 145 (moisturizers). |
| colors | – | – | Color ids from kh_filters (OR), e.g. ['3'] (red). |
| facets | – | – | Attribute keys from kh_filters (AND), e.g. ['facetKey.skin-type:oily']. |
| in_stock_only | boolean | – | Only products that can be ordered now. |
| limit | integer | – | Products per page (sponsored items are left out). |
| max_price | – | – | Maximum payable price in Toman, e.g. 1500000. |
| min_price | – | – | Minimum payable price in Toman, e.g. 500000. |
| page | integer | – | Page number, from 1. |
| query | – | – | Optional keyword inside the listing. |
| sort | string | – | popular = site default; cheapest / most_expensive by payable price. |
| tag | – | – | Campaign tag slug from kh_deals, e.g. 'festival-js' (pink box). |
No output schema declared.
No examples provided.
kh_categories List categories ~110
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. A query searches every level; without one only levels up to max_level are listed.
| Name | Type | Req | Description |
|---|---|---|---|
| max_level | integer | – | Deepest level to list when no query is given (1 = top level). |
| query | – | – | Filter on Persian name or English slug, e.g. 'ضد آفتاب' or 'shampoo'. |
No output schema declared.
No examples provided.
kh_deals Current deals and discount codes ~113
List today's home-page deals (daily pink box "جعبه صورتی" and other rows), biggest discount first, plus the public discount code of the current pop-up campaign. Use for "what's on sale". pink_box_ends_in_seconds = time left in the daily box. A section's `tag` lists all its products via kh_browse(tag=...); a section without a tag has only `link`. Voucher conditions are in voucher.text.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max deals to return. |
No output schema declared.
No examples provided.
kh_filters Filters of a listing ~242
List the filters of a category, brand, tag or search: sub-categories, brands, colors and attribute facets (skin type, hair type, ingredients, ...) with ids and 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 40 and each group to 25 values (`omitted` = how many more); pass `group` to see one in full. price_range is on the list price before discount (min 0 = out-of-stock items).
| Name | Type | Req | Description |
|---|---|---|---|
| brands | – | – | Brand slugs from kh_brands / kh_filters (OR), e.g. ['simple', 'cerave']. |
| category_id | – | – | Category id from kh_categories or kh_search, e.g. 145 (moisturizers). |
| group | – | – | Only attribute groups whose name contains this, listed in full, e.g. 'نوع پوست' (skin type). |
| query | – | – | Keyword, alone or inside the listing. |
| tag | – | – | Campaign tag slug from kh_deals, e.g. 'festival-js' (pink box). |
No output schema declared.
No examples provided.
kh_find_cheapest Find cheapest product ~183
Find the cheapest in-stock products for a keyword, one flat list by payable price (Toman). Use for the lowest price of X. Drops loose matches whose title lacks a query word (match_all_words). Narrow with category_id. complete=false: matches go on past `scanned`, raise scan. Next: kh_product.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | – | – | Category id from kh_categories or kh_search, e.g. 145 (moisturizers). |
| limit | integer | – | Max offers to return. |
| match_all_words | boolean | – | Keep only products whose title or brand contains every query word. |
| query | string | yes | Product name or keyword, Persian or English, e.g. 'کرم مرطوب کننده' or 'cerave'. |
| scan | integer | – | Max search results to scan, cheapest first, 300 per request. |
No output schema declared.
No examples provided.
kh_product Product details ~141
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, categories, attributes and description. Use after kh_search / kh_browse, or to check that a shade is in stock and its price. Next: kh_reviews, kh_similar, kh_store_info (fees).
| Name | Type | Req | Description |
|---|---|---|---|
| full_text | boolean | – | Do not clip description and how_to_use. |
| product | string | yes | Slug from kh_search / kh_browse (e.g. 'golden-rose-sheer-bright-lipstick-112222') or numeric id. |
No output schema declared.
No examples provided.
kh_reviews Product reviews ~162
Read customer comments on a product, newest first, with a verified-buyer flag and photos. Use as a quality check before recommending. Text is cut to 400 characters (ends with …) unless full_text=true. No star ratings per comment: the average is in kh_product.
| Name | Type | Req | Description |
|---|---|---|---|
| full_text | boolean | – | Do not cut review text to 400 characters. |
| limit | integer | – | Reviews per page. |
| page | integer | – | Page number, from 1, newest first. |
| product | string | yes | Slug from kh_search / kh_browse (e.g. 'golden-rose-sheer-bright-lipstick-112222') or numeric id. |
| with_photos | boolean | – | Only reviews that include customer photos. |
No output schema declared.
No examples provided.
kh_search Search products ~203
Search products by keyword: price, discount and stock of each match. Also returns the best-matching categories (ids for kh_browse) and brands (slugs). Use first for "price of X". Next: kh_find_cheapest, kh_filters + kh_browse, kh_product.
| Name | Type | Req | Description |
|---|---|---|---|
| in_stock_only | boolean | – | Only products that can be ordered now. |
| limit | integer | – | Products per page (sponsored items are left out). |
| max_price | – | – | Maximum payable price in Toman, e.g. 1500000. |
| min_price | – | – | Minimum payable price in Toman, e.g. 500000. |
| page | integer | – | Page number, from 1. |
| query | string | yes | Product name or keyword, Persian or English, e.g. 'کرم مرطوب کننده' or 'cerave'. |
| sort | string | – | popular = site default; cheapest / most_expensive by payable price. |
No output schema declared.
No examples provided.
kh_similar Similar and complementary products ~128
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.
| Name | Type | Req | Description |
|---|---|---|---|
| in_stock_only | boolean | – | Only products that can be ordered now. |
| kind | string | – | similar = alternatives; complementary = products the shop pairs with it (often empty). |
| product | string | yes | Slug from kh_search / kh_browse (e.g. 'golden-rose-sheer-bright-lipstick-112222') or numeric id. |
No output schema declared.
No examples provided.
kh_store_info Shipping, returns and store rules ~186
Get Khanoumi's order rules from the official FAQ: packaging cost, shipping fees and times, returns, payment and refunds, authenticity guarantee, pink-box rules. Use for "how much is shipping", "can I return it", and the true order cost (formula in the server instructions; the fees are in the delivery answers). With topic=all and no query, answers are cut to 300 characters (end with …); pick a topic or a query, or set full_text=true, for full text.
| Name | Type | Req | Description |
|---|---|---|---|
| full_text | boolean | – | Do not clip answers when topic is all. |
| query | – | – | Only questions or answers containing this, e.g. 'هزینه ارسال'. |
| topic | string | – | FAQ section: delivery (fees, times), returns, payment, guarantee (authenticity, expiry), ...; all = about 80 answers, clipped. |
No output schema declared.
No examples provided.
How do I install the Khanoumi MCP server?
Khanoumi runs locally as a PyPI package, launched with uvx khanoumi-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · khanoumi-mcp
claude mcp add sepehr071-khanoumi-mcp -- uvx khanoumi-mcp
What is the Khanoumi MCP server?
Khanoumi is an MCP server listed in the public MCP registry as io.github.sepehr071/khanoumi-mcp. Unofficial read-only Khanoumi: search cosmetics and skin care, compare prices, shades, reviews. This page covers its PyPI package (khanoumi-mcp).
Is the Khanoumi MCP server safe to use?
Khanoumi scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 22 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Khanoumi MCP server expose?
Khanoumi exposes 12 tools: kh_search, kh_find_cheapest, kh_browse, kh_filters, kh_categories, and 7 more. Their descriptions and schemas cost roughly 1,993 tokens of context every time the server is loaded.
Is the Khanoumi MCP server still maintained?
Khanoumi is still listed as active in the MCP registry. We last reached this channel on 22 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Khanoumi MCP server under?
Khanoumi declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.