Para agentes de IA
Um número de telefone que seu agente consegue mesmo ler
Um agente que se cadastra em serviços bate na mesma parede que uma pessoa: um código de seis dígitos mandado por SMS. A Cleat dá a ele uma linha móvel americana de verdade e um servidor MCP para ler essa linha, então o código vai direto para o contexto do agente em vez de ir para o celular de alguém.
Aponte seu cliente para ele
O servidor fala Model Context Protocol sobre HTTP. Adicione-o a qualquer cliente MCP que consiga mandar um cabeçalho Authorization. A chave é criada nas configurações do seu espaço de trabalho, onde ela aparece uma única vez.
{
"mcpServers": {
"cleat": {
"type": "http",
"url": "https://cleat.so/api/mcp",
"headers": { "Authorization": "Bearer clt_your_api_key" }
}
}
}A chave decide até onde o agente chega: as linhas do próprio espaço de trabalho e nada além disso. Revogue a chave e o agente fica de fora na chamada seguinte, sem mexer na senha nem na sessão de ninguém.
As quatro ferramentas
| Ferramenta | O que faz |
|---|---|
list_lines | Os números do espaço de trabalho, do mais novo para o mais antigo. Comece por aqui: todas as outras ferramentas pegam daí um lineId. |
list_messages | Os SMS que uma linha recebeu, do mais novo para o mais antigo. Até 200. |
latest_code | O código de verificação mais recente de uma linha, ou found: false se nenhum chegou. |
wait_for_code | Espera o *próximo* código e devolve. Até 55 segundos; 30 por padrão. |
Esperar é melhor que ficar consultando
O wait_for_code só conta os SMS que chegam depois que a chamada começa, então um código que sobrou de um acesso anterior nunca é confundido com este. Chame-o logo antes do passo que dispara o SMS e só então envie o formulário: a ferramenta já está escutando.
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"
}
}
}Se nada chegar a tempo, ele devolve found: false com timedOut: true: um resultado comum que o agente pode tentar de novo, não um erro.
O que isso é, e o que não é
- Só recebe. A Cleat Line recebe SMS. Ela não manda, e não existe ferramenta que tente. Também não faz nem atende ligação.
- Um código ditado por telefone também chega. Quando um serviço dita o código numa ligação automática, a ligação é transcrita e a transcrição chega como uma mensagem comum, com o código extraído e o número que ligou em
from. Nenhum campo marca como ligação, então o agente trata como qualquer outro SMS. - Um número por assinatura. Cada linha custa US$ 24,99 por mês. A Cleat não é um monte de números descartáveis, e não há endpoint que troque os números.
- Toda linha tem um dono humano verificado. A identidade é conferida uma vez, para a conta, antes de qualquer número ser entregue: um agente não consegue se cadastrar sozinho.
- 120 requisições por minuto por chave. Um
wait_for_codeque está esperando não gasta requisições. - Uma linha pausada não pode ser lida. Se a assinatura vence, o número fica reservado e os SMS dele ficam bloqueados até ela voltar.
Se você preferir não usar MCP
Os mesmos dados estão numa API REST comum com webhooks assinados, que cai melhor para um serviço de vida longa do que para a sessão de um agente: veja a Cleat para desenvolvedores. Compartilhar códigos com pessoas em vez de programas é a caixa de entrada do time. Sobre por que uma linha móvel de verdade recebe códigos que um número de internet nunca recebe, veja o que é um número não VoIP e Google Voice e os códigos de verificação.
Perguntas
Quais clientes funcionam?
Qualquer cliente MCP que consiga alcançar um servidor HTTP e definir um cabeçalho Authorization. O servidor responde JSON-RPC por POST e devolve JSON comum: não tem SSE para configurar, porque cada ferramenta devolve um resultado só.
O agente consegue mandar um SMS?
Não. A Cleat Line só recebe, e nenhuma ferramenta manda.
E se o serviço ditar o código numa ligação em vez de mandar SMS?
Ele chega do mesmo jeito. A ligação é transcrita e a transcrição é guardada como um SMS, então latest_code e wait_for_code devolvem o código dela, e list_messages mostra a mensagem com o número que ligou em from. Nada a distingue de um SMS, e o agente não consegue atender nem retornar a ligação.
Dá para dar um número para cada agente?
Dá: adicione uma linha por agente no mesmo espaço de trabalho, cada uma com sua assinatura de US$ 24,99, e dê uma chave para cada agente. Toda chave vê todas as linhas do seu espaço de trabalho, então use espaços separados se os agentes não podem ver os SMS uns dos outros.
O que acontece se dois agentes esperarem na mesma linha?
Os dois são avisados do próximo código. A linha é uma caixa de entrada compartilhada, não uma fila, então dê uma linha própria aos agentes que não podem se atrapalhar.
O agente precisa verificar a identidade dele?
A conta precisa, uma vez, e quem faz isso é uma pessoa. Os agentes trabalham com a chave de uma conta verificada; eles nunca se cadastram sozinhos.
Tem plano gratuito?
Não. Uma linha custa US$ 24,99 por mês, e você cancela quando quiser.