Skip to main content
Glama

Nitech — heating spare parts and ordering

Server Details

Heating spare parts: prices, availability, delivery quotes and orders with explicit confirmation.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.9/5.0

Scored across 13 tools

Disambiguation3/5

Core catalog, order, payment, relay, and withdrawal tools are broadly distinguishable, but several boundaries are fuzzy. quote_cart and quote_cart_shipping overlap heavily, get_order and get_payment both read the same private cart/order context with overlapping payment and fulfillment state, and create_order and prepare_payment share near-identical confirmation/token workflows. The lengthy descriptions help but also add procedural noise that can make tool selection harder.

Naming Consistency5/5

All tools use predictable snake_case verb_noun naming: get_*, search_*, find_*, create_*, quote_*, prepare_*, and request_*. Resource nouns are clear and consistent across catalog, order, payment, and support operations.

Tool Count5/5

Thirteen tools is well scoped for a spare-parts ordering server covering discovery, compatibility, quoting, shipping, relay lookup, ordering, payment, and withdrawal. Each tool generally earns its place in the workflow rather than appearing as arbitrary surface area.

Completeness4/5

The surface covers the main lifecycle: search products, inspect products/documents/compatibility, read offers, quote carts and shipping, find relays, create/read orders, prepare/read payments, and request withdrawal. Minor gaps remain around order modification/cancellation, listing orders, and post-payment service actions such as invoices or refunds, but core workflows are covered.

Available Tools

13 tools
create_orderA
DestructiveIdempotent
Inspect

Au client, parler de sa commande et de la prochaine action utile. Garder les noms d’outils, états bruts, identifiants internes, clés, jetons et étapes techniques hors du dialogue courant. Les autorisations affichées par l’application de l’assistant relèvent de cette application et ne remplacent pas l’accord demandé par Nitech. Après le récapitulatif et le lien vers les CGV de l’aperçu, poser une seule question, adaptée au montant réel. Exemple « Confirmez-vous cette commande de 210 € TTC et acceptez-vous les CGV ? » Une réponse explicite à cette question suffit pour l’accord de commande et les CGV. Ne pas demander de formule à recopier ni plusieurs déclarations. Après création, donner la référence client, le montant et la prochaine action utile. Créer une vraie commande Nitech dans le canal MCP autonome, sans boutique Web ni paiement. Appeler d’abord avec confirmation.confirmed=false pour présenter au client les articles, adresses, montant, terms_version et le lien terms_url des CGV conservables. Faire consulter ce lien avant de recueillir l’accord. Après son accord explicite, rappeler avec la même clé UUID, le token retourné, confirmed=true, confirmed_at, proof_reference et terms_version. Prix, stock, port et conditions sont revérifiés. Un changement exige un nouveau récapitulatif. Conserver la même clé et les mêmes arguments pour toute reprise, y compris après timeout ou résultat incertain ; ne jamais créer une nouvelle clé pour contourner pending ou un conflit. 30 lignes, 100 unités par ligne, 300 au total, 32 Kio. Ne déclenche ni paiement, facture, e-mail ni réservation. Après création, poursuivre par défaut sur MCP avec prepare_payment. Les liens privés web_resume des quatre boutiques restent des alternatives uniquement si le client les demande ; ne pas les proposer systématiquement. Ils conservent le même caddie et leur validité existante. Livraison GLS optionnelle : delivery={mode:gls_pickup,relay_id}, identifiant obtenu par search_relay_points ; destination de recherche complète requise pour les devis. Aucun champ libre de relais. Le récapitulatif confirmed=false porte le mode, le relais vérifié, les frais et le total. Conserver identité/email/téléphone du destinataire, et facturation indépendante. Toute modification exige un nouvel aperçu et un nouvel accord/token ; jamais de remplacement silencieux du relais. En cas de saisie invalide rejetée avant création (category=invalid_input, operation_outcome=not_created), lire error.fields (path, reason, expected_correction), demander la correction puis rappeler confirmed=false avec la même clé. Présenter les coordonnées et le montant actualisés et recueillir un nouvel accord avant confirmed=true. Une ancienne confirmation ne couvre pas une adresse corrigée. Pour unknown, pending ou un conflit d’idempotence : ne changer ni clé ni arguments, réconcilier. La facturation utilise la référence pays, pas les zones desservies. Aucun contrôle d’existence de rue ou de correspondance rue–ville–code postal.

NameRequiredDescriptionDefault
linesYes
customerYes
deliveryNo
confirmationYes
interaction_idYes
billing_addressYes
idempotency_keyYes
shipping_addressYes

Output Schema

NameRequiredDescription
errorNo
stateNo
originNo
statusYes
summaryNo
currencyNo
order_idNo
replayedNo
referenceNo
web_resumeNo
confirmationNo
amount_to_payNo
order_createdNo
schema_versionYes
payment_createdNo
operation_outcomeNo
operation_referenceNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=false, and the description adds real context beyond that: price/stock/shipping/terms are re-verified on the confirmed call, no payment, invoice, email or reservation is triggered, and limits are given (30 lines, 100 units/line, 300 total, 32 KiB). It also specifies that any change (address, relay) invalidates the prior preview and token, which is meaningful for a destructive, idempotent mutation. It does not describe the response payload, but an output schema exists.

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

Conciseness2/5

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

A single dense ~450-word block with no headings or paragraphing, mixing customer-facing dialogue scripts, consent policy, error taxonomy, GLS logistics, and hard limits. The most important fact (it creates an order via a two-call confirm flow) is not front-loaded, and several sentences are policy prose rather than invocation guidance.

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 an 8-parameter, nested-object mutation with an output schema available, the description covers the confirmation protocol, idempotency/retry reconciliation (same key and arguments on timeout, pending, or conflict, never a fresh key), invalid_input handling via error.fields, and post-creation next steps. The main omissions are the meaning of interaction_id and proof_reference, which an agent must construct without guidance.

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 0%, so the description must carry parameter meaning, and it does much of that: the delivery object shape {mode:gls_pickup, relay_id} and how to source relay_id, the confirmation object's two-phase fields, the reused UUID idempotency key, independent billing vs shipping addresses, and country-reference-based billing. Gaps remain: interaction_id is never explained and proof_reference is named in the call sequence without defining what it must contain.

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?

The core statement 'Créer une vraie commande Nitech dans le canal MCP autonome, sans boutique Web ni paiement' gives a specific verb, resource, and channel, and the text names prepare_payment as the follow-up and web_resume links as alternatives, so it is distinguishable from siblings. However, the description opens with customer-dialogue scripting rather than the tool's purpose, so the actual function is buried mid-paragraph.

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

Usage Guidelines5/5

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

Explicit two-phase usage is spelled out: call first with confirmation.confirmed=false to present items, addresses, amount, terms_version and terms_url; after explicit agreement call again with the same UUID key plus token, confirmed=true, confirmed_at, proof_reference and terms_version. It also states when not to escalate to web_resume links ('ne pas les proposer systématiquement'), how to obtain a relay_id via search_relay_points, and that the default follow-up is prepare_payment.

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

find_compatibility_evidenceA
Read-onlyIdempotent
Inspect

Retrouver les preuves publiables pièce/appareil du pilote. verified exige une décision humaine active liée à la preuve exacte, au SHA, à la page et au repère courants. stale_source impose une nouvelle vérification. Les scores ne sont pas des probabilités de compatibilité.

NameRequiredDescriptionDefault
partYes
applianceYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds real behavioral context: evidence is only 'verified' under a live human decision tied to the exact artifact, 'stale_source' demands re-verification, and the returned scores are explicitly not compatibility probabilities. That last caveat directly prevents a common misuse, which is genuine value beyond the structured fields.

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?

Three tight sentences with no filler; the core purpose is front-loaded and the state semantics and the score caveat each earn their place. Minor cost: dense jargon and a language switch (French description among English siblings) slightly slows parsing.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the annotations cover safety. What remains missing is a usable definition of the two inputs and of the pilot/'preuves publiables' domain, so an agent knows what it gets back but not precisely what to pass in.

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 0% for two parameters, so the description carries the burden; it names both ('pièce/appareil') and frames them as the pair whose evidence is retrieved, which does add meaning over the bare strings. But it gives no indication of expected format (the schema's pattern, length limits) or whether these are part numbers, SKUs, or free text, so it only partially compensates.

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?

The description opens with a specific verb and resource: retrieve the publishable part/appliance evidence for a given pair. The domain term 'pilote' (pilot) is opaque and left unexplained, but no sibling tool overlaps with this lookup, so an agent can still tell what the tool is for and that it is not a product/order/payment operation.

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?

It spells out the meaning of result states ('verified' requires an active human decision bound to the exact evidence/SHA/page/marker; 'stale_source' forces re-verification), which implicitly tells the agent how to act on results. However, it never says when to call this tool versus doing something else, nor what preconditions exist for the caller.

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

get_offerA
Read-onlyIdempotent
Inspect

Lire l'offre canonique à l'heure d'observation : mise en vente, stock compté, disponibilité et autorisation de commande distinctes. Cette consultation ne réserve aucun stock ; la qualification métier de la fiche reste séparée.

NameRequiredDescriptionDefault
product_idYesPID interne du catalogue actif. PID1843 est le pilote qualifié ; les autres projections restent provisoires en recette.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful semantics beyond that: no stock is reserved by the read, and the business qualification of the fiche is kept separate from the offer state.

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?

Two tight sentences: the first front-loads the core action and the field set, the second adds the non-reservation caveat. No filler, though the enumerated field list is dense enough to read as a run-on.

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?

An output schema exists, so return shape need not be explained, and annotations carry the safety profile. The description supplies the domain semantics an agent needs (point-in-time snapshot, no reservation, distinct availability vs authorization); only an explicit pointer to sibling tools is missing.

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?

With a single parameter at 100% schema description coverage, the schema already documents product_id (internal PID, bounds, pilot PID1843 caveat). The description adds nothing further about the parameter, so the baseline of 3 applies.

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 and resource ('Lire l'offre canonique') and enumerates what the read exposes (mise en vente, stock compté, disponibilité, autorisation de commande). An agent can distinguish it from get_product because it is scoped to the commercial offer rather than the catalog record, though no sibling is named explicitly.

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?

Gives clear context for calling it: a point-in-time ('à l'heure d'observation') read that separates availability from order authorization. The note that it reserves no stock implicitly routes reservation/ordering intent to create_order or quote_cart, but no alternative tool is named outright.

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

get_orderA
Read-onlyIdempotent
Inspect

Lire une commande privée avec cart_id et cart_access (m1 privé ou p2 permanent). Le numéro seul ne suffit jamais. Reprend la même vérification d’accès que get_payment. Lecture seule : état de commande, paiement serveur, bordereaux et quantités documentées, déclaration de départ, transporteur explicitement renseigné. Un bordereau ne prouve pas la préparation physique ; une déclaration de départ ne prouve pas la livraison. Numéro/lien de suivi absents de ces sources : null et unavailable explicites. Ne rien déduire du paiement sur l’expédition. Ne pas recréer ni repayer en cas d’incertitude.

NameRequiredDescriptionDefault
cart_idYes
cart_accessYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: it enumerates what the read can return (order state, server-side payment, documented slips and quantities, departure declaration, explicitly set carrier) and states the epistemics of those sources — a slip does not prove physical preparation, a departure declaration does not prove delivery. It also declares explicit null and 'unavailable' semantics for absent tracking numbers/links, which is real behavioral context an agent cannot get from the schema.

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?

Purpose and the access requirement are front-loaded, and essentially every sentence carries a distinct rule (access form, source epistemics, null semantics, no re-pay). It is dense and slightly run-on, with the constraint sentences chained rather than grouped, but there is little pure filler.

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 two-parameter read tool with a rich output schema and full annotation coverage, the definition supplies the missing access model and interpretation caveats. The main residual gap is that the output schema exists but the description's mapping of sources to fields is informal rather than field-referenced, though nothing critical for correct invocation is absent.

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 0%, so the description must carry the load, and it does partially: it explains that cart_access is an access credential in one of two forms ('m1 privé ou p2 permanent') and that cart_id alone is never sufficient. It does not explain the integer nature/range of cart_id or the token structure beyond the two modes, leaving some of the 0% coverage gap.

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?

States a specific verb and resource ('Lire une commande privée') plus the scope constraint that it is private and requires cart_id with cart_access. It explicitly distinguishes itself from a lookup by number alone ('Le numéro seul ne suffit jamais') and anchors itself to a sibling ('la même vérification d'accès que get_payment').

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?

Gives clear context and explicit anti-patterns: never attempt with only the order number, never re-create or re-pay when uncertain, and do not infer shipping from payment. It does not spell out a positive alternative (e.g. when to prefer get_payment or create_order instead), so it falls short of a full when/when-not/alternatives map.

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

get_paymentB
Read-onlyIdempotent
Inspect

Au client, parler de sa commande et de la prochaine action utile. Garder les noms d’outils, états bruts, identifiants internes, clés, jetons et étapes techniques hors du dialogue courant. Les autorisations affichées par l’application de l’assistant relèvent de cette application et ne remplacent pas l’accord demandé par Nitech. Présenter le résultat réel en langage courant. Pour un paiement accepté, indiquer « Paiement accepté », la référence et le montant utiles, puis proposer le suivi. Garder les états bruts et les identifiants bancaires hors du dialogue courant. Carte explicitement choisie et préparation confirmée : remettre action.url, lien Nitech privé stable /payments/card, sans ouvrir ce lien dans les outils de l’assistant. Le client clique et le navigateur rejoint Scellius par le transfert bancaire existant, sans nouveau choix du moyen. Ne jamais donner un formulaire bancaire ou son jeton temporaire comme lien durable. payment_page conserve la page générale de choix et de suivi ; utiliser cette page si aucun moyen n’a été choisi. Virement, chèque et suivi permanent conservés. Retrouver le même caddie MCP, son montant accepté, les trois moyens card/transfer/cheque, le moyen choisi, les instructions et son état bancaire Scellius. payment_page fournit une URL privée stable du caddie, sans date d'expiration, commune aux trois moyens ; elle reste consultable après paiement. Le jeton p2 de cette page peut remplacer le jeton mcp_resume pour les appels suivants. awaiting_receipt signifie attente du règlement et ne prouve aucun paiement. Fournir cart_id et cart_access : le jeton mcp_resume privé obtenu dans un lien web_resume de create_order ou du BO. Ne jamais fournir un simple numéro comme preuve d’accès. NOT_PREPARED et PREPARED ne prouvent aucun paiement. Pour le client, AUTHORISED, AUTHORISED_TO_VALIDATE et CAPTURED se présentent simplement comme Paiement accepté ; ne pas détailler les étapes bancaires internes. business_effects et status signalent les réconciliations. Ne pas payer à nouveau en cas d’incertitude.

NameRequiredDescriptionDefault
cart_idYes
cart_accessYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, it discloses access-token semantics, that the p2 token from payment_page can substitute for mcp_resume, that awaiting_receipt means settlement pending and proves no payment, that NOT_PREPARED/PREPARED prove no payment, and the anti-duplicate-payment caution. This is meaningful safety context an agent cannot get from annotations alone. It is diluted by repeated directives about keeping internal identifiers out of the dialogue.

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

Conciseness2/5

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

The text is a wall of run-on sentences mixing output semantics, token handling, and customer-facing script instructions, with near-verbatim repetition ("Garder les noms d'outils, états bruts, identifiants internes, clés, jetons ... hors du dialogue courant" appears twice). The single most important fact — what the tool returns — is not in the first sentence. Substantial material does not belong in a tool description at all.

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 an output schema present, the description does not need to enumerate return fields, and it covers the access model, the token substitution rule, and the status-interpretation caveats the schema likely cannot express. Coverage of error/permission behavior is absent, but the core operational picture is present and would let an agent call the tool correctly.

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 0%, so the description must compensate, and it partly does: it explains that cart_access is the private mcp_resume token from a create_order web_resume link or the BO, and warns that a bare number is not proof of access. cart_id itself is never characterized beyond being required. The compensation is real but uneven, and the p2-versus-mcp_resume token relationship is stated ambiguously.

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

Purpose3/5

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

The actual purpose is buried mid-text: "Retrouver le même caddie MCP, son montant accepté, les trois moyens card/transfer/cheque, le moyen choisi, les instructions et son état bancaire Scellius" — a clear retrieval operation once found. The opening sentences instead dictate how to talk to the customer, so an agent must read several paragraphs before learning what the tool returns. The verb+resource are stated, but not front-loaded or separated from the conversational policy.

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 explicitly routes between this tool and an alternative: "payment_page conserve la page générale de choix et de suivi ; utiliser cette page si aucun moyen n'a été choisi," giving a concrete selection condition. It also states the access prerequisite ("Fournir cart_id et cart_access : le jeton mcp_resume privé obtenu dans un lien web_resume de create_order ou du BO"). No explicit statement of when not to call it beyond the payment_page split.

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

get_productA
Read-onlyIdempotent
Inspect

Lire le produit public Nitech courant par PID, y compris les produits hors vente historiquement publics. Textes, caractéristiques, appareils, éclatés, repères et documents conservent leur provenance ; une relation historique ou un contenu observé ne vaut pas qualification humaine.

NameRequiredDescriptionDefault
product_idYesPID interne du catalogue actif. PID1843 est le pilote qualifié ; les autres projections restent provisoires en recette.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already establish that this is a safe, idempotent read operation. The description adds meaningful domain behavior beyond annotations: returned texts, characteristics, devices, exploded views, markers, and documents retain provenance, and observed content or historical relations do not constitute human qualification.

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?

The purpose and scope are front-loaded in the first sentence, and the second sentence carries important provenance caveats. It is appropriately compact overall, though the second sentence is dense with domain-specific jargon and a long list of content types.

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

Completeness5/5

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

For a single-parameter read tool with a full output schema and complete annotations, the description provides enough context to invoke and interpret it correctly. The provenance and qualification caveats cover the main interpretive risk.

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?

The single product_id parameter is fully documented in the schema, and the description adds useful validity context by noting that PIDs may include historically public products that are no longer for sale. This meaningfully supplements the schema's active-catalog framing without replacing it.

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 states a specific verb and resource: reading the current public Nitech product by PID. It also clarifies scope by including out-of-sale products that were historically public, which helps distinguish it from search-oriented siblings such as search_products.

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?

Usage is clear from the required PID-based retrieval model and the explicit inclusion of historically public out-of-sale products. However, it does not explicitly route the agent to search_products when the PID is unknown or name alternatives for document-specific retrieval.

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

get_product_documentsA
Read-onlyIdempotent
Inspect

Lire les seuls documents connus et publiables du produit ou de ses appareils liés, avec leur type et les contrôles humains applicables à leur source. Les autres contenus restent à vérifier ; aucune qualification n'est déduite automatiquement.

NameRequiredDescriptionDefault
product_idYesPID interne du catalogue actif. PID1843 est le pilote qualifié ; les autres projections restent provisoires en recette.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavior: results are filtered to known/publishable documents only, linked devices are included in scope, human controls on the source are surfaced, and no qualification is auto-inferred for unverified content. It stops short of describing ordering, volume, or what an empty result implies.

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?

Two sentences, zero padding, and the core action plus scope constraint are front-loaded. The phrasing is dense and abstract ('contrôles humains applicables à leur source'), which costs a little parseability, but nothing is redundant.

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?

An output schema exists, so return structure needn't be explained, and the single parameter is fully documented. The description covers the key ambiguity for this tool — which documents are in scope and which are deliberately withheld. It could add what happens when product_id has no publishable documents, but that is a minor gap.

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 product_id already carries a detailed description (internal PID, qualified pilot vs provisional projections). The description adds only indirect semantics by stating that documents of 'appareils liés' are included in the response for that single ID — useful scope context, but no format or constraint detail beyond the schema. Baseline 3.

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?

The description pairs a specific verb ('Lire') with a specific resource ('documents du produit ou de ses appareils liés') and narrows the scope to 'seuls documents connus et publiables'. It is clear what the tool returns, but it never names a sibling (e.g., find_compatibility_evidence, get_product) to explain why an agent would pick this one for document retrieval.

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?

'Les autres contenus restent à vérifier' implies a usage boundary — this tool is for verified/publishable documents only — but the guidance is implicit and framed as a data caveat rather than an instruction. There is no explicit when-to-use, when-not-to-use, or pointer to an alternative among the ten siblings.

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

prepare_paymentB
DestructiveIdempotent
Inspect

Au client, parler de sa commande et de la prochaine action utile. Garder les noms d’outils, états bruts, identifiants internes, clés, jetons et étapes techniques hors du dialogue courant. Les autorisations affichées par l’application de l’assistant relèvent de cette application et ne remplacent pas l’accord demandé par Nitech. Après création, donner la référence client, le montant et une action utile. Si la carte a été choisie et la préparation autorisée, donner le lien direct action.url quand le serveur le fournit. Ne pas redemander un choix ou un accord identique. Si aucun moyen n’a été choisi, proposer carte, virement ou chèque, ou remettre la page de choix existante. Une demande explicite identifiant commande, montant, devise et moyen vaut accord pour cette préparation. Exécuter aperçu confirmed=false puis confirmed=true sans reposer la même question UNIQUEMENT si le résultat concorde exactement et qu’aucune nouvelle condition ne nécessite un accord. Conserver la même clé UUID, le jeton retourné et proof_reference identifiant le message explicite ; ne jamais inventer une preuve. S’il manque un élément ou si le résultat diffère, demander seulement la précision ou le nouvel accord nécessaire. Résultat accepté ou incertain : ne pas préparer une nouvelle tentative. Carte explicitement choisie et préparation confirmée : remettre action.url, lien Nitech privé stable /payments/card, sans ouvrir ce lien dans les outils de l’assistant. Le client clique et le navigateur rejoint Scellius par le transfert bancaire existant, sans nouveau choix du moyen. Ne jamais donner un formulaire bancaire ou son jeton temporaire comme lien durable. payment_page conserve la page générale de choix et de suivi ; utiliser cette page si aucun moyen n’a été choisi. Virement, chèque et suivi permanent conservés. Préparer le moyen de paiement du même caddie MCP : payment_method=card, transfer ou cheque. Pour virement/chèque, confirmer enregistre seulement c_stat=3 et c_moyp=3/2 et renvoie les instructions existantes : aucun règlement reçu, stock, e-mail ou facture. Une carte en cours/incertaine ou une commande déjà prise en compte interdit un autre moyen. Pour la carte, préparer le paiement autonome Scellius. Appeler avec confirmed=false, cart_access, expected_amount, currency=EUR et une clé UUID pour présenter le montant au client. Uniquement après son accord explicite, rappeler confirmed=true avec confirmation_token et proof_reference. Renvoyer payment_page ou action.url au client : URL stable sans expiration (expires_at=null). La préparation UNISSUED peut attendre ; le formulaire bancaire est daté et marqué ISSUED seulement au départ explicite du client. Les confirmations temporaires sont renouvelées derrière la page. Une session ISSUED ou LEGACY_UNKNOWN reste protégée jusqu'au résultat authentifié ; ne jamais inventer une expiration bancaire. Le client saisit sa carte uniquement chez Scellius. Aucun envoi de carte ou authentification via MCP. Répétitions et clés différentes retrouvent la même tentative ; aucun nouvel essai automatique après un refus, une expiration ou une incertitude. Après REFUSED, ABANDONED ou EXPIRED authentifié par le serveur, demander un nouveau récapitulatif avec une nouvelle clé et retry_of=attempt_id, puis recueillir un nouvel accord explicite. get_payment donne la preuve serveur et les effets métier. Un lien ne valide pas le paiement.

NameRequiredDescriptionDefault
cart_idYes
currencyYes
retry_ofNo
confirmedYesfalse pour obtenir le jeton serveur ; true après concordance exacte avec un accord explicite acquis. Cette étape technique ne nécessite pas de répéter une question déjà répondue.
cart_accessYes
payment_methodNocard
expected_amountYes
idempotency_keyYes
proof_referenceNoRéférence traçable du message d’accord explicite du client (commande, montant, devise, moyen), y compris si cet accord précède l’aperçu technique. Ne pas inventer cette référence.
confirmation_tokenNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already flag destructive, idempotent and open-world, and the description adds substantial context beyond them: a Scellius-hosted flow where card data never transits MCP, transfer/cheque confirmation only writes c_stat=3 and c_moyp=3/2 with "aucun règlement reçu, stock, e-mail ou facture", stable non-expiring action.url, and no automatic retry after refusal or uncertainty. The idempotency claim is corroborated ("Répétitions et clés différentes retrouvent la même tentative"), so nothing contradicts the annotations. It is dense and non-linear, which keeps it from a 5.

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

Conciseness2/5

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

This is a single sprawling block that mixes conversational policy, security rules, state machine details and parameter mechanics with no headings or ordering, so the critical two-step flow is buried. Sentences repeat the agreement/no-repeat-identical-question rule several times. Front-loading is poor: the first sentence is about how to address the customer, not about the tool.

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, open-world, idempotent payment-preparation tool the description does cover the state machine (UNISSUED/ISSUED/LEGACY_UNKNOWN), token and proof handling, retry-after-failure policy, and link durability, and an output schema exists so return fields need no explanation. The main remaining gap is the absence of an explicit permission/prerequisite statement and of guidance on how cart_access is obtained upstream.

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 only 20% (confirmed and proof_reference only), so the description has to compensate, and it does name most inputs in context: confirmed=false then true, cart_access, expected_amount, currency=EUR, idempotency key, confirmation_token, proof_reference, retry_of=attempt_id, payment_method values. However the mapping is scattered across prose rather than tied to each parameter, and cart_id and the token/key formats are left to the schema. Partial compensation warrants a 3.

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

Purpose3/5

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

The actual purpose surfaces only mid-way ("Préparer le moyen de paiement du même caddie MCP : payment_method=card, transfer ou cheque" and "préparer le paiement autonome Scellius"), preceded by several sentences of customer-dialogue policy that describe how the assistant should talk, not what the tool does. Once found, the verb+resource is specific, and siblings such as payment_page and get_payment are explicitly positioned. The heavy front-loading of non-purpose content keeps this from a 4.

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 concrete when-to-use rules: propose card/transfer/cheque or fall back to payment_page if no method was chosen, run confirmed=false then confirmed=true, and after REFUSED/ABANDONED/EXPIRED re-quote with a new key and retry_of=attempt_id. Alternatives (payment_page, get_payment) are named with their respective roles. What is missing is any clean when-not-to-call statement or prerequisite ordering relative to quote_cart/create_order.

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

quote_cartA
Read-onlyIdempotent
Inspect

Contrat JSON : destination et lines sont obligatoires à la racine. country_code et postal_code sont des chaînes DANS destination, jamais à la racine. Sans delivery (domicile), destination contient uniquement country_code et postal_code : ne pas envoyer city ni address_line1. France : postal_code complet requis. lines est un tableau d’objets {product_id: entier, quantity: entier}, sans autre champ. Exemple minimal domicile France : {"destination":{"country_code":"FR","postal_code":"54000"},"lines":[{"product_id":1843,"quantity":1}]}. Avec delivery GLS, conserver le contrat existant : destination contient aussi city et address_line1, delivery={mode:gls_pickup,relay_id} obtenu par search_relay_points. quote_cart n’accepte ni confirmation ni coordonnées de commande. Préparer un devis complet du panier depuis les offres et le port Nitech actuels. Pays et code postal selon la zone, product_id et quantity seulement. 30 lignes distinctes, 100 unités par ligne, 300 au total, 8 Kio. Doublons refusés. Lecture seule sans panier, réservation, commande ni paiement. Toute ligne invalide bloque les totaux. Offres et port à relire lors de la commande ; checkout des boutiques autoritaire. Livraison GLS optionnelle : delivery={mode:gls_pickup,relay_id}, identifiant obtenu par search_relay_points ; destination de recherche complète requise pour les devis. Aucun champ libre de relais. Le récapitulatif confirmed=false porte le mode, le relais vérifié, les frais et le total. Conserver identité/email/téléphone du destinataire, et facturation indépendante. Toute modification exige un nouvel aperçu et un nouvel accord/token ; jamais de remplacement silencieux du relais. Lire category et fields (path, reason, expected_correction) dans les erreurs. Corriger la saisie si demandé ; destination_not_served appelle une autre destination ou Nitech ; temporarily_unavailable appelle la même demande sans accuser l’adresse. Après correction : nouveau devis, puis coordonnées et montant à faire confirmer avant création. Aucun contrôle postal réel.

NameRequiredDescriptionDefault
linesYesTableau obligatoire à la racine ; chaque objet contient product_id et quantity, tous deux entiers JSON.
deliveryNo
destinationYesObjet obligatoire à la racine. Domicile sans delivery : country_code et postal_code seulement ; pas de city/address_line1. Avec delivery GLS : city et address_line1 aussi requis selon allOf.

Output Schema

NameRequiredDescription
linesNo
scopeYes
errorsNo
statusYes
currencyNo
roundingNo
shippingNo
warningsNo
expires_atYes
tax_breakdownNo
grand_total_htNo
schema_versionYes
grand_total_ttcNo
products_amount_htNo
shipping_amount_htNo
products_amount_ttcNo
shipping_amount_ttcNo
shipping_tax_amountNo
products_rounding_adjustment_ttcNo

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), yet the description adds substantial behavioral context: hard limits (30 lines, 100 units/line, 300 total, 8 KiB), duplicate rejection, 'any invalid line blocks totals', the fact that the quote is non-authoritative and prices/shipping must be re-read at order time, and that there is no real postal validation. It also previews the confirmed=false recap contents (mode, verified relay, fees, total) and the error shape (category, path, reason, expected_correction).

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

Conciseness3/5

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

The content is valuable but poorly front-loaded — the tool's actual purpose appears mid-text after schema mechanics — and several rules are stated twice (the GLS delivery={mode:gls_pickup,relay_id} from search_relay_points requirement, and the 'destination/lines at root' contract). Trimming the repetition and leading with what the tool does would make it materially easier to scan.

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

Completeness5/5

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

Given an output schema exists, the description need not explain return values, and it correctly focuses on the contract, limits, delivery branch, error taxonomy, and remediation paths (destination_not_served → different destination or Nitech; temporarily_unavailable → retry same request). For a nested-object, conditionally-required quote tool, nothing an agent needs in order to call it correctly appears to be missing.

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?

With 67% schema coverage the description still adds real meaning: country_code/postal_code live inside destination and never at the root, city/address_line1 must be omitted for home delivery but are required with GLS delivery, lines objects accept only product_id and quantity as integers, and relay_id must come from search_relay_points. It also supplies a minimal worked example, which helps more than prose. Some of this restates the schema's own property descriptions, limiting it below a 5.

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?

The purpose is stated — 'Préparer un devis complet du panier depuis les offres et le port Nitech actuels' — but it is buried in the middle after a long JSON-contract preamble, so an agent must read several sentences to learn what the tool does. It does distinguish itself from order flows ('quote_cart n'accepte ni confirmation ni coordonnées de commande', 'checkout des boutiques autoritaire') but never names the closest sibling, quote_cart_shipping, to differentiate.

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?

Gives clear operating conditions and exclusions: read-only, no cart/order/payment, no confirmation or order coordinates accepted, GLS delivery only if a relay_id was obtained via search_relay_points, and a new quote plus confirmation required after any correction. The main gap is that it never says when to prefer quote_cart versus quote_cart_shipping, leaving a genuine routing ambiguity between two sibling tools.

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

quote_cart_shippingA
Read-onlyIdempotent
Inspect

Calculer le port actuel depuis les produits, profils et zones Nitech relus à chaque appel. Entrées : pays, code postal requis pour la France, product_id et quantity. Limites : 30 lignes, 100 unités par produit, 300 au total. Renvoie HT, TVA, TTC, zone, groupes tarifaires et politique observée. Ce résultat n’est pas une réservation ; aucune commande n’est créée ; montant à relire lors d’une future commande. Le calcul commercial des boutiques reste autoritaire. Livraison GLS optionnelle : delivery={mode:gls_pickup,relay_id}, identifiant obtenu par search_relay_points ; destination de recherche complète requise pour les devis. Aucun champ libre de relais. Le récapitulatif confirmed=false porte le mode, le relais vérifié, les frais et le total. Conserver identité/email/téléphone du destinataire, et facturation indépendante. Toute modification exige un nouvel aperçu et un nouvel accord/token ; jamais de remplacement silencieux du relais. Lire category et fields (path, reason, expected_correction) dans les erreurs. Corriger la saisie si demandé ; destination_not_served appelle une autre destination ou Nitech ; temporarily_unavailable appelle la même demande sans accuser l’adresse. Après correction : nouveau devis, puis coordonnées et montant à faire confirmer avant création. Aucun contrôle postal réel.

NameRequiredDescriptionDefault
linesYes
deliveryNo
destinationYes

Output Schema

NameRequiredDescription
zoneNo
errorNo
linesNo
noticeNo
statusNo
parcelsNo
currencyNo
deliveryNo
tax_rateNo
warningsNo
read_onlyNo
tax_basisNo
destinationNo
observed_atNo
parcel_basisNo
parcel_countNo
order_createdNo
rules_appliedNo
effective_fromNo
policy_versionNo
schema_versionNo
shipping_amount_htNo
shipping_amount_ttcNo
commercial_authorityNo
effective_from_basisNo
must_recheck_at_orderNo
result_is_reservationNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/closed-world, and the description adds substantial context beyond them: recomputation on every call, no reservation or order created, the shop's commercial calculation remains authoritative, recipient identity/email/phone must be preserved, any change requires a new preview and fresh consent/token, and relay replacement is never silent.

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?

Purpose is front-loaded and nearly every sentence adds operational value (limits, return fields, relay flow, error taxonomy). It is dense and semi-colon heavy with no grouping, which makes it harder to scan than it needs to be, but there is little outright filler.

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

Completeness5/5

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

For a read-only pricing tool with nested inputs and an output schema, the description covers what's needed: inputs and limits, return fields (HT, TVA, TTC, zone, tarifs, confirmed=false), relay workflow, error structure (category/fields/path/reason/expected_correction), and the required confirmation sequence before order creation.

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?

With 0% schema description coverage the description carries the burden and does well: it names pays, postal code required for France, product_id/quantity, the 30-line / 100-per-product / 300-total caps, and the delivery={mode:gls_pickup, relay_id} shape including where relay_id comes from. It does not individually clarify the conditional address_line1/city requirement except via the general 'destination de recherche complète' phrase.

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 and resource ('Calculer le port actuel') and clarifies the data source (produits, profils, zones Nitech relus à chaque appel). It also explicitly distinguishes itself from order creation ('aucune commande n’est créée'), though it never contrasts with the closely related sibling quote_cart.

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

Usage Guidelines5/5

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

Gives explicit when-to-use context (GLS delivery requires relay_id from search_relay_points, full destination required for quotes) and prescriptive branching for error cases: destination_not_served → another destination or Nitech, temporarily_unavailable → retry the same request without blaming the address. Post-correction flow is also specified.

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

request_withdrawalA
DestructiveIdempotent
Inspect

Au client, parler de sa commande et de la prochaine action utile. Garder les noms d’outils, états bruts, identifiants internes, clés, jetons et étapes techniques hors du dialogue courant. Les autorisations affichées par l’application de l’assistant relèvent de cette application et ne remplacent pas l’accord demandé par Nitech. Présenter la commande et les articles et quantités concernés, ou la commande entière, puis poser une seule question « Confirmez-vous l’envoi de cette déclaration de rétractation ? » Après réception confirmée, dire « Votre déclaration de rétractation a été reçue » et fournir l’accusé. Garder les précautions techniques dans les opérations internes et ne pas annoncer un remboursement ou une annulation non effectués. Déposer une déclaration de rétractation privée avec le même service que le formulaire existant. Fournir cart_id et cart_access (m1 ou p2) : jamais un numéro ou un email seuls. scope désigne la commande entière (Commande entière) ou les articles et quantités concernés ; aucun motif obligatoire. Commencer par confirmed=false : aperçu sans dépôt ni notification. Présenter le scope exact au client et obtenir son accord explicite pour envoyer la déclaration. Rappeler ensuite avec confirmed=true, les mêmes cart_id/cart_access/scope et le confirmation_token retourné. Le jeton est lié à cet aperçu ; toute modification impose un nouvel aperçu et accord. Conserver ensuite les arguments et le même jeton, même après timeout, expiration ou réponse perdue ; la répétition retrouve le même dépôt et la même date, sans doublon. Ne jamais demander un nouveau jeton pour contourner une issue unknown ou un conflit. received renvoie référence, date UTC et accusé conservable en texte et lien privé. queued signifie confié à la file de courriels, pas livré. Les questions d’éligibilité sont examinées par Nitech. Aucun remboursement, annulation de commande, avoir ou mouvement de stock automatique. get_order reste une lecture ; le formulaire privé reste disponible.

NameRequiredDescriptionDefault
scopeYesComme le formulaire privé : « Commande entière » ou désignation des articles et quantités concernés. Aucun motif demandé. Limite métier : 4000 octets UTF-8.
cart_idYes
confirmedYesfalse pour un aperçu sans dépôt ; true uniquement après l’accord explicite du client sur cet aperçu.
cart_accessYes
confirmation_tokenNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: preview versus filing, token binding to the preview, idempotent retry behavior returning the same deposit and date, and status meanings for received and queued. It also clarifies that no automatic refund, cancellation, credit, or stock movement occurs, which is important context for a destructive write tool.

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

Conciseness3/5

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

The content is dense and useful, but the purpose is buried after opening customer-dialogue and privacy instructions rather than being front-loaded. The single long block also mixes invocation mechanics with conversational rules, making it harder to scan than it could be.

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

Completeness5/5

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

For a complex destructive write tool with a 40% schema coverage and an output schema, the description covers the workflow, consent requirement, token lifecycle, retry semantics, status meanings, and absence of automatic commercial side effects. It is complete enough for an agent to call the tool correctly without needing additional undocumented assumptions.

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

Parameters5/5

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

Although schema description coverage is only 40%, the description explains the critical semantics for cart_id and cart_access, including that cart_access must be an m1 or p2 value and never just a number or email. It also explains scope as either the entire order or the affected items and quantities, and explains confirmed and confirmation_token as the preview-to-filing handshake.

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 explicitly states that the tool files a private withdrawal declaration using the same service as the existing form. It also distinguishes the tool from get_order by noting that get_order remains a read operation, so an agent can identify the specific write action.

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

Usage Guidelines5/5

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

It gives a precise two-step workflow: start with confirmed=false to preview without filing or notification, present the exact scope, obtain explicit client consent, then call again with confirmed=true and the same cart_id/cart_access/scope plus the returned confirmation_token. It also covers what to do after timeout, expiration, or lost response, and says not to request a new token to bypass unknown or conflict outcomes.

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

search_productsA
Read-onlyIdempotent
Inspect

Rechercher dans le catalogue actif par PID, référence observée, ancienne référence, désignation, marque ou appareil lié. La recherche textuelle porte sur une sous-chaîne continue dans chaque champ : fournir une référence connue ou un fragment court, pas toute la demande client. Pour une pièce décrite, utiliser auto ou designation avec des termes distinctifs contigus, par exemple Deville 9424 ; vérifier ensuite dimensions et compatibilité dans get_product. Un numéro d’appareil ne prouve pas une référence fabricant : utiliser designation/model plutôt que manufacturer_reference sans preuve. Après no_match sans continuation, essayer au plus deux fragments plus courts pertinents en designation ou auto avant de demander une précision. Ne pas conclure à une absence du catalogue à partir d’une seule formulation. Si next_after_pid est non nul, des candidats restent à parcourir. Conserver les références, dates et incertitudes ; ouvrir les candidats avec get_product, sans inventer de PID.

NameRequiredDescriptionDefault
fieldNo
limitNo
queryYes
after_pidNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description still adds real behavioral substance by explaining that matching is a continuous substring per field, that no_match does not mean absence, and that non-null next_after_pid means more candidates remain. Minor friction: it refers to 'next_after_pid' while the schema parameter is named after_pid, and it never mentions the limit cap, which weakens an otherwise strong disclosure.

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?

Purpose and matching semantics are front-loaded, and every sentence carries operational content (field choice, fragment strategy, retry budget, pagination). It is dense and slightly sprawling with several clauses per sentence, but there is little true redundancy.

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?

Return-value shape is covered by the output schema, and the description fills the remaining gaps that matter for a search tool: match semantics, failure interpretation, retry limits, and pagination continuation. The omissions are the limit parameter's behavior and the after_pid naming mismatch, which are minor relative to the overall coverage.

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 0%, so the description carries the full burden, and it only partly does: it maps field choices to natural-language concepts (observed reference, former reference, designation, brand, linked device) but never explicitly ties those to the enum literals nitech_reference, manufacturer_reference or model. limit and after_pid are not explained at all, and after_pid is referenced under a different name.

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?

Opens with a specific verb and resource (search the active catalogue) and enumerates the exact searchable key types: PID, observed reference, former reference, designation, brand, linked device. It also distinguishes itself from get_product, which is named as the follow-up step for opening candidates, so an agent can route correctly without inspecting sibling schemas.

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

Usage Guidelines5/5

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

Gives explicit when-to-use and when-not-to-use rules: pass a known reference or short contiguous fragment rather than a full customer request; use auto/designation with adjacent distinctive terms; avoid manufacturer_reference without proof that a device number is a manufacturer reference. It also prescribes a bounded recovery policy after no_match (at most two shorter fragments) and forbids concluding the part is absent from a single phrasing.

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

search_relay_pointsA
Read-onlyIdempotent
Inspect

Pour search_relay_points, destination désigne l’adresse du client autour de laquelle rechercher les points relais. Réutiliser l’adresse déjà fournie lorsqu’elle est complète ; ne demander que les informations manquantes. Pour le numéro et la rue, demander par exemple : « Pour trouver un point relais près de chez vous, pouvez-vous préciser votre numéro et votre rue ? » Ne pas appeler cette adresse « adresse de départ » ou « adresse d’expédition » : ce n’est pas le lieu d’expédition Nitech. Cette adresse de recherche ne vaut ni choix d’un relais ni modification de l’adresse de facturation. Rechercher les points relais GLS autour de destination (country_code, postal_code, city, address_line1) pour les lignes du panier, via l'API GLS existante. Lecture seule. Identifiant, nom, adresse, horaires lisibles, pauses et fermetures GLS lorsqu'ils sont fournis. Aucune distance ou capacité inventée, aucune réservation. Les heures affichées suivent le format REST GLS (millisecondes + 1h). Présenter les pauses et fermetures fournies ; un jour absent ne signifie pas fermé, et aucun horaire ne prouve une ouverture actuelle. Reprendre un relay_id retourné dans delivery={mode:gls_pickup,relay_id} de quote_cart_shipping, quote_cart et create_order. Le serveur revérifie le choix. Garder shipping_address comme destinataire réel et conserver billing_address séparée. Présenter mode, relais vérifié, frais et total, puis obtenir un nouvel accord si relais, adresse ou montant change. Lire category/fields/next_action dans les erreurs. Panne GLS : réessayer la même demande, sans modifier les adresses.

NameRequiredDescriptionDefault
linesYes
destinationYesPour search_relay_points, destination désigne l’adresse du client autour de laquelle rechercher les points relais. Réutiliser l’adresse déjà fournie lorsqu’elle est complète ; ne demander que les informations manquantes. Pour le numéro et la rue, demander par exemple : « Pour trouver un point relais près de chez vous, pouvez-vous préciser votre numéro et votre rue ? » Ne pas appeler cette adresse « adresse de départ » ou « adresse d’expédition » : ce n’est pas le lieu d’expédition Nitech. Cette adresse de recherche ne vaut ni choix d’un relais ni modification de l’adresse de facturation.

Output Schema

NameRequiredDescription
errorNo
noticeNo
pointsNo
statusNo
carrierNo
observed_atNo
search_basisNo
order_createdNo
schema_versionNo
payment_createdNo

TDQS

A3.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses real behavioral traits: hours arrive in REST GLS format (ms + 1h), pauses and closures are presented as supplied, an absent day does not mean closed, no displayed hour proves current opening, no distance or capacity is invented, and no reservation occurs. It also documents that errors carry category/fields/next_action and that a GLS failure should trigger an identical retry without touching addresses.

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

Conciseness2/5

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

The definition opens with six sentences of address-naming prohibitions and a scripted customer phrase before stating the actual search, and it reproduces the schema's destination text verbatim. Workflow, consent and error-retry instructions are genuinely useful, but they are padded and the lede is buried rather than front-loaded.

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 an output schema present, return values need not be explained, yet the description still characterizes them (identifier, name, address, readable hours, pauses/closures) and sets expectations that fields may be absent. The one real hole is `lines`, entirely undefined in both prose and schema descriptions; otherwise the tool's role in the quote→order flow is covered.

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

Parameters2/5

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

The long destination paragraph is a near-verbatim duplicate of the schema's own destination description, so it adds no meaning beyond the structured field. The second required parameter, `lines`, is never mentioned in the description at all — an agent gets no hint that these are cart lines used to constrain the relay search, even though schema coverage on it is zero.

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?

The description names a specific verb and resource — 'Rechercher les points relais GLS autour de destination … via l'API GLS existante' — so an agent knows it returns candidate pickup points, not a selection. It is clearly distinct from quote_cart_shipping, whose relay_id it consumes. However the core purpose statement is buried after several sentences about what the address is *not*, weakening front-loading of the action.

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 explicitly ties this tool into the ordering workflow: take a relay_id from delivery={mode:gls_pickup,relay_id} returned by quote_cart_shipping/quote_cart/create_order, note that the server re-verifies the choice, keep shipping_address vs billing_address separate, and re-obtain consent if relay/address/amount changes. It also gives a retry rule for GLS outages. What it never states is the inverse — when *not* to call it (e.g. when no cart lines exist yet) — so it stops short of explicit exclusion criteria.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedget_order1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "cart_id": {
        -        "maximum": 2147483647,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "observed_at": {
        -        "format": "date-time",
        -        "type": "string"
        -      },
        -      "order": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "state": {
        -            "enum": [
        -              "cart",
        -              "accepted",
        -              "cancelled",
        -              "awaiting_payment",
        -              "unavailable"
        -            ],
        -            "type": "string"
        -          },
        -          "state_code": {
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "state_code",
        -          "state"
        -        ],
        -        "type": "object"
        -      },
        -      "payment": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "accepted_amount": {
        -            "pattern": "^[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          },
        -          "bank_observed_at": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "bank_status": {
        -            "enum": [
        -              "NOT_PREPARED",
        -              "PREPARED",
        -              "INITIAL",
        -              "WAITING_FOR_PAYMENT",
        -              "WAITING_AUTHORISATION",
        -              "WAITING_AUTHORISATION_TO_VALIDATE",
        -              "UNDER_VERIFICATION",
        -              "AUTHORISED_TO_VALIDATE",
        -              "AUTHORISED",
        -              "CAPTURED",
        -              "CAPTURE_FAILED",
        -              "REFUSED",
        -              "ABANDONED",
        -              "CANCELLED",
        -              "EXPIRED",
        -              "SUSPENDED"
        -            ]
        -          },
        -          "business_effects": {
        -            "enum": [
        -              "complete",
        -              "pending",
        -              "not_started"
        -            ]
        -          },
        -          "captured": {
        -            "type": "boolean"
        -          },
        -          "currency": {
        -            "const": "EUR"
        -          },
        -          "notice": {
        -            "type": "string"
        -          },
        -          "payment_method": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "enum": [
        -              null,
        -              "card",
        -              "transfer",
        -              "cheque"
        -            ]
        -          },
        -          "payment_status": {
        -            "enum": [
        -              "not_selected",
        -              "pending",
        -              "awaiting_receipt",
        -              "accepted",
        -              "captured",
        -              "reconciliation_required"
        -            ],
        -            "type": "string"
        -          },
        -          "settlement_received": {
        -            "const": false
        -          },
        -          "status": {
        -            "enum": [
        -              "ok",
        -              "confirmation_required",
        -              "reconciliation_required"
        -            ]
        -          }
        -        },
        -        "required": [
        -          "status",
        -          "bank_status",
        -          "bank_observed_at",
        -          "payment_status",
        -          "payment_method",
        -          "accepted_amount",
        -          "currency",
        -          "captured",
        -          "settlement_received",
        -          "business_effects",
        -          "notice"
        -        ],
        -        "type": "object"
        -      },
        -      "preparation": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "delivery_documents": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "date": {
        -                  "anyOf": [
        -                    {
        -                      "maxLength": 10,
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ]
        -                },
        -                "reference": {
        -                  "anyOf": [
        -                    {
        -                      "maxLength": 20,
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ]
        -                }
        -              },
        -              "required": [
        -                "reference",
        -                "date"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 99,
        -            "type": "array"
        -          },
        -          "documented_quantity": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "notice": {
        -            "maxLength": 500,
        -            "type": "string"
        -          },
        -          "ordered_quantity": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "status": {
        -            "enum": [
        -              "unavailable",
        -              "partially_documented",
        -              "documented"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "status",
        -          "ordered_quantity",
        -          "documented_quantity",
        -          "delivery_documents",
        -          "notice"
        -        ],
        -        "type": "object"
        -      },
        -      "reference": {
        -        "maxLength": 100,
        -        "type": "string"
        -      },
        -      "schema_version": {
        -        "const": "1.0"
        -      },
        -      "shipment": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "carrier": {
        -            "anyOf": [
        -              {
        -                "const": "GLS"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "delivered_at": {
        -            "type": "null"
        -          },
        -          "departure_record": {
        -            "anyOf": [
        -              {
        -                "maxLength": 500,
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "notice": {
        -            "maxLength": 500,
        -            "type": "string"
        -          },
        -          "status": {
        -            "enum": [
        -              "unavailable",
        -              "departure_recorded"
        -            ],
        -            "type": "string"
        -          },
        -          "tracking_number": {
        -            "type": "null"
        -          },
        -          "tracking_url": {
        -            "type": "null"
        -          }
        -        },
        -        "required": [
        -          "status",
        -          "departure_record",
        -          "carrier",
        -          "tracking_number",
        -          "tracking_url",
        -          "delivered_at",
        -          "notice"
        -        ],
        -        "type": "object"
        -      },
        -      "sources": {
        -        "items": {
        -          "maxLength": 100,
        -          "type": "string"
        -        },
        -        "maxItems": 5,
        -        "minItems": 5,
        -        "type": "array"
        -      },
        -      "status": {
        -        "const": "ok"
        -      },
        -      "unavailable": {
        -        "items": {
        -          "maxLength": 100,
        -          "type": "string"
        -        },
        -        "maxItems": 7,
        -        "type": "array",
        -        "uniqueItems": true
        -      }
        -    },
        -    "required": [
        -      "schema_version",
        -      "status",
        -      "observed_at",
        -      "cart_id",
        -      "reference",
        -      "order",
        -      "payment",
        -      "preparation",
        -      "shipment",
        -      "unavailable",
        -      "sources"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "enum": [
        -              "BACKEND_ACCESS_DENIED",
        -              "INVALID_ARGUMENTS",
        -              "CART_ACCESS_DENIED",
        -              "ORDER_SOURCE_UNAVAILABLE",
        -              "CANONICAL_INVALID",
        -              "CANONICAL_UNAVAILABLE"
        -            ],
        -            "type": "string"
        -          },
        -          "message": {
        -            "maxLength": 500,
        -            "type": "string"
        -          },
        -          "retryable": {
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message",
        -          "retryable"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "cart_id": {
        +        "maximum": 2147483647,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "observed_at": {
        +        "format": "date-time",
        +        "type": "string"
        +      },
        +      "order": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "state": {
        +            "enum": [
        +              "cart",
        +              "accepted",
        +              "cancelled",
        +              "awaiting_payment",
        +              "unavailable"
        +            ],
        +            "type": "string"
        +          },
        +          "state_code": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "state_code",
        +          "state"
        +        ],
        +        "type": "object"
        +      },
        +      "payment": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "accepted_amount": {
        +            "pattern": "^[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          },
        +          "bank_observed_at": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "bank_status": {
        +            "enum": [
        +              "NOT_PREPARED",
        +              "PREPARED",
        +              "INITIAL",
        +              "WAITING_FOR_PAYMENT",
        +              "WAITING_AUTHORISATION",
        +              "WAITING_AUTHORISATION_TO_VALIDATE",
        +              "UNDER_VERIFICATION",
        +              "AUTHORISED_TO_VALIDATE",
        +              "AUTHORISED",
        +              "CAPTURED",
        +              "CAPTURE_FAILED",
        +              "REFUSED",
        +              "ABANDONED",
        +              "CANCELLED",
        +              "EXPIRED",
        +              "SUSPENDED"
        +            ]
        +          },
        +          "business_effects": {
        +            "enum": [
        +              "complete",
        +              "pending",
        +              "not_started"
        +            ]
        +          },
        +          "captured": {
        +            "type": "boolean"
        +          },
        +          "currency": {
        +            "const": "EUR"
        +          },
        +          "notice": {
        +            "type": "string"
        +          },
        +          "payment_method": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "enum": [
        +              null,
        +              "card",
        +              "transfer",
        +              "cheque"
        +            ]
        +          },
        +          "payment_status": {
        +            "enum": [
        +              "not_selected",
        +              "pending",
        +              "awaiting_receipt",
        +              "accepted",
        +              "captured",
        +              "reconciliation_required"
        +            ],
        +            "type": "string"
        +          },
        +          "settlement_received": {
        +            "const": false
        +          },
        +          "status": {
        +            "enum": [
        +              "ok",
        +              "confirmation_required",
        +              "reconciliation_required"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "status",
        +          "bank_status",
        +          "bank_observed_at",
        +          "payment_status",
        +          "payment_method",
        +          "accepted_amount",
        +          "currency",
        +          "captured",
        +          "settlement_received",
        +          "business_effects",
        +          "notice"
        +        ],
        +        "type": "object"
        +      },
        +      "preparation": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "delivery_documents": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "date": {
        +                  "anyOf": [
        +                    {
        +                      "maxLength": 10,
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "reference": {
        +                  "anyOf": [
        +                    {
        +                      "maxLength": 20,
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                }
        +              },
        +              "required": [
        +                "reference",
        +                "date"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 99,
        +            "type": "array"
        +          },
        +          "documented_quantity": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "notice": {
        +            "maxLength": 500,
        +            "type": "string"
        +          },
        +          "ordered_quantity": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "status": {
        +            "enum": [
        +              "unavailable",
        +              "partially_documented",
        +              "documented"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "status",
        +          "ordered_quantity",
        +          "documented_quantity",
        +          "delivery_documents",
        +          "notice"
        +        ],
        +        "type": "object"
        +      },
        +      "reference": {
        +        "maxLength": 100,
        +        "type": "string"
        +      },
        +      "schema_version": {
        +        "const": "1.0"
        +      },
        +      "shipment": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "carrier": {
        +            "anyOf": [
        +              {
        +                "const": "GLS"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "delivered_at": {
        +            "type": "null"
        +          },
        +          "departure_record": {
        +            "anyOf": [
        +              {
        +                "maxLength": 500,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "notice": {
        +            "maxLength": 500,
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "unavailable",
        +              "departure_recorded"
        +            ],
        +            "type": "string"
        +          },
        +          "tracking_number": {
        +            "type": "null"
        +          },
        +          "tracking_url": {
        +            "type": "null"
        +          }
        +        },
        +        "required": [
        +          "status",
        +          "departure_record",
        +          "carrier",
        +          "tracking_number",
        +          "tracking_url",
        +          "delivered_at",
        +          "notice"
        +        ],
        +        "type": "object"
        +      },
        +      "sources": {
        +        "items": {
        +          "maxLength": 100,
        +          "type": "string"
        +        },
        +        "maxItems": 5,
        +        "minItems": 5,
        +        "type": "array"
        +      },
        +      "status": {
        +        "const": "ok"
        +      },
        +      "unavailable": {
        +        "items": {
        +          "maxLength": 100,
        +          "type": "string"
        +        },
        +        "maxItems": 7,
        +        "type": "array",
        +        "uniqueItems": true
        +      },
        +      "withdrawals": {
        +        "additionalProperties": false,
        +        "description": "Déclarations du journal privé, par réception décroissante. available et liste vide indiquent aucune déclaration trouvée. unavailable indique une lecture indisponible. La mention à traiter est une indication de suivi. Les états de commande, paiement et expédition conservent leurs propres sources.",
        +        "properties": {
        +          "declarations": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "label": {
        +                  "const": "Rétractation reçue — à traiter"
        +                },
        +                "receipt_text": {
        +                  "type": "string"
        +                },
        +                "received_at": {
        +                  "format": "date-time",
        +                  "type": "string"
        +                },
        +                "reference": {
        +                  "pattern": "^RET-[a-f0-9]{32}$",
        +                  "type": "string"
        +                },
        +                "scope": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "reference",
        +                "received_at",
        +                "scope",
        +                "label",
        +                "receipt_text"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 10,
        +            "type": "array"
        +          },
        +          "has_more": {
        +            "type": "boolean"
        +          },
        +          "status": {
        +            "enum": [
        +              "available",
        +              "unavailable"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "status",
        +          "declarations",
        +          "has_more"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "schema_version",
        +      "status",
        +      "observed_at",
        +      "cart_id",
        +      "reference",
        +      "order",
        +      "payment",
        +      "preparation",
        +      "shipment",
        +      "unavailable",
        +      "sources"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "enum": [
        +              "BACKEND_ACCESS_DENIED",
        +              "INVALID_ARGUMENTS",
        +              "CART_ACCESS_DENIED",
        +              "ORDER_SOURCE_UNAVAILABLE",
        +              "CANONICAL_INVALID",
        +              "CANONICAL_UNAVAILABLE"
        +            ],
        +            "type": "string"
        +          },
        +          "message": {
        +            "maxLength": 500,
        +            "type": "string"
        +          },
        +          "retryable": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message",
        +          "retryable"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
  2. 3 tool updates
    • Changedget_payment1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "accepted_amount": {
        -        "pattern": "^[0-9]+\\.[0-9]{2}$",
        -        "type": "string"
        -      },
        -      "action": {
        -        "oneOf": [
        -          {
        -            "type": "null"
        -          },
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "expires_at": {
        -                "format": "date-time",
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "provider": {
        -                "const": "Scellius / La Banque Postale"
        -              },
        -              "type": {
        -                "const": "open_secure_payment"
        -              },
        -              "url": {
        -                "pattern": "^https://mcp\\.nitech\\.fr/payments/(?:start\\?attempt=[a-f0-9]{32}&token=[a-f0-9]{64}|choose\\?cart_id=[1-9][0-9]*&access=p2\\.[0-7]\\.[a-f0-9]{64})$",
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "type",
        -              "url",
        -              "expires_at",
        -              "provider"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "amount": {
        -                "pattern": "^[0-9]+\\.[0-9]{2}$",
        -                "type": "string"
        -              },
        -              "bank": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "bic": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "currency": {
        -                "const": "EUR"
        -              },
        -              "deadline": {
        -                "type": "string"
        -              },
        -              "iban": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "payee": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "payment_method": {
        -                "enum": [
        -                  "cheque",
        -                  "transfer"
        -                ]
        -              },
        -              "postal_address": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "receipt_status": {
        -                "const": "awaiting_receipt"
        -              },
        -              "reference": {
        -                "type": "string"
        -              },
        -              "reference_instruction": {
        -                "type": "string"
        -              },
        -              "rib_url": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "type": {
        -                "const": "payment_instructions"
        -              }
        -            },
        -            "required": [
        -              "postal_address",
        -              "amount",
        -              "payee",
        -              "reference",
        -              "currency",
        -              "bic",
        -              "iban",
        -              "payment_method",
        -              "receipt_status",
        -              "type",
        -              "deadline",
        -              "rib_url",
        -              "reference_instruction",
        -              "bank"
        -            ],
        -            "type": "object"
        -          }
        -        ]
        -      },
        -      "amount_to_pay": {
        -        "pattern": "^[0-9]+\\.[0-9]{2}$",
        -        "type": "string"
        -      },
        -      "attempt_id": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "available_methods": {
        -        "items": {
        -          "enum": [
        -            "card",
        -            "transfer",
        -            "cheque"
        -          ]
        -        },
        -        "type": "array",
        -        "uniqueItems": true
        -      },
        -      "bank_history": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "cancelled": {
        -            "pattern": "^[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          },
        -          "commercial_review_required": {
        -            "type": "boolean"
        -          },
        -          "debit": {
        -            "pattern": "^[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          },
        -          "events": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "disposition": {
        -                  "type": "string"
        -                },
        -                "event_id": {
        -                  "type": "string"
        -                },
        -                "fact": {
        -                  "additionalProperties": {
        -                    "type": "string"
        -                  },
        -                  "type": "object"
        -                },
        -                "received_at": {
        -                  "format": "date-time",
        -                  "type": "string"
        -                },
        -                "source": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "event_id",
        -                "received_at",
        -                "source",
        -                "disposition",
        -                "fact"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "net": {
        -            "pattern": "^-?[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          },
        -          "next_action": {
        -            "type": "string"
        -          },
        -          "operations": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "amount": {
        -                  "pattern": "^[0-9]+\\.[0-9]{2}$",
        -                  "type": "string"
        -                },
        -                "bank_created_at": {
        -                  "pattern": "^[0-9]{14}$",
        -                  "type": "string"
        -                },
        -                "bank_uuid": {
        -                  "pattern": "^[a-f0-9]{32}$",
        -                  "type": "string"
        -                },
        -                "event_id": {
        -                  "pattern": "^[a-f0-9]{64}$",
        -                  "type": "string"
        -                },
        -                "initial_amount": {
        -                  "pattern": "^[0-9]+\\.[0-9]{2}$",
        -                  "type": "string"
        -                },
        -                "operation": {
        -                  "enum": [
        -                    "DEBIT",
        -                    "CREDIT"
        -                  ]
        -                },
        -                "original_attempt": {
        -                  "pattern": "^[a-f0-9]{32}$",
        -                  "type": "string"
        -                },
        -                "status": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "bank_uuid",
        -                "original_attempt",
        -                "operation",
        -                "status",
        -                "amount",
        -                "initial_amount",
        -                "bank_created_at",
        -                "event_id"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pending_events": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "reduced_before_capture": {
        -            "pattern": "^[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          },
        -          "refunded": {
        -            "pattern": "^[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "operations",
        -          "debit",
        -          "refunded",
        -          "net",
        -          "reduced_before_capture",
        -          "cancelled",
        -          "commercial_review_required",
        -          "pending_events",
        -          "next_action",
        -          "events"
        -        ],
        -        "type": "object"
        -      },
        -      "bank_observed_at": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "bank_reference": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "bank_status": {
        -        "enum": [
        -          "NOT_PREPARED",
        -          "PREPARED",
        -          "INITIAL",
        -          "WAITING_FOR_PAYMENT",
        -          "WAITING_AUTHORISATION",
        -          "WAITING_AUTHORISATION_TO_VALIDATE",
        -          "UNDER_VERIFICATION",
        -          "AUTHORISED_TO_VALIDATE",
        -          "AUTHORISED",
        -          "CAPTURED",
        -          "CAPTURE_FAILED",
        -          "REFUSED",
        -          "ABANDONED",
        -          "CANCELLED",
        -          "EXPIRED",
        -          "SUSPENDED"
        -        ]
        -      },
        -      "business_effects": {
        -        "enum": [
        -          "complete",
        -          "pending",
        -          "not_started"
        -        ]
        -      },
        -      "captured": {
        -        "type": "boolean"
        -      },
        -      "cart_id": {
        -        "maximum": 2147483647,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "cart_state": {
        -        "type": "integer"
        -      },
        -      "confirmation_token": {
        -        "pattern": "^[0-9]{10}\\.[a-f0-9]{64}$",
        -        "type": "string"
        -      },
        -      "currency": {
        -        "const": "EUR"
        -      },
        -      "delivery_state": {
        -        "enum": [
        -          null,
        -          "LEGACY_UNKNOWN",
        -          "UNISSUED",
        -          "ISSUED",
        -          "RELEASED_UNISSUED"
        -        ]
        -      },
        -      "handoff_available": {
        -        "type": "boolean"
        -      },
        -      "method_change_allowed": {
        -        "type": "boolean"
        -      },
        -      "notice": {
        -        "type": "string"
        -      },
        -      "origin": {
        -        "const": "MCP"
        -      },
        -      "payment_method": {
        -        "enum": [
        -          null,
        -          "card",
        -          "transfer",
        -          "cheque"
        -        ],
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "payment_page": {
        -        "pattern": "^https://mcp\\.nitech\\.fr/payments/choose\\?cart_id=[1-9][0-9]*&access=",
        -        "type": "string"
        -      },
        -      "payment_status": {
        -        "enum": [
        -          "not_selected",
        -          "pending",
        -          "awaiting_receipt",
        -          "accepted",
        -          "captured",
        -          "reconciliation_required"
        -        ],
        -        "type": "string"
        -      },
        -      "reference": {
        -        "pattern": "^MCP-[1-9][0-9]*$",
        -        "type": "string"
        -      },
        -      "requested_method": {
        -        "enum": [
        -          "card",
        -          "transfer",
        -          "cheque"
        -        ],
        -        "type": "string"
        -      },
        -      "schema_version": {
        -        "const": "2.0"
        -      },
        -      "settlement_received": {
        -        "const": false
        -      },
        -      "status": {
        -        "enum": [
        -          "ok",
        -          "confirmation_required",
        -          "reconciliation_required"
        -        ]
        -      }
        -    },
        -    "required": [
        -      "notice",
        -      "accepted_amount",
        -      "bank_observed_at",
        -      "currency",
        -      "settlement_received",
        -      "schema_version",
        -      "cart_id",
        -      "bank_reference",
        -      "bank_status",
        -      "origin",
        -      "captured",
        -      "status",
        -      "reference",
        -      "cart_state",
        -      "action",
        -      "business_effects",
        -      "amount_to_pay",
        -      "attempt_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "message": {
        -            "type": "string"
        -          },
        -          "retryable": {
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message",
        -          "retryable"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "accepted_amount": {
        +        "pattern": "^[0-9]+\\.[0-9]{2}$",
        +        "type": "string"
        +      },
        +      "action": {
        +        "oneOf": [
        +          {
        +            "type": "null"
        +          },
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "expires_at": {
        +                "format": "date-time",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "provider": {
        +                "const": "Scellius / La Banque Postale"
        +              },
        +              "type": {
        +                "const": "open_secure_payment"
        +              },
        +              "url": {
        +                "pattern": "^https://mcp\\.nitech\\.fr/payments/(?:start\\?attempt=[a-f0-9]{32}&token=[a-f0-9]{64}|(?:choose|card)\\?cart_id=[1-9][0-9]*&access=p2\\.[0-7]\\.[a-f0-9]{64})$",
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "type",
        +              "url",
        +              "expires_at",
        +              "provider"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "amount": {
        +                "pattern": "^[0-9]+\\.[0-9]{2}$",
        +                "type": "string"
        +              },
        +              "bank": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "bic": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "currency": {
        +                "const": "EUR"
        +              },
        +              "deadline": {
        +                "type": "string"
        +              },
        +              "iban": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "payee": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "payment_method": {
        +                "enum": [
        +                  "cheque",
        +                  "transfer"
        +                ]
        +              },
        +              "postal_address": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "receipt_status": {
        +                "const": "awaiting_receipt"
        +              },
        +              "reference": {
        +                "type": "string"
        +              },
        +              "reference_instruction": {
        +                "type": "string"
        +              },
        +              "rib_url": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "type": {
        +                "const": "payment_instructions"
        +              }
        +            },
        +            "required": [
        +              "postal_address",
        +              "amount",
        +              "payee",
        +              "reference",
        +              "currency",
        +              "bic",
        +              "iban",
        +              "payment_method",
        +              "receipt_status",
        +              "type",
        +              "deadline",
        +              "rib_url",
        +              "reference_instruction",
        +              "bank"
        +            ],
        +            "type": "object"
        +          }
        +        ]
        +      },
        +      "amount_to_pay": {
        +        "pattern": "^[0-9]+\\.[0-9]{2}$",
        +        "type": "string"
        +      },
        +      "attempt_id": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "available_methods": {
        +        "items": {
        +          "enum": [
        +            "card",
        +            "transfer",
        +            "cheque"
        +          ]
        +        },
        +        "type": "array",
        +        "uniqueItems": true
        +      },
        +      "bank_history": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "cancelled": {
        +            "pattern": "^[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          },
        +          "commercial_review_required": {
        +            "type": "boolean"
        +          },
        +          "debit": {
        +            "pattern": "^[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          },
        +          "events": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "disposition": {
        +                  "type": "string"
        +                },
        +                "event_id": {
        +                  "type": "string"
        +                },
        +                "fact": {
        +                  "additionalProperties": {
        +                    "type": "string"
        +                  },
        +                  "type": "object"
        +                },
        +                "received_at": {
        +                  "format": "date-time",
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "event_id",
        +                "received_at",
        +                "source",
        +                "disposition",
        +                "fact"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "net": {
        +            "pattern": "^-?[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          },
        +          "next_action": {
        +            "type": "string"
        +          },
        +          "operations": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "amount": {
        +                  "pattern": "^[0-9]+\\.[0-9]{2}$",
        +                  "type": "string"
        +                },
        +                "bank_created_at": {
        +                  "pattern": "^[0-9]{14}$",
        +                  "type": "string"
        +                },
        +                "bank_uuid": {
        +                  "pattern": "^[a-f0-9]{32}$",
        +                  "type": "string"
        +                },
        +                "event_id": {
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                },
        +                "initial_amount": {
        +                  "pattern": "^[0-9]+\\.[0-9]{2}$",
        +                  "type": "string"
        +                },
        +                "operation": {
        +                  "enum": [
        +                    "DEBIT",
        +                    "CREDIT"
        +                  ]
        +                },
        +                "original_attempt": {
        +                  "pattern": "^[a-f0-9]{32}$",
        +                  "type": "string"
        +                },
        +                "status": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "bank_uuid",
        +                "original_attempt",
        +                "operation",
        +                "status",
        +                "amount",
        +                "initial_amount",
        +                "bank_created_at",
        +                "event_id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "pending_events": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "reduced_before_capture": {
        +            "pattern": "^[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          },
        +          "refunded": {
        +            "pattern": "^[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "operations",
        +          "debit",
        +          "refunded",
        +          "net",
        +          "reduced_before_capture",
        +          "cancelled",
        +          "commercial_review_required",
        +          "pending_events",
        +          "next_action",
        +          "events"
        +        ],
        +        "type": "object"
        +      },
        +      "bank_observed_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "bank_reference": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "bank_status": {
        +        "enum": [
        +          "NOT_PREPARED",
        +          "PREPARED",
        +          "INITIAL",
        +          "WAITING_FOR_PAYMENT",
        +          "WAITING_AUTHORISATION",
        +          "WAITING_AUTHORISATION_TO_VALIDATE",
        +          "UNDER_VERIFICATION",
        +          "AUTHORISED_TO_VALIDATE",
        +          "AUTHORISED",
        +          "CAPTURED",
        +          "CAPTURE_FAILED",
        +          "REFUSED",
        +          "ABANDONED",
        +          "CANCELLED",
        +          "EXPIRED",
        +          "SUSPENDED"
        +        ]
        +      },
        +      "business_effects": {
        +        "enum": [
        +          "complete",
        +          "pending",
        +          "not_started"
        +        ]
        +      },
        +      "captured": {
        +        "type": "boolean"
        +      },
        +      "cart_id": {
        +        "maximum": 2147483647,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "cart_state": {
        +        "type": "integer"
        +      },
        +      "confirmation_token": {
        +        "pattern": "^[0-9]{10}\\.[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "currency": {
        +        "const": "EUR"
        +      },
        +      "delivery_state": {
        +        "enum": [
        +          null,
        +          "LEGACY_UNKNOWN",
        +          "UNISSUED",
        +          "ISSUED",
        +          "RELEASED_UNISSUED"
        +        ]
        +      },
        +      "handoff_available": {
        +        "type": "boolean"
        +      },
        +      "method_change_allowed": {
        +        "type": "boolean"
        +      },
        +      "notice": {
        +        "type": "string"
        +      },
        +      "origin": {
        +        "const": "MCP"
        +      },
        +      "payment_method": {
        +        "enum": [
        +          null,
        +          "card",
        +          "transfer",
        +          "cheque"
        +        ],
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "payment_page": {
        +        "pattern": "^https://mcp\\.nitech\\.fr/payments/choose\\?cart_id=[1-9][0-9]*&access=",
        +        "type": "string"
        +      },
        +      "payment_status": {
        +        "enum": [
        +          "not_selected",
        +          "pending",
        +          "awaiting_receipt",
        +          "accepted",
        +          "captured",
        +          "reconciliation_required"
        +        ],
        +        "type": "string"
        +      },
        +      "reference": {
        +        "pattern": "^MCP-[1-9][0-9]*$",
        +        "type": "string"
        +      },
        +      "requested_method": {
        +        "enum": [
        +          "card",
        +          "transfer",
        +          "cheque"
        +        ],
        +        "type": "string"
        +      },
        +      "schema_version": {
        +        "const": "2.0"
        +      },
        +      "settlement_received": {
        +        "const": false
        +      },
        +      "status": {
        +        "enum": [
        +          "ok",
        +          "confirmation_required",
        +          "reconciliation_required"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "notice",
        +      "accepted_amount",
        +      "bank_observed_at",
        +      "currency",
        +      "settlement_received",
        +      "schema_version",
        +      "cart_id",
        +      "bank_reference",
        +      "bank_status",
        +      "origin",
        +      "captured",
        +      "status",
        +      "reference",
        +      "cart_state",
        +      "action",
        +      "business_effects",
        +      "amount_to_pay",
        +      "attempt_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "message": {
        +            "type": "string"
        +          },
        +          "retryable": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message",
        +          "retryable"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedprepare_payment4 fields changed
      • addedInput schema / description
        Added value: +"Une demande explicite identifiant commande, montant, devise et moyen vaut accord pour cette préparation. Exécuter aperçu confirmed=false puis confirmed=true sans reposer la même question UNIQUEMENT si le résultat concorde exactement et qu’aucune nouvelle condition ne nécessite un accord. Conserver la même clé UUID, le jeton retourné et proof_reference identifiant le message explicite ; ne jamais inventer une preuve. S’il manque un élément ou si le résultat diffère, demander seulement la précision ou le nouvel accord nécessaire. Résultat accepté ou incertain : ne pas préparer une nouvelle tentative. "
      • addedInput schema / properties / confirmed / description
        Added value: +"false pour obtenir le jeton serveur ; true après concordance exacte avec un accord explicite acquis. Cette étape technique ne nécessite pas de répéter une question déjà répondue."
      • addedInput schema / properties / proof_reference / description
        Added value: +"Référence traçable du message d’accord explicite du client (commande, montant, devise, moyen), y compris si cet accord précède l’aperçu technique. Ne pas inventer cette référence."
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "accepted_amount": {
        -        "pattern": "^[0-9]+\\.[0-9]{2}$",
        -        "type": "string"
        -      },
        -      "action": {
        -        "oneOf": [
        -          {
        -            "type": "null"
        -          },
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "expires_at": {
        -                "format": "date-time",
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "provider": {
        -                "const": "Scellius / La Banque Postale"
        -              },
        -              "type": {
        -                "const": "open_secure_payment"
        -              },
        -              "url": {
        -                "pattern": "^https://mcp\\.nitech\\.fr/payments/(?:start\\?attempt=[a-f0-9]{32}&token=[a-f0-9]{64}|choose\\?cart_id=[1-9][0-9]*&access=p2\\.[0-7]\\.[a-f0-9]{64})$",
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "type",
        -              "url",
        -              "expires_at",
        -              "provider"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "amount": {
        -                "pattern": "^[0-9]+\\.[0-9]{2}$",
        -                "type": "string"
        -              },
        -              "bank": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "bic": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "currency": {
        -                "const": "EUR"
        -              },
        -              "deadline": {
        -                "type": "string"
        -              },
        -              "iban": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "payee": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "payment_method": {
        -                "enum": [
        -                  "cheque",
        -                  "transfer"
        -                ]
        -              },
        -              "postal_address": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "receipt_status": {
        -                "const": "awaiting_receipt"
        -              },
        -              "reference": {
        -                "type": "string"
        -              },
        -              "reference_instruction": {
        -                "type": "string"
        -              },
        -              "rib_url": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "type": {
        -                "const": "payment_instructions"
        -              }
        -            },
        -            "required": [
        -              "postal_address",
        -              "amount",
        -              "payee",
        -              "reference",
        -              "currency",
        -              "bic",
        -              "iban",
        -              "payment_method",
        -              "receipt_status",
        -              "type",
        -              "deadline",
        -              "rib_url",
        -              "reference_instruction",
        -              "bank"
        -            ],
        -            "type": "object"
        -          }
        -        ]
        -      },
        -      "amount_to_pay": {
        -        "pattern": "^[0-9]+\\.[0-9]{2}$",
        -        "type": "string"
        -      },
        -      "attempt_id": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "available_methods": {
        -        "items": {
        -          "enum": [
        -            "card",
        -            "transfer",
        -            "cheque"
        -          ]
        -        },
        -        "type": "array",
        -        "uniqueItems": true
        -      },
        -      "bank_history": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "cancelled": {
        -            "pattern": "^[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          },
        -          "commercial_review_required": {
        -            "type": "boolean"
        -          },
        -          "debit": {
        -            "pattern": "^[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          },
        -          "events": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "disposition": {
        -                  "type": "string"
        -                },
        -                "event_id": {
        -                  "type": "string"
        -                },
        -                "fact": {
        -                  "additionalProperties": {
        -                    "type": "string"
        -                  },
        -                  "type": "object"
        -                },
        -                "received_at": {
        -                  "format": "date-time",
        -                  "type": "string"
        -                },
        -                "source": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "event_id",
        -                "received_at",
        -                "source",
        -                "disposition",
        -                "fact"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "net": {
        -            "pattern": "^-?[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          },
        -          "next_action": {
        -            "type": "string"
        -          },
        -          "operations": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "amount": {
        -                  "pattern": "^[0-9]+\\.[0-9]{2}$",
        -                  "type": "string"
        -                },
        -                "bank_created_at": {
        -                  "pattern": "^[0-9]{14}$",
        -                  "type": "string"
        -                },
        -                "bank_uuid": {
        -                  "pattern": "^[a-f0-9]{32}$",
        -                  "type": "string"
        -                },
        -                "event_id": {
        -                  "pattern": "^[a-f0-9]{64}$",
        -                  "type": "string"
        -                },
        -                "initial_amount": {
        -                  "pattern": "^[0-9]+\\.[0-9]{2}$",
        -                  "type": "string"
        -                },
        -                "operation": {
        -                  "enum": [
        -                    "DEBIT",
        -                    "CREDIT"
        -                  ]
        -                },
        -                "original_attempt": {
        -                  "pattern": "^[a-f0-9]{32}$",
        -                  "type": "string"
        -                },
        -                "status": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "bank_uuid",
        -                "original_attempt",
        -                "operation",
        -                "status",
        -                "amount",
        -                "initial_amount",
        -                "bank_created_at",
        -                "event_id"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "pending_events": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "reduced_before_capture": {
        -            "pattern": "^[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          },
        -          "refunded": {
        -            "pattern": "^[0-9]+\\.[0-9]{2}$",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "operations",
        -          "debit",
        -          "refunded",
        -          "net",
        -          "reduced_before_capture",
        -          "cancelled",
        -          "commercial_review_required",
        -          "pending_events",
        -          "next_action",
        -          "events"
        -        ],
        -        "type": "object"
        -      },
        -      "bank_observed_at": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "bank_reference": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "bank_status": {
        -        "enum": [
        -          "NOT_PREPARED",
        -          "PREPARED",
        -          "INITIAL",
        -          "WAITING_FOR_PAYMENT",
        -          "WAITING_AUTHORISATION",
        -          "WAITING_AUTHORISATION_TO_VALIDATE",
        -          "UNDER_VERIFICATION",
        -          "AUTHORISED_TO_VALIDATE",
        -          "AUTHORISED",
        -          "CAPTURED",
        -          "CAPTURE_FAILED",
        -          "REFUSED",
        -          "ABANDONED",
        -          "CANCELLED",
        -          "EXPIRED",
        -          "SUSPENDED"
        -        ]
        -      },
        -      "business_effects": {
        -        "enum": [
        -          "complete",
        -          "pending",
        -          "not_started"
        -        ]
        -      },
        -      "captured": {
        -        "type": "boolean"
        -      },
        -      "cart_id": {
        -        "maximum": 2147483647,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "cart_state": {
        -        "type": "integer"
        -      },
        -      "confirmation_token": {
        -        "pattern": "^[0-9]{10}\\.[a-f0-9]{64}$",
        -        "type": "string"
        -      },
        -      "currency": {
        -        "const": "EUR"
        -      },
        -      "delivery_state": {
        -        "enum": [
        -          null,
        -          "LEGACY_UNKNOWN",
        -          "UNISSUED",
        -          "ISSUED",
        -          "RELEASED_UNISSUED"
        -        ]
        -      },
        -      "handoff_available": {
        -        "type": "boolean"
        -      },
        -      "method_change_allowed": {
        -        "type": "boolean"
        -      },
        -      "notice": {
        -        "type": "string"
        -      },
        -      "origin": {
        -        "const": "MCP"
        -      },
        -      "payment_method": {
        -        "enum": [
        -          null,
        -          "card",
        -          "transfer",
        -          "cheque"
        -        ],
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "payment_page": {
        -        "pattern": "^https://mcp\\.nitech\\.fr/payments/choose\\?cart_id=[1-9][0-9]*&access=",
        -        "type": "string"
        -      },
        -      "payment_status": {
        -        "enum": [
        -          "not_selected",
        -          "pending",
        -          "awaiting_receipt",
        -          "accepted",
        -          "captured",
        -          "reconciliation_required"
        -        ],
        -        "type": "string"
        -      },
        -      "reference": {
        -        "pattern": "^MCP-[1-9][0-9]*$",
        -        "type": "string"
        -      },
        -      "requested_method": {
        -        "enum": [
        -          "card",
        -          "transfer",
        -          "cheque"
        -        ],
        -        "type": "string"
        -      },
        -      "schema_version": {
        -        "const": "2.0"
        -      },
        -      "settlement_received": {
        -        "const": false
        -      },
        -      "status": {
        -        "enum": [
        -          "ok",
        -          "confirmation_required",
        -          "reconciliation_required"
        -        ]
        -      }
        -    },
        -    "required": [
        -      "notice",
        -      "accepted_amount",
        -      "bank_observed_at",
        -      "currency",
        -      "settlement_received",
        -      "schema_version",
        -      "cart_id",
        -      "bank_reference",
        -      "bank_status",
        -      "origin",
        -      "captured",
        -      "status",
        -      "reference",
        -      "cart_state",
        -      "action",
        -      "business_effects",
        -      "amount_to_pay",
        -      "attempt_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "message": {
        -            "type": "string"
        -          },
        -          "retryable": {
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message",
        -          "retryable"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "accepted_amount": {
        +        "pattern": "^[0-9]+\\.[0-9]{2}$",
        +        "type": "string"
        +      },
        +      "action": {
        +        "oneOf": [
        +          {
        +            "type": "null"
        +          },
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "expires_at": {
        +                "format": "date-time",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "provider": {
        +                "const": "Scellius / La Banque Postale"
        +              },
        +              "type": {
        +                "const": "open_secure_payment"
        +              },
        +              "url": {
        +                "pattern": "^https://mcp\\.nitech\\.fr/payments/(?:start\\?attempt=[a-f0-9]{32}&token=[a-f0-9]{64}|(?:choose|card)\\?cart_id=[1-9][0-9]*&access=p2\\.[0-7]\\.[a-f0-9]{64})$",
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "type",
        +              "url",
        +              "expires_at",
        +              "provider"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "amount": {
        +                "pattern": "^[0-9]+\\.[0-9]{2}$",
        +                "type": "string"
        +              },
        +              "bank": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "bic": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "currency": {
        +                "const": "EUR"
        +              },
        +              "deadline": {
        +                "type": "string"
        +              },
        +              "iban": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "payee": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "payment_method": {
        +                "enum": [
        +                  "cheque",
        +                  "transfer"
        +                ]
        +              },
        +              "postal_address": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "receipt_status": {
        +                "const": "awaiting_receipt"
        +              },
        +              "reference": {
        +                "type": "string"
        +              },
        +              "reference_instruction": {
        +                "type": "string"
        +              },
        +              "rib_url": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "type": {
        +                "const": "payment_instructions"
        +              }
        +            },
        +            "required": [
        +              "postal_address",
        +              "amount",
        +              "payee",
        +              "reference",
        +              "currency",
        +              "bic",
        +              "iban",
        +              "payment_method",
        +              "receipt_status",
        +              "type",
        +              "deadline",
        +              "rib_url",
        +              "reference_instruction",
        +              "bank"
        +            ],
        +            "type": "object"
        +          }
        +        ]
        +      },
        +      "amount_to_pay": {
        +        "pattern": "^[0-9]+\\.[0-9]{2}$",
        +        "type": "string"
        +      },
        +      "attempt_id": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "available_methods": {
        +        "items": {
        +          "enum": [
        +            "card",
        +            "transfer",
        +            "cheque"
        +          ]
        +        },
        +        "type": "array",
        +        "uniqueItems": true
        +      },
        +      "bank_history": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "cancelled": {
        +            "pattern": "^[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          },
        +          "commercial_review_required": {
        +            "type": "boolean"
        +          },
        +          "debit": {
        +            "pattern": "^[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          },
        +          "events": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "disposition": {
        +                  "type": "string"
        +                },
        +                "event_id": {
        +                  "type": "string"
        +                },
        +                "fact": {
        +                  "additionalProperties": {
        +                    "type": "string"
        +                  },
        +                  "type": "object"
        +                },
        +                "received_at": {
        +                  "format": "date-time",
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "event_id",
        +                "received_at",
        +                "source",
        +                "disposition",
        +                "fact"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "net": {
        +            "pattern": "^-?[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          },
        +          "next_action": {
        +            "type": "string"
        +          },
        +          "operations": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "amount": {
        +                  "pattern": "^[0-9]+\\.[0-9]{2}$",
        +                  "type": "string"
        +                },
        +                "bank_created_at": {
        +                  "pattern": "^[0-9]{14}$",
        +                  "type": "string"
        +                },
        +                "bank_uuid": {
        +                  "pattern": "^[a-f0-9]{32}$",
        +                  "type": "string"
        +                },
        +                "event_id": {
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                },
        +                "initial_amount": {
        +                  "pattern": "^[0-9]+\\.[0-9]{2}$",
        +                  "type": "string"
        +                },
        +                "operation": {
        +                  "enum": [
        +                    "DEBIT",
        +                    "CREDIT"
        +                  ]
        +                },
        +                "original_attempt": {
        +                  "pattern": "^[a-f0-9]{32}$",
        +                  "type": "string"
        +                },
        +                "status": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "bank_uuid",
        +                "original_attempt",
        +                "operation",
        +                "status",
        +                "amount",
        +                "initial_amount",
        +                "bank_created_at",
        +                "event_id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "pending_events": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "reduced_before_capture": {
        +            "pattern": "^[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          },
        +          "refunded": {
        +            "pattern": "^[0-9]+\\.[0-9]{2}$",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "operations",
        +          "debit",
        +          "refunded",
        +          "net",
        +          "reduced_before_capture",
        +          "cancelled",
        +          "commercial_review_required",
        +          "pending_events",
        +          "next_action",
        +          "events"
        +        ],
        +        "type": "object"
        +      },
        +      "bank_observed_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "bank_reference": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "bank_status": {
        +        "enum": [
        +          "NOT_PREPARED",
        +          "PREPARED",
        +          "INITIAL",
        +          "WAITING_FOR_PAYMENT",
        +          "WAITING_AUTHORISATION",
        +          "WAITING_AUTHORISATION_TO_VALIDATE",
        +          "UNDER_VERIFICATION",
        +          "AUTHORISED_TO_VALIDATE",
        +          "AUTHORISED",
        +          "CAPTURED",
        +          "CAPTURE_FAILED",
        +          "REFUSED",
        +          "ABANDONED",
        +          "CANCELLED",
        +          "EXPIRED",
        +          "SUSPENDED"
        +        ]
        +      },
        +      "business_effects": {
        +        "enum": [
        +          "complete",
        +          "pending",
        +          "not_started"
        +        ]
        +      },
        +      "captured": {
        +        "type": "boolean"
        +      },
        +      "cart_id": {
        +        "maximum": 2147483647,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "cart_state": {
        +        "type": "integer"
        +      },
        +      "confirmation_token": {
        +        "pattern": "^[0-9]{10}\\.[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "currency": {
        +        "const": "EUR"
        +      },
        +      "delivery_state": {
        +        "enum": [
        +          null,
        +          "LEGACY_UNKNOWN",
        +          "UNISSUED",
        +          "ISSUED",
        +          "RELEASED_UNISSUED"
        +        ]
        +      },
        +      "handoff_available": {
        +        "type": "boolean"
        +      },
        +      "method_change_allowed": {
        +        "type": "boolean"
        +      },
        +      "notice": {
        +        "type": "string"
        +      },
        +      "origin": {
        +        "const": "MCP"
        +      },
        +      "payment_method": {
        +        "enum": [
        +          null,
        +          "card",
        +          "transfer",
        +          "cheque"
        +        ],
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "payment_page": {
        +        "pattern": "^https://mcp\\.nitech\\.fr/payments/choose\\?cart_id=[1-9][0-9]*&access=",
        +        "type": "string"
        +      },
        +      "payment_status": {
        +        "enum": [
        +          "not_selected",
        +          "pending",
        +          "awaiting_receipt",
        +          "accepted",
        +          "captured",
        +          "reconciliation_required"
        +        ],
        +        "type": "string"
        +      },
        +      "reference": {
        +        "pattern": "^MCP-[1-9][0-9]*$",
        +        "type": "string"
        +      },
        +      "requested_method": {
        +        "enum": [
        +          "card",
        +          "transfer",
        +          "cheque"
        +        ],
        +        "type": "string"
        +      },
        +      "schema_version": {
        +        "const": "2.0"
        +      },
        +      "settlement_received": {
        +        "const": false
        +      },
        +      "status": {
        +        "enum": [
        +          "ok",
        +          "confirmation_required",
        +          "reconciliation_required"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "notice",
        +      "accepted_amount",
        +      "bank_observed_at",
        +      "currency",
        +      "settlement_received",
        +      "schema_version",
        +      "cart_id",
        +      "bank_reference",
        +      "bank_status",
        +      "origin",
        +      "captured",
        +      "status",
        +      "reference",
        +      "cart_state",
        +      "action",
        +      "business_effects",
        +      "amount_to_pay",
        +      "attempt_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "message": {
        +            "type": "string"
        +          },
        +          "retryable": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message",
        +          "retryable"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch_relay_points6 fields changed
      • changedInput schema / description
        Previous value: -"Lecture seule. Code postal requis pour la France. 30 lignes, 100 unités par produit, 300 unités au total. Aucun prix, poids ou profil fourni par le client."New value: +"Pour search_relay_points, destination désigne l’adresse du client autour de laquelle rechercher les points relais. Réutiliser l’adresse déjà fournie lorsqu’elle est complète ; ne demander que les informations manquantes. Pour le numéro et la rue, demander par exemple : « Pour trouver un point relais près de chez vous, pouvez-vous préciser votre numéro et votre rue ? » Ne pas appeler cette adresse « adresse de départ » ou « adresse d’expédition » : ce n’est pas le lieu d’expédition Nitech. Cette adresse de recherche ne vaut ni choix d’un relais ni modification de l’adresse de facturation. Lecture seule. Code postal requis pour la France. 30 lignes, 100 unités par produit, 300 unités au total. Aucun prix, poids ou profil fourni par le client."
      • addedInput schema / properties / destination / description
        Added value: +"Pour search_relay_points, destination désigne l’adresse du client autour de laquelle rechercher les points relais. Réutiliser l’adresse déjà fournie lorsqu’elle est complète ; ne demander que les informations manquantes. Pour le numéro et la rue, demander par exemple : « Pour trouver un point relais près de chez vous, pouvez-vous préciser votre numéro et votre rue ? » Ne pas appeler cette adresse « adresse de départ » ou « adresse d’expédition » : ce n’est pas le lieu d’expédition Nitech. Cette adresse de recherche ne vaut ni choix d’un relais ni modification de l’adresse de facturation. "
      • addedInput schema / properties / destination / properties / address_line1 / description
        Added value: +"Numéro et rue de l’adresse du client autour de laquelle chercher les relais. Réutiliser ces informations si elles sont déjà complètes ; sinon demander : « Pour trouver un point relais près de chez vous, pouvez-vous préciser votre numéro et votre rue ? »"
      • addedInput schema / properties / destination / properties / city / description
        Added value: +"Ville de l’adresse du client autour de laquelle chercher les relais. Réutiliser celle déjà fournie."
      • addedInput schema / properties / destination / properties / country_code / description
        Added value: +"Code pays de l’adresse du client autour de laquelle chercher les relais. Réutiliser celui déjà fourni."
      • addedInput schema / properties / destination / properties / postal_code / description
        Added value: +"Code postal de l’adresse du client autour de laquelle chercher les relais. Réutiliser celui déjà fourni."
  3. 1 tool update
    • Changedquote_cart10 fields changed
      • changedInput schema / description
        Previous value: -"30 lignes distinctes, 100 unités par ligne, 300 unités au total, 8192 octets JSON. Doublons refusés. Panier vide et quantité invalide : erreurs structurées. France : code postal requis. Aucune donnée personnelle ni donnée commerciale client."New value: +"Contrat JSON : destination et lines sont obligatoires à la racine. country_code et postal_code sont des chaînes DANS destination, jamais à la racine. Sans delivery (domicile), destination contient uniquement country_code et postal_code : ne pas envoyer city ni address_line1. France : postal_code complet requis. lines est un tableau d’objets {product_id: entier, quantity: entier}, sans autre champ. Exemple minimal domicile France : {\"destination\":{\"country_code\":\"FR\",\"postal_code\":\"54000\"},\"lines\":[{\"product_id\":1843,\"quantity\":1}]}. Avec delivery GLS, conserver le contrat existant : destination contient aussi city et address_line1, delivery={mode:gls_pickup,relay_id} obtenu par search_relay_points. quote_cart n’accepte ni confirmation ni coordonnées de commande. 30 lignes distinctes, 100 unités par ligne, 300 unités au total, 8192 octets JSON. Doublons refusés. Panier vide et quantité invalide : erreurs structurées. France : code postal requis. Aucune donnée personnelle ni donnée commerciale client."
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "destination": {
        +      "country_code": "FR",
        +      "postal_code": "54000"
        +    },
        +    "lines": [
        +      {
        +        "product_id": 1843,
        +        "quantity": 1
        +      }
        +    ]
        +  }
        +]
      • addedInput schema / properties / destination / description
        Added value: +"Objet obligatoire à la racine. Domicile sans delivery : country_code et postal_code seulement ; pas de city/address_line1. Avec delivery GLS : city et address_line1 aussi requis selon allOf."
      • addedInput schema / properties / destination / properties / address_line1 / description
        Added value: +"Chaîne : uniquement pour delivery GLS ; ne pas transmettre pour un devis domicile sans delivery."
      • addedInput schema / properties / destination / properties / city / description
        Added value: +"Chaîne : uniquement pour delivery GLS ; ne pas transmettre pour un devis domicile sans delivery."
      • addedInput schema / properties / destination / properties / country_code / description
        Added value: +"Chaîne de deux lettres dans destination, par exemple FR ; jamais un champ racine."
      • addedInput schema / properties / destination / properties / postal_code / description
        Added value: +"Chaîne dans destination, par exemple 54000 entre guillemets ; code complet requis pour la France."
      • addedInput schema / properties / lines / description
        Added value: +"Tableau obligatoire à la racine ; chaque objet contient product_id et quantity, tous deux entiers JSON."
      • addedInput schema / properties / lines / items / properties / product_id / description
        Added value: +"Entier JSON obligatoire dans chaque objet de lines ; pas une chaîne."
      • addedInput schema / properties / lines / items / properties / quantity / description
        Added value: +"Entier JSON obligatoire dans chaque objet de lines ; pas une chaîne."
  4. 1 tool update
    • Addedrequest_withdrawal
  5. 1 tool update
    • Changedcreate_order10 fields changed
      • removedInput schema / properties / confirmation / properties / terms_version / const
        Removed value: -"livraison-2026-10-08-v1"
      • addedInput schema / properties / confirmation / properties / terms_version / maxLength
        Added value: +100
      • addedInput schema / properties / confirmation / properties / terms_version / minLength
        Added value: +1
      • addedInput schema / properties / confirmation / properties / terms_version / pattern
        Added value: +"^[A-Za-z0-9._-]+$"
      • changedOutput schema / properties / confirmation / properties / terms_version / const
        Previous value: -"livraison-2026-10-08-v1"New value: +"nitech-mcp-cgv-2026-11-02-v1"
      • removedOutput schema / properties / confirmation / properties / terms_version / type
        Removed value: -"string"
      • addedOutput schema / properties / summary / properties / terms_sha256
        Added value: +{
        +  "const": "f230ffaafbccf237d225b3ece289e4b03787c4399eb2aaa6a6103d2620e951c9"
        +}
      • addedOutput schema / properties / summary / properties / terms_url
        Added value: +{
        +  "const": "https://mcp.nitech.fr/payments/terms/nitech-mcp-cgv-2026-11-02-v1.txt"
        +}
      • addedOutput schema / properties / summary / properties / terms_version
        Added value: +{
        +  "const": "nitech-mcp-cgv-2026-11-02-v1"
        +}
      • changedOutput schema / properties / summary / required
        Previous value: -[
        -  "customer",
        -  "billing_address",
        -  "shipping_address",
        -  "lines",
        -  "currency",
        -  "products_amount_ht",
        -  "shipping_amount_ht",
        -  "grand_total_ht",
        -  "amount_to_pay",
        -  "tax_breakdown",
        -  "terms_text",
        -  "terms_notice"
        -]New value: +[
        +  "customer",
        +  "billing_address",
        +  "shipping_address",
        +  "lines",
        +  "currency",
        +  "products_amount_ht",
        +  "shipping_amount_ht",
        +  "grand_total_ht",
        +  "amount_to_pay",
        +  "tax_breakdown",
        +  "terms_text",
        +  "terms_notice",
        +  "terms_version",
        +  "terms_url",
        +  "terms_sha256"
        +]
  6. 4 tool updates
    • Changedcreate_order4 fields changed
      • addedInput schema / properties / delivery
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mode": {
        +      "const": "gls_pickup"
        +    },
        +    "relay_id": {
        +      "pattern": "^[A-Za-z0-9_-]{1,80}$",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "mode",
        +    "relay_id"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / error / properties / next_action / enum
        Previous value: -[
        -  "correct_then_requote_and_confirm",
        -  "change_destination_or_contact_nitech",
        -  "retry_same_request",
        -  "reconcile_same_key_same_arguments",
        -  "renew_confirmation",
        -  "contact_nitech"
        -]New value: +[
        +  "correct_then_requote_and_confirm",
        +  "change_destination_or_contact_nitech",
        +  "retry_same_request",
        +  "reconcile_same_key_same_arguments",
        +  "renew_confirmation",
        +  "contact_nitech",
        +  "search_relay_then_requote_and_confirm",
        +  "change_delivery_then_requote_and_confirm"
        +]
      • addedOutput schema / properties / summary / properties / delivery
        Added value: +{
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "mode": {
        +          "const": "gls_pickup"
        +        },
        +        "relay": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "address": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "address_line1": {
        +                  "maxLength": 200,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "address_line2": {
        +                  "maxLength": 161,
        +                  "minLength": 0,
        +                  "type": "string"
        +                },
        +                "city": {
        +                  "maxLength": 100,
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "country_code": {
        +                  "pattern": "^[A-Z]{2}$",
        +                  "type": "string"
        +                },
        +                "postal_code": {
        +                  "maxLength": 12,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "address_line1",
        +                "address_line2",
        +                "postal_code",
        +                "city",
        +                "country_code"
        +              ],
        +              "type": "object"
        +            },
        +            "holidays_gls": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "EndDate": {
        +                    "format": "date",
        +                    "type": "string"
        +                  },
        +                  "StartDate": {
        +                    "format": "date",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "StartDate",
        +                  "EndDate"
        +                ],
        +                "type": "object"
        +              },
        +              "maxItems": 100,
        +              "type": "array"
        +            },
        +            "name": {
        +              "maxLength": 120,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "opening_hours": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "breaks": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "properties": {
        +                        "from": {
        +                          "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                          "type": "string"
        +                        },
        +                        "to": {
        +                          "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "from",
        +                        "to"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 10,
        +                    "type": "array"
        +                  },
        +                  "day": {
        +                    "enum": [
        +                      "MON",
        +                      "TUE",
        +                      "WED",
        +                      "THU",
        +                      "FRI",
        +                      "SAT",
        +                      "SUN"
        +                    ]
        +                  },
        +                  "periods": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "properties": {
        +                        "from": {
        +                          "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                          "type": "string"
        +                        },
        +                        "to": {
        +                          "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "from",
        +                        "to"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 10,
        +                    "minItems": 1,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "day",
        +                  "periods",
        +                  "breaks"
        +                ],
        +                "type": "object"
        +              },
        +              "maxItems": 7,
        +              "type": "array"
        +            },
        +            "relay_id": {
        +              "pattern": "^[A-Za-z0-9_-]{1,80}$",
        +              "type": "string"
        +            },
        +            "working_days_gls": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "Breaks": {
        +                    "additionalProperties": false,
        +                    "properties": {
        +                      "OpeningHours": {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "properties": {
        +                            "From": {
        +                              "maximum": 86400000,
        +                              "minimum": -3600000,
        +                              "type": "integer"
        +                            },
        +                            "To": {
        +                              "maximum": 86400000,
        +                              "minimum": -3600000,
        +                              "type": "integer"
        +                            }
        +                          },
        +                          "required": [
        +                            "From",
        +                            "To"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "maxItems": 10,
        +                        "type": "array"
        +                      }
        +                    },
        +                    "required": [
        +                      "OpeningHours"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "DayOfWeek": {
        +                    "enum": [
        +                      "MON",
        +                      "TUE",
        +                      "WED",
        +                      "THU",
        +                      "FRI",
        +                      "SAT",
        +                      "SUN"
        +                    ]
        +                  },
        +                  "OpeningHours": {
        +                    "additionalProperties": false,
        +                    "properties": {
        +                      "OpeningHours": {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "properties": {
        +                            "From": {
        +                              "maximum": 86400000,
        +                              "minimum": -3600000,
        +                              "type": "integer"
        +                            },
        +                            "To": {
        +                              "maximum": 86400000,
        +                              "minimum": -3600000,
        +                              "type": "integer"
        +                            }
        +                          },
        +                          "required": [
        +                            "From",
        +                            "To"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "maxItems": 10,
        +                        "type": "array"
        +                      }
        +                    },
        +                    "required": [
        +                      "OpeningHours"
        +                    ],
        +                    "type": "object"
        +                  }
        +                },
        +                "required": [
        +                  "DayOfWeek",
        +                  "OpeningHours"
        +                ],
        +                "type": "object"
        +              },
        +              "maxItems": 7,
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "relay_id",
        +            "name",
        +            "address"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "mode",
        +        "relay"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "mode": {
        +          "const": "home"
        +        }
        +      },
        +      "required": [
        +        "mode"
        +      ],
        +      "type": "object"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / summary / properties / shipping_amount_ttc
        Added value: +{
        +  "pattern": "^[0-9]+[.][0-9]{2}$",
        +  "type": "string"
        +}
    • Changedquote_cart7 fields changed
      • addedInput schema / allOf
        Added value: +[
        +  {
        +    "if": {
        +      "required": [
        +        "delivery"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "destination": {
        +          "required": [
        +            "country_code",
        +            "postal_code",
        +            "address_line1",
        +            "city"
        +          ]
        +        }
        +      }
        +    }
        +  }
        +]
      • addedInput schema / properties / delivery
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mode": {
        +      "const": "gls_pickup"
        +    },
        +    "relay_id": {
        +      "pattern": "^[A-Za-z0-9_-]{1,80}$",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "mode",
        +    "relay_id"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / destination / properties / address_line1
        Added value: +{
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / destination / properties / city
        Added value: +{
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedOutput schema / properties / errors / items / properties / code / enum
        Previous value: -[
        -  "EMPTY_CART",
        -  "DUPLICATE_PRODUCT_ID",
        -  "INVALID_QUANTITY",
        -  "INVALID_ARGUMENTS",
        -  "REQUEST_TOO_LARGE",
        -  "PRODUCT_NOT_FOUND",
        -  "PRODUCT_NOT_PUBLIC",
        -  "PRODUCT_NOT_ON_SALE",
        -  "PRODUCT_NOT_ORDERABLE",
        -  "PRICE_UNAVAILABLE",
        -  "CURRENCY_MISMATCH",
        -  "DESTINATION_NOT_SERVED",
        -  "ZONE_UNDETERMINED",
        -  "INCOMPLETE_LOGISTICS_PROFILE",
        -  "CURRENT_RULE_UNSUPPORTED",
        -  "OFFER_SOURCE_UNAVAILABLE",
        -  "SHIPPING_SOURCE_UNAVAILABLE",
        -  "SOURCE_UNAVAILABLE",
        -  "BACKEND_ACCESS_DENIED"
        -]New value: +[
        +  "EMPTY_CART",
        +  "DUPLICATE_PRODUCT_ID",
        +  "INVALID_QUANTITY",
        +  "INVALID_ARGUMENTS",
        +  "REQUEST_TOO_LARGE",
        +  "PRODUCT_NOT_FOUND",
        +  "PRODUCT_NOT_PUBLIC",
        +  "PRODUCT_NOT_ON_SALE",
        +  "PRODUCT_NOT_ORDERABLE",
        +  "PRICE_UNAVAILABLE",
        +  "CURRENCY_MISMATCH",
        +  "DESTINATION_NOT_SERVED",
        +  "ZONE_UNDETERMINED",
        +  "INCOMPLETE_LOGISTICS_PROFILE",
        +  "CURRENT_RULE_UNSUPPORTED",
        +  "OFFER_SOURCE_UNAVAILABLE",
        +  "SHIPPING_SOURCE_UNAVAILABLE",
        +  "SOURCE_UNAVAILABLE",
        +  "BACKEND_ACCESS_DENIED",
        +  "GLS_UNAVAILABLE",
        +  "RELAY_INVALID",
        +  "RELAY_NOT_ELIGIBLE"
        +]
      • changedOutput schema / properties / errors / items / properties / next_action / enum
        Previous value: -[
        -  "correct_then_requote_and_confirm",
        -  "change_destination_or_contact_nitech",
        -  "retry_same_request",
        -  "reconcile_same_key_same_arguments",
        -  "renew_confirmation",
        -  "contact_nitech"
        -]New value: +[
        +  "correct_then_requote_and_confirm",
        +  "change_destination_or_contact_nitech",
        +  "retry_same_request",
        +  "reconcile_same_key_same_arguments",
        +  "renew_confirmation",
        +  "contact_nitech",
        +  "search_relay_then_requote_and_confirm",
        +  "change_delivery_then_requote_and_confirm"
        +]
      • addedOutput schema / properties / shipping / properties / delivery
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mode": {
        +      "const": "gls_pickup"
        +    },
        +    "relay": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "address": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "address_line1": {
        +              "maxLength": 200,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "address_line2": {
        +              "maxLength": 161,
        +              "minLength": 0,
        +              "type": "string"
        +            },
        +            "city": {
        +              "maxLength": 100,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "country_code": {
        +              "pattern": "^[A-Z]{2}$",
        +              "type": "string"
        +            },
        +            "postal_code": {
        +              "maxLength": 12,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "address_line1",
        +            "address_line2",
        +            "postal_code",
        +            "city",
        +            "country_code"
        +          ],
        +          "type": "object"
        +        },
        +        "holidays_gls": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "EndDate": {
        +                "format": "date",
        +                "type": "string"
        +              },
        +              "StartDate": {
        +                "format": "date",
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "StartDate",
        +              "EndDate"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "name": {
        +          "maxLength": 120,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "opening_hours": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "breaks": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "from": {
        +                      "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                      "type": "string"
        +                    },
        +                    "to": {
        +                      "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "from",
        +                    "to"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 10,
        +                "type": "array"
        +              },
        +              "day": {
        +                "enum": [
        +                  "MON",
        +                  "TUE",
        +                  "WED",
        +                  "THU",
        +                  "FRI",
        +                  "SAT",
        +                  "SUN"
        +                ]
        +              },
        +              "periods": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "from": {
        +                      "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                      "type": "string"
        +                    },
        +                    "to": {
        +                      "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "from",
        +                    "to"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 10,
        +                "minItems": 1,
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "day",
        +              "periods",
        +              "breaks"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 7,
        +          "type": "array"
        +        },
        +        "relay_id": {
        +          "pattern": "^[A-Za-z0-9_-]{1,80}$",
        +          "type": "string"
        +        },
        +        "working_days_gls": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "Breaks": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "OpeningHours": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "properties": {
        +                        "From": {
        +                          "maximum": 86400000,
        +                          "minimum": -3600000,
        +                          "type": "integer"
        +                        },
        +                        "To": {
        +                          "maximum": 86400000,
        +                          "minimum": -3600000,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "From",
        +                        "To"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 10,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "OpeningHours"
        +                ],
        +                "type": "object"
        +              },
        +              "DayOfWeek": {
        +                "enum": [
        +                  "MON",
        +                  "TUE",
        +                  "WED",
        +                  "THU",
        +                  "FRI",
        +                  "SAT",
        +                  "SUN"
        +                ]
        +              },
        +              "OpeningHours": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "OpeningHours": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "properties": {
        +                        "From": {
        +                          "maximum": 86400000,
        +                          "minimum": -3600000,
        +                          "type": "integer"
        +                        },
        +                        "To": {
        +                          "maximum": 86400000,
        +                          "minimum": -3600000,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "From",
        +                        "To"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 10,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "OpeningHours"
        +                ],
        +                "type": "object"
        +              }
        +            },
        +            "required": [
        +              "DayOfWeek",
        +              "OpeningHours"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 7,
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "relay_id",
        +        "name",
        +        "address"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "mode",
        +    "relay"
        +  ],
        +  "type": "object"
        +}
    • Changedquote_cart_shipping7 fields changed
      • addedInput schema / allOf
        Added value: +[
        +  {
        +    "if": {
        +      "required": [
        +        "delivery"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "destination": {
        +          "required": [
        +            "country_code",
        +            "postal_code",
        +            "address_line1",
        +            "city"
        +          ]
        +        }
        +      }
        +    }
        +  }
        +]
      • addedInput schema / properties / delivery
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mode": {
        +      "const": "gls_pickup"
        +    },
        +    "relay_id": {
        +      "pattern": "^[A-Za-z0-9_-]{1,80}$",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "mode",
        +    "relay_id"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / destination / properties / address_line1
        Added value: +{
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / destination / properties / city
        Added value: +{
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / delivery
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mode": {
        +      "const": "gls_pickup"
        +    },
        +    "relay": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "address": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "address_line1": {
        +              "maxLength": 200,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "address_line2": {
        +              "maxLength": 161,
        +              "minLength": 0,
        +              "type": "string"
        +            },
        +            "city": {
        +              "maxLength": 100,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "country_code": {
        +              "pattern": "^[A-Z]{2}$",
        +              "type": "string"
        +            },
        +            "postal_code": {
        +              "maxLength": 12,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "address_line1",
        +            "address_line2",
        +            "postal_code",
        +            "city",
        +            "country_code"
        +          ],
        +          "type": "object"
        +        },
        +        "holidays_gls": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "EndDate": {
        +                "format": "date",
        +                "type": "string"
        +              },
        +              "StartDate": {
        +                "format": "date",
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "StartDate",
        +              "EndDate"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "name": {
        +          "maxLength": 120,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "opening_hours": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "breaks": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "from": {
        +                      "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                      "type": "string"
        +                    },
        +                    "to": {
        +                      "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "from",
        +                    "to"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 10,
        +                "type": "array"
        +              },
        +              "day": {
        +                "enum": [
        +                  "MON",
        +                  "TUE",
        +                  "WED",
        +                  "THU",
        +                  "FRI",
        +                  "SAT",
        +                  "SUN"
        +                ]
        +              },
        +              "periods": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "from": {
        +                      "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                      "type": "string"
        +                    },
        +                    "to": {
        +                      "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$",
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "from",
        +                    "to"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 10,
        +                "minItems": 1,
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "day",
        +              "periods",
        +              "breaks"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 7,
        +          "type": "array"
        +        },
        +        "relay_id": {
        +          "pattern": "^[A-Za-z0-9_-]{1,80}$",
        +          "type": "string"
        +        },
        +        "working_days_gls": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "Breaks": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "OpeningHours": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "properties": {
        +                        "From": {
        +                          "maximum": 86400000,
        +                          "minimum": -3600000,
        +                          "type": "integer"
        +                        },
        +                        "To": {
        +                          "maximum": 86400000,
        +                          "minimum": -3600000,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "From",
        +                        "To"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 10,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "OpeningHours"
        +                ],
        +                "type": "object"
        +              },
        +              "DayOfWeek": {
        +                "enum": [
        +                  "MON",
        +                  "TUE",
        +                  "WED",
        +                  "THU",
        +                  "FRI",
        +                  "SAT",
        +                  "SUN"
        +                ]
        +              },
        +              "OpeningHours": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "OpeningHours": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "properties": {
        +                        "From": {
        +                          "maximum": 86400000,
        +                          "minimum": -3600000,
        +                          "type": "integer"
        +                        },
        +                        "To": {
        +                          "maximum": 86400000,
        +                          "minimum": -3600000,
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "required": [
        +                        "From",
        +                        "To"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "maxItems": 10,
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "OpeningHours"
        +                ],
        +                "type": "object"
        +              }
        +            },
        +            "required": [
        +              "DayOfWeek",
        +              "OpeningHours"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 7,
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "relay_id",
        +        "name",
        +        "address"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "mode",
        +    "relay"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / error / properties / code / enum
        Previous value: -[
        -  "EMPTY_CART",
        -  "INVALID_QUANTITY",
        -  "INVALID_ARGUMENTS",
        -  "PRODUCT_NOT_AVAILABLE",
        -  "INCOMPLETE_LOGISTICS_PROFILE",
        -  "DESTINATION_NOT_SERVED",
        -  "ZONE_UNDETERMINED",
        -  "CURRENT_RULE_UNSUPPORTED",
        -  "SOURCE_UNAVAILABLE",
        -  "BACKEND_ACCESS_DENIED",
        -  "BACKEND_TIMEOUT",
        -  "BACKEND_UNAVAILABLE",
        -  "BACKEND_RESPONSE_INVALID",
        -  "BACKEND_RESPONSE_TOO_LARGE",
        -  "CANONICAL_INVALID",
        -  "CANONICAL_UNAVAILABLE"
        -]New value: +[
        +  "EMPTY_CART",
        +  "INVALID_QUANTITY",
        +  "INVALID_ARGUMENTS",
        +  "PRODUCT_NOT_AVAILABLE",
        +  "INCOMPLETE_LOGISTICS_PROFILE",
        +  "DESTINATION_NOT_SERVED",
        +  "ZONE_UNDETERMINED",
        +  "CURRENT_RULE_UNSUPPORTED",
        +  "SOURCE_UNAVAILABLE",
        +  "BACKEND_ACCESS_DENIED",
        +  "BACKEND_TIMEOUT",
        +  "BACKEND_UNAVAILABLE",
        +  "BACKEND_RESPONSE_INVALID",
        +  "BACKEND_RESPONSE_TOO_LARGE",
        +  "CANONICAL_INVALID",
        +  "CANONICAL_UNAVAILABLE",
        +  "GLS_UNAVAILABLE",
        +  "RELAY_INVALID",
        +  "RELAY_NOT_ELIGIBLE"
        +]
      • changedOutput schema / properties / error / properties / next_action / enum
        Previous value: -[
        -  "correct_then_requote_and_confirm",
        -  "change_destination_or_contact_nitech",
        -  "retry_same_request",
        -  "reconcile_same_key_same_arguments",
        -  "renew_confirmation",
        -  "contact_nitech"
        -]New value: +[
        +  "correct_then_requote_and_confirm",
        +  "change_destination_or_contact_nitech",
        +  "retry_same_request",
        +  "reconcile_same_key_same_arguments",
        +  "renew_confirmation",
        +  "contact_nitech",
        +  "search_relay_then_requote_and_confirm",
        +  "change_delivery_then_requote_and_confirm"
        +]
    • Addedsearch_relay_points
  7. 3 tool updates
    • Changedcreate_order5 fields changed
      • addedOutput schema / properties / error / properties / arguments_may_change
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / error / properties / category
        Added value: +{
        +  "enum": [
        +    "invalid_input",
        +    "destination_not_served",
        +    "temporarily_unavailable",
        +    "operation_uncertain",
        +    "other_rejection"
        +  ]
        +}
      • addedOutput schema / properties / error / properties / fields
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "expected_correction": {
        +        "maxLength": 600,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "path": {
        +        "maxLength": 160,
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "reason": {
        +        "maxLength": 80,
        +        "pattern": "^[a-z_]+$",
        +        "type": "string"
        +      },
        +      "validation_layer": {
        +        "enum": [
        +          "format",
        +          "serviceability",
        +          "reference",
        +          "technical"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "path",
        +      "reason",
        +      "expected_correction",
        +      "validation_layer"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 25,
        +  "type": "array"
        +}
      • addedOutput schema / properties / error / properties / next_action
        Added value: +{
        +  "enum": [
        +    "correct_then_requote_and_confirm",
        +    "change_destination_or_contact_nitech",
        +    "retry_same_request",
        +    "reconcile_same_key_same_arguments",
        +    "renew_confirmation",
        +    "contact_nitech"
        +  ]
        +}
      • addedOutput schema / properties / operation_outcome
        Added value: +{
        +  "enum": [
        +    "not_created",
        +    "unknown"
        +  ]
        +}
    • Changedquote_cart4 fields changed
      • addedOutput schema / properties / errors / items / properties / arguments_may_change
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / errors / items / properties / category
        Added value: +{
        +  "enum": [
        +    "invalid_input",
        +    "destination_not_served",
        +    "temporarily_unavailable",
        +    "operation_uncertain",
        +    "other_rejection"
        +  ]
        +}
      • addedOutput schema / properties / errors / items / properties / fields
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "expected_correction": {
        +        "maxLength": 600,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "path": {
        +        "maxLength": 160,
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "reason": {
        +        "maxLength": 80,
        +        "pattern": "^[a-z_]+$",
        +        "type": "string"
        +      },
        +      "validation_layer": {
        +        "enum": [
        +          "format",
        +          "serviceability",
        +          "reference",
        +          "technical"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "path",
        +      "reason",
        +      "expected_correction",
        +      "validation_layer"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 25,
        +  "type": "array"
        +}
      • addedOutput schema / properties / errors / items / properties / next_action
        Added value: +{
        +  "enum": [
        +    "correct_then_requote_and_confirm",
        +    "change_destination_or_contact_nitech",
        +    "retry_same_request",
        +    "reconcile_same_key_same_arguments",
        +    "renew_confirmation",
        +    "contact_nitech"
        +  ]
        +}
    • Changedquote_cart_shipping4 fields changed
      • addedOutput schema / properties / error / properties / arguments_may_change
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / error / properties / category
        Added value: +{
        +  "enum": [
        +    "invalid_input",
        +    "destination_not_served",
        +    "temporarily_unavailable",
        +    "operation_uncertain",
        +    "other_rejection"
        +  ]
        +}
      • addedOutput schema / properties / error / properties / fields
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "expected_correction": {
        +        "maxLength": 600,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "path": {
        +        "maxLength": 160,
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "reason": {
        +        "maxLength": 80,
        +        "pattern": "^[a-z_]+$",
        +        "type": "string"
        +      },
        +      "validation_layer": {
        +        "enum": [
        +          "format",
        +          "serviceability",
        +          "reference",
        +          "technical"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "path",
        +      "reason",
        +      "expected_correction",
        +      "validation_layer"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 25,
        +  "type": "array"
        +}
      • addedOutput schema / properties / error / properties / next_action
        Added value: +{
        +  "enum": [
        +    "correct_then_requote_and_confirm",
        +    "change_destination_or_contact_nitech",
        +    "retry_same_request",
        +    "reconcile_same_key_same_arguments",
        +    "renew_confirmation",
        +    "contact_nitech"
        +  ]
        +}
  8. 11 tool updates
    • First observedcreate_order
    • First observedfind_compatibility_evidence
    • First observedget_offer
    • First observedget_order
    • First observedget_payment
    • First observedget_product
    • First observedget_product_documents
    • First observedprepare_payment
    • First observedquote_cart
    • First observedquote_cart_shipping
    • First observedsearch_products

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables finding elevator and lift spare parts in the Lift-Spares catalog by part number, description, make, model, or part type in any language, and retrieving a part's full identification details or requesting parts that are not on the website. Returns product page and cart links for ordering on the shop, without placing orders itself.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables users to search products, compare specs, check part-to-machine fitment, and verify pricing and stock across 3D printing and home espresso catalogs, with sourced specs and cited fit verdicts.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables searching and retrieving detailed information on electronic components from TME, including pricing, stock, datasheets, and delivery estimates.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources