Aller au contenu
cleat.

Pour les agents IA

Un numéro de téléphone que votre agent peut vraiment lire

Un agent qui travaille dans un compte qui est déjà le vôtre se heurte au même mur qu'une personne : un code à six chiffres envoyé par SMS. Cleat lui donne une vraie ligne mobile américaine et un serveur MCP pour lire cette ligne. Le code arrive directement dans le contexte de l'agent, pas sur le téléphone de quelqu'un.

Pointez votre client dessus

Le serveur parle le Model Context Protocol sur HTTP. Ajoutez-le à n'importe quel client MCP capable d'envoyer un en-tête Authorization. Créez la clé dans les réglages de votre espace de travail, où elle s'affiche une seule fois.

mcp.json
{
  "mcpServers": {
    "cleat": {
      "type": "http",
      "url": "https://cleat.so/api/mcp",
      "headers": { "Authorization": "Bearer clt_your_api_key" }
    }
  }
}

La clé décide de ce que l'agent peut atteindre. Telle quelle : les lignes de son propre espace de travail, et rien d'autre. Restreignez-la à sa création — à des lignes nommées et à une date d'expiration — et l'agent n'atteint que la ligne voulue : tout le reste répond 404, et passé la date la clé répond 401 avec code key_expired. Révoquez-la et l'agent est bloqué dès l'appel suivant. Aucun mot de passe ni aucune session n'est touché.

Les quatre outils

OutilCe qu'il fait
list_linesLes numéros de l'espace de travail, du plus récent au plus ancien. Commencez ici : tous les autres outils y prennent un lineId.
list_messagesLes SMS reçus par une ligne, du plus récent au plus ancien. limit va de 1 à 200 ; 20 par défaut.
latest_codeLe code de vérification le plus récent d'une ligne, ou found: false si aucun n'est arrivé. Les from et service facultatifs le limitent à un expéditeur.
wait_for_codeAttend le *prochain* code et le renvoie. Jusqu'à 55 secondes ; 30 par défaut. Accepte les mêmes from et service facultatifs, et continue d'attendre si un code ne correspond pas.
Tout ce que la clé ne peut pas atteindre revient sous forme d'erreur d'outil lisible, pas de plantage, pour que le modèle puisse en tenir compte.

Attendre vaut mieux qu'interroger en boucle

wait_for_code ne compte que les SMS arrivés après le début de l'appel. Un code resté d'une connexion précédente n'est jamais pris pour celui-ci. Appelez-le juste avant l'étape qui déclenche le SMS, puis envoyez le formulaire. L'outil écoute déjà.

Attendre le prochain code
curl https://cleat.so/api/mcp \
  -H "Authorization: Bearer $CLEAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "wait_for_code",
      "arguments": { "lineId": "8f14e45f-ceea-4b6b-9d3c-2a1f0e7c5b10", "timeoutSeconds": 45 }
    }
  }'
La réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": {
      "found": true,
      "id": "c9a7e0d2-5b1f-4e8a-9f3c-6d2b1a0e4f77",
      "line": { "id": "8f14e45f-ceea-4b6b-9d3c-2a1f0e7c5b10", "phone": "13055550100", "label": "Agent line" },
      "from": "55512",
      "body": "Your verification code is 704 118",
      "code": "704118",
      "receivedAt": "2026-09-11T10:02:41.000Z",
      "service": null,
      "contact": null,
      "label": null
    },
    "content": [{ "type": "text", "text": "…the same JSON again, for the model to read" }]
  }
}

Si rien n'arrive à temps, il renvoie found: false avec timedOut: true : un résultat ordinaire que l'agent peut réessayer, pas une erreur.

Pourquoi le numéro doit survivre à l'inscription

La plupart des numéros vendus pour les agents sont loués à la minute ou à la semaine, puis remis dans un pool. Cela convient à une inscription et échoue pour un compte que l'agent garde. Même ceux qui vendent le jetable le reconnaissent : “If your agent creates an account and keeps operating it, a one-time number is a problem, because platforms periodically re-verify, and if the number is gone the account locks out”, autrement dit si votre agent crée un compte et continue de l'utiliser, un numéro à usage unique pose problème, car les plateformes vérifient à nouveau périodiquement et, si le numéro a disparu, le compte se verrouille (GeeLark, 16 septembre 2026).

Une ligne Cleat est du genre durable par construction. Un numéro sur un abonnement, sans compte à rebours de location, et aucun endpoint ne le fait tourner. Une nouvelle vérification trois mois plus tard arrive sur la même ligne, et un webhook signé peut réveiller un processus qui ne tourne pas. Ce que Cleat ne vend pas, c'est l'autre moitié de ce discours : des lots de numéros neufs pour ouvrir des comptes en volume. Une ligne par abonnement, un titulaire vérifié, pour les comptes auxquels ce titulaire a droit.

Ce que c'est, et ce que ce n'est pas

  • Réception seule. Cleat Line reçoit les SMS. Elle ne peut pas en envoyer, et aucun outil n'essaie. Elle ne peut pas non plus passer ni décrocher un appel.
  • Un code dicté par téléphone arrive aussi. Quand un service dicte un code lors d'un appel automatique, l'appel est transcrit. La transcription arrive comme un message ordinaire, code extrait, avec le numéro appelant dans from. Aucun champ ne le signale comme un appel.
  • Un numéro par abonnement. Chaque ligne coûte 24,99 $US par mois. Cleat n'est pas un stock de numéros jetables, et aucun endpoint ne les fait tourner.
  • Chaque ligne a un titulaire humain vérifié. L'identité est contrôlée une fois, pour le compte, avant qu'un numéro soit attribué. Un agent ne peut pas s'inscrire tout seul.
  • 120 requêtes par minute et par clé. Un wait_for_code en attente ne consomme pas de requêtes.
  • Une ligne suspendue ne peut pas être lue. Si un abonnement expire, le numéro est conservé et ses SMS restent verrouillés jusqu'à sa reprise.

Si vous préférez ne pas passer par MCP

Les mêmes données forment une API REST classique avec des webhooks signés. Elle convient mieux à un service de longue durée qu'à la session d'un agent : voyez Cleat pour les développeurs. Pour partager les codes avec des personnes plutôt qu'avec des programmes, il y a la boîte de réception d'équipe. Une vraie ligne mobile reçoit des codes qu'un numéro internet ne reçoit jamais : voyez qu'est-ce qu'un numéro non VoIP et Google Voice et les codes de vérification.

Questions

Quels clients fonctionnent ?

Tout client MCP capable d'atteindre un serveur HTTP et de définir un en-tête Authorization. Le serveur répond en JSON-RPC sur POST et renvoie du JSON ordinaire. Il n'y a pas de SSE à configurer.

L'agent peut-il envoyer un SMS ?

Non. Cleat Line est en réception seule, et aucun outil n'envoie.

Et si le service dicte le code au téléphone au lieu de l'envoyer par SMS ?

Il arrive quand même. L'appel est transcrit et stocké comme un SMS : latest_code et wait_for_code en renvoient le code, et list_messages affiche le numéro appelant dans from. L'agent ne peut ni décrocher ni rappeler.

Puis-je donner son propre numéro à chaque agent ?

Oui. Ajoutez une ligne par agent dans le même espace de travail, chacune avec son abonnement à 24,99 $US et sa propre clé. Restreignez ensuite chaque clé à cette seule ligne : l'agent atteint sa ligne et rien d'autre, et une ligne hors de la portée répond 404, comme celle d'un autre espace de travail. Une clé sans restriction voit bien toutes les lignes de son espace : restreignez celles que vous confiez.

Que se passe-t-il si deux agents attendent sur la même ligne ?

Les deux reçoivent le prochain code. La ligne est une boîte de réception partagée, pas une file d'attente : donnez leur propre ligne aux agents qui ne doivent pas se gêner.

Un agent doit-il vérifier son identité ?

C'est le compte qui le fait, une fois, et c'est une personne qui s'en charge. Les agents travaillent avec la clé d'un compte vérifié ; ils ne s'inscrivent jamais d'eux-mêmes.

Existe-t-il une offre gratuite ?

Non. Une ligne coûte 24,99 $US par mois, résiliable à tout moment.

Sources

Les informations sur les autres entreprises viennent de leurs propres pages, vérifiées en septembre 2026.

  1. GeeLark, how to give your AI agent a phone number https://www.geelark.com/blog/how-to-give-your-ai-agent-a-phone-number

Prenez une ligne que votre agent peut lire.

24,99 $US par mois · résiliable à tout moment

  • Chaque titulaire vérifié
  • SMS privés pour votre équipe
  • Résiliable à tout moment