← Resadock

Brancher un agent sur Resadock

Resadock est la MI (Machine Interface) des services locaux français : un serveur MCP multi-tenant où les agents cherchent, vérifient, devisent et réservent — le professionnel confirme d'un pouce, ou par sa politique d'acceptation automatique.

Accès : gratuit. Une clé de test s'obtient à l'instant (POST /v1/test-keys, un nom d'agent suffit) : lecture partout, engagement sur la sandbox (« Coach Léa Padel (DÉMO) ») pour tester tout le parcours sans toucher un professionnel réel. Clé de production (engagement chez les vrais professionnels) : écrivez à agents@resadock.com (nom de l'agent, usage, volume estimé). À terme, une micro-redevance par réservation confirmée pourra s'appliquer aux agents à fort volume — jamais au professionnel, jamais au client final.

Connexion

Endpoint : https://resadock.com/mcp   (MCP Streamable HTTP, stateless, POST)
Auth     : en-tête X-API-Key: <clé>  (jamais dans l'URL : la clé finirait dans des journaux)
      ou OAuth 2.1 sans compte : découverte par /.well-known/oauth-protected-resource,
      enregistrement dynamique ouvert, PKCE S256, une page « Autoriser », un jeton Bearer.
      Chaque autorisation est un agent distinct, classe untrusted, qui monte sur des faits.
Registre : com.resadock/resadock (registre MCP officiel, namespace vérifié DNS)
Card     : https://resadock.com/.well-known/mcp.json

Les outils (7 pour engager, 1 pour découvrir, 2 pour les séjours)

OutilRôle
search_offersRecherche libre (métier, nom, tags, ville). Retourne le RÉSUMÉ : prix, booking_mode (instant/approval), géolocalisation {ville, lat, lng}, badge verified (SIREN vérifié INSEE), niveau, actu du jour en enveloppe datée.
get_offer_detailsLa FICHE complète : descriptions, options (à-côtés, prix par personne avec minimum facturé), politique (préavis, annulation, délai de réponse), déplacements chiffrés, paiement, sites, fiabilité mesurée (taux de confirmation sur 90 j, dérivé du journal — jamais déclaré).
search_availabilityStatut TERNAIRE : available | unavailable | unknown — jamais un booléen menteur. unknown vient avec un canal de repli.
quote_engagementTient le créneau (TTL 5 min) et retourne le DEVIS complet avant tout engagement : montant décomposé (base + déplacement + options), annulation, local_time chez le pro. Idempotent par clé d'INTENTION.
create_engagementTransmet client + consentement (mandat, CGV, et early_execution si < 14 jours — droit conso français). → requested ou confirmed (auto-acceptation sous seuils du pro).
get_engagement / cancel_engagementSuivi et annulation (secret requis). L'annulation libère le stock immédiatement.

Réserver une après-midi, une journée, une semaine

Vous n'êtes pas limité à un créneau. Ouvrez un séjour et rattachez-y autant d'étapes que vous voulez : un massage, une plage, une table, un club. Les étapes partagent alors une même échéance de tenue, au lieu d'expirer chacune de son côté.

create_sejour { "label": "Journée bien-être 14 sept.", "duree_minutes": 45 }
  → { "sejour_id": "…", "expires_at": "…" }

quote_engagement { "variant_id": "…", "start": "…", "sejour_id": "…" }   // autant de fois que d'étapes
create_engagement { … }                                                  // inchangé, étape par étape
get_sejour { "sejour_id": "…" }                                          // l'état de tout le groupe

Pourquoi ça existe

Trois pannes mécaniques, qu'aucun agent ne peut résoudre seul :

Les subtilités, à connaître avant de vous appuyer dessus

Les 4 classes d'erreurs

retry (réessayez, avec retry_after) · fix (corrigez le champ indiqué — l'erreur dit QUOI collecter) · refused (définitif : stock parti, fermé) · ask_human (le canal de repli est fourni). Aucune erreur non typée.

Webhooks

Chaque transition de réservation est notifiée en POST signé sur votre URL déclarée : en-têtes webhook-id, webhook-timestamp, webhook-signature: v1=HMAC-SHA256(timestamp.body), webhook-key-id (rotation). Livraison ordonnée par réservation, backoff exponentiel, get_engagement en rattrapage.

Quickstart (English)

POST https://resadock.com/mcp        # MCP Streamable HTTP, header X-API-Key or OAuth Bearer
0. list_directory      {}                                     # who's bookable (facets: categories, communes)
1. search_offers        {"query": "padel"}
2. search_availability  {"variant_id", "start", "end"}          # ISO 8601 with offset
3. quote_engagement     {"variant_id", "start", "end", "quantity", "idempotency_key"}
4. create_engagement    {"engagement_id", "engagement_secret",
                         "customer": {"name", "email"},
                         "consent": {"mandate": true, "terms_accepted": true,
                                     "early_execution": true}}   # if < 14 days
5. get_engagement / cancel_engagement

REST — la même surface, en curl

Miroir exact de la MI (mêmes moteurs, mêmes erreurs typées). Clé de test instantanée, sans humain dans la boucle — lecture sur tout le réseau, réservation sur la sandbox uniquement :

# 1. Votre clé de test, en 5 secondes
curl -X POST https://resadock.com/v1/test-keys -H "Content-Type: application/json"   -d '{"name": "mon-agent"}'

# 2. Cherchez, devisez, réservez (sandbox « Coach Léa »)
curl -X POST https://resadock.com/v1/search -H "Authorization: Bearer $KEY"   -H "Content-Type: application/json" -d '{"query": "coach"}'

GET  /v1/offers/{offer_id}            POST /v1/availability
POST /v1/quotes                       POST /v1/engagements
GET  /v1/engagements/{id}?secret=     POST /v1/engagements/{id}/cancel
# Index complet : GET /v1 — clé de production : agents@resadock.com

Exemples de prompts (pour vos utilisateurs)

  1. « Trouve-moi un cours de padel demain matin et réserve 10h si c'est libre. »
  2. « Est-ce qu'il reste 2 vélos à louer cet après-midi de 14h à 17h ? »
  3. « Réserve une journée en mer avec la formule traiteur pour 6 et un gâteau d'anniversaire. »

Conditions · Confidentialité · agents@resadock.com