Shopino
PYPI · SHOPINO-MCP
Unofficial read-only Shopino: search fashion across Iranian shops, compare prices, sizes, stock.
Available components
Last scanned (11 hours ago)
Scores higher than 65% 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 Security50
- Malware scan not yet available for this package.Unverified
- 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/shopino-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 Usability62
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2785 tokens (~198/item across 14 items; 14 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 Management20
- Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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 14 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 15 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
- Malware scan: pass → unverified ▼ security
- Package version: 0.4.0 → 0.4.1 functional
- 21 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 18 Oct 26 −14
- Malware scan: pass → unverified ▼ security
- Package version: 0.3.0 → 0.4.0 functional
- 16 Oct 26 +30
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Tool safety: Tool safety not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. 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
- Tool coverage: unverified → 100 ▲ functional
- Stability: unverified → 0.00 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: pass functional
- First check of Schema quality: fail functional
- First check of Schema quality: good functional
- First check of Tool coverage: 100 functional
- Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
- Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 0.2.2 → 0.3.0 functional
- 15 Oct 26 0
- Stability: Stability not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no schema to compare. security
- Tool safety: Tool safety not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no tool text to scan. security
- Schema quality: Schema quality not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no schema to assess. functional
- Capabilities: Protocol version not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we never saw its MCP handshake. functional
- Tool coverage: Tool coverage not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no tool definitions to assess. functional
- 13 Oct 26 0
- Malware scan: pass → unverified ▼ security
- Package version: 0.2.1 → 0.2.2 functional
- 12 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- Package version: 0.1.1 → 0.2.1 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/shopino-mcp@0.4.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/shopino-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/sepehr071/shopino-mcp/.github/workflows/publish.yml@refs/tags/v0.4.1 |
| Rekor log index | 3390429811 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:76504318f1fb84477a8940c92ecf49b6d409b8805e6c5fd80f69fdc28a0e482a |
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 →
sh_blog_post Read a blog post ~79
Read one blog post as plain text, with its category id for sh_browse (after sh_blog_search).
| Name | Type | Req | Description |
|---|---|---|---|
| max_chars | integer | – | Cut text after this many characters; up to 20000 for long posts. |
| slug | string | yes | Post slug from sh_blog_search, e.g. 'مدل-مانتو-شب'. |
No output schema declared.
No examples provided.
sh_blog_search Search the style blog ~90
Search the style blog (guides and model galleries), newest first; no query = latest posts. Use for what is in fashion or which model to choose; read a post with sh_blog_post(slug), then sh_search.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, from 1 (3 posts per page). |
| query | – | – | Topic, Persian, e.g. 'مدل مانتو'. |
No output schema declared.
No examples provided.
sh_brands Brands ~78
Without shop_id: featured official brand shops (browse one with sh_browse(shop_id=...)). With shop_id: the brands that shop sells, with ids for the brand_id filter of sh_browse (watch shops only).
| Name | Type | Req | Description |
|---|---|---|---|
| shop_id | – | – | Watch shop id, e.g. 1771: lists its brands with brand ids. |
No output schema declared.
No examples provided.
sh_browse Browse a category, shop, tag or listing ~439
List products of a category, shop, tag or curated listing, with sort, price range and filters. Use for "cheapest manteau in size L under 2,000,000 Toman", "newest of shop X", "biggest discounts in bags" (discounted_only + biggest_discount). With no category / shop / tag / listing it browses all shops. Ids: sh_categories, sh_shops, sh_brands; sizes: sh_filters. Next page: pass next_cursor back as cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | – | – | Watch brand id from sh_brands(shop_id=...), e.g. 12. |
| category_id | – | – | Category id from sh_categories, e.g. 385; includes sub-categories. |
| city | – | – | Same-day courier city, e.g. 'تهران' (sh_filters). |
| cursor | – | – | next_cursor of the previous reply (keep the other arguments the same). |
| discounted_only | boolean | – | Only discounted products. |
| in_stock_only | boolean | – | Only products in stock now. |
| limit | integer | – | Products per page (a tag gives 16). |
| listing | – | – | Listing slug from sh_campaign tabs, e.g. 'پیراهن-مردانه'. Only sort, in_stock_only, discounted_only apply. |
| max_price | – | – | Maximum price to pay in Toman, e.g. 2000000. |
| min_price | – | – | Minimum price to pay in Toman, e.g. 500000. |
| shop_id | – | – | One shop's id (sh_shops), e.g. 489. |
| size_system | – | – | Size system for `sizes` (values: sh_filters); freesize = only free-size items. |
| sizes | – | – | Sizes in size_system (any of them), e.g. ['M', 'L']. |
| sort | string | – | Order; cheapest / most_expensive use the price to pay. |
| tag | – | – | Tag slug from sh_product `tags`, e.g. 'مانتو-بلند-مشکی-زنانه'. Only sort, in_stock_only, discounted_only apply. |
No output schema declared.
No examples provided.
sh_campaign Campaign page ~113
Open a campaign or landing page: its product rows (with prices) and tabs. A tab's source: `listing` -> sh_browse(listing=...), `shop_id` / `category_id` -> sh_browse(same), `flash_sale` -> sh_deals.
| Name | Type | Req | Description |
|---|---|---|---|
| per_row | integer | – | Products per row. |
| slug | string | yes | Slug from sh_deals campaigns, e.g. 'sale07', or 'clothing', 'bag', 'shoes', 'sports'. |
No output schema declared.
No examples provided.
sh_categories List categories ~118
List the category tree with ids, URL paths and levels, plus total product and shop counts. Use to get a category_id for sh_search / sh_browse / sh_find_cheapest. Without a query only levels up to max_level are listed; with a query every level is searched.
| Name | Type | Req | Description |
|---|---|---|---|
| max_level | integer | – | Deepest level without a query (1 = the 14 top categories). |
| query | – | – | Filter on Persian name or English slug path, any level, e.g. 'مانتو' or 'sneakers'. |
No output schema declared.
No examples provided.
sh_deals Deals, flash sale and campaigns ~89
List today's home-page deals (flash sale with end time, best sellers, themed rows), biggest discount first, plus running campaigns and shop discount codes. Use for "what's on sale". Open a campaign: sh_campaign(slug); a category's discounts: sh_browse(discounted_only=true, sort='biggest_discount').
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max deals to return. |
No output schema declared.
No examples provided.
sh_filters Filters for listings ~88
List the filter values sh_search / sh_browse accept: size systems and sizes, sorts, courier cities, and (with category_id) a category's sub-categories. Use before filtering by size or city. Price range is free (Toman); brand ids: sh_brands. No color filter works.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | – | – | Category id (sh_categories): adds its sub-categories. |
No output schema declared.
No examples provided.
sh_find_cheapest Find cheapest product ~191
Find the cheapest in-stock products for a keyword across all shops, one flat list sorted by price to pay. Use for the lowest price of X. Drops loose matches (match_all_words) and unpriced items. Price is the cheapest variant: check size / color with sh_product. complete=false: more matches past `scanned`, raise scan.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | – | – | Category id from sh_categories, e.g. 385; includes sub-categories. |
| city | – | – | Same-day courier city, e.g. 'تهران' (sh_filters). |
| limit | integer | – | Max offers to return. |
| match_all_words | boolean | – | Keep only products whose title or shop name has every query word. |
| query | string | yes | Keyword, Persian works best, e.g. 'مانتو کتان'. |
| scan | integer | – | Max results to scan, cheapest first. |
No output schema declared.
No examples provided.
sh_product Product details ~142
Get one product's full record: price, every color / size variant with its own price and stock, size guide, description, tags, the selling shop with trust signals, and the shop-site link. Use when the user picks a product, to check their size / color is in stock and the shop is trustworthy. Same item elsewhere: sh_similar. More from the shop: sh_browse(shop_id=...). Related: sh_browse(tag=...).
| Name | Type | Req | Description |
|---|---|---|---|
| full_text | boolean | – | Return size guide and description uncut. |
| product_id | integer | yes | Product id from sh_search / sh_browse, e.g. 2578018. |
No output schema declared.
No examples provided.
sh_search Search products ~319
Search products across all shops by keyword: price to pay, discount, stock, selling shop. Use first for "price of X" / "where to buy X". Cheapest matches as one flat list: sh_find_cheapest. Variants (size, color, stock): sh_product. Next page: pass next_cursor back as cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | – | – | Category id from sh_categories, e.g. 385; includes sub-categories. |
| city | – | – | Same-day courier city, e.g. 'تهران' (sh_filters). |
| cursor | – | – | next_cursor of the previous reply (keep the other arguments the same). |
| discounted_only | boolean | – | Only discounted products. |
| in_stock_only | boolean | – | Only products in stock now. |
| limit | integer | – | Products per page. |
| max_price | – | – | Maximum price to pay in Toman, e.g. 2000000. |
| min_price | – | – | Minimum price to pay in Toman, e.g. 500000. |
| query | string | yes | Keyword, Persian works best, e.g. 'مانتو کتان'. |
| shop_id | – | – | One shop's id (sh_shops), e.g. 489. |
| size_system | – | – | Size system for `sizes` (values: sh_filters); freesize = only free-size items. |
| sizes | – | – | Sizes in size_system (any of them), e.g. ['M', 'L']. |
| sort | string | – | Order; cheapest / most_expensive use the price to pay. |
No output schema declared.
No examples provided.
sh_shop Shop profile ~125
Get a shop's profile: ratings, buyer survey %, followers, product count, main categories, courier city, contacts and website. Use to judge whether a shop is trustworthy. Its products: sh_browse(shop_id=...) or sh_search(shop_id=...); its brands (watch shops): sh_brands.
| Name | Type | Req | Description |
|---|---|---|---|
| full_text | boolean | – | Return the shop description uncut. |
| shop | string | yes | Shop id or username, e.g. '489' or 'papionlady'. |
| similar_shops | boolean | – | Also list up to 10 similar shops. |
No output schema declared.
No examples provided.
sh_shops Find shops ~167
Find shops by name, category group, gender or courier city, with rating, surveys, followers and product count. Use to get a shop_id for sh_shop / sh_browse / sh_search, or "best-known women's clothing shops in Tehran" (order='most_followed').
| Name | Type | Req | Description |
|---|---|---|---|
| category_group | – | – | Only shops selling this group. |
| city | – | – | Same-day courier city, e.g. 'تهران'. |
| gender | – | – | Only women's or men's shops. |
| limit | integer | – | Shops per page. |
| order | string | – | most_followed = Instagram followers; newest = newest on Shopino. |
| page | integer | – | Page number, from 1. |
| query | – | – | Shop name, e.g. 'پاپیون' or 'papion'. |
No output schema declared.
No examples provided.
sh_similar Similar products ~150
Find products like this one at other shops (itself left out). Use when it is out of stock or too expensive, or to find the same item cheaper (kind='visual', sort='cheapest').
| Name | Type | Req | Description |
|---|---|---|---|
| in_stock_only | boolean | – | Only products in stock now. |
| kind | string | – | visual = photo-alike products from all shops (to find the same item cheaper); similar = Shopino's 10 related products. |
| limit | integer | – | Max products to return. |
| product_id | integer | yes | Product id from sh_search / sh_browse, e.g. 2578018. |
| sort | string | – | relevance (as returned) or cheapest first. |
No output schema declared.
No examples provided.
How do I install the Shopino MCP server?
Shopino runs locally as a PyPI package, launched with uvx shopino-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 · shopino-mcp
claude mcp add sepehr071-shopino-mcp -- uvx shopino-mcp
What is the Shopino MCP server?
Shopino is an MCP server listed in the public MCP registry as io.github.sepehr071/shopino-mcp. Unofficial read-only Shopino: search fashion across Iranian shops, compare prices, sizes, stock. This page covers its PyPI package (shopino-mcp).
Is the Shopino MCP server safe to use?
Shopino scores 66 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 Shopino MCP server expose?
Shopino exposes 14 tools: sh_search, sh_find_cheapest, sh_browse, sh_filters, sh_categories, and 9 more. Their descriptions and schemas cost roughly 2,188 tokens of context every time the server is loaded.
Is the Shopino MCP server still maintained?
Shopino 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 Shopino MCP server under?
Shopino declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.