{"id":2529749,"recorded_at":"2026-11-03T05:14:01.322690Z","observed_at":"2026-11-03T05:14:01.322614Z","subject_kind":"endpoint","subject":"11b3f5c6-c65d-4b35-a7e2-131299a90b20","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":13,"tools":[{"description":"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.","inputSchema":{"$id":"https://catalogue.nitech.fr/schemas/mcp/create-order-input-v0.1.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"billing_address":{"additionalProperties":false,"properties":{"address_line1":{"maxLength":200,"minLength":1,"type":"string"},"address_line2":{"maxLength":200,"minLength":0,"type":"string"},"city":{"maxLength":100,"minLength":1,"type":"string"},"company":{"maxLength":120,"minLength":0,"type":"string"},"country_code":{"maxLength":2,"minLength":2,"pattern":"^[A-Z]{2}$","type":"string"},"first_name":{"maxLength":80,"minLength":1,"type":"string"},"last_name":{"maxLength":80,"minLength":1,"type":"string"},"postal_code":{"maxLength":12,"minLength":1,"pattern":"^[A-Za-z0-9 -]+$","type":"string"}},"required":["first_name","last_name","address_line1","postal_code","city","country_code"],"type":"object"},"confirmation":{"additionalProperties":false,"properties":{"confirmed":{"type":"boolean"},"confirmed_at":{"format":"date-time","maxLength":20,"minLength":20,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$","type":"string"},"proof_reference":{"maxLength":128,"minLength":8,"pattern":"^[A-Za-z0-9_.:-]+$","type":"string"},"terms_version":{"maxLength":100,"minLength":1,"pattern":"^[A-Za-z0-9._-]+$","type":"string"},"token":{"maxLength":1024,"minLength":1,"pattern":"^[A-Za-z0-9_-]+\\.[a-f0-9]{64}$","type":"string"}},"required":["confirmed"],"type":"object"},"customer":{"additionalProperties":false,"properties":{"email":{"format":"email","maxLength":80,"minLength":1,"type":"string"},"phone":{"maxLength":30,"minLength":1,"pattern":"^[+0-9 ()/.-]{5,30}$","type":"string"}},"required":["email","phone"],"type":"object"},"delivery":{"additionalProperties":false,"properties":{"mode":{"const":"gls_pickup"},"relay_id":{"pattern":"^[A-Za-z0-9_-]{1,80}$","type":"string"}},"required":["mode","relay_id"],"type":"object"},"idempotency_key":{"maxLength":36,"minLength":36,"pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$","type":"string"},"interaction_id":{"maxLength":128,"minLength":8,"pattern":"^[A-Za-z0-9_.:-]+$","type":"string"},"lines":{"items":{"additionalProperties":false,"properties":{"product_id":{"maximum":2147483647,"minimum":1,"type":"integer"},"quantity":{"maximum":100,"minimum":1,"type":"integer"}},"required":["product_id","quantity"],"type":"object"},"maxItems":30,"minItems":1,"type":"array"},"shipping_address":{"additionalProperties":false,"properties":{"address_line1":{"maxLength":200,"minLength":1,"type":"string"},"address_line2":{"maxLength":200,"minLength":0,"type":"string"},"city":{"maxLength":100,"minLength":1,"type":"string"},"company":{"maxLength":120,"minLength":0,"type":"string"},"country_code":{"maxLength":2,"minLength":2,"pattern":"^[A-Z]{2}$","type":"string"},"first_name":{"maxLength":80,"minLength":1,"type":"string"},"last_name":{"maxLength":80,"minLength":1,"type":"string"},"postal_code":{"maxLength":12,"minLength":1,"pattern":"^[A-Za-z0-9 -]+$","type":"string"}},"required":["first_name","last_name","address_line1","postal_code","city","country_code"],"type":"object"}},"required":["idempotency_key","interaction_id","customer","billing_address","shipping_address","lines","confirmation"],"type":"object"},"name":"create_order"},{"description":"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é.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"appliance":{"maxLength":80,"minLength":1,"pattern":"^[A-Za-z0-9.-]+$","type":"string"},"part":{"maxLength":80,"minLength":1,"pattern":"^[A-Za-z0-9.-]+$","type":"string"}},"required":["part","appliance"],"type":"object"},"name":"find_compatibility_evidence"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"product_id":{"description":"PID interne du catalogue actif. PID1843 est le pilote qualifié ; les autres projections restent provisoires en recette.","maximum":2147483647,"minimum":1,"type":"integer"}},"required":["product_id"],"type":"object"},"name":"get_offer"},{"description":"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.","inputSchema":{"$id":"https://catalogue.nitech.fr/schemas/mcp/get-order-input-v0.1.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"cart_access":{"maxLength":1024,"pattern":"^(?:m1\\.[A-Za-z0-9_-]+\\.[a-f0-9]{64}|p2\\.[0-7]\\.[a-f0-9]{64})$","type":"string"},"cart_id":{"maximum":2147483647,"minimum":1,"type":"integer"}},"required":["cart_id","cart_access"],"type":"object"},"name":"get_order"},{"description":"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.","inputSchema":{"$id":"https://catalogue.nitech.fr/schemas/mcp/get-payment-input-v0.1.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"cart_access":{"maxLength":1024,"pattern":"^(?:m1\\.[A-Za-z0-9_-]+\\.[a-f0-9]{64}|p2\\.[0-7]\\.[a-f0-9]{64})$","type":"string"},"cart_id":{"maximum":2147483647,"minimum":1,"type":"integer"}},"required":["cart_id","cart_access"],"type":"object"},"name":"get_payment"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"product_id":{"description":"PID interne du catalogue actif. PID1843 est le pilote qualifié ; les autres projections restent provisoires en recette.","maximum":2147483647,"minimum":1,"type":"integer"}},"required":["product_id"],"type":"object"},"name":"get_product"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"product_id":{"description":"PID interne du catalogue actif. PID1843 est le pilote qualifié ; les autres projections restent provisoires en recette.","maximum":2147483647,"minimum":1,"type":"integer"}},"required":["product_id"],"type":"object"},"name":"get_product_documents"},{"description":"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.","inputSchema":{"$id":"https://catalogue.nitech.fr/schemas/mcp/prepare-payment-input-v0.1.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"if":{"properties":{"confirmed":{"const":true}}},"then":{"required":["confirmation_token","proof_reference"]}}],"description":"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. ","properties":{"cart_access":{"maxLength":1024,"pattern":"^(?:m1\\.[A-Za-z0-9_-]+\\.[a-f0-9]{64}|p2\\.[0-7]\\.[a-f0-9]{64})$","type":"string"},"cart_id":{"maximum":2147483647,"minimum":1,"type":"integer"},"confirmation_token":{"pattern":"^[0-9]{10}\\.[a-f0-9]{64}$","type":"string"},"confirmed":{"description":"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.","type":"boolean"},"currency":{"const":"EUR"},"expected_amount":{"pattern":"^[0-9]{1,8}\\.[0-9]{2}$","type":"string"},"idempotency_key":{"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$","type":"string"},"payment_method":{"default":"card","enum":["card","transfer","cheque"],"type":"string"},"proof_reference":{"description":"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.","maxLength":160,"minLength":1,"type":"string"},"retry_of":{"pattern":"^[a-f0-9]{32}$","type":"string"}},"required":["cart_id","cart_access","expected_amount","currency","confirmed","idempotency_key"],"type":"object"},"name":"prepare_payment"},{"description":"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.","inputSchema":{"$id":"https://catalogue.nitech.fr/schemas/mcp/quote-cart-input-v0.1.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"if":{"required":["delivery"]},"then":{"properties":{"destination":{"required":["country_code","postal_code","address_line1","city"]}}}}],"description":"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.","examples":[{"destination":{"country_code":"FR","postal_code":"54000"},"lines":[{"product_id":1843,"quantity":1}]}],"properties":{"delivery":{"additionalProperties":false,"properties":{"mode":{"const":"gls_pickup"},"relay_id":{"pattern":"^[A-Za-z0-9_-]{1,80}$","type":"string"}},"required":["mode","relay_id"],"type":"object"},"destination":{"additionalProperties":false,"description":"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.","properties":{"address_line1":{"description":"Chaîne : uniquement pour delivery GLS ; ne pas transmettre pour un devis domicile sans delivery.","maxLength":200,"minLength":1,"type":"string"},"city":{"description":"Chaîne : uniquement pour delivery GLS ; ne pas transmettre pour un devis domicile sans delivery.","maxLength":100,"minLength":1,"type":"string"},"country_code":{"description":"Chaîne de deux lettres dans destination, par exemple FR ; jamais un champ racine.","pattern":"^[A-Za-z]{2}$","type":"string"},"postal_code":{"description":"Chaîne dans destination, par exemple 54000 entre guillemets ; code complet requis pour la France.","maxLength":12,"pattern":"^[A-Za-z0-9 -]*$","type":"string"}},"required":["country_code"],"type":"object"},"lines":{"description":"Tableau obligatoire à la racine ; chaque objet contient product_id et quantity, tous deux entiers JSON.","items":{"additionalProperties":false,"properties":{"product_id":{"description":"Entier JSON obligatoire dans chaque objet de lines ; pas une chaîne.","maximum":2147483647,"minimum":1,"type":"integer"},"quantity":{"description":"Entier JSON obligatoire dans chaque objet de lines ; pas une chaîne.","type":"integer"}},"required":["product_id","quantity"],"type":"object"},"maxItems":30,"minItems":0,"type":"array"}},"required":["destination","lines"],"title":"Préparer un devis complet Nitech en lecture seule","type":"object"},"name":"quote_cart"},{"description":"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.","inputSchema":{"$id":"https://catalogue.nitech.fr/schemas/mcp/quote-cart-shipping-input-v0.1.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"if":{"required":["delivery"]},"then":{"properties":{"destination":{"required":["country_code","postal_code","address_line1","city"]}}}}],"description":"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.","properties":{"delivery":{"additionalProperties":false,"properties":{"mode":{"const":"gls_pickup"},"relay_id":{"pattern":"^[A-Za-z0-9_-]{1,80}$","type":"string"}},"required":["mode","relay_id"],"type":"object"},"destination":{"additionalProperties":false,"properties":{"address_line1":{"maxLength":200,"minLength":1,"type":"string"},"city":{"maxLength":100,"minLength":1,"type":"string"},"country_code":{"pattern":"^[A-Za-z]{2}$","type":"string"},"postal_code":{"maxLength":12,"pattern":"^[A-Za-z0-9 -]*$","type":"string"}},"required":["country_code"],"type":"object"},"lines":{"items":{"additionalProperties":false,"properties":{"product_id":{"maximum":2147483647,"minimum":1,"type":"integer"},"quantity":{"maximum":100,"minimum":1,"type":"integer"}},"required":["product_id","quantity"],"type":"object"},"maxItems":30,"minItems":1,"type":"array"}},"required":["destination","lines"],"title":"Calculer le port actuel Nitech","type":"object"},"name":"quote_cart_shipping"},{"description":"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.","inputSchema":{"$id":"https://catalogue.nitech.fr/schemas/mcp/request-withdrawal-input-v0.1.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"else":{"not":{"required":["confirmation_token"]}},"if":{"properties":{"confirmed":{"const":true}}},"then":{"required":["confirmation_token"]}}],"properties":{"cart_access":{"maxLength":1024,"pattern":"^(?:m1\\.[A-Za-z0-9_-]+\\.[a-f0-9]{64}|p2\\.[0-7]\\.[a-f0-9]{64})$","type":"string"},"cart_id":{"maximum":2147483647,"minimum":1,"type":"integer"},"confirmation_token":{"maxLength":240,"pattern":"^[a-f0-9]{32}\\.[0-9]{10}\\.[a-f0-9]{64}\\.[a-f0-9]{64}$","type":"string"},"confirmed":{"description":"false pour un aperçu sans dépôt ; true uniquement après l’accord explicite du client sur cet aperçu.","type":"boolean"},"scope":{"description":"Comme 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.","maxLength":4000,"minLength":1,"type":"string"}},"required":["cart_id","cart_access","scope","confirmed"],"type":"object"},"name":"request_withdrawal"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"after_pid":{"maximum":2147483647,"minimum":1,"type":"integer"},"field":{"enum":["auto","pid","nitech_reference","manufacturer_reference","former_reference","designation","brand","model"]},"limit":{"default":10,"maximum":20,"minimum":1,"type":"integer"},"query":{"maxLength":120,"minLength":1,"pattern":"^[^\\u0000-\\u001f\\u007f]*$","type":"string"}},"required":["query"],"type":"object"},"name":"search_products"},{"description":"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.","inputSchema":{"$id":"https://catalogue.nitech.fr/schemas/mcp/search-relay-points-input-v0.1.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"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.","properties":{"destination":{"additionalProperties":false,"description":"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. ","properties":{"address_line1":{"description":"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 ? »","maxLength":200,"minLength":1,"type":"string"},"city":{"description":"Ville de l’adresse du client autour de laquelle chercher les relais. Réutiliser celle déjà fournie.","maxLength":100,"minLength":1,"type":"string"},"country_code":{"description":"Code pays de l’adresse du client autour de laquelle chercher les relais. Réutiliser celui déjà fourni.","pattern":"^[A-Za-z]{2}$","type":"string"},"postal_code":{"description":"Code postal de l’adresse du client autour de laquelle chercher les relais. Réutiliser celui déjà fourni.","maxLength":12,"pattern":"^[A-Za-z0-9 -]*$","type":"string"}},"required":["country_code","postal_code","address_line1","city"],"type":"object"},"lines":{"items":{"additionalProperties":false,"properties":{"product_id":{"maximum":2147483647,"minimum":1,"type":"integer"},"quantity":{"maximum":100,"minimum":1,"type":"integer"}},"required":["product_id","quantity"],"type":"object"},"maxItems":30,"minItems":1,"type":"array"}},"required":["destination","lines"],"title":"Rechercher les points relais GLS pour un panier","type":"object"},"name":"search_relay_points"}]},"body_sha256":"c35ba6b70264645d2509c5f82a6870694eba0688c688aabc12ab6891166d6967","prev_id":2094838,"leaf":"0x203f0d48d6da7ec73ef110406b8c3764142f21b0b8be3dd642e5f4c5fd119211","leaf_text":"{\"body\":\"c35ba6b70264645d2509c5f82a6870694eba0688c688aabc12ab6891166d6967\",\"id\":2529749,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793682841322614,\"prev\":2094838,\"subject\":\"11b3f5c6-c65d-4b35-a7e2-131299a90b20\",\"subject_kind\":\"endpoint\"}","day":null,"proof":[]}