protogrid

Search / com.fulfiller/agentic-commerce-api

Fulfiller — print catalogue & quotes

R0· no sign-in

Print catalogue and live quotes from Fulfiller, a French online printer shipping across the EU.

v0.1.3 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality89good
Trust83of 100
Uptime, 30 days100%
Latency p50560 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "agentic-commerce-api": {
      "type": "http",
      "url": "https://www.fulfiller.com/agenticopenapi/mcp"
    }
  }
}
claude mcp add --transport http agentic-commerce-api https://www.fulfiller.com/agenticopenapi/mcp
[mcp_servers.agentic-commerce-api]
url = "https://www.fulfiller.com/agenticopenapi/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "agentic-commerce-api": {
      "type": "remote",
      "url": "https://www.fulfiller.com/agenticopenapi/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "agentic-commerce-api": {
      "type": "http",
      "url": "https://www.fulfiller.com/agenticopenapi/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=agentic-commerce-api&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vd3d3LmZ1bGZpbGxlci5jb20vYWdlbnRpY29wZW5hcGkvbWNwIn0%3D"
}
{
  "servers": {
    "agentic-commerce-api": {
      "type": "http",
      "url": "https://www.fulfiller.com/agenticopenapi/mcp"
    }
  }
}
{
  "mcpServers": {
    "agentic-commerce-api": {
      "httpUrl": "https://www.fulfiller.com/agenticopenapi/mcp"
    }
  }
}
extensions:
  "agentic-commerce-api":
    enabled: true
    name: "agentic-commerce-api"
    type: streamable_http
    uri: "https://www.fulfiller.com/agenticopenapi/mcp"
    timeout: 300

Quality 89 / 100good

protocol100 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • pass
    protocol.list_ttltool list is cacheable (ttlMs 300000)
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations11 of 11 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: quote_by_quantity (idempotentHint); update_cart (idempotentHint); resolve_product (idempotentHint); …
  • pass
    tools.token_costabout 4,517 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes29 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

11 tools, about 4,517 tokens to load them all · tool set f9e015c64974 · tools last changed 2026-10-07 · checked 2026-10-20 10:35 UTC

Tool changes

  • delete_cartchangedannotations
  • update_cartchangedannotations
  • get_cartchangedannotations
  • create_cartchangedannotations
  • quote_by_quantitychangedannotations
  • quote_productchangedannotations
  • validate_selectionchangedannotations
  • get_product_configurationchangedannotations
  • get_product_detailschangedannotations
  • resolve_productchangedannotations

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-100% +updated-13d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://www.fulfiller.com/agenticopenapi/mcp streamable-httpnoneyes100%560 ms2026-07-28, 2025-06-18, 2025-03-26, 2024-11-052026-10-20

Tools (11)

create_cartCré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 désigne le produit par son productId (rendu par search_products) ; le sku est facultatif. `unitPriceHt` et `lineTotalHt` sont promotion déduite. Renvoie le panier complet : n’appelez pas get_cart juste après.
delete_cartdestructiveSupprime DÉFINITIVEMENT un panier et toutes ses lignes. Irréversible. Pour retirer une seule ligne, utilisez update_cart avec `remove`.
get_cartread-onlyRenvoie 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. Sert à RELIRE un panier existant (plus tard dans la conversation, ou quand l’utilisateur demande à le revoir) : inutile juste après create_cart ou update_cart, qui renvoient déjà le panier complet.
get_product_configurationread-onlyRenvoie 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. `presets` : configurations prêtes à l’emploi, cotables telles quelles via `selection.preset`. Les dépendances entre options (une finition qui exige le recto verso…) n’y figurent pas : validate_selection les révèle (`enabledOptions`).
get_product_detailsread-onlyFiche 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 ; un prix écrit dans les textes de la fiche (« Dès 14.5 € ») est souvent périmé, ne l’annoncez pas. Les vidéos sont dans `videos`, pas dans `images`. Fournissez exactement un argument (`productId`, `sku` ou `url`). Les champs absents ne sont pas renseignés au PIM ; la FAQ est rare.
quote_by_quantityread-onlyGrille de devis pour plusieurs paliers de quantité en UN appel — la bonne façon de répondre à « combien pour 100, 250, 500 ? ». Prix de chaque palier : `devis.finalPriceHt` (promotion déduite). Même règle que quote_product, palier par palier : hors plage → erreur localisée sans invalider les autres ; hors du pas → coté au palier commandable le plus proche, que `quotedQuantity` indique (le prix porte sur cette quantité, pas sur le palier demandé).
quote_productread-onlyDevis 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. Le prix à annoncer est `devis.finalPriceHt` (promotion déduite) ; `devis.priceHt` est le prix catalogue, BARRÉ quand `devis.promo` est présent. Pour dire à l’utilisateur ce qui est coté, citez `summary` (libellés lisibles). Si `requiresReview` vaut `true`, le prix porte sur la sélection décrite par `summary`, pas sur la demande : les lignes dont le `status` n’est ni AS_REQUESTED ni DEFAULT disent ce qui a changé.
resolve_productread-onlyConvertit une identité EXACTE en identité complète (productId, sku, nom, url) : `sku` (lisible dans le JSON-LD d’une page produit), `url` de la page, ou `productId`. À PRÉFÉRER à search_products dès que vous tenez l’un des trois — la recherche est approximative, celle-ci ne l’est pas. Fournissez exactement un argument.
search_productsread-onlyRecherche plein-texte dans le catalogue Fulfiller et renvoie des produits COTABLES (productId, sku, url, et le prix d’appel du site quand il en affiche un). Point d’entrée obligatoire : les autres outils travaillent sur le productId renvoyé ici. `startingPrice` est le prix d’appel AFFICHÉ par le site : indicatif, parfois périmé ou propre à une configuration, ni plancher garanti ni prix ferme — seul quote_product l’est. Sa base (TOTAL, UNIT, PER_SQUARE_METER) change d’un produit à l’autre : ne comparez jamais deux bases différentes. Pour le citer, utilisez `startingPrice.displayLabel`. Un résultat peut lister dans `alsoListedAs` d’autres fiches du site qui vendent le MÊME produit : ne les présentez pas comme des produits distincts.
update_cartdestructiveApplique, DANS CET ORDRE : retraits (`remove`), changements de quantité (`update`, sans re-cotation), puis ajouts (`add`, cotés). Renvoie le panier complet après application : n’appelez pas get_cart juste après.
validate_selectionread-onlyRé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. `summary` décrit en clair la sélection retenue, et son `status` dit pour chaque option si la valeur est celle demandée, un défaut, ou un changement. `requiresReview` à `true` : la sélection retenue diffère de celle demandée, `alerts` dit pourquoi. `enabledOptions` liste, pour chaque option, les valeurs activables AVEC cette sélection : c’est là que se lisent les dépendances entre options.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.fulfiller/agentic-commerce-api",
  "title": "Fulfiller — print catalogue & quotes",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://www.fulfiller.com/agenticopenapi/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.3",
  "websiteUrl": "https://www.fulfiller.com/mcp.html",
  "description": "Print catalogue and live quotes from Fulfiller, a French online printer shipping across the EU."
}