Faslet MCP Server
The Faslet MCP server exposes Faslet sizing tools over MCP so AI assistants can resolve supported product pages and return size recommendations.
Endpoint
https://api.faslet.net/widget/mcp
The server uses MCP over HTTP with JSON-RPC 2.0 and currently reports:
protocolVersion:2024-11-05serverInfo.name:faslet-mcp
Example client configuration
For clients that support HTTP MCP servers, point them at the Faslet MCP endpoint directly:
{
"servers": {
"faslet/faslet": {
"type": "http",
"url": "https://api.faslet.net/widget/mcp"
}
}
}
Recommended tool flow
If you have a shopper-facing product page URL, start with get_size_from_product_url. That is the default tool and avoids asking the user for internal Faslet identifiers.
Only use get_size_from_product_info when shopId, brand, and productId are already known from trusted context or from get_product_info_from_product_url.
Tools
| Tool | Use it for | Required arguments |
|---|---|---|
get_size_from_product_url | Default sizing flow when you have a PDP URL. Resolves the product and then returns a recommendation when the store and product are supported. | productUrl |
get_product_info_from_product_url | Resolve Faslet product info from a PDP URL before sizing. | productUrl |
get_size_from_product_info | Get a size recommendation when Faslet product identifiers are already known. | shopId, brand, productId |
Shared sizing inputs
Both sizing tools support these shopper inputs when available:
| Field | Type | Notes |
|---|---|---|
height | number | Height in centimeters |
weight | number | Weight in kilograms |
userId | string | Optional shopper identifier |
userGender | string | male or female |
age | number | Optional age |
fit | string | tight, average, loose |
waist | string | flat, average, round |
hips | string | narrow, average, wide |
chest | string | narrow, average, wide |
footWidth | string | narrow, average, wide |
braCupSize | string | Optional bra cup size |
braBandSize | number | Optional bra band size |
relativeSizingPreference | number | Optional sizing preference input |
sizeLabels | string | Comma-separated size labels, for example S, M, L |
experimentVariants | string | Optional experiment variant string |
Response shape
Product discovery
get_product_info_from_product_url returns:
{
"status": "resolved",
"explanation": "Resolved product info from productUrl.",
"productInfo": {
"shopId": "faslet-demo",
"brand": "Faslet Demo",
"productId": "8390931513510",
"productName": "Demo Product",
"productUrl": "https://demo.faslet.app/products/demo-product"
}
}
If the URL cannot be matched, the tool returns statuses such as invalid_input, store_not_supported, or product_not_supported.
Sizing tools
Sizing tools return content, structuredContent, and isError. The most useful payload is structuredContent:
{
"status": "success",
"explanation": "Recommended size: M",
"missingInputs": [],
"recommendation": {
"label": "M"
},
"alternatives": [
{
"label": "M",
"fit": {
"waist": "perfect",
"chest": "slightlyLoose"
}
}
],
"warnings": [
"userGender was inferred from product context."
],
"metadata": {
"shopId": "faslet-demo",
"brand": "Faslet Demo",
"productId": "8390931513510",
"productGender": "male",
"userGender": "male"
}
}
Common sizing statuses:
| Status | Meaning |
|---|---|
success | Recommendation available |
invalid_input | Missing or invalid sizing inputs. Check missingInputs. |
no_recommendation | Product is supported, but no recommendation could be returned |
backend_error | Unexpected internal failure |
store_not_supported | The product URL belongs to a store that does not use Faslet sizing |
product_not_supported | The store uses Faslet sizing, but that product is excluded |
store_not_supported and product_not_supported are returned as normal tool results with recommendation: null, not as transport-level MCP errors.
Prompts
The server also exposes four prompts:
| Prompt | Purpose |
|---|---|
demo_basic_sizing | Example get_size_from_product_info call for one shopper profile |
demo_preference_adjustments | Example sizing call using fit and body-shape preference enums |
demo_url_discovery_sizing | Example flow that starts from a shopper-facing product URL |
explain_measurement_inputs | Quick explanation of the enum-style sizing inputs |
Example JSON-RPC calls
Initialize:
curl https://api.faslet.net/widget/mcp \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize"
}'
Get a size recommendation from a product URL:
curl https://api.faslet.net/widget/mcp \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_size_from_product_url",
"arguments": {
"productUrl": "https://demo.faslet.app/products/demo-product",
"height": 176,
"weight": 85
}
}
}'
If the server needs more sizing information for a specific product type, it returns missingInputs so the client can ask a focused follow-up question.