Skip to main content
Glama

Fulfiller — print catalogue & quotes

Coter une sélection

quote_product
Read-only

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. 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é.

Input Schema

NameRequiredDescriptionDefault
productIdYesIdentifiant rendu par search_products.
selectionYesSé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, ou la SEULE compatible avec le reste de la sélection (« soft touch » sur une carte recto verso). Ce qui n’est pas retenu tel quel est signalé dans `alerts` et dans `summary`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / productId / description
      Added value: +"Identifiant rendu par search_products."
    • changedInput schema / 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. 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, ou la SEULE compatible avec le reste de la sélection (« soft touch » sur une carte recto verso). Ce qui n’est pas retenu tel quel est signalé dans `alerts` et dans `summary`."
    • changedInput schema / properties / selection / properties / options / items / properties / size / description
      Previous 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."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 : hors bornes, la cotation est refusée (SIZE_OUT_OF_RANGE, bornes dans le message)."
    • addedInput schema / properties / selection / properties / preset
      Added value: +{
      +  "description": "Code ou nom d’un preset de get_product_configuration (`presets` : « Le moins cher », « Top vente »…) : ses valeurs servent de base, `options` les précise ou les remplace.",
      +  "maxLength": 128,
      +  "type": "string"
      +}
  2. Changed6 schema fields changed
    • changedInput schema / 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 / 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 / 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 / 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 / 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 / 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

A3.9/5.0
Behavior5/5

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

Goes well beyond the readOnly/non-destructive annotations: it explains the price is computed live rather than table-looked-up, identifies the firm price field vs the catalogue price, explains promo strikethrough semantics, and describes the requiresReview branch where the quote applies to the resolved summary rather than the request. This is exactly the extra context annotations cannot carry.

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

Conciseness4/5

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

Front-loaded with the core claim (real firm price for a selection) and then focused on output-field interpretation. Dense but every sentence serves a purpose; no output schema exists, so the return-value guidance earns its space.

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?

With no output schema, the description usefully documents the return surface (finalPriceHt, priceHt, promo, summary, requiresReview, status). For a nested, two-parameter quoting tool it is close to complete, though it omits error/alert handling detail (only alerts are mentioned).

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself is extremely detailed, so the baseline is 3. The description adds no parameter-level syntax or format guidance of its own, leaving the heavy lifting entirely to the schema.

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

Purpose4/5

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

States a specific verb+resource (quote a selection) and specifies the price is a real, firm price computed by the pricing engine, never read from a SKU table. This implicitly separates it from softer-price siblings, but it never names quote_by_quantity or validate_selection, so sibling differentiation is left to inference.

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

Usage Guidelines3/5

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

Usage is implied ('c'est le seul prix ferme', announce devis.finalPriceHt) rather than stated as when-to-use vs when-not. No explicit routing to quote_by_quantity or validate_selection, so the agent must infer which quoting path applies.

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