Para agentes de IA
Un número de teléfono que tu agente sí puede leer
Un agente que se registra en servicios choca con el mismo muro que una persona: un código de seis dígitos que llega por SMS. Cleat le da una línea móvil real de EE. UU. y un servidor MCP para leerla, así el código entra directo al contexto del agente en vez de al teléfono de alguien.
Apunta tu cliente hacia él
El servidor habla Model Context Protocol sobre HTTP. Agrégalo a cualquier cliente MCP que pueda mandar un encabezado Authorization. La llave se crea en la configuración de tu espacio de trabajo, donde se muestra una sola vez.
{
"mcpServers": {
"cleat": {
"type": "http",
"url": "https://cleat.so/api/mcp",
"headers": { "Authorization": "Bearer clt_your_api_key" }
}
}
}La llave decide hasta dónde llega el agente: las líneas de su propio espacio de trabajo y nada más. Revócala y el agente queda fuera en la siguiente llamada, sin afectar la contraseña ni la sesión de nadie.
Las cuatro herramientas
| Herramienta | Qué hace |
|---|---|
list_lines | Los números del espacio de trabajo, del más nuevo al más viejo. Empieza aquí: todas las demás herramientas toman de ahí un lineId. |
list_messages | Los SMS que recibió una línea, del más nuevo al más viejo. Hasta 200. |
latest_code | El código de verificación más reciente de una línea, o found: false si no ha llegado ninguno. |
wait_for_code | Espera el *siguiente* código y lo devuelve. Hasta 55 segundos; 30 por defecto. |
Esperar es mejor que preguntar en bucle
wait_for_code solo cuenta los SMS que llegan después de que empieza la llamada, así que un código que sobró de un acceso anterior nunca se confunde con este. Llámala justo antes del paso que dispara el SMS y luego manda el formulario: la herramienta ya está escuchando.
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 no llega nada a tiempo, devuelve found: false con timedOut: true: un resultado normal que el agente puede reintentar, no un error.
Qué es esto y qué no
- Solo recibe. Cleat Line recibe SMS. No puede mandarlos, y no hay ninguna herramienta que lo intente. Tampoco puede hacer ni contestar una llamada.
- Un código dictado por teléfono también llega. Cuando un servicio dicta el código en una llamada automática, la llamada se transcribe y la transcripción llega como un mensaje más, con el código extraído y el número que llamó en
from. Ningún campo la marca como llamada, así que el agente la trata como cualquier otro SMS. - Un número por suscripción. Cada línea cuesta USD 24.99 al mes. Cleat no es un montón de números desechables, y no hay un endpoint que los rote.
- Cada línea tiene un dueño humano verificado. La identidad se revisa una vez, para la cuenta, antes de entregar cualquier número: un agente no puede registrarse solo.
- 120 peticiones por minuto por llave. Un
wait_for_codeque está esperando no gasta peticiones. - Una línea en pausa no se puede leer. Si la suscripción se vence, el número se guarda y sus SMS quedan bloqueados hasta que se reanude.
Si prefieres no usar MCP
Los mismos datos están en una API REST común con webhooks firmados, que le queda mejor a un servicio de larga vida que a la sesión de un agente: ve Cleat para desarrolladores. Compartir códigos con personas en vez de programas es la bandeja del equipo. Sobre por qué una línea móvil real recibe códigos que un número de internet nunca recibe, ve qué es un número no VoIP y Google Voice y los códigos de verificación.
Preguntas
¿Qué clientes funcionan?
Cualquier cliente MCP que pueda alcanzar un servidor HTTP y poner un encabezado Authorization. El servidor responde JSON-RPC por POST y devuelve JSON común: no hay SSE que configurar, porque cada herramienta devuelve un solo resultado.
¿El agente puede mandar un SMS?
No. Cleat Line solo recibe, y ninguna herramienta manda.
¿Y si el servicio dicta el código por teléfono en vez de mandarlo por SMS?
Llega igual. La llamada se transcribe y la transcripción se guarda como un SMS, así que latest_code y wait_for_code devuelven el código, y list_messages la muestra con el número que llamó en from. Nada la distingue de un SMS, y el agente no puede contestar ni devolver la llamada.
¿Puedo darle a cada agente su propio número?
Sí: agrega una línea por agente en el mismo espacio de trabajo, cada una con su suscripción de USD 24.99, y dale una llave a cada agente. Toda llave ve todas las líneas de su espacio de trabajo, así que usa espacios separados si los agentes no deben ver los SMS de los demás.
¿Qué pasa si dos agentes esperan en la misma línea?
A los dos se les avisa del siguiente código. La línea es una bandeja compartida, no una fila, así que dale su propia línea a cada agente que no deba estorbar a otro.
¿El agente tiene que verificar su identidad?
La cuenta sí, una vez, y lo hace una persona. Los agentes trabajan con la llave de una cuenta verificada; nunca se registran por su cuenta.
¿Hay plan gratis?
No. Una línea cuesta USD 24.99 al mes, y cancelas cuando quieras.