Un assistant peut désormais chiffrer et préparer seul une réservation de chauffeur privé à Paris : résoudre l'adresse, comparer les gammes, obtenir le tarif exact pour une date, indiquer où le chauffeur attend au terminal 2E, et remettre au voyageur un lien pour confirmer. Notre serveur Model Context Protocol est public, et une clé en lecture seule est publiée dans la documentation pour l'essayer en moins d'une minute.
Cet article est le versant technique de ce lancement : la seule décision de conception qui compte à nos yeux, et les quatre choses qui ont cassé avant qu'il soit publiable. Si vous construisez un serveur MCP au-dessus d'une activité réellement transactionnelle, ce sont les échecs qui vous serviront.
La décision : l'agent prépare, l'humain paie
Aucun outil de notre serveur ne peut débiter une carte. create_booking_draft renvoie un lien de confirmation sur privatedrive.co, où le voyageur relit sa course et règle. C'est délibéré, et cela a survécu à toutes les revues.
La raison n'est pas une réticence envers l'automatisation. C'est que l'étape irréversible mérite un humain, et que cette frontière est précisément ce qui rend le serveur intégrable dans le produit de quelqu'un d'autre. Une plateforme de voyage peut nous appeler sans porter la responsabilité du paiement, et le voyageur garde un instant pour regarder le prix avant qu'il ne devienne un débit. Nous assouplirons peut-être cette règle pour des partenaires sous contrat. Jamais pour une clé publique.
Quatre choses qui ont cassé
1. Un devis sans date est un devis faux
Notre première version transmettait les adresses et le véhicule au moteur de prix, et oubliait la date. Tous les devis sortaient au tarif de base. Une course en pleine Fashion Week ou en haute saison d'août était chiffrée au prix de basse saison, que le site n'aurait pas honoré le jour venu.
Le correctif tient en une ligne, la leçon non : un moteur de prix à règles calendaires répondra volontiers sans date. Il n'a aucun moyen de deviner que l'appelant visait un jour précis. Si vos prix bougent avec le calendrier, rendez la date obligatoire à la frontière de l'outil, et testez une date dont vous savez qu'elle porte une majoration.
2. Le piège du fuseau horaire, et celui-là réserve le mauvais jour
C'est l'échec que nous aimerions le plus épargner aux autres. Nous acceptions un horodatage ISO 8601 et découpions la chaîne sur la lettre T pour en tirer la date et l'heure. Propre, évident, faux.
Les assistants normalisent en UTC en permanence. Un voyageur qui demande une prise en charge à 1 h du matin le 1er octobre produit 2026-09-30T23:00:00Z chez un modèle qui fait bien son travail. Notre découpage naïf lisait cela au pied de la lettre et réservait le 30 septembre à 23 h : la veille, deux heures trop tôt. Le prix restait cohérent, donc rien ne clochait aux tests. Ce qui aurait cassé, c'est le matin de la course, avec un chauffeur au mauvais endroit le mauvais jour.
Nous l'avons attrapé en envoyant le même instant sous trois formats et en lisant ce qui atterrissait réellement en base. Heure locale nue, UTC et décalage explicite convergent désormais sur la même course. Si vous recevez des horodatages d'un agent, convertissez proprement vers votre fuseau d'exploitation, refusez ce que vous ne savez pas lire, et ne faites jamais confiance à un découpage de chaîne.
3. Des permissions documentées ne sont pas des permissions
Nos clés d'API portaient une liste d'outils autorisés et une limite de débit. Les deux champs étaient en base depuis des mois. Aucun n'était jamais lu. N'importe quelle clé valide pouvait appeler n'importe quel outil, y compris celui qui déclenche les remboursements.
Pire : une fois le code corrigé, le schéma l'a discrètement défait. La valeur par défaut de la liste de permissions était « tout », et le pilote de base de données remplit les défauts à la lecture d'un document, pas seulement à l'écriture. Une clé insérée sans ce champ ressortait administrateur complet. Le contrôle applicatif ne voyait jamais de valeur manquante, donc il ne refusait jamais.
Deux réflexes en sont sortis. Cherchez l'appelant de chaque champ de sécurité, car une colonne nommée allowedTools ne prouve rien. Et faites que le défaut soit fermé, puis vérifiez-le en insérant réellement un document partiel et en le relisant, plutôt qu'en relisant le code.
4. Une règle métier doit refuser, pas avertir
Nous chiffrions 7 passagers dans une berline 3 places et renvoyions un tarif, assorti d'une note indiquant qu'il faudrait 3 véhicules. Un modèle lit le tarif et annonce le tarif. Nous n'avions pas non plus de quoi exprimer une journée d'excursion : une demande de journée à Versailles revenait en aller simple, moins cher, et le voyageur restait sur place quand le chauffeur repartait.
La règle générale, dès lors qu'on sert des modèles de langage et non des formulaires : tout ce que vous exprimez comme un avertissement finira ignoré. Si une demande viole une contrainte réelle, le serveur doit renvoyer une erreur qui nomme la bonne alternative. Notre contrôle de capacité refuse désormais et désigne la gamme adaptée. Les journées d'excursion sont un paramètre à part entière, avec leurs forfaits.
Ce que font les outils
Neuf outils, répartis sur trois niveaux d'accès. La lecture est ouverte avec la clé publiée : recherche d'adresse, gammes de véhicules, devis exacts, disponibilité, zones desservies et points de rencontre par terminal à Roissy-CDG, Orly, Le Bourget et Beauvais. Une clé obtenue en une requête ajoute la préparation de réservation et le suivi. Les annulations, qui déplacent de l'argent réel, restent réservées aux clés partenaires.
Les prix viennent du même moteur que le site : un devis pour une date donnée correspond à ce que voit un visiteur pour cette date, majorations de saison et d'événement comprises. Les sièges enfants sont gratuits. Les prises en charge en aéroport incluent 60 minutes d'attente offertes après l'atterrissage réel, avec suivi du vol.
Essayer
La documentation d'intégration contient une clé publique, un exemple curl fonctionnel, la configuration pour Claude Desktop et Cursor, la référence complète des outils et la table des erreurs. Obtenir sa propre clé pour préparer des réservations tient en une requête et prend effet immédiatement.
Si vous vous renseignez sur le transport à Paris plutôt que d'y brancher un agent, notre guide complet des transferts aéroport et notre guide pour les voyageurs qui arrivent à Paris couvrent le même terrain pour des lecteurs humains. Les entreprises à besoins récurrents trouveront la mécanique dans notre guide pour ouvrir un compte de transport d'entreprise, et les assistantes de direction dans le guide du transport pour assistantes de direction.
Une question sur le serveur, ou une réponse d'outil qui vous semble fausse : [email protected], avec le nom de l'outil et les arguments envoyés.
