Saltar al contenido
cleat.

Para agentes de IA

Un número de teléfono que tu agente sí puede leer

Un agente que trabaja en una cuenta que ya es tuya 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 de celular real de Estados Unidos y un servidor MCP para leerla. El código entra directo al contexto del agente, no al celular 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 API key se crea en los Ajustes de tu espacio de trabajo, donde se muestra una sola vez.

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

La API key decide hasta dónde llega el agente. Sin límites, eso son las líneas de su propio espacio de trabajo y nada más. Limítala al crearla —a líneas concretas y a una fecha en la que deja de servir— y el agente solo llega a la línea que querías: cualquier otra responde 404, y pasada esa fecha la clave responde 401 con code key_expired. Revócala y el agente queda fuera en la siguiente llamada. No afecta la contraseña ni la sesión de nadie.

Las cuatro herramientas

HerramientaQué hace
list_linesLos 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_messagesLos SMS que recibió una línea, del más nuevo al más viejo. limit va de 1 a 200; 20 por defecto.
latest_codeEl código de verificación más reciente de una línea, o found: false si no ha llegado ninguno. Los opcionales from y service lo limitan a un remitente.
wait_for_codeEspera el *siguiente* código y lo devuelve. Hasta 55 segundos; 30 por defecto. Acepta los mismos from y service opcionales, y sigue esperando si llega un código que no encaja.
Todo lo que la API key no alcanza vuelve como un error legible de la herramienta, no como una caída, así el modelo puede actuar en consecuencia.

Esperar es mejor que preguntar en bucle

wait_for_code solo cuenta los SMS que llegan después de que empieza la llamada. 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.

Esperar el siguiente código
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 respuesta
{
  "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 no llega nada a tiempo, devuelve found: false con timedOut: true: un resultado normal que el agente puede reintentar, no un error.

Por qué el número tiene que durar más que el registro

Casi todos los números que se venden para agentes se alquilan por minutos o por semanas y luego vuelven a un fondo común. Eso sirve para un registro y falla para una cuenta que el agente conserva. Incluso quienes venden los desechables lo admiten: “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”, es decir, si el agente crea una cuenta y la sigue usando, un número de un solo uso es un problema, porque las plataformas vuelven a pedir verificación cada cierto tiempo y, si el número ya no está, la cuenta se bloquea (GeeLark, 16 de septiembre de 2026).

Una línea Cleat es de las duraderas por diseño. Un número con suscripción, sin reloj de alquiler y sin ningún endpoint que lo rote. Una revalidación tres meses después llega a la misma línea, y un webhook firmado puede despertar un proceso que no esté corriendo. Lo que Cleat no vende es la otra mitad de ese discurso: lotes de números nuevos para registrar cuentas en volumen. Una línea por suscripción, un dueño verificado, para las cuentas que ese dueño tiene derecho a tener.

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. 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.
  • 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 API key. Un wait_for_code que 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. Le queda mejor a un servicio de larga vida que a la sesión de un agente: ve Cleat para desarrolladores. Para compartir códigos con personas en vez de programas, usa la bandeja del equipo. Una línea de celular 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.

¿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 se guarda como un SMS, así que latest_code y wait_for_code devuelven el código y list_messages muestra el número que llamó en from. 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 su propia API key. Después limita cada clave a esa única línea: así el agente llega a su línea y a nada más, y una línea fuera del alcance responde 404, igual que la de otro espacio de trabajo. Una clave sin límites sí ve todas las líneas de su espacio, así que limita las que reparten.

¿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 API key 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.

Fuentes

Los datos sobre otras empresas vienen de sus propias páginas, revisadas en septiembre de 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

Ten una línea que tu agente pueda leer.

USD 24.99 al mes · cancela cuando quieras

  • Cada dueño con identidad verificada
  • SMS privados para tu equipo
  • Cancela cuando quieras