{"name":"com.fulfiller/agentic-commerce-api","slug":"fulfiller-agentic-commerce-api","title":"Fulfiller — print catalogue & quotes","description":"Print catalogue and live quotes from Fulfiller, a French online printer shipping across the EU.","url":"https://mcp.market/server/fulfiller-agentic-commerce-api","rating":null,"grade":"C","score":56,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":6,"ok":6,"last_checked_at":"2026-09-20T20:20:54.109Z","last_ok_at":"2026-09-20T20:20:54.109Z","latency_ms":987},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://www.fulfiller.com/agenticopenapi/docs","version":"0.1.1","remotes":[{"type":"streamable-http","url":"https://www.fulfiller.com/agenticopenapi/mcp"}],"packages":[],"tools":[{"name":"create_cart","description":"Crée un panier anonyme, éventuellement avec ses premières lignes (cotées à l’ajout, prix FIGÉ). Un panier n’est PAS une commande : rien n’est engagé, et le total est HT — hors TVA et hors port. Chaque ligne exige un productId ET son sku, tous deux rendus par search_products.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lines":{"type":"array","maxItems":5,"items":{"type":"object","properties":{"productId":{"type":"integer","minimum":1,"description":"Identifiant produit (`zeloomProductId`) rendu par search_products."},"sku":{"type":"string","maxLength":128,"description":"SKU exact rendu par search_products. REQUIS : il n’existe pas de résolution inverse productId → sku."},"selection":{"type":"object","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`.","properties":{"options":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"option":{"type":"string","description":"Code de l’option, tel que rendu par get_product_configuration."},"type":{"type":"string","enum":["QUANTITY","DELIVERY_TIME","LIST_OF_VALUES","SIZE"],"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)."},"quantity":{"type":"integer","minimum":1,"description":"Quantité demandée (type QUANTITY)."},"size":{"type":"object","description":"Gabarit et dimensions personnalisées (option de type SIZE).","properties":{"code":{"type":"string","description":"Code du gabarit de taille."},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}},"required":["code"]}},"required":["option","type"]}}},"required":["options"]},"quantity":{"type":"integer","minimum":1,"maximum":1000,"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."}},"required":["productId","sku","selection"]},"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."}},"required":[]}},{"name":"delete_cart","description":"Supprime DÉFINITIVEMENT un panier et toutes ses lignes. Irréversible. Pour retirer une seule ligne, utilisez update_cart avec `remove`.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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éé."}},"required":["cartId"]}},{"name":"get_cart","description":"Renvoie le panier tel que FIGÉ à l’ajout : aucune re-cotation à la lecture. `pricedAt` par ligne et `expiresAt` donnent l’âge des prix — au-delà, re-cotez avec quote_product.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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éé."}},"required":["cartId"]}},{"name":"get_product_configuration","description":"Renvoie les options configurables d’un produit (quantités, délais, valeurs, tailles) et leurs valeurs disponibles. À appeler AVANT validate_selection ou quote_product : chez Fulfiller, un produit n’est pas un SKU à prix figé mais un espace de configuration.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"productId":{"type":"integer","minimum":1,"description":"Identifiant rendu par search_products."}},"required":["productId"]}},{"name":"get_product_details","description":"Fiche PIM d’un produit : descriptions, points clés, questions fréquentes, contraintes de fichier (fond perdu, résolution, marges, mode colorimétrique) et ressources (visuels, gabarits, consignes techniques). À utiliser pour DÉCRIRE un produit ou aider à préparer un fichier. Ne renvoie aucun prix — pour coter, passez par quote_product. Fournissez exactement un argument. Les champs absents ne sont pas renseignés au PIM ; la FAQ est rare.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":128,"description":"SKU exact, tel que rendu par search_products ou resolve_product."},"url":{"type":"string","minLength":1,"maxLength":2048,"description":"URL de la page produit sur www.fulfiller.com."}},"required":[]}},{"name":"quote_by_quantity","description":"Grille de devis pour plusieurs paliers de quantité en UN appel — la bonne façon de répondre à « combien pour 100, 250, 500 ? ». Un palier hors plage ressort en erreur localisée sans invalider les autres.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"productId":{"type":"integer","minimum":1},"selection":{"type":"object","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`.","properties":{"options":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"option":{"type":"string","description":"Code de l’option, tel que rendu par get_product_configuration."},"type":{"type":"string","enum":["QUANTITY","DELIVERY_TIME","LIST_OF_VALUES","SIZE"],"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)."},"quantity":{"type":"integer","minimum":1,"description":"Quantité demandée (type QUANTITY)."},"size":{"type":"object","description":"Gabarit et dimensions personnalisées (option de type SIZE).","properties":{"code":{"type":"string","description":"Code du gabarit de taille."},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}},"required":["code"]}},"required":["option","type"]}}},"required":["options"]},"quantities":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"integer","minimum":1},"description":"Paliers de quantité à coter (1 à 20)."}},"required":["productId","selection","quantities"]}},{"name":"quote_product","description":"Devis RÉEL pour une sélection : prix HT calculé par le moteur de tarification (jamais lu dans une table de SKU), devise, délai, promotion. C’est le seul prix ferme. Si `requiresReview` vaut `true`, le prix porte sur `resolvedSelection`, pas sur la demande.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"productId":{"type":"integer","minimum":1},"selection":{"type":"object","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`.","properties":{"options":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"option":{"type":"string","description":"Code de l’option, tel que rendu par get_product_configuration."},"type":{"type":"string","enum":["QUANTITY","DELIVERY_TIME","LIST_OF_VALUES","SIZE"],"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)."},"quantity":{"type":"integer","minimum":1,"description":"Quantité demandée (type QUANTITY)."},"size":{"type":"object","description":"Gabarit et dimensions personnalisées (option de type SIZE).","properties":{"code":{"type":"string","description":"Code du gabarit de taille."},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}},"required":["code"]}},"required":["option","type"]}}},"required":["options"]}},"required":["productId","selection"]}},{"name":"resolve_product","description":"Convertit une identité EXACTE en productId : `sku` (lisible dans le JSON-LD d’une page produit) ou `url` de la page. À PRÉFÉRER à search_products dès que vous tenez l’un des deux — la recherche est approximative, celle-ci ne l’est pas. Fournissez exactement un argument.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":128,"description":"SKU exact (ex. « POSTER_PHOTO_SUR_MESURE »)."},"url":{"type":"string","minLength":1,"maxLength":2048,"description":"URL de la page produit sur www.fulfiller.com."}},"required":[]}},{"name":"search_products","description":"Recherche plein-texte dans le catalogue Fulfiller et renvoie des produits COTABLES (productId, sku, url, prix d’appel). Point d’entrée obligatoire : les autres outils travaillent sur le productId renvoyé ici. `startingPrice` est un PLANCHER dont la base (TOTAL, UNIT, PER_SQUARE_METER) change d’un produit à l’autre — ne comparez jamais deux bases différentes et n’annoncez pas ce prix comme ferme : seul quote_product l’est.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":200,"description":"Mots-clés en français (ex. « carte de visite », « bâche publicitaire »)."},"limit":{"type":"integer","minimum":1,"maximum":24,"description":"Nombre de résultats souhaité (1 à 24)."}},"required":["q"]}},{"name":"update_cart","description":"Applique, DANS CET ORDRE : retraits (`remove`), changements de quantité (`update`, sans re-cotation), puis ajouts (`add`, cotés). Renvoie le panier complet après application.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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éé."},"remove":{"type":"array","maxItems":20,"items":{"type":"string"},"description":"`lineId` des lignes à retirer."},"update":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"lineId":{"type":"string"},"quantity":{"type":"integer","minimum":1,"maximum":1000}},"required":["lineId","quantity"]},"description":"Nouveau nombre de LOTS pour des lignes existantes (prix unitaire figé inchangé)."},"add":{"type":"array","maxItems":5,"items":{"type":"object","properties":{"productId":{"type":"integer","minimum":1,"description":"Identifiant produit (`zeloomProductId`) rendu par search_products."},"sku":{"type":"string","maxLength":128,"description":"SKU exact rendu par search_products. REQUIS : il n’existe pas de résolution inverse productId → sku."},"selection":{"type":"object","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`.","properties":{"options":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"option":{"type":"string","description":"Code de l’option, tel que rendu par get_product_configuration."},"type":{"type":"string","enum":["QUANTITY","DELIVERY_TIME","LIST_OF_VALUES","SIZE"],"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)."},"quantity":{"type":"integer","minimum":1,"description":"Quantité demandée (type QUANTITY)."},"size":{"type":"object","description":"Gabarit et dimensions personnalisées (option de type SIZE).","properties":{"code":{"type":"string","description":"Code du gabarit de taille."},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}},"required":["code"]}},"required":["option","type"]}}},"required":["options"]},"quantity":{"type":"integer","minimum":1,"maximum":1000,"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."}},"required":["productId","sku","selection"]},"description":"Nouvelles lignes, cotées à l’ajout."}},"required":["cartId"]}},{"name":"validate_selection","description":"Résout une sélection tolérante en codes canoniques et vérifie sa COMMANDABILITÉ, sans renvoyer de prix. Sert à corriger une sélection avant de la coter. Lisez `alerts` et `requiresReview` : `true` signifie que la sélection retenue diffère de celle demandée.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"productId":{"type":"integer","minimum":1},"selection":{"type":"object","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`.","properties":{"options":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"option":{"type":"string","description":"Code de l’option, tel que rendu par get_product_configuration."},"type":{"type":"string","enum":["QUANTITY","DELIVERY_TIME","LIST_OF_VALUES","SIZE"],"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)."},"quantity":{"type":"integer","minimum":1,"description":"Quantité demandée (type QUANTITY)."},"size":{"type":"object","description":"Gabarit et dimensions personnalisées (option de type SIZE).","properties":{"code":{"type":"string","description":"Code du gabarit de taille."},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}},"required":["code"]}},"required":["option","type"]}}},"required":["options"]}},"required":["productId","selection"]}}],"scan":{"score":56,"grade":"C","scanned_at":"2026-09-19T20:55:29.803Z","report":{"scannerVersion":"0.1.7","scannedAt":"2026-09-19T20:55:29.780Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2514ms"]},"poisoning":{"score":15,"max":15,"notes":["11 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://www.fulfiller.com/agenticopenapi/mcp","reachable":true,"authRequired":false,"latencyMs":2514,"serverInfo":{"name":"agentic-commerce-api","version":"0.1.1"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://www.fulfiller.com/static/version1789373032/frontend/Smartwave/porto_child/fr_FR/apple-touch-icon.png","source":"site","width":180,"height":180},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}