# PoloPan Fashion MCP Server (npm · polopan-products-mcp)

Fashion & apparel MCP: visual outfit search, stock verification, and 1-click checkout.

- Trust score: 69/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-25

## Components

- remote · `mcp-server.polopan.com`: 71/100, [markdown](https://verifymcp.io/servers/rofoso-com-mcp/mcp-server.md), [page](https://verifymcp.io/servers/rofoso-com-mcp/mcp-server)
- npm · `polopan-products-mcp`: 69/100 (this document), [markdown](https://verifymcp.io/servers/rofoso-com-mcp/polopan-products-mcp.md), [page](https://verifymcp.io/servers/rofoso-com-mcp/polopan-products-mcp)

## Channel facts

- Registry: `npm`
- Package: `polopan-products-mcp`
- Version: `1.2.6`
- 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-09-25.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 31 of 95 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - 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**: 72/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 6920 tokens (~629/item across 11 items; 10 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **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 10 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the PoloPan Fashion MCP Server server?

PoloPan Fashion MCP Server runs locally as an npm package, launched with npx -y polopan-products-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 rofoso-com-mcp -- npx -y polopan-products-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "rofoso-com-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "polopan-products-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "rofoso-com-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "polopan-products-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add rofoso-com-mcp -- npx -y polopan-products-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "rofoso-com-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "polopan-products-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add rofoso-com-mcp --command npx --arg -y --arg polopan-products-mcp
```

### Hermes

```yaml
mcp_servers:
  rofoso-com-mcp:
    command: "npx"
    args: ["-y", "polopan-products-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "rofoso-com-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "polopan-products-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add rofoso-com-mcp -t stdio -c npx -a -y polopan-products-mcp
```

### Other

```json
{
  "mcpServers": {
    "rofoso-com-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "polopan-products-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-09-25 (score 69)

First indexed and scored.

## MCP tools (10)

### `products.search.text` (~991 tokens)

Search Products By Text

Search PoloPan catalog products using a text keyword query with optional multi-attribute filters. Returns matching fashion items with available in-stock sizes, product specifications, shipping/return policies, discounted pricing, and verified purchase URLs (https://s.polopan.com/p/{handle}).

PURPOSE & DISAMBIGUATION:
\- Primary text-based catalog search tool for fashion discovery across apparel, footwear, and accessories.
\- Distinct from 'products.search.image_url' / 'products.search.image_upload': Use this tool for textual queries and keyword filters, NOT for visual image search.
\- Distinct from 'products.search.alternatives': Use this tool for open discovery queries, NOT for finding direct visual substitutes of a known product handle.
\- Distinct from 'looks.curation.by_occasion': Use this tool to search individual products, NOT complete multi-piece outfit looks.

WHEN TO USE:
\- When a user searches for clothing or fashion styles using keywords, brand names, colors, or categories (e.g. 'black leather jacket', 'floral summer midi dress', 'men linen shirts').
\- When refining catalog searches with structured filters like price ranges, gender, sizes, or vendor brands.

WHEN NOT TO USE:
\- Do NOT use when the user provides an image URL or image file (use 'products.search.image_url' or 'products.search.image_upload').
\- Do NOT use when searching for cheaper/higher-end substitutes of a specific known product (use 'products.search.alternatives').
\- Do NOT use to find curated complete occasion outfits (use 'looks.curation.by_occasion').

BEHAVIOR & SAFETY:
\- Read-only and idempotent with no persistent state modifications.
\- Automatically sanitizes and enriches product records with verified PoloPan short permalinks (https://s.polopan.com/p/{handle}), computed in-stock size lists, and human-readable shipping and return policy strings.
\- Handles pagination and multi-attribute filtering deterministically.

PARAMETERS & CONSTRAINTS:
\- 'query' (string, required): Free-text search…

Input parameters:

- `gender` (string): Target gender filter: 'men', 'women', or 'unisex'
- `page` (integer): Pagination page number (1-indexed, starts at 1)
- `page_size` (integer): Number of items to return per page (1 to 100, default 20)
- `price_max` (number): Maximum price in local currency
- `price_min` (number): Minimum price in local currency
- `query` (string, required): The search query or style keyword to find fashion items (e.g. 'black leather jacket', 'floral summer midi dress')
- `size` (array): Array of size labels to filter by (e.g. ['S', 'M', 'L', 'XL', '32'])
- `sort_by` (string): Sorting criteria for search results: 'relevance', 'price', or 'title'
- `sort_order` (string): Sort order: 'asc' for ascending, 'desc' for descending
- `vendor` (array): List of brand or vendor names to filter by (e.g. ['Zara', 'H&M', 'Tandul'])

### `products.search.image_url` (~784 tokens)

Search Products By Image URL

Search PoloPan catalog products using visual image similarity from a publicly accessible image URL with optional multi-attribute filters. Returns visually similar products with available sizes, pricing, and verified purchase URLs (https://s.polopan.com/p/{handle}).

PURPOSE & DISAMBIGUATION:
\- Performs reverse visual search using computer-vision embeddings for a remote image URL.
\- Distinct from 'products.search.text': Use this tool when you have an image URL, NOT for textual keyword queries.
\- Distinct from 'products.search.image_upload': Use this tool for publicly hosted HTTP(S) image URLs, NOT for local file paths or base64 data.
\- Distinct from 'vision.outfit.detect_pieces': Use this tool to search catalog items matching an entire single-garment image, NOT for segmenting multi-garment influencer photos into bounding boxes.

WHEN TO USE:
\- When the user shares a web link to an image (e.g. Pinterest, Instagram, blog post) and wants to find visually matching products in the PoloPan catalog.

WHEN NOT TO USE:
\- Do NOT use when the image is stored on local disk or as base64 data (use 'products.search.image_upload').
\- Do NOT use when searching by text descriptions (use 'products.search.text').
\- Do NOT use when you need to crop/isolate individual outfit pieces from a full-body model photo (use 'vision.outfit.detect_pieces').

BEHAVIOR & SAFETY:
\- Read-only and idempotent with no persistent state modifications.
\- Downloads the image, generates visual embeddings, and retrieves ranked catalog matches.
\- Enriches all returned items with verified PoloPan purchase links and stock metadata.

PARAMETERS & CONSTRAINTS:
\- 'image_url' (string, required): Publicly accessible HTTP(S) URL of the image to search for visual matches.
\- 'page' (integer >= 1, default 1): Pagination page number.
\- 'page_size' (integer 1-100, default 20): Number of candidate items returned per page.
\- 'sort_by' (enum, default 'relevance'): Ranking attribute ('relevance', 'price', 'title').
\- 'sort_order…

Input parameters:

- `gender` (string): Target gender filter: 'men', 'women', or 'unisex'
- `image_url` (string, required): Publicly accessible HTTP(S) URL of the fashion image to search for visual matches
- `page` (integer): Page number for pagination (1-indexed)
- `page_size` (integer): Number of items to return per page (1 to 100, default 20)
- `personalize` (boolean): Whether to apply personalized ranking based on user style profile
- `price_max` (number): Maximum price in local currency
- `price_min` (number): Minimum price in local currency
- `size` (array): Array of sizes to filter by (e.g. ['S', 'M', 'L'])
- `sort_by` (string): Sorting criteria for search results: 'relevance', 'price', or 'title'
- `sort_order` (string): Sort order: 'asc' for ascending, 'desc' for descending
- `vendor` (array): List of brand names to filter by

### `products.search.image_upload` (~861 tokens)

Search Products By Uploaded Image

Upload a local image file (or base64 string) and search PoloPan catalog products using visual image similarity. Returns matching products with available in-stock sizes, pricing, and verified purchase URLs (https://s.polopan.com/p/{handle}).

PURPOSE & DISAMBIGUATION:
\- Performs reverse visual search by uploading a local or base64-encoded image to secure temporary storage, then querying visual embeddings.
\- Distinct from 'products.search.image_url': Use this tool when the image file is local on the user's machine or in base64 format, NOT already on a public URL.
\- Distinct from 'vision.outfit.detect_pieces': Use this tool to search for products matching a single garment, NOT for decomposing full multi-piece outfits into bounding boxes.

WHEN TO USE:
\- When a user uploads a local photo/screenshot or supplies base64 image data to find matching fashion products in the catalog.

WHEN NOT TO USE:
\- Do NOT use when the image is already accessible via a public web URL (use 'products.search.image_url').
\- Do NOT use for text-only searches (use 'products.search.text').

BEHAVIOR & SAFETY:
\- Read-only catalog query with temporary image upload artifact (automatically expires after 'expiry_hours', default 24h).
\- Resolves MIME types automatically if not explicitly provided.
\- Enriches all returned items with verified PoloPan purchase links and stock metadata.

PARAMETERS & CONSTRAINTS:
\- 'image_path' (string, optional): Local file system path to the image file (one of image_path or image_base64 is required).
\- 'image_base64' (string, optional): Base64-encoded image data string.
\- 'content_type' (string, default 'image/jpeg'): MIME type of the uploaded image (e.g. 'image/jpeg', 'image/png', 'image/webp').
\- 'expiry_hours' (integer 1-168, default 24): Temporary upload lifetime in hours before expiration.
\- 'page' (integer >= 1, default 1): Pagination page number.
\- 'page_size' (integer 1-100, default 20): Number of items per page.
\- 'sort_by' (enum, default 'relevance'): Sorting…

Input parameters:

- `content_type` (string): MIME type of the image, e.g. 'image/jpeg', 'image/png', 'image/webp'
- `expiry_hours` (integer): Temporary upload URL lifetime in hours before expiration (1 to 168, default 24)
- `gender` (string): Target gender filter: 'men', 'women', or 'unisex'
- `image_base64` (string): Base64-encoded image data string (alternative to image_path)
- `image_path` (string): Local file system path to the image file (e.g. '/path/to/dress.jpg')
- `page` (integer): Pagination page number (1-indexed)
- `page_size` (integer): Number of items to return per page (1 to 100, default 20)
- `personalize` (boolean): Whether to apply personalized ranking weights
- `price_max` (number): Maximum price in local currency
- `price_min` (number): Minimum price in local currency
- `size` (array): Array of sizes to filter by
- `sort_by` (string): Sorting criteria: 'relevance', 'price', or 'title'
- `sort_order` (string): Sort order: 'asc' or 'desc'
- `vendor` (array): List of brand names to filter by

### `vision.outfit.detect_pieces` (~538 tokens)

Detect Fashion Pieces & Bounding Boxes

Deconstruct an outfit image or influencer photo into individual fashion pieces (e.g. Upper-body garment, Lower-body garment, Dress, Footwear, Bag, Headwear) with normalized bounding box coordinates and detection confidence scores.

PURPOSE & DISAMBIGUATION:
\- Computer-vision object detection tool designed to analyze multi-item outfit photographs and isolate individual garments with their spatial coordinates.
\- Distinct from 'products.search.image_url' / 'products.search.image_upload': Use this tool to segment a full outfit into pieces before querying, NOT to directly retrieve catalog search results.
\- Distinct from 'looks.curation.recommend': Use this tool for image-based piece decomposition, NOT text-based styling suggestions.

WHEN TO USE:
\- When the user provides a full-body model photo, street style snapshot, or celebrity outfit and wants to identify each individual clothing piece (jacket, top, pants, shoes, bag) to find matching products for each piece.

WHEN NOT TO USE:
\- Do NOT use when the image contains only a single standalone garment (use 'products.search.image_url' or 'products.search.image_upload' directly).
\- Do NOT use for text-only searches (use 'products.search.text').

BEHAVIOR & SAFETY:
\- Read-only and idempotent with no persistent state modifications.
\- Supports input via local file path ('image_path'), base64 string ('image_base64'), or public URL ('image_url'). Exactly one source must be provided.
\- Returns an array of detected piece objects with 'label', 'confidence' (0.0 to 1.0), and normalized 'box' coordinates [ymin, xmin, ymax, xmax].

PARAMETERS & CONSTRAINTS:
\- 'image_path' (string, optional): Local file system path to the outfit image (e.g. '/tmp/outfit.jpg').
\- 'image_base64' (string, optional): Base64-encoded image data string.
\- 'image_url' (string, optional): Public HTTP(S) URL of the image.
\- 'threshold' (number 0.05-0.95, default 0.22): Detection confidence threshold for bounding box filtering.

Input parameters:

- `image_base64` (string): Base64-encoded image data string for outfit piece detection
- `image_path` (string): Local file system path to the outfit image file to deconstruct
- `image_url` (string): Public HTTP(S) URL of the fashion image to deconstruct
- `threshold` (number): Confidence threshold for object detection bounding boxes (0.05 to 0.95, default 0.22)

### `looks.curation.by_occasion` (~751 tokens)

Get Looks By Occasion

Discover complete curated fashion looks styled for specific occasions (e.g., 'Wedding & Reception', 'Party', 'Casual', 'Cocktail', 'Date Night', 'Club Night', 'Brunch', 'Vacation', 'Formal'). All returned looks are verified 100% in-stock (any look with an out-of-stock item is automatically excluded).

PURPOSE & DISAMBIGUATION:
\- Curates multi-item aesthetic outfits tailored to specific social events, vibes, and demographics.
\- Distinct from 'products.search.text': Use this tool to retrieve complete harmonized outfits, NOT individual standalone products.
\- Distinct from 'looks.curation.recommend': Use this tool to discover outfits by occasion/event theme without a seed product, whereas 'looks.curation.recommend' builds outfits around a specific product handle.

WHEN TO USE:
\- When a user seeks outfit inspiration or complete looks for events (e.g. 'What to wear to a summer cocktail party?', 'Brunch outfit for men', 'Date night dresses').

WHEN NOT TO USE:
\- Do NOT use when searching for a single product category (use 'products.search.text').
\- Do NOT use when coordinating around a specific item the user already picked (use 'looks.curation.recommend').

BEHAVIOR & SAFETY:
\- Read-only and idempotent with no persistent state modifications.
\- Strictly filters out any look containing an out-of-stock item (guarantees 100% purchaseable outfits).
\- Enriches all included products with verified PoloPan purchase links (https://s.polopan.com/p/{handle}) and policy data.

PARAMETERS & CONSTRAINTS:
\- 'occasion' (string, optional): Target occasion or theme ('Wedding & Reception', 'Party', 'Casual', 'Cocktail', 'Date Night', 'Club Night', 'Brunch', 'Vacation', 'Formal').
\- 'gender' (enum, default 'women'): Target gender filter ('women', 'men', 'female', 'male').
\- 'age' (integer 16-99, default 25): Target demographic age.
\- 'page' (integer >= 1, default 1): Pagination page number.
\- 'page_size' (integer 1-100, default 10): Number of looks per page.
\- 'vendor' (array of strings, opti…

Input parameters:

- `age` (integer): Target demographic age (16 to 99, default 25)
- `gender` (string): Target gender filter: 'women' or 'men' (default: 'women')
- `occasion` (string): Target occasion or vibe: 'Wedding & Reception', 'Party', 'Casual', 'Cocktail', 'Date Night', 'Club Night', 'Brunch', 'Vacation', 'Formal'
- `page` (integer): Page number for looks pagination (1-indexed)
- `page_size` (integer): Number of looks returned per page (1 to 100, default 10)
- `vendor` (array): Optional brand or vendor name filter array

### `products.items.get_by_handle` (~335 tokens)

Get Product By Handle

Fetch the raw product document and metadata for a single item by unique product handle identifier. Returns catalog metadata, variant details, available in-stock sizes, price details, and verified purchase link (https://s.polopan.com/p/{handle}).

PURPOSE & DISAMBIGUATION:
\- Retrieves the full catalog record for a specific product handle.
\- Distinct from 'products.items.check_stock': Use 'products.items.get_by_handle' to fetch general catalog metadata; use 'products.items.check_stock' to get live variant inventory availability, computed sizing, specifications table, and 1-click checkout permalinks.
\- Distinct from 'products.search.text': Use this tool when you already have an exact product handle.

WHEN TO USE:
\- When you need the raw product metadata, image list, description, or variant array for a known product handle.

WHEN NOT TO USE:
\- Do NOT use to check real-time variant stock or obtain 1-click checkout URLs (use 'products.items.check_stock').
\- Do NOT use for general keyword product searches (use 'products.search.text').

BEHAVIOR & SAFETY:
\- Read-only and idempotent with no persistent state modifications.
\- Returns HTTP 404 error if handle does not exist.
\- Enriches returned document with verified purchase URLs.

PARAMETERS & CONSTRAINTS:
\- 'handle' (string, required): Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206').

Input parameters:

- `handle` (string, required): Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')

### `products.items.check_stock` (~679 tokens)

Check Live Variant Stock, Product Details & Sizing

Verify real-time live stock availability, discounted pricing, product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care Instructions), shipping/return policies, and available size variants for a specific fashion product handle.

PURPOSE & DISAMBIGUATION:
\- Real-time inventory and metadata inspection tool for a single product.
\- Computes the full size-availability matrix, active pricing, discount percentage, specifications dictionary, and resolves the 1-click checkout permalink for a chosen size.
\- Distinct from 'products.items.get_by_handle': Use this tool to check live stock, available sizes, formatted policies, and get size-specific checkout links; use 'products.items.get_by_handle' for raw catalog document retrieval.
\- Distinct from 'checkout.links.get_direct_url': Use this tool to verify stock and sizing options; use 'checkout.links.get_direct_url' to generate a final permalink once a size is confirmed.

WHEN TO USE:
\- Before presenting or confirming a product to the user, to verify whether their desired size is in-stock.
\- When generating the mandatory product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).
\- When checking return/exchange eligibility and shipping dispatch timelines.

WHEN NOT TO USE:
\- Do NOT use to search across multiple catalog products (use 'products.search.text' or 'products.search.image_url').

BEHAVIOR & SAFETY:
\- Read-only and idempotent with no persistent state modifications.
\- Automatically maps numeric and Indian/UK/EU shoe and apparel sizes (e.g. '6' -> EU 39, 'M' -> Medium).
\- Formats negative return days cleanly as 'Exchange only |X| days' (e.g. -7 -> 'Exchange only 7 days').
\- Returns structured JSON with 'is_in_stock', 'available_sizes', 'out_of_stock_sizes', 'product_details', 'shipping_policy_text', and 'return_policy_text'.

PARAMETERS & CONSTRAINTS:
\- 'handle' (string, required): Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206').
\- 'desired_size' (string, optiona…

Input parameters:

- `desired_size` (string): Optional size query to verify against variant inventory (e.g. 'M', 'L', 'XL', '32', '40')
- `handle` (string, required): Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')
- `size_index` (integer): Zero-based index of the specific size variant to inspect

### `checkout.links.get_direct_url` (~498 tokens)

Get Direct Checkout URL

Generate the direct 1-click checkout purchase URL for a specific product handle and size variant index (https://s.polopan.com/p/{handle}/{size_index}).

PURPOSE & DISAMBIGUATION:
\- Produces the final, verified 1-click buy link configured with the user's selected size index, unit quantity, and pre-applied coupon code.
\- Distinct from browsing links: General browsing uses base link (https://s.polopan.com/p/{handle}); this tool generates size-specific purchase permalinks (https://s.polopan.com/p/{handle}/{size_index}).

WHEN TO USE:
\- ONLY after the user has explicitly selected and confirmed their size (e.g. 'I want size M' or 'size 40').

WHEN NOT TO USE:
\- Do NOT provide direct checkout URLs with /{size_index} during initial product browsing, shortlisting, or if size is ambiguous (use base link https://s.polopan.com/p/{handle}).

BEHAVIOR & SAFETY:
\- Read-only link generator with no persistent state modifications or charges.
\- Automatically resolves variant index if a size string (e.g. 'M', 'L') is provided without size_index.
\- Encodes optional coupon parameters and quantity parameters into the final URL.

PARAMETERS & CONSTRAINTS:
\- 'handle' (string, required): Unique product handle identifier.
\- 'size' (string, optional): Size label confirmed by user (e.g. 'M', 'L', 'XL', '42').
\- 'size_index' (integer >= 0, optional): Zero-based index of the chosen size variant.
\- 'quantity' (integer 1-10, default 1): Number of units to purchase.
\- 'coupon' (string, optional): Optional discount coupon code to pre-apply (e.g. 'SAVE15').

Input parameters:

- `coupon` (string): Optional discount coupon code to pre-apply in the checkout session
- `handle` (string, required): Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')
- `quantity` (integer): Number of units to purchase (1 to 10, default 1)
- `size` (string): Size label confirmed by the user (e.g. 'M', 'L', 'XL', '40')
- `size_index` (integer): Zero-based index of the chosen size variant

### `products.search.alternatives` (~740 tokens)

Search Alternatives In Budget

Find visual substitute products within a designated price bracket for a given fashion item handle using visual image similarity.

PURPOSE & DISAMBIGUATION:
\- Retrieves catalog items visually similar to an existing product (e.g. finding similar shirts or jackets) constrained to a target budget tier.
\- Distinct from 'products.search.text': Use this tool when substituting a specific known item by handle, NOT for free-text search queries.
\- Distinct from 'products.search.image_url' / 'products.search.image_upload': Use this tool when referencing an existing catalog item handle, NOT for user-uploaded or external images.
\- Distinct from 'looks.curation.recommend': Use this tool to find replacement substitutes for the same garment category, NOT for pairing complementary outfit pieces.

WHEN TO USE:
\- When a shopper likes a product but requests cheaper alternatives, higher-end alternatives, or similar styles in a specific price bracket (e.g., 'show cheaper alternatives for this shirt under 1500').

WHEN NOT TO USE:
\- Do NOT use for general keyword discovery without a source product handle (use 'products.search.text').
\- Do NOT use to assemble a full outfit / lookbook (use 'looks.curation.recommend' or 'looks.curation.by_occasion').

BEHAVIOR & SAFETY:
\- Read-only and idempotent with no persistent side effects.
\- Automatically fetches the source product's primary image embedding and queries the catalog for visual matches within the requested price range.
\- Excludes the source product handle from returned alternatives.
\- Returns clean PoloPan purchase permalinks (https://s.polopan.com/p/{handle}).

PARAMETERS & CONSTRAINTS:
\- 'handle' (string, required): The unique identifier of the source product to find alternatives for.
\- 'budget_range' (enum, default '1501-3000'): Price tier bracket ('0-1500', '1501-3000', '3001-5000', '5000+').
\- 'limit' (integer 1-100, default 6): Maximum number of alternative products returned in the final list.
\- 'page' (integer >= 1, default 1): Pag…

Input parameters:

- `budget_range` (string): Target price bracket filter in local currency: '0-1500', '1501-3000', '3001-5000', or '5000+'
- `handle` (string, required): The unique product handle identifier to find visual alternatives for (e.g. 'solid-cotton-shirt')
- `limit` (integer): Maximum number of filtered alternative products to return in the result (1-100)
- `page` (integer): Pagination page number (1-indexed)
- `page_size` (integer): Number of candidate items to fetch per backend page (1-100)
- `personalize` (boolean): Whether to apply personalized user ranking to the results
- `sort_by` (string): Sorting attribute for the visual matches: 'relevance', 'price', or 'title'
- `sort_order` (string): Sort direction: 'asc' for ascending, 'desc' for descending

### `looks.curation.recommend` (~723 tokens)

Get Recommended Outfits

Get complete recommended outfits. Pass a product 'handle' to find complementary items styled with it, OR pass an 'occasion' (e.g. 'Wedding & Reception', 'Party', 'Cocktail', 'Date Night', 'Formal') and 'gender' to discover full occasion looks. All returned looks are verified 100% in-stock (any look with an out-of-stock item is excluded).

PURPOSE & DISAMBIGUATION:
\- Generates harmonized outfits coordinated around a seed product handle or occasion theme.
\- Distinct from 'products.search.alternatives': Use 'looks.curation.recommend' to build coordinating outfits with different garment pieces (e.g. pairing pants and shoes with a shirt); use 'products.search.alternatives' to find visual replacements for the exact same garment.
\- Distinct from 'looks.curation.by_occasion': 'looks.curation.recommend' supports building outfits around a specific chosen product handle as well as occasion themes.

WHEN TO USE:
\- When a user has selected a product and asks 'How do I style this?' or 'Show me outfits with this shirt'.
\- When discovering coordinated outfit recommendations for an occasion.

WHEN NOT TO USE:
\- Do NOT use to find substitute alternatives of the same garment (use 'products.search.alternatives').
\- Do NOT use for basic keyword search (use 'products.search.text').

BEHAVIOR & SAFETY:
\- Read-only and idempotent with no persistent state modifications.
\- Filters out any outfit containing out-of-stock items (guarantees 100% purchaseable looks).
\- Enriches all included items with verified purchase permalinks and policy strings.

PARAMETERS & CONSTRAINTS:
\- 'handle' (string, optional): Product handle identifier to build coordinating outfits around (e.g. 'solid-linen-shirt').
\- 'occasion' (string, optional): Target occasion or theme (e.g. 'Wedding & Reception', 'Party', 'Cocktail', 'Date Night', 'Formal').
\- 'gender' (enum, default 'women'): Target gender filter ('women', 'men', 'female', 'male').
\- 'page' (integer >= 1, default 1): Pagination page number.
\- 'page_size' (inte…

Input parameters:

- `gender` (string): Target gender filter: 'women' or 'men' (default: 'women')
- `handle` (string): Product handle identifier to build coordinating outfits around (e.g. 'solid-linen-shirt')
- `occasion` (string): Target occasion or aesthetic theme (e.g. 'Wedding & Reception', 'Party', 'Cocktail', 'Date Night', 'Formal')
- `page` (integer): Page number for pagination (1-indexed)
- `page_size` (integer): Number of outfit sets to return per page (1 to 100, default 20)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/rofoso-com-mcp/polopan-products-mcp#diagnostics

## Score history

- 2026-09-25: 69

## Common questions

### What is the PoloPan Fashion MCP Server server?

PoloPan Fashion MCP Server is listed in the public MCP registry as io.github.rofoso-com/mcp. Fashion & apparel MCP: visual outfit search, stock verification, and 1-click checkout. This page covers its npm package (polopan-products-mcp).

### Is the PoloPan Fashion MCP Server server safe to use?

PoloPan Fashion MCP Server scores 69 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 25 September 2026. It declares no install or post-install scripts. 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 PoloPan Fashion MCP Server server expose?

PoloPan Fashion MCP Server exposes 10 tools: products.search.text, products.search.image_url, products.search.image_upload, vision.outfit.detect_pieces, looks.curation.by_occasion, and 5 more. Their descriptions and schemas cost roughly 6,900 tokens of context every time the server is loaded.

### Is the PoloPan Fashion MCP Server server still maintained?

PoloPan Fashion MCP Server is still listed as active in the MCP registry. We last reached this channel on 25 September 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 PoloPan Fashion MCP Server server under?

PoloPan Fashion MCP Server 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

- npm package: https://www.npmjs.com/package/polopan-products-mcp
- Socket report: https://socket.dev/npm/package/polopan-products-mcp
- Repository: https://github.com/rofoso-com/mcp
- Changelog RSS feed: https://verifymcp.io/servers/rofoso-com-mcp/polopan-products-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/rofoso-com-mcp/polopan-products-mcp.json
- HTML version of this page: https://verifymcp.io/servers/rofoso-com-mcp/polopan-products-mcp
