Servidor MCP

Skybridge Ecommerce Example

tech.skybridge.ecommerce/Ecom-Carousel
Comercio y retail Público y accesible MCP 2025-11-25

Qué hace este MCP

Searches a winter-sports product catalog and renders selected products in an interactive carousel.

render-carousel
Display the Skybridge products you curated as an inline carousel for the client. ## When to call Call this AFTER searching and curating, and BEFORE writing your recommendation. Avoid describing the products in text first since the carousel shows them. ## What to pass Pass the IDs of the 2-3 products you chose, in display order (most relevant first). Order is significant: the carousel shows them in this exact order and your recommendation must follow the same sequence. Pass distinct products, not several variants of the same one; the detail view lets the client explore a product's variants (colors, sizes, and so on). ## After the carousel Recommend in carousel order so the client can follow along. The cards already show image, title, price, and key facts, so do not repeat them: add useful analysis tied to the client's need. Suggest a refinement the client has not addressed yet (from the available filters), never one they already used. ## Accuracy Use only the data returned for each product. Never invent facts, materials, or availability. If the client asks about something not present, open that product's detail or search again before answering.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ids'], 'properties': {'ids': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'minItems': 1, 'description': 'Product IDs to present, in display order.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['products'], 'properties': {'products': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'options', 'specs'], 'properties': {'id': {'type': 'string', 'description': 'Product ID.'}, 'price': {'type': 'object', 'required': ['amount', 'currency'], 'properties': {'amount': {'type': 'number'}, 'currency': {'type': 'string'}}, 'description': '"From" price (cheapest variant).', 'additionalProperties': False}, 'specs': {'type': 'array', 'items': {'type': 'object', 'required': ['value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Product-specific facts (material, dimensions, careâ\x80¦).'}, 'title': {'type': 'string'}, 'badges': {'type': 'array', 'items': {'type': 'string'}, 'description': 'e.g. "Bestseller".'}, 'rating': {'type': 'number', 'description': 'Average review rating, 0â\x80\x935.'}, 'options': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'values'], 'properties': {'label': {'type': 'string'}, 'values': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'description': 'Variations available (e.g. colors, sizes).'}, 'description': {'type': 'string'}, 'reviewCount': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'The products shown in the carousel, in display order. For your reference only â\x80\x94 to curate, compare, and answer follow-ups. Ground every claim in this data; never invent facts.'}}, 'additionalProperties': False}
search-products
Search the Skybridge winter-sports catalog: skis, goggles, and cold-weather apparel. Handles any query: a specific product, a category, a gift, or open browsing. Never assume something is unavailable — always search before responding. The response is data only: matching products (title, ID, "from" price, rating, badges, description, facts). The raw results are for your eyes only; the client never sees them. Avoid characterizing the raw results to the client (how many, what categories). Act on the response as follows: - SEARCH: pass a keyword. Optionally scope with `category` (apparel, goggles, or skis) or `sort`. This is a small catalog — one focused search usually surfaces everything relevant (1+ calls). - REFINEMENT: if the user narrows to a category, re-search with that `category`. If they change intent, search with a new keyword. - CURATION: pick the best matches for the client's intent, grounding your choice in each product's description. If zero results, broaden the keyword and search again; do NOT call render-carousel on an empty set. - PRESENT: once you have 2-3 distinct, relevant products, call render-carousel with their IDs. Recommend products ONLY AFTER the carousel displays, and in the same order as in the carousel. The sweet spot is 2-3 products.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['keyword'], 'properties': {'sort': {'enum': ['price-asc', 'price-desc', 'newest', 'name'], 'type': 'string', 'description': 'Sort order. Price sorts are applied over the fetched results.'}, 'keyword': {'type': 'string', 'description': 'Short noun phrases extracted from conversational input, matched against product titles, descriptions, and SKUs. Never pass full sentences. Include color or material descriptors when the user mentions them (e.g. "cyan skis", "fur hat"). This is a small winter-sports catalog: skis, goggles, and cold-weather apparel. For vague or broad requests use a plain category term.'}, 'category': {'enum': ['apparel', 'goggles', 'skis'], 'type': 'string', 'description': 'Restrict to one category. Only these three exist; omit to search all.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['products'], 'properties': {'pages': {'type': 'object', 'required': ['current', 'total'], 'properties': {'total': {'type': 'number'}, 'current': {'type': 'number'}}, 'description': 'Pagination: current page and total page count.', 'additionalProperties': False}, 'products': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'specs'], 'properties': {'id': {'type': 'string', 'description': 'Stable product ID; pass to render-carousel.'}, 'price': {'type': 'object', 'required': ['amount', 'currency'], 'properties': {'amount': {'type': 'number'}, 'currency': {'type': 'string'}}, 'description': '"From" price (cheapest variant).', 'additionalProperties': False}, 'specs': {'type': 'array', 'items': {'type': 'object', 'required': ['value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Product-specific facts to curate on (material, dimensionsâ\x80¦).'}, 'title': {'type': 'string'}, 'badges': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Display badges, e.g. "New", "Bestseller".'}, 'rating': {'type': 'number', 'description': 'Average review rating, 0â\x80\x935.'}, 'category': {'type': 'string', 'description': 'apparel, goggles, or skis.'}, 'description': {'type': 'string'}, 'reviewCount': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Matching products, sorted.'}, 'totalHits': {'type': 'number', 'description': 'Total matching products across all pages.'}}, 'additionalProperties': False}
Añadido
render-carousel
17 de September de 2026 a las 12:55
Añadido
search-products
17 de September de 2026 a las 12:55