Fulfiller — print catalogue & quotes
Ce que fait ce MCP
Searches a French printing catalogue, retrieves product specifications and file requirements, validates configurations, generates quotes, and manages preliminary carts.
Outils
Schéma d’entrée
{'type': 'object', 'required': [], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['productId', 'sku', 'selection'], 'properties': {'sku': {'type': 'string', 'maxLength': 128, 'description': 'SKU exact rendu par search_products. REQUIS : il n’existe pas de résolution inverse productId → sku.'}, 'quantity': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Nombre de LOTS identiques au prix unitaire figé — PAS un palier de volume : 2×50 exemplaires n’a pas le même prix qu’1×100. Pour changer de volume, re-cotez avec une autre QUANTITY dans `selection`, puis remplacez la ligne. Défaut 1.'}, 'productId': {'type': 'integer', 'minimum': 1, 'description': 'Identifiant produit (`zeloomProductId`) rendu par search_products.'}, 'selection': {'type': 'object', 'required': ['options'], 'properties': {'options': {'type': 'array', 'items': {'type': 'object', 'required': ['option', 'type'], 'properties': {'size': {'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'Code du gabarit de taille.'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Gabarit et dimensions personnalisées (option de type SIZE).'}, 'type': {'enum': ['QUANTITY', 'DELIVERY_TIME', 'LIST_OF_VALUES', 'SIZE'], 'type': 'string', 'description': 'Seuls ces 4 types sont SÉLECTIONNABLES. Un autre type déclaré par la configuration (LIST_OF_RANGES, QUANTITY_BY_VALUE) est décrit mais non sélectionnable : le défaut du produit s’applique.'}, 'value': {'type': 'string', 'description': 'Code de la valeur retenue (types LIST_OF_VALUES et DELIVERY_TIME).'}, 'option': {'type': 'string', 'description': 'Code de l’option, tel que rendu par get_product_configuration.'}, 'quantity': {'type': 'integer', 'minimum': 1, 'description': 'Quantité demandée (type QUANTITY).'}}}, 'maxItems': 50}}, 'description': 'Sélection d’options. `{"options": []}` est valide et cote la configuration par défaut du produit. La résolution est TOLÉRANTE : un code approchant est résolu, et l’écart est signalé dans `alerts`.'}}}, 'maxItems': 5, 'description': 'Lignes initiales (0 à 5). Un panier vide est légitime.'}, 'idempotencyKey': {'type': 'string', 'format': 'uuid', 'description': 'UUID optionnel. Rejouer le MÊME appel avec la même clé renvoie le panier déjà créé au lieu d’en créer un second : à utiliser si vous devez réessayer après une erreur.'}}}
Schéma d’entrée
{'type': 'object', 'required': ['cartId'], 'properties': {'cartId': {'type': 'string', 'description': 'Identifiant du panier (UUID) rendu par create_cart. C’est une CAPACITÉ : qui le détient accède au panier — ne le publiez pas hors de la conversation qui l’a créé.'}}}
Schéma d’entrée
{'type': 'object', 'required': ['cartId'], 'properties': {'cartId': {'type': 'string', 'description': 'Identifiant du panier (UUID) rendu par create_cart. C’est une CAPACITÉ : qui le détient accède au panier — ne le publiez pas hors de la conversation qui l’a créé.'}, 'display': {'type': 'boolean', 'description': 'Afficher la carte du panier à l’utilisateur, dans les clients qui affichent les interfaces MCP Apps. `false` pour un appel intermédiaire qu’il n’a pas besoin de voir (vérifier avant de répondre) ; omis ou `true` dès qu’il doit voir le résultat. Sans effet sur le résultat lui-même.'}}}
Schéma d’entrée
{'type': 'object', 'required': ['productId'], 'properties': {'productId': {'type': 'integer', 'minimum': 1, 'description': 'Identifiant rendu par search_products.'}}}
Schéma d’entrée
{'type': 'object', 'required': [], 'properties': {'sku': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'SKU exact, tel que rendu par search_products ou resolve_product.'}, 'url': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'URL de la page produit sur www.fulfiller.com.'}}}
Schéma d’entrée
{'type': 'object', 'required': ['productId', 'selection', 'quantities'], 'properties': {'productId': {'type': 'integer', 'minimum': 1}, 'selection': {'type': 'object', 'required': ['options'], 'properties': {'options': {'type': 'array', 'items': {'type': 'object', 'required': ['option', 'type'], 'properties': {'size': {'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'Code du gabarit de taille.'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Gabarit et dimensions personnalisées (option de type SIZE).'}, 'type': {'enum': ['QUANTITY', 'DELIVERY_TIME', 'LIST_OF_VALUES', 'SIZE'], 'type': 'string', 'description': 'Seuls ces 4 types sont SÉLECTIONNABLES. Un autre type déclaré par la configuration (LIST_OF_RANGES, QUANTITY_BY_VALUE) est décrit mais non sélectionnable : le défaut du produit s’applique.'}, 'value': {'type': 'string', 'description': 'Code de la valeur retenue (types LIST_OF_VALUES et DELIVERY_TIME).'}, 'option': {'type': 'string', 'description': 'Code de l’option, tel que rendu par get_product_configuration.'}, 'quantity': {'type': 'integer', 'minimum': 1, 'description': 'Quantité demandée (type QUANTITY).'}}}, 'maxItems': 50}}, 'description': 'Sélection d’options. `{"options": []}` est valide et cote la configuration par défaut du produit. La résolution est TOLÉRANTE : un code approchant est résolu, et l’écart est signalé dans `alerts`.'}, 'quantities': {'type': 'array', 'items': {'type': 'integer', 'minimum': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Paliers de quantité à coter (1 à 20).'}}}
Schéma d’entrée
{'type': 'object', 'required': ['productId', 'selection'], 'properties': {'productId': {'type': 'integer', 'minimum': 1}, 'selection': {'type': 'object', 'required': ['options'], 'properties': {'options': {'type': 'array', 'items': {'type': 'object', 'required': ['option', 'type'], 'properties': {'size': {'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'Code du gabarit de taille.'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Gabarit et dimensions personnalisées (option de type SIZE).'}, 'type': {'enum': ['QUANTITY', 'DELIVERY_TIME', 'LIST_OF_VALUES', 'SIZE'], 'type': 'string', 'description': 'Seuls ces 4 types sont SÉLECTIONNABLES. Un autre type déclaré par la configuration (LIST_OF_RANGES, QUANTITY_BY_VALUE) est décrit mais non sélectionnable : le défaut du produit s’applique.'}, 'value': {'type': 'string', 'description': 'Code de la valeur retenue (types LIST_OF_VALUES et DELIVERY_TIME).'}, 'option': {'type': 'string', 'description': 'Code de l’option, tel que rendu par get_product_configuration.'}, 'quantity': {'type': 'integer', 'minimum': 1, 'description': 'Quantité demandée (type QUANTITY).'}}}, 'maxItems': 50}}, 'description': 'Sélection d’options. `{"options": []}` est valide et cote la configuration par défaut du produit. La résolution est TOLÉRANTE : un code approchant est résolu, et l’écart est signalé dans `alerts`.'}}}
Schéma d’entrée
{'type': 'object', 'required': [], 'properties': {'sku': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'SKU exact (ex. « POSTER_PHOTO_SUR_MESURE »).'}, 'url': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'URL de la page produit sur www.fulfiller.com.'}}}
Schéma d’entrée
{'type': 'object', 'required': ['q'], 'properties': {'q': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Mots-clés en français (ex. « carte de visite », « bâche publicitaire »).'}, 'limit': {'type': 'integer', 'maximum': 24, 'minimum': 1, 'description': 'Nombre de résultats souhaité (1 à 24).'}}}
Schéma d’entrée
{'type': 'object', 'required': ['cartId'], 'properties': {'add': {'type': 'array', 'items': {'type': 'object', 'required': ['productId', 'sku', 'selection'], 'properties': {'sku': {'type': 'string', 'maxLength': 128, 'description': 'SKU exact rendu par search_products. REQUIS : il n’existe pas de résolution inverse productId → sku.'}, 'quantity': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Nombre de LOTS identiques au prix unitaire figé — PAS un palier de volume : 2×50 exemplaires n’a pas le même prix qu’1×100. Pour changer de volume, re-cotez avec une autre QUANTITY dans `selection`, puis remplacez la ligne. Défaut 1.'}, 'productId': {'type': 'integer', 'minimum': 1, 'description': 'Identifiant produit (`zeloomProductId`) rendu par search_products.'}, 'selection': {'type': 'object', 'required': ['options'], 'properties': {'options': {'type': 'array', 'items': {'type': 'object', 'required': ['option', 'type'], 'properties': {'size': {'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'Code du gabarit de taille.'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Gabarit et dimensions personnalisées (option de type SIZE).'}, 'type': {'enum': ['QUANTITY', 'DELIVERY_TIME', 'LIST_OF_VALUES', 'SIZE'], 'type': 'string', 'description': 'Seuls ces 4 types sont SÉLECTIONNABLES. Un autre type déclaré par la configuration (LIST_OF_RANGES, QUANTITY_BY_VALUE) est décrit mais non sélectionnable : le défaut du produit s’applique.'}, 'value': {'type': 'string', 'description': 'Code de la valeur retenue (types LIST_OF_VALUES et DELIVERY_TIME).'}, 'option': {'type': 'string', 'description': 'Code de l’option, tel que rendu par get_product_configuration.'}, 'quantity': {'type': 'integer', 'minimum': 1, 'description': 'Quantité demandée (type QUANTITY).'}}}, 'maxItems': 50}}, 'description': 'Sélection d’options. `{"options": []}` est valide et cote la configuration par défaut du produit. La résolution est TOLÉRANTE : un code approchant est résolu, et l’écart est signalé dans `alerts`.'}}}, 'maxItems': 5, 'description': 'Nouvelles lignes, cotées à l’ajout.'}, 'cartId': {'type': 'string', 'description': 'Identifiant du panier (UUID) rendu par create_cart. C’est une CAPACITÉ : qui le détient accède au panier — ne le publiez pas hors de la conversation qui l’a créé.'}, 'remove': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, 'description': '`lineId` des lignes à retirer.'}, 'update': {'type': 'array', 'items': {'type': 'object', 'required': ['lineId', 'quantity'], 'properties': {'lineId': {'type': 'string'}, 'quantity': {'type': 'integer', 'maximum': 1000, 'minimum': 1}}}, 'maxItems': 20, 'description': 'Nouveau nombre de LOTS pour des lignes existantes (prix unitaire figé inchangé).'}}}
Schéma d’entrée
{'type': 'object', 'required': ['productId', 'selection'], 'properties': {'productId': {'type': 'integer', 'minimum': 1}, 'selection': {'type': 'object', 'required': ['options'], 'properties': {'options': {'type': 'array', 'items': {'type': 'object', 'required': ['option', 'type'], 'properties': {'size': {'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'Code du gabarit de taille.'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Gabarit et dimensions personnalisées (option de type SIZE).'}, 'type': {'enum': ['QUANTITY', 'DELIVERY_TIME', 'LIST_OF_VALUES', 'SIZE'], 'type': 'string', 'description': 'Seuls ces 4 types sont SÉLECTIONNABLES. Un autre type déclaré par la configuration (LIST_OF_RANGES, QUANTITY_BY_VALUE) est décrit mais non sélectionnable : le défaut du produit s’applique.'}, 'value': {'type': 'string', 'description': 'Code de la valeur retenue (types LIST_OF_VALUES et DELIVERY_TIME).'}, 'option': {'type': 'string', 'description': 'Code de l’option, tel que rendu par get_product_configuration.'}, 'quantity': {'type': 'integer', 'minimum': 1, 'description': 'Quantité demandée (type QUANTITY).'}}}, 'maxItems': 50}}, 'description': 'Sélection d’options. `{"options": []}` est valide et cote la configuration par défaut du produit. La résolution est TOLÉRANTE : un code approchant est résolu, et l’écart est signalé dans `alerts`.'}}}
Modifications récentes des outils
Serveurs MCP similaires
roastify-mcp
Supports a coffee commerce workflow with product and blend catalogs, inventory, coupons, packaging design editing, artwork genera…
YouCam for Beauty & Personal Care
Offers image-based beauty and personal-care analysis and virtual try-on tools for makeup, hair, facial features, body reshaping, …
agentee
Searches and purchases all-over print apparel, manages carts, promotions, shipping, checkout, orders, and user-submitted designs.
mu
Supports AI-assisted print-on-demand product design, storefronts, manufacturing quotes, orders, fulfillment, shipping, sales, and…
studiomcphub
Provides image enhancement, background removal, vectorization, color and print preparation, artwork search and analysis, product …
Capucine
Provides sourced personal styling guidance, weather-aware outfit recommendations, apparel shopping criteria, and links to verifie…
YouCam for Fashion & Retail
Provides image-based virtual try-on experiences for clothing, accessories, jewelry, watches, makeup, fabric, hats, scarves, and s…
R3PLICA AI Connector
Searches and presents premium design-brand products, collections, finishes, specifications, comparisons, images, and catalog link…