Pour les agents IA
Un numéro de téléphone que votre agent peut vraiment lire
Un agent qui s'inscrit quelque part 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, si bien que le code arrive directement dans le contexte de l'agent plutôt que 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.
{
"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 : les lignes de son propre espace de travail, et rien d'autre. Révoquez-la et l'agent est bloqué dès l'appel suivant, sans effet sur le mot de passe ou la session de qui que ce soit.
Les quatre outils
| Outil | Ce qu'il fait |
|---|---|
list_lines | Les 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_messages | Les SMS reçus par une ligne, du plus récent au plus ancien. Jusqu'à 200. |
latest_code | Le code de vérification le plus récent d'une ligne, ou found: false si aucun n'est arrivé. |
wait_for_code | Attend le *prochain* code et le renvoie. Jusqu'à 55 secondes ; 30 par défaut. |
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 donc 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à.
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 }
}
}'{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": {
"found": true,
"from": "55512",
"body": "Your verification code is 704 118",
"code": "704118",
"receivedAt": "2026-09-11T10:02:41.000Z"
}
}
}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.
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 et la transcription arrive comme un message ordinaire, code extrait, avec le numéro appelant dans
from. Aucun champ ne le signale comme un appel, donc l'agent le traite comme n'importe quel SMS. - 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_codeen 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, qui convient mieux à un service de longue durée qu'à la session d'un agent : voyez Cleat pour les développeurs. Partager les codes avec des personnes plutôt qu'avec des programmes, c'est la boîte de réception d'équipe. Sur les raisons pour lesquelles 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, puisque chaque outil renvoie un résultat unique.
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 la transcription est stockée comme un SMS : latest_code et wait_for_code en renvoient donc le code, et list_messages l'affiche avec le numéro appelant dans from. Rien ne la distingue d'un SMS, et 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 donnez une clé à chaque agent. Chaque clé voit toutes les lignes de son espace de travail, alors utilisez des espaces séparés si les agents ne doivent pas voir les SMS des autres.
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.