OneConnector

Documentation

OneConnector rend votre site joignable par les IA. Une IA qui aide quelqu'un (Claude, ChatGPT, Le Chat de Mistral, ou toute IA compatible MCP) peut consulter vos disponibilités ou votre catalogue, et vous envoyer un message, une demande de devis, une réservation ou une commande. Les demandes arrivent dans votre espace et par e-mail, ou sur votre webhook (Make, Zapier, n8n, votre serveur).

1. Comment ça marche

IA du client  ──MCP──▶  OneConnector  ──▶  votre espace et votre e-mail
                              │          ou votre webhook signé (Make, serveur…)
                              ◀── réponse à champs fermés ──┘

2. Mettre en place

  1. Connectez-vous sur oneconnector.dev avec votre e-mail. Le lien reçu vaut 15 minutes et ne sert qu'une fois. Pas de mot de passe.
  2. Ajoutez votre site. Le webhook est facultatif : sans lui, les demandes arrivent dans votre espace et par e-mail.
  3. Collez les deux lignes dans le pied de page de votre site (elles doivent être sur la page d'accueil) :
    <a href="https://oneconnector.dev/b/mondomaine.fr" data-oc-badge>Joignable par les IA via OneConnector</a>
    <script src="https://oneconnector.dev/w.js" data-oc="oc_xxxxxxxx"></script>
    Le lien, lisible sans JavaScript, dit aux IA qui lisent votre site qu'elles peuvent vous joindre, et mène à votre page publique (voir plus bas). Le script prouve que le site est à vous et transforme le lien en pastille « Joignable par les IA ». Le lien seul ne prouve rien : une zone de commentaires pourrait le laisser passer. Options : data-pos="bottom-right" ou "inline" pour la déplacer (bas gauche par défaut), data-lang="fr" ou "en" pour forcer sa langue (par défaut, celle de la page). Sans pastille, une balise suffit : <meta name="oneconnector" content="oc_xxxxxxxx">.
  4. Cliquez sur « Vérifier ». OneConnector lit votre page d'accueil en HTML brut, sans exécuter de JavaScript : la ligne doit être présente dans le code envoyé par votre serveur, comme une vraie balise. Recopiée dans un commentaire, dans un texte ou dans l'attribut d'un autre élément, elle ne compte pas.
  5. Testez votre webhook avec « Envoyer un exemple » : vous recevez un JSON d'exemple du type choisi, marqué "test": true, pour que Make apprenne sa structure.

Règles de vérification

Page publique

Une fois le site vérifié, OneConnector publie oneconnector.dev/b/votre-domaine : une page en HTML simple, lisible par les IA et les moteurs de recherche, avec votre présentation, ce qu'on peut vous demander et la marche à suivre pour vous joindre depuis une IA. Votre catalogue n'y figure pas : il reste consultable par les IA via le connecteur. Elle figure dans le plan du site, et les moteurs compatibles IndexNow (dont Bing) sont prévenus quand elle change. L'onglet « Installation » affiche ses visites sur 30 jours par type de visiteur (ChatGPT, Claude, Perplexity, moteurs, humains), sans adresse IP. Vous pouvez la retirer à tout moment.

Identité affichée

À chaque vérification, OneConnector reprend de votre page d'accueil votre nom (og:site_name, sinon le titre de la page), votre couleur (<meta name="theme-color">) et votre icône (PNG, JPEG, WebP, GIF ou ICO, pas de SVG, 64 ko au plus). Elles s'affichent en tête des fiches que voit le client.

3. Types de demandes

Dans les réglages de votre site, vous cochez ce que les IA peuvent faire :

Type Famille Ce que fait l'IA Webhook
availability consultation consulte vos créneaux libres, sur 14 jours au plus requis
catalog consultation cherche dans votre catalogue facultatif (catalogue hébergé, voir 4)
message demande vous écrit facultatif
quote demande vous demande un devis facultatif
booking demande demande une réservation, sur 1 à 3 créneaux facultatif
order demande passe une commande d'articles de votre catalogue facultatif

Consultations : aucune donnée du client n'est envoyée, OneConnector interroge votre webhook en direct (ou votre catalogue hébergé). Demandes : elles partent avec les coordonnées du client, après sa confirmation.

4. Sans webhook : votre espace

Chaque demande arrive dans « Demandes reçues » et par e-mail. Répondre à l'e-mail écrit directement au client. Dans l'espace, vous répondez avec les quatre champs fermés (voir 6) : accepter, refuser ou proposer autre chose, avec un créneau, un prix et une référence. L'IA du client lit votre réponse quand on lui demande où en est la demande.

Présentation

Quand une IA vous trouve, elle lit votre nom et une courte description. Par défaut, ceux de votre page d'accueil (og:site_name ou le titre, og:description ou <meta name="description">), relus à chaque vérification. Vous pouvez écrire les vôtres dans l'onglet « Réglages » : ils remplacent ceux du site, et un champ vidé fait revenir à celui du site. Nom en 60 caractères, description en 300, sur une ligne, sans lien ni autre site que le vôtre. L'IA reçoit ce texte comme une donnée fournie par le commerce, jamais comme une instruction.

Catalogue hébergé

Sans webhook, OneConnector peut aussi héberger votre catalogue : produits ou prestations, que les IA consultent et commandent par leur référence. Onglet « Catalogue » de votre site :

Ce que lisent les IA reste borné : nom (80 caractères), prix en euros, disponibilité, durée et lien vers une page de votre site (les liens vers d'autres sites sont retirés). Les descriptions, catégories et marques servent seulement à la recherche. 2 000 articles au plus. S'il est rempli, le catalogue hébergé prime sur le webhook. Les disponibilités, elles, demandent toujours un webhook.

5. Ce que reçoit votre webhook

Un POST en JSON (Content-Type: application/json), avec trois en-têtes :

En-tête Contenu
x-oneconnector-business votre identifiant oc_…
x-oneconnector-timestamp heure d'envoi, en secondes depuis 1970
x-oneconnector-signature sha256=…, voir 9

Champs communs

Champ Type Description
v nombre version du contrat, 1
id texte req_… pour une demande, rd_… pour une consultation
kind texte le type (voir 3)
test booléen true pour un exemple envoyé depuis l'espace, absent sinon
sent_at date ISO heure d'envoi, en UTC
timezone texte votre fuseau horaire (ex. Europe/Paris)

Demandes (message, quote, booking, order)

Champ Types Description
message tous le besoin du client, 600 caractères au plus ; obligatoire pour message et quote
service booking prestation souhaitée, 120 caractères au plus
slots booking 1 à 3 créneaux souhaités, dans votre heure locale (ex. 2026-10-18T10:00)
slots_utc booking les mêmes en UTC (ce qu'attendent Calendly, Cal.com, Google Agenda)
party_size booking nombre de personnes, de 1 à 50
address quote adresse ou commune concernée, 200 caractères au plus
deadline quote date souhaitée, AAAA-MM-JJ
items order 1 à 20 articles { "sku", "qty" }, quantités de 1 à 99
pickup, pickup_utc order retrait souhaité, en heure locale et en UTC
fields tous réponses à vos questions (voir 8)
contact tous { "name", "email", "phone" }, saisis par le client ; e-mail ou téléphone toujours présent
answer_url tous adresse pour répondre plus tard (voir 7)

Un champ sans valeur est absent du JSON. Exemple de réservation :

{
  "v": 1,
  "id": "req_8kq2m7xw4p",
  "kind": "booking",
  "sent_at": "2026-10-14T16:02:11.482Z",
  "timezone": "Europe/Paris",
  "message": "Coupe et barbe si possible.",
  "service": "Coupe homme",
  "slots": ["2026-10-18T10:00", "2026-10-18T11:30"],
  "slots_utc": ["2026-10-18T08:00:00.000Z", "2026-10-18T09:30:00.000Z"],
  "party_size": 1,
  "fields": [{ "key": "q1", "label": "Allergies", "value": "aucune" }],
  "contact": { "name": "Julien Martin", "email": "julien@example.com" },
  "answer_url": "https://oneconnector.dev/requests/req_8kq2m7xw4p/answer"
}

Consultations

Type Champs
availability from et to (AAAA-MM-JJ, 14 jours au plus), service si précisé
catalog q (ce que cherche le client, 120 caractères au plus), limit (de 1 à 20, 10 par défaut)

6. Ce que votre webhook répond

Répondez en moins de 10 secondes, avec un code HTTP 2xx et du JSON. Les redirections ne sont pas suivies. Un délai dépassé ou un code d'erreur vaut « non transmise », et l'IA en est informée. Tout champ inconnu ou invalide est ignoré : il n'est jamais transmis à l'IA.

Pour une demande

Champ Valeurs
status received (par défaut), accepted, declined ou proposed (contre-proposition)
slot un créneau, date ISO (2026-10-18T14:00 en heure locale, ou avec décalage)
price_eur un nombre, de 0 à 1 000 000
reference 1 à 24 lettres, chiffres ou tirets
{ "status": "proposed", "slot": "2026-10-18T14:00", "price_eur": 35, "reference": "A7K2" }

Pour availability

{ "slots": ["2026-10-18T10:00", "2026-10-18T11:00", "2026-10-18T14:00"] }

Dates ISO, en heure locale ou avec décalage. Les valeurs invalides sont jetées, les doublons retirés, le tout trié, 50 créneaux au plus.

Pour catalog

{ "items": [
  { "sku": "PAIN-500", "name": "Pain de campagne 500 g", "price_eur": 3.2, "in_stock": true },
  { "sku": "ATELIER", "name": "Atelier pâtisserie", "price_eur": 45, "duration_min": 120, "starts_at": "2026-10-25T14:00" }
] }
Champ Règle
sku obligatoire, 1 à 64 lettres, chiffres, ., _ ou - ; c'est lui qui sert à commander
name obligatoire, ramené sur une ligne et coupé à 80 caractères ; un nom qui contient un lien fait jeter l'article
price_eur, in_stock facultatifs : nombre, booléen
url facultatif : page du produit, gardée seulement si elle est sur votre domaine vérifié (https)
duration_min, starts_at facultatifs : minutes (1 à 1440), date ISO (ateliers, séances)

7. Répondre plus tard

Si vous ne savez pas répondre tout de suite, renvoyez { "status": "received" }, puis répondez quand vous le pouvez, depuis votre espace ou par un appel à answer_url avec votre secret et le même JSON fermé :

curl -X POST https://oneconnector.dev/requests/req_8kq2m7xw4p/answer \
  -H "Authorization: Bearer VOTRE_SECRET" \
  -H "Content-Type: application/json" \
  -d '{ "status": "accepted", "slot": "2026-10-18T10:00", "reference": "B-12" }'

Votre secret est visible dans votre espace (réglages du site, « Afficher »). L'IA du client lit la réponse quand il lui demande où en est sa demande.

8. Questions au client

Dans les réglages de votre site, « Questions au client » : jusqu'à 3 questions auxquelles le client répond lui-même dans la fiche, avant d'envoyer sa demande. Exemples : le modèle du véhicule pour un garage, le nombre de parts pour une pâtisserie, un budget pour un artisan.

Les réponses arrivent dans fields, dans l'ordre de vos questions, avec une valeur typée (un nombre pour une question « nombre ») :

"fields": [
  { "key": "q1", "label": "Nombre de parts", "value": 12 },
  { "key": "q2", "label": "Parfum", "value": "Chocolat" }
]

Elles figurent aussi dans l'e-mail d'avis et dans votre espace. Une question sans réponse (facultative) est absente.

9. Vérifier la signature

La signature vaut sha256= suivi du HMAC-SHA256 en hexadécimal de horodatage + "." + corps brut, avec votre secret comme clé. Vérifiez-la sur le corps exact reçu, avant de le transformer, et refusez un horodatage de plus de 5 minutes. En Node.js :

import { createHmac, timingSafeEqual } from "node:crypto";

function verify(secret, headers, rawBody) {
  const ts = headers["x-oneconnector-timestamp"];
  const given = String(headers["x-oneconnector-signature"] ?? "").replace(/^sha256=/, "");
  const expected = createHmac("sha256", secret).update(`${ts}.${rawBody}`).digest("hex");
  const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300;
  return fresh && given.length === expected.length && timingSafeEqual(Buffer.from(given), Buffer.from(expected));
}

10. Recettes Make

Toujours Webhooks → Custom webhook en entrée (aucune connexion à créer), un Router sur kind, et Webhooks → Webhook response en sortie, avec l'en-tête Content-Type: application/json.

Après un changement de votre site (types, questions), cliquez sur « Envoyer un exemple » puis, dans Make, sur « Redetermine data structure ».

11. API

Tout ce que fait l'espace se fait aussi par API, avec l'identifiant et le secret d'un site :

Appel Accès Rôle
POST /register libre inscrire un site sans compte (domain, webhook_url obligatoire, kinds, timezone) ; renvoie l'identifiant, le secret et la ligne à poser
PATCH /business/:id secret modifier webhook_url, kinds, timezone, questions, name, description (vide : ceux du site)
DELETE /business/:id secret supprimer l'inscription et ses demandes
POST /verify/:id secret ou session vérifier la ligne sur la page d'accueil
GET /status/:id libre domaine, types, fuseau, date de vérification
POST /test/:id?kind=… secret ou session envoyer un exemple au webhook
POST /requests/:id/answer secret répondre plus tard (voir 7)
PUT /business/:id/catalog secret remplacer le catalogue hébergé : { "items": [{ "sku", "name", "price_eur", "in_stock", "url", "duration_min", "description" }] } ou { "text": "…" } (tableau)

Le secret se passe dans l'en-tête Authorization: Bearer … ; depuis l'espace, votre session suffit. Un site inscrit par API se rattache à votre compte dans l'espace (« Rattacher un site »).

12. Le connecteur

Adresse du connecteur : https://oneconnector.dev/mcp. C'est un serveur MCP standard (Streamable HTTP, sans authentification) : il fonctionne avec toute application IA compatible MCP, dont Claude, ChatGPT et Le Chat de Mistral. Dans les réglages des connecteurs de votre application, ajoutez un connecteur MCP personnalisé avec cette adresse. Selon l'application, il faut parfois une offre payante, un mode développeur ou un compte administrateur. Outils exposés :

Outil Rôle
resolve le site est-il joignable, que peut-on y consulter et lui demander, et comment le commerce se présente (nom, description)
get_availability créneaux libres, avec une grille cliquable
search_catalog recherche dans le catalogue
prepare_request prépare la demande et l'affiche en fiche de confirmation ; n'envoie rien
send_request envoie la demande confirmée ; un même brouillon ne part jamais deux fois
get_request état d'une demande, y compris une réponse arrivée plus tard

Les fiches s'affichent dans les applications compatibles MCP Apps (Claude, ChatGPT, VS Code…). Ailleurs, l'IA travaille en texte : elle demande les coordonnées et les réponses dans la conversation, avec le même contrôle.

Documentation

OneConnector makes your website reachable by AI. An AI helping someone (Claude, ChatGPT, Mistral's Le Chat, or any MCP-compatible AI) can look up your availability or your catalog, and send you a message, a quote request, a booking request or an order. Requests arrive in your account and by email, or on your webhook (Make, Zapier, n8n, your own server).

1. How it works

Customer AI   ──MCP──▶  OneConnector  ──▶  your account and your email
                              │          or your signed webhook (Make, server…)
                              ◀── closed-field reply ──┘

2. Setup

  1. Sign in at oneconnector.dev with your email. The link lasts 15 minutes and works once. No password.
  2. Add your website. The webhook is optional: without one, requests arrive in your account and by email.
  3. Paste the two lines in your site's footer (they must be on the home page):
    <a href="https://oneconnector.dev/b/mydomain.com" data-oc-badge>Reachable by AI through OneConnector</a>
    <script src="https://oneconnector.dev/w.js" data-oc="oc_xxxxxxxx"></script>
    The link, readable without JavaScript, tells AIs reading your site that they can reach you, and leads to your public page (see below). The script proves the site is yours and turns the link into a "Reachable by AI" badge. The link alone proves nothing: a comment section could let it through. Options: data-pos="bottom-right" or "inline" to move it (bottom left by default), data-lang="en" or "fr" to force its language (by default, the page's). Without a badge, a tag is enough: <meta name="oneconnector" content="oc_xxxxxxxx">.
  4. Click "Verify". OneConnector reads your home page as raw HTML, without running JavaScript: the line must be in the code your server sends, as a real tag. Copied into a comment, a text or another element's attribute, it does not count.
  5. Test your webhook with "Send a sample": you receive a sample JSON of the chosen type, marked "test": true, so Make learns its structure.

Verification rules

Public page

Once the site is verified, OneConnector publishes oneconnector.dev/b/your-domain: a plain HTML page, readable by AIs and search engines, with your presentation, what can be asked of you, and how to reach you from an AI. Your catalog is not shown: AIs can still look it up through the connector. It is listed in the sitemap, and IndexNow-compatible search engines (including Bing) are notified when it changes. The "Installation" tab shows its visits over 30 days by type of visitor (ChatGPT, Claude, Perplexity, search engines, humans), without IP addresses. You can remove it at any time.

Displayed identity

At each verification, OneConnector takes your name (og:site_name, otherwise the page title), your color (<meta name="theme-color">) and your icon (PNG, JPEG, WebP, GIF or ICO, no SVG, 64 KB at most) from your home page. They appear at the top of the cards the customer sees.

3. Request types

In your site settings, you tick what AIs can do:

Type Family What the AI does Webhook
availability lookup reads your free slots, over 14 days at most required
catalog lookup searches your catalog optional (hosted catalog, see 4)
message request writes to you optional
quote request asks you for a quote optional
booking request asks for a booking, on 1 to 3 slots optional
order request orders items from your catalog optional

Lookups: no customer data is sent, OneConnector queries your webhook live (or your hosted catalog). Requests: they carry the customer's contact details, after their confirmation.

4. Without a webhook: your account

Every request arrives in "Requests received" and by email. Replying to the email writes straight to the customer. In your account, you reply with the four closed fields (see 6): accept, decline or propose something else, with a slot, a price and a reference. The customer's AI reads your reply when asked about the request.

Presentation

When an AI finds you, it reads your name and a short description. By default, those of your home page (og:site_name or the title, og:description or <meta name="description">), read again at each verification. You can write your own in the "Settings" tab: they replace the site's, and an emptied field goes back to the site's. Name in 60 characters, description in 300, on one line, with no link and no site other than yours. The AI receives this text as data supplied by the business, never as an instruction.

Hosted catalog

Without a webhook, OneConnector can also host your catalog: products or services, which AIs look up and order by their reference. "Catalog" tab of your site:

What AIs read stays bounded: name (80 characters), price in euros, availability, duration and a link to a page of your site (links to other sites are removed). Descriptions, categories and brands are only used for search. 2,000 items at most. When filled, the hosted catalog takes precedence over the webhook. Availability lookups still need a webhook.

5. What your webhook receives

A JSON POST (Content-Type: application/json) with three headers:

Header Content
x-oneconnector-business your oc_… identifier
x-oneconnector-timestamp sending time, in seconds since 1970
x-oneconnector-signature sha256=…, see 9

Common fields

Field Type Description
v number contract version, 1
id text req_… for a request, rd_… for a lookup
kind text the type (see 3)
test boolean true for a sample sent from your account, absent otherwise
sent_at ISO date sending time, in UTC
timezone text your time zone (e.g. Europe/Paris)

Requests (message, quote, booking, order)

Field Types Description
message all the customer's need, 600 characters at most; required for message and quote
service booking requested service, 120 characters at most
slots booking 1 to 3 preferred slots, in your local time (e.g. 2026-10-18T10:00)
slots_utc booking the same in UTC (what Calendly, Cal.com, Google Calendar expect)
party_size booking number of people, 1 to 50
address quote address or town concerned, 200 characters at most
deadline quote desired date, YYYY-MM-DD
items order 1 to 20 items { "sku", "qty" }, quantities 1 to 99
pickup, pickup_utc order desired pickup, in local time and in UTC
fields all answers to your questions (see 8)
contact all { "name", "email", "phone" }, entered by the customer; email or phone always present
answer_url all address to reply later (see 7)

A field without a value is left out of the JSON. Booking example:

{
  "v": 1,
  "id": "req_8kq2m7xw4p",
  "kind": "booking",
  "sent_at": "2026-10-14T16:02:11.482Z",
  "timezone": "Europe/Paris",
  "message": "Haircut and beard if possible.",
  "service": "Men's haircut",
  "slots": ["2026-10-18T10:00", "2026-10-18T11:30"],
  "slots_utc": ["2026-10-18T08:00:00.000Z", "2026-10-18T09:30:00.000Z"],
  "party_size": 1,
  "fields": [{ "key": "q1", "label": "Allergies", "value": "none" }],
  "contact": { "name": "Julien Martin", "email": "julien@example.com" },
  "answer_url": "https://oneconnector.dev/requests/req_8kq2m7xw4p/answer"
}

Lookups

Type Fields
availability from and to (YYYY-MM-DD, 14 days at most), service if given
catalog q (what the customer is looking for, 120 characters at most), limit (1 to 20, 10 by default)

6. What your webhook replies

Reply in under 10 seconds, with a 2xx HTTP code and JSON. Redirects are not followed. A timeout or an error code means "not delivered", and the AI is told. Any unknown or invalid field is ignored: it never reaches the AI.

For a request

Field Values
status received (default), accepted, declined or proposed (counter-proposal)
slot a slot, ISO date (2026-10-18T14:00 in local time, or with an offset)
price_eur a number, 0 to 1,000,000
reference 1 to 24 letters, digits or hyphens
{ "status": "proposed", "slot": "2026-10-18T14:00", "price_eur": 35, "reference": "A7K2" }

For availability

{ "slots": ["2026-10-18T10:00", "2026-10-18T11:00", "2026-10-18T14:00"] }

ISO dates, in local time or with an offset. Invalid values are dropped, duplicates removed, everything sorted, 50 slots at most.

For catalog

{ "items": [
  { "sku": "BREAD-500", "name": "Country bread 500 g", "price_eur": 3.2, "in_stock": true },
  { "sku": "WORKSHOP", "name": "Pastry workshop", "price_eur": 45, "duration_min": 120, "starts_at": "2026-10-25T14:00" }
] }
Field Rule
sku required, 1 to 64 letters, digits, ., _ or -; it is what orders use
name required, reduced to one line and cut at 80 characters; a name containing a link drops the item
price_eur, in_stock optional: number, boolean
url optional: product page, kept only if it is on your verified domain (https)
duration_min, starts_at optional: minutes (1 to 1440), ISO date (workshops, sessions)

7. Replying later

If you cannot reply right away, return { "status": "received" }, then reply when you can, from your account or by calling answer_url with your secret and the same closed JSON:

curl -X POST https://oneconnector.dev/requests/req_8kq2m7xw4p/answer \
  -H "Authorization: Bearer YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{ "status": "accepted", "slot": "2026-10-18T10:00", "reference": "B-12" }'

Your secret is shown in your account (site settings, "Show"). The customer's AI reads the reply when asked about the request.

8. Questions for the customer

In your site settings, "Questions for the customer": up to 3 questions the customer answers themselves in the card, before sending their request. Examples: the vehicle model for a garage, the number of servings for a bakery, a budget for a contractor.

Answers arrive in fields, in the order of your questions, with a typed value (a number for a "number" question):

"fields": [
  { "key": "q1", "label": "Number of servings", "value": 12 },
  { "key": "q2", "label": "Flavor", "value": "Chocolate" }
]

They also appear in the notification email and in your account. An unanswered optional question is left out.

9. Verifying the signature

The signature is sha256= followed by the hexadecimal HMAC-SHA256 of timestamp + "." + raw body, keyed with your secret. Check it on the exact body received, before parsing it, and refuse a timestamp older than 5 minutes. In Node.js:

import { createHmac, timingSafeEqual } from "node:crypto";

function verify(secret, headers, rawBody) {
  const ts = headers["x-oneconnector-timestamp"];
  const given = String(headers["x-oneconnector-signature"] ?? "").replace(/^sha256=/, "");
  const expected = createHmac("sha256", secret).update(`${ts}.${rawBody}`).digest("hex");
  const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300;
  return fresh && given.length === expected.length && timingSafeEqual(Buffer.from(given), Buffer.from(expected));
}

10. Make recipes

Always Webhooks → Custom webhook as the trigger (no connection to create), a Router on kind, and Webhooks → Webhook response at the end, with the Content-Type: application/json header.

After changing your site (types, questions), click "Send a sample", then "Redetermine data structure" in Make.

11. API

Everything the account does can also be done through the API, with a site's identifier and secret:

Call Access Purpose
POST /register open register a site without an account (domain, required webhook_url, kinds, timezone); returns the identifier, the secret and the line to paste
PATCH /business/:id secret change webhook_url, kinds, timezone, questions, name, description (empty: the site's)
DELETE /business/:id secret delete the registration and its requests
POST /verify/:id secret or session check the line on the home page
GET /status/:id open domain, types, time zone, verification date
POST /test/:id?kind=… secret or session send a sample to the webhook
POST /requests/:id/answer secret reply later (see 7)
PUT /business/:id/catalog secret replace the hosted catalog: { "items": [{ "sku", "name", "price_eur", "in_stock", "url", "duration_min", "description" }] } or { "text": "…" } (table)

The secret goes in the Authorization: Bearer … header; from your account, your session is enough. A site registered through the API can be linked to your account from the account page ("Link a site").

12. The connector

Connector address: https://oneconnector.dev/mcp. It is a standard MCP server (Streamable HTTP, no authentication): it works with any MCP-compatible AI app, including Claude, ChatGPT and Mistral's Le Chat. In your app's connector settings, add a custom MCP connector with this address. Depending on the app, this may require a paid plan, a developer mode or an admin account. Tools:

Tool Purpose
resolve is the site reachable, what can be looked up there and asked of it, and how the business presents itself (name, description)
get_availability free slots, with a clickable slot picker
search_catalog catalog search
prepare_request prepares the request and shows it as a confirmation card; sends nothing
send_request sends the confirmed request; a draft is never sent twice
get_request status of a request, including a reply that arrived later

Cards are shown in apps that support MCP Apps (Claude, ChatGPT, VS Code…). Elsewhere, the AI works in text: it asks for the contact details and answers in the conversation, with the same checks.