Skip to main content
Glama

Fulfiller — print catalogue & quotes

Modifier un panier

update_cart
Destructive

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 : n’appelez pas get_cart juste après.

Input Schema

NameRequiredDescriptionDefault
addNoNouvelles lignes, cotées à l’ajout.
cartIdYesIdentifiant 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éé.
removeNo`lineId` des lignes à retirer.
updateNoNouveau nombre de LOTS pour des lignes existantes (prix unitaire figé inchangé).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / properties / add / items / properties / productId / description
      Previous value: -"Identifiant produit (`zeloomProductId`) rendu par search_products."New value: +"Identifiant produit rendu par search_products (alias : `zeloomProductId`)."
    • changedInput schema / properties / add / items / properties / selection / description
      Previous value: -"Sélection d’options. Une option non précisée prend la valeur de la préselection par défaut du produit (`preselections` de get_product_configuration), comme sur le site ; `{\"options\": []}` cote donc la configuration par défaut. La résolution est TOLÉRANTE : code ou libellé, sans souci de casse ni d’accents ; une valeur partielle est retenue si une SEULE valeur la contient (« vinyle » → « Impression sur vinyle adhésif contrecollé », « A5 » → « 14,8 x 21 cm (A5) »), ou par ses mesures (« 148x210 mm ») ; parmi plusieurs, la plus proche est retenue et signalée. Ce qui n’est pas retenu tel quel est signalé dans `alerts` et dans `summary`."New value: +"Sélection d’options : même forme et mêmes règles que `selection` de quote_product (codes ou libellés, défauts du produit, `preset`, tailles)."
    • removedInput schema / properties / add / items / properties / selection / properties / options / items / properties / option / description
      Removed value: -"Code de l’option, tel que rendu par get_product_configuration. Un libellé (« Délai de livraison ») est rattaché à la seule option qui lui correspond, et c’est signalé."
    • removedInput schema / properties / add / items / properties / selection / properties / options / items / properties / quantity / description
      Removed value: -"Quantité demandée (type QUANTITY). Hors des paliers du produit, l’alerte donne les quantités possibles et la plus proche."
    • removedInput schema / properties / add / items / properties / selection / properties / options / items / properties / size / description
      Removed value: -"Gabarit de taille (option de type SIZE). Gabarit FIXE (bornes min = max) : le code suffit, ses dimensions sont complétées, et des dimensions données dans un sens ou dans l’autre (60×80 ou 80×60) désignent le même gabarit. Gabarit à SAISIE LIBRE (`allowsCustomInput`) : width et height sont requises, dans l’unité de l’option (`unit`, souvent cm : une bâche de 3 m × 1 m s’écrit width 300, height 100) et dans les bornes du gabarit."
    • removedInput schema / properties / add / items / properties / selection / properties / options / items / properties / size / properties / code / description
      Removed value: -"Code ou libellé du gabarit, ou ses mesures (« 60x80 », « 148x210 mm ») : elles désignent le gabarit fixe de ces dimensions, sinon le gabarit sur mesure."
    • removedInput schema / properties / add / items / properties / selection / properties / options / items / properties / type / description
      Removed value: -"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."
    • removedInput schema / properties / add / items / properties / selection / properties / options / items / properties / value / description
      Removed value: -"Code ou libellé de la valeur retenue (types LIST_OF_VALUES et DELIVERY_TIME)."
    • addedInput schema / properties / add / items / properties / selection / properties / preset
      Added value: +{
      +  "maxLength": 128,
      +  "type": "string"
      +}
    • changedInput schema / properties / add / items / properties / sku / description
      Previous value: -"SKU exact rendu par search_products. REQUIS : il n’existe pas de résolution inverse productId → sku."New value: +"SKU exact rendu par search_products. FACULTATIF : absent, il est déduit du productId (PRODUCT_AMBIGUOUS si plusieurs fiches vendent ce produit : le message cite leurs SKU)."
    • changedInput schema / properties / add / items / required
      Previous value: -[
      -  "productId",
      -  "sku",
      -  "selection"
      -]New value: +[
      +  "productId",
      +  "selection"
      +]
  2. Changed6 schema fields changed
    • changedInput schema / properties / add / items / properties / selection / description
      Previous value: -"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`."New value: +"Sélection d’options. Une option non précisée prend la valeur de la préselection par défaut du produit (`preselections` de get_product_configuration), comme sur le site ; `{\"options\": []}` cote donc la configuration par défaut. La résolution est TOLÉRANTE : code ou libellé, sans souci de casse ni d’accents ; une valeur partielle est retenue si une SEULE valeur la contient (« vinyle » → « Impression sur vinyle adhésif contrecollé », « A5 » → « 14,8 x 21 cm (A5) »), ou par ses mesures (« 148x210 mm ») ; parmi plusieurs, la plus proche est retenue et signalée. Ce qui n’est pas retenu tel quel est signalé dans `alerts` et dans `summary`."
    • changedInput schema / properties / add / items / properties / selection / properties / options / items / properties / option / description
      Previous value: -"Code de l’option, tel que rendu par get_product_configuration."New value: +"Code de l’option, tel que rendu par get_product_configuration. Un libellé (« Délai de livraison ») est rattaché à la seule option qui lui correspond, et c’est signalé."
    • changedInput schema / properties / add / items / properties / selection / properties / options / items / properties / quantity / description
      Previous value: -"Quantité demandée (type QUANTITY)."New value: +"Quantité demandée (type QUANTITY). Hors des paliers du produit, l’alerte donne les quantités possibles et la plus proche."
    • changedInput schema / properties / add / items / properties / selection / properties / options / items / properties / size / description
      Previous value: -"Gabarit et dimensions personnalisées (option de type SIZE)."New value: +"Gabarit de taille (option de type SIZE). Gabarit FIXE (bornes min = max) : le code suffit, ses dimensions sont complétées, et des dimensions données dans un sens ou dans l’autre (60×80 ou 80×60) désignent le même gabarit. Gabarit à SAISIE LIBRE (`allowsCustomInput`) : width et height sont requises, dans l’unité de l’option (`unit`, souvent cm : une bâche de 3 m × 1 m s’écrit width 300, height 100) et dans les bornes du gabarit."
    • changedInput schema / properties / add / items / properties / selection / properties / options / items / properties / size / properties / code / description
      Previous value: -"Code du gabarit de taille."New value: +"Code ou libellé du gabarit, ou ses mesures (« 60x80 », « 148x210 mm ») : elles désignent le gabarit fixe de ces dimensions, sinon le gabarit sur mesure."
    • changedInput schema / properties / add / items / properties / selection / properties / options / items / properties / value / description
      Previous value: -"Code de la valeur retenue (types LIST_OF_VALUES et DELIVERY_TIME)."New value: +"Code ou libellé de la valeur retenue (types LIST_OF_VALUES et DELIVERY_TIME)."
  3. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is known; the description adds real behavioral value on top: deterministic sequencing of remove/update/add, that quantity updates do NOT re-quote (unit price frozen), that added lines ARE quoted at insertion, and that the response is the complete cart. It does not discuss failure/partial-application behavior or irreversibility beyond what the destructiveHint already implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler; the operational ordering constraint is front-loaded and the return-value/anti-get_cart note closes it. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive multi-operation mutation with no output schema, the description supplies the essentials an agent needs: ordering, quoting semantics, and the fact that the full cart is returned. It stops short of describing error/partial-failure handling or concurrency, but given the fully documented schema and clear annotations the definition is functionally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description goes further by attaching pricing semantics to the operations (updates reuse the frozen unit price, adds are quoted, and changing volume requires a re-quote then line replacement). That meaning is not derivable from the schema alone, though it does not cover lineId/limits specifics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a precise mutation (apply to cart) and enumerates the three sub-operations it performs in a fixed order (remove, update, add), each mapped to its actual parameter. It also distinguishes itself from the sibling get_cart by telling the agent the call already returns the full cart, so the agent can tell it apart from the other cart tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit operational guidance: the order in which operations are applied and the instruction not to call get_cart immediately afterwards because the updated cart is returned. It does not, however, say when to prefer this tool over quote_product/quote_by_quantity for pricing a change, nor any prerequisite about the cart needing to exist, so a small gap remains.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources