Para agentes de IA
Um número de telefone que seu agente consegue mesmo ler
Um agente que trabalha numa conta que já é sua 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. O código vai direto para o contexto do agente, não 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. Sem limite, são as linhas do próprio espaço de trabalho e nada além disso. Limite a chave na criação — a linhas específicas e a uma data em que ela deixa de valer — e o agente chega só na linha que você quis: qualquer outra responde 404, e depois da data a chave responde 401 com code key_expired. Revogue a chave e o agente fica de fora na chamada seguinte. Isso não mexe 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. limit vai de 1 a 200; 20 por padrão. |
latest_code | O código de verificação mais recente de uma linha, ou found: false se nenhum chegou. Os opcionais from e service limitam a um remetente. |
wait_for_code | Espera o *próximo* código e devolve. Até 55 segundos; 30 por padrão. Aceita os mesmos from e service opcionais e continua esperando se chegar um código que não encaixa. |
Esperar é melhor que ficar consultando
O wait_for_code só conta os SMS que chegam depois que a chamada começa. 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,
"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" }]
}
}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.
Por que o número precisa durar mais que o cadastro
Quase todo número vendido para agentes é alugado por minuto ou por semana e depois volta para um bolo comum. Isso serve para um cadastro e falha para uma conta que o agente mantém. Até quem vende os descartáveis admite: “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”, ou seja, se o agente cria uma conta e continua operando, um número de uso único é um problema, porque as plataformas pedem verificação de novo de tempos em tempos e, se o número sumiu, a conta trava (GeeLark, 16 de setembro de 2026).
Uma linha Cleat é do tipo duradouro por construção. Um número numa assinatura, sem relógio de aluguel e sem nenhum endpoint que o rotacione. Uma nova verificação três meses depois cai na mesma linha, e um webhook assinado pode acordar um processo que não está rodando. O que a Cleat não vende é a outra metade desse discurso: lotes de números novos para abrir contas em volume. Uma linha por assinatura, um dono verificado, para as contas que esse dono tem direito de ter.
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. 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. - 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. Ela cai melhor para um serviço de vida longa do que para a sessão de um agente: veja a Cleat para desenvolvedores. Para compartilhar códigos com pessoas em vez de programas, use a caixa de entrada do time. 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.
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 guardada como um SMS, então latest_code e wait_for_code devolvem o código dela e list_messages mostra o número que ligou em from. 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 sua própria chave. Depois limite cada chave àquela única linha: o agente alcança a linha dele e mais nada, e uma linha fora do escopo responde 404, igual à de outro espaço de trabalho. Uma chave sem escopo vê todas as linhas do espaço, então limite as que você entrega.
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.
Fontes
Os dados sobre outras empresas vêm das páginas delas, conferidas em setembro de 2026.
- GeeLark, how to give your AI agent a phone number https://www.geelark.com/blog/how-to-give-your-ai-agent-a-phone-number