# Shopino (pypi · shopino-mcp)

Unofficial read-only Shopino: search fashion across Iranian shops, compare prices, sizes, stock.

- Trust score: 66/100 (medium)
- Change this week: +17
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-22

## Components

- pypi · `shopino-mcp`: 66/100 (this document), [markdown](https://verifymcp.io/servers/sepehr071-shopino-mcp/shopino-mcp.md), [page](https://verifymcp.io/servers/sepehr071-shopino-mcp/shopino-mcp)

## Channel facts

- Registry: `pypi`
- Package: `shopino-mcp`
- Version: `0.4.1`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-22.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 1 of 35 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to sepehr071/shopino-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (good).
  - 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.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### 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.

### Claude

```bash
claude mcp add sepehr071-shopino-mcp -- uvx shopino-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "sepehr071-shopino-mcp": {
      "command": "uvx",
      "args": [
        "shopino-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sepehr071-shopino-mcp": {
      "command": "uvx",
      "args": [
        "shopino-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add sepehr071-shopino-mcp -- uvx shopino-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sepehr071-shopino-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "shopino-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sepehr071-shopino-mcp --command uvx --arg shopino-mcp
```

### Hermes

```yaml
mcp_servers:
  sepehr071-shopino-mcp:
    command: "uvx"
    args: ["shopino-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "sepehr071-shopino-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "shopino-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add sepehr071-shopino-mcp -t stdio -c uvx -a shopino-mcp
```

### Other

```json
{
  "mcpServers": {
    "sepehr071-shopino-mcp": {
      "command": "uvx",
      "args": [
        "shopino-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-22 (score 66, −15)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.4.0 → 0.4.1

### 2026-10-21 (score 81, +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.

### 2026-10-19 (score 80, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-18 (score 65, −14)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.3.0 → 0.4.0

### 2026-10-16 (score 79, +30)

- [security improvement] 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.
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.00
- [functional improvement] 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

### 2026-10-15 (score 49, 0)

- [security] 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.
- [functional] 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.

### 2026-10-13 (score 49, 0)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.2.1 → 0.2.2

### 2026-10-12 (score 49, +15)

- [security improvement] Malware scan: unverified → pass
- [functional] Package version: 0.1.1 → 0.2.1

## MCP tools (14)

### `sh_search` (~319 tokens)

Search products

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.

Input parameters:

- `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, required): 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.

### `sh_find_cheapest` (~191 tokens)

Find cheapest product

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.

Input parameters:

- `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, required): Keyword, Persian works best, e.g. 'مانتو کتان'.
- `scan` (integer): Max results to scan, cheapest first.

### `sh_browse` (~439 tokens)

Browse a category, shop, tag or listing

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.

Input parameters:

- `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.

### `sh_filters` (~88 tokens)

Filters for listings

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.

Input parameters:

- `category_id`: Category id (sh_categories): adds its sub-categories.

### `sh_categories` (~118 tokens)

List categories

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.

Input parameters:

- `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'.

### `sh_brands` (~78 tokens)

Brands

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).

Input parameters:

- `shop_id`: Watch shop id, e.g. 1771: lists its brands with brand ids.

### `sh_deals` (~89 tokens)

Deals, flash sale and campaigns

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').

Input parameters:

- `limit` (integer): Max deals to return.

### `sh_campaign` (~113 tokens)

Campaign page

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.

Input parameters:

- `per_row` (integer): Products per row.
- `slug` (string, required): Slug from sh_deals campaigns, e.g. 'sale07', or 'clothing', 'bag', 'shoes', 'sports'.

### `sh_product` (~142 tokens)

Product details

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=...).

Input parameters:

- `full_text` (boolean): Return size guide and description uncut.
- `product_id` (integer, required): Product id from sh_search / sh_browse, e.g. 2578018.

### `sh_similar` (~150 tokens)

Similar products

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').

Input parameters:

- `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, required): Product id from sh_search / sh_browse, e.g. 2578018.
- `sort` (string): relevance (as returned) or cheapest first.

### `sh_blog_search` (~90 tokens)

Search the style blog

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.

Input parameters:

- `page` (integer): Page number, from 1 (3 posts per page).
- `query`: Topic, Persian, e.g. 'مدل مانتو'.

### `sh_blog_post` (~79 tokens)

Read a blog post

Read one blog post as plain text, with its category id for sh_browse (after sh_blog_search).

Input parameters:

- `max_chars` (integer): Cut text after this many characters; up to 20000 for long posts.
- `slug` (string, required): Post slug from sh_blog_search, e.g. 'مدل-مانتو-شب'.

### `sh_shops` (~167 tokens)

Find shops

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').

Input parameters:

- `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'.

### `sh_shop` (~125 tokens)

Shop profile

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.

Input parameters:

- `full_text` (boolean): Return the shop description uncut.
- `shop` (string, required): Shop id or username, e.g. '489' or 'papionlady'.
- `similar_shops` (boolean): Also list up to 10 similar shops.

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/sepehr071-shopino-mcp/shopino-mcp#diagnostics

## Score history

- 2026-10-22: 66
- 2026-10-21: 81
- 2026-10-20: 80
- 2026-10-19: 80
- 2026-10-18: 65
- 2026-10-17: 79
- 2026-10-16: 79
- 2026-10-15: 49
- 2026-10-14: 49
- 2026-10-13: 49
- 2026-10-12: 49
- 2026-10-08: 34

## Common questions

### 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.

## Links

- PyPI project: https://pypi.org/project/shopino-mcp/
- Socket report: https://socket.dev/pypi/package/shopino-mcp
- Repository: https://github.com/sepehr071/shopino-mcp
- Changelog RSS feed: https://verifymcp.io/servers/sepehr071-shopino-mcp/shopino-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/sepehr071-shopino-mcp/shopino-mcp.json
- HTML version of this page: https://verifymcp.io/servers/sepehr071-shopino-mcp/shopino-mcp
