MyOTP.App

Envie e verifique códigos de uso único por SMS, WhatsApp ou Telegram em mais de 190 países. Agentes podem criar uma conta e comprar créditos por conta própria. Hospedado em mcp.myotp.app ou execute @myotp/mcp localmente.

Servidor MCP hospedado

npx add-mcp 'https://mcp.myotp.app/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

@myotp/mcp — Servidor MCP do MyOTP.App

smithery badge

Um servidor Model Context Protocol que expõe a API de OTP do MyOTP.App para qualquer agente de IA compatível com MCP: Claude Desktop, Claude Code, Cursor, Windsurf, Codex e qualquer outra ferramenta que fale MCP.

Envie e verifique senhas de uso único (SMS, WhatsApp, Telegram) diretamente de um chat com seu agente, ou de qualquer aplicativo que ele criar.

O que ele faz

Expõe 10 ferramentas:

FerramentaFinalidade
generate_otpEnvia um OTP via SMS, WhatsApp ou Telegram. Retorna um message_id.
verify_otpVerifica um código enviado por um usuário final.
check_otp_statusVerifica o status de entrega / se um OTP ainda está ativo.
extend_otpAdiciona mais tempo a um OTP ativo sem reenviar.
get_account_infoVerifica a chave de API e a lista de permissões de IP (chama GET /me).
get_usage_reportHistórico de transações paginado para um intervalo de datas.
create_accountCria uma conta de agente sem chave de API e retorna sua chave de uso único.
get_account_statusVerifica verificação, saldo, plano e status; opcionalmente reenvia a verificação.
get_topup_quoteFaz uma cotação de compra de créditos e retorna comandos de pagamento USDC e cartão.
top_up_creditsRetorna um desafio de pagamento MPP e detalhes de nova tentativa, ou o resultado creditado.

Cada ferramenta declara um outputSchema, para que os clientes possam verificar tipos de structuredContent; resultados de erro carregam { error, status?, endpoint?, body? } com isError: true.

Todas as ferramentas chamam a API REST pública do MyOTP em https://api.myotp.app. Substitua com a variável de ambiente MYOTP_BASE_URL para um servidor mock.

Instalação

Você não precisa instalar nada globalmente — npx buscará e executará a versão mais recente sob demanda:

npx @myotp/mcp

Use o nome com escopo. myotp-mcp é o nome do binário dentro do pacote, não um pacote no npm, então npx myotp-mcp não resolve.

Se quiser fixar uma versão ou instalá-lo localmente:

npm install --save-dev @myotp/mcp

Obtenha uma chave de API

Chame create_account com um endereço de e-mail e nome opcional. É a única ferramenta de conta que não precisa de chave configurada. Salve a chave de API retornada imediatamente: ela é mostrada apenas uma vez, e a nova conta começa com saldo zero. Configure essa chave como MYOTP_API_KEY para stdio ou envie-a com solicitações hospedadas, depois chame get_topup_quote ou top_up_credits para adicionar créditos.

O e-mail de confirmação requer um clique humano. A confirmação desbloqueia recargas por cartão; recargas USDC funcionam antes da confirmação. Cadastro humano em myotp.app/sign-up/ continua disponível e segue o fluxo de e-mail, telefone, chave de API e lista de permissões de IP do painel.

Use com o Claude Desktop

Edite a configuração do Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json no macOS, %APPDATA%\Claude\claude_desktop_config.json no Windows):

{
  "mcpServers": {
    "myotp": {
      "command": "npx",
      "args": ["-y", "@myotp/mcp"],
      "env": {
        "MYOTP_API_KEY": "your-32-character-api-key"
      }
    }
  }
}

Reinicie o Claude Desktop. Pergunte ao agente: "Envie um OTP de teste para meu telefone +1 415 555 0123." Ele chamará generate_otp e informará o message_id.

Use com o Claude Code

Adicione ao .mcp.json do seu projeto:

{
  "mcpServers": {
    "myotp": {
      "command": "npx",
      "args": ["-y", "@myotp/mcp"],
      "env": {
        "MYOTP_API_KEY": "your-32-character-api-key"
      }
    }
  }
}

Ou registre globalmente com a CLI do Claude Code:

claude mcp add myotp -- npx -y @myotp/mcp
# Set the env var separately, then restart claude.

Use com o Cursor

O Cursor lê o mesmo formato .mcp.json. Adicione às configurações do seu workspace ou ao .cursor/mcp.json:

{
  "mcpServers": {
    "myotp": {
      "command": "npx",
      "args": ["-y", "@myotp/mcp"],
      "env": {
        "MYOTP_API_KEY": "your-32-character-api-key"
      }
    }
  }
}

Gateways que passam configuração na URL

Alguns gateways MCP entregam configurações por usuário como parâmetros de consulta em vez de cabeçalhos. O servidor hospedado aceita ?apiKey=<key> (também ?api_key=, ou um blob JSON ?config= em base64url com um campo apiKey) como fallback. Uma chave no cabeçalho X-API-Key ou Authorization: Bearer sempre vence uma na URL. No Smithery, o esquema de configuração mapeia a chave para o cabeçalho x-api-key, então nenhum parâmetro de URL é necessário lá.

Use com o Codex CLI

O Codex lê TOML, não JSON. Adicione ao ~/.codex/config.toml:

[mcp_servers.myotp]
command = "npx"
args = ["-y", "@myotp/mcp"]

[mcp_servers.myotp.env]
MYOTP_API_KEY = "your-32-character-api-key"

O Codex também pode falar com o servidor hospedado via HTTP em vez de iniciar qualquer coisa localmente. Ele anexa o token como Authorization: Bearer, que o endpoint hospedado aceita como alias para X-API-Key:

[mcp_servers.myotp]
url = "https://mcp.myotp.app/mcp"
bearer_token_env_var = "MYOTP_API_KEY"

Em versões mais antigas do Codex que só reconhecem servidores stdio, adicione experimental_use_rmcp_client = true acima da entrada.

Se você usar a URL hospedada, adicione 108.61.176.199 à lista de permissões de IP da sua chave de API. Chamadas hospedadas alcançam a API do MyOTP a partir desse endereço, e não da sua máquina, e cada chamada retorna 403 até que seja permitido. A opção stdio acima não tem esse requisito porque a solicitação sai da sua própria máquina.

Use com qualquer outra coisa

Qualquer cliente que fale MCP funciona. O bloco stdio tem o mesmo formato em todos os lugares (command: npx, args: ["-y", "@myotp/mcp"], MYOTP_API_KEY no ambiente), então Windsurf, Zed, Continue, OpenClaw, Hermes e Grokbot aceitam o equivalente JSON ou TOML dos blocos acima.

Para um cliente hospedado, aponte para https://mcp.myotp.app/mcp e envie sua chave como X-API-Key ou Authorization: Bearer. Use aquele que seu cliente realmente conseguir definir.

Modos de transporte

stdio (padrão — para instalações locais de agentes)

O servidor lê mensagens JSON-RPC da entrada padrão e as escreve na saída padrão. A chave de API vem da variável de ambiente MYOTP_API_KEY, definida quando o agente inicia o servidor. Este é o modo certo para aplicativos de desktop como Claude Desktop, Claude Code e Cursor.

MYOTP_API_KEY=sk_... npx @myotp/mcp
# or explicitly
MYOTP_API_KEY=sk_... npx @myotp/mcp --stdio

HTTP transmitível (para servidores hospedados)

Execute um servidor HTTP para o qual qualquer agente compatível com MCP possa apontar. Ferramentas autenticadas recebem a chave de API por solicitação via X-API-Key, então uma instância hospedada pode atender muitos locatários; ferramentas anônimas não exigem o cabeçalho.

npx @myotp/mcp --http --port 3000
# or with the env switch
MYOTP_MCP_TRANSPORT=http PORT=3000 npx @myotp/mcp

O endpoint MCP é POST /mcp (também aceita GET e DELETE conforme a especificação). Verificação de saúde em GET /healthz.

É isso que hospedamos em https://mcp.myotp.app/mcp. Aponte seu cliente para essa URL e envie X-API-Key: <your-key> em solicitações de ferramentas autenticadas.

Configuração

Variável de ambientePadrãoDescrição
MYOTP_API_KEY—Sua chave de API do MyOTP.App. Necessária para ferramentas autenticadas; create_account e get_topup_quote funcionam sem ela.
MYOTP_BASE_URLhttps://api.myotp.appURL base da API. Substitua para um servidor mock.
MYOTP_MCP_TRANSPORTstdioDefina como http para iniciar em modo HTTP.
PORT3000Porta de escuta HTTP.
HOST0.0.0.0Endereço de bind HTTP.
MCP_PATH/mcpRota HTTP para tráfego MCP.
MCP_SESSION_IDLE_MS1800000Modo HTTP: fecha uma sessão após esse tempo sem solicitações. O cliente recebe 404 e reinicializa.
MCP_SESSION_BUSY_MS3600000Modo HTTP: fecha uma sessão cuja solicitação aberta (como um stream SSE) começou há mais tempo que isso.
MCP_MAX_SESSIONS1000Modo HTTP: máximo de sessões mantidas ao mesmo tempo; uma nova sessão fecha a menos usada recentemente, sessões ociosas primeiro.

Exemplos de chamadas de ferramentas

Depois que o servidor estiver conectado, você pode pedir ao agente coisas como:

  • "Envie um OTP via WhatsApp para 14155550123."
  • "Use o MyOTP para verificar o código 482913 para esse número de telefone."
  • "O último OTP foi entregue? Verifique o status do message_id a1b2…."
  • "Mostre meu uso de OTP nos últimos 7 dias."
  • "Quanto crédito tenho nesta conta MyOTP?"
  • "Crie uma conta de agente MyOTP para dev@example.com."
  • "Verifique se o e-mail da minha conta de agente está verificado e reenvie o e-mail se necessário."
  • "Faça uma cotação de mais 500 créditos MyOTP."
  • "Esse envio falhou com NoBalance. Recarregue 100 créditos."

Nos bastidores, o agente escolherá a ferramenta certa, validará as entradas contra o JSON Schema que publicamos e chamará a API do MyOTP.

Comprando créditos como agente

Agentes podem comprar créditos MyOTP por conta própria: um 402, um pagamento, sem página de checkout, sem formulário de cartão. Créditos custam $0,02 cada, com mínimo de 25 créditos ($0,50) e máximo de 50.000 créditos por chamada. Recargas por cartão são limitadas a $100 por conta a cada 24 horas corridas; USDC não tem limite. Uma conta de teste passa para a tabela de preços pré-paga Starter no primeiro recarga, sem criar uma assinatura.

Quando um envio de OTP retorna HTTP 403 insufficient balance ou NoBalance, chame get_topup_quote para inspecionar o preço ou chame top_up_credits para iniciar a compra. top_up_credits busca a cotação primeiro, depois posta em /v1/topup com a chave de API configurada e sem credencial de pagamento. A resposta 402 esperada contém ofertas MPP para USDC no Tempo e, enquanto o limite de cartão permitir, cartão ou Link via Stripe. A ferramenta retorna as ofertas decodificadas, ID do desafio, URL e corpo exatos de nova tentativa, e cabeçalhos com espaços reservados para credenciais.

O servidor MCP não pode segurar a carteira do agente. Execute um dos comandos retornados com your MyOTP API key substituído localmente; o cliente MPP paga e tenta novamente a mesma solicitação com sua credencial de pagamento. Essa nova tentativa credita a conta. Se o runtime já envolver fetch com um provedor de credenciais MPP, a ferramenta pode receber e retornar a resposta creditada com sucesso diretamente.

Carteira USDC (criar uma conta mppx cria uma carteira, e a testnet financia automaticamente):

npx -y mppx@0.9.2 https://api.myotp.app/v1/topup -X POST -H "x-api-key: your MyOTP API key" -H "content-type: application/json" -d "{\"credits\":100}"

Carteira de cartão ou Link (execute npx @stripe/link-cli auth login uma vez primeiro):

npx -y @stripe/link-cli mpp pay https://api.myotp.app/v1/topup -X POST -d "{\"credits\":100}" -H "x-api-key: your MyOTP API key" --context "Buying MyOTP.App credits to send one-time passcodes over SMS, WhatsApp and Telegram for phone verification in my app."

Criação de conta

A ferramenta create_account chama o endpoint não autenticado POST /v1/agent/register com um e-mail e nome opcional. A resposta contém o registro completo da conta e uma chave de API de 32 caracteres mostrada apenas uma vez. Salve-a imediatamente e defina MYOTP_API_KEY (ou configure o cliente hospedado para enviá-la). Contas de agente têm lista de permissões de IP aberta, não precisam de verificação de telefone, e começam com saldo 0 e o plano pré-pago Starter.

Um e-mail de confirmação é enviado ao endereço fornecido. Um humano deve clicar no link dentro de 24 horas para desbloquear recargas por cartão; recargas USDC funcionam imediatamente. Use get_account_status para verificar email_verified, saldo, plano e status da conta, ou chame com resend_verification: true para enviar outro e-mail. Depois use get_topup_quote ou top_up_credits para financiar a conta antes de enviar um OTP.

Desenvolvimento

git clone https://github.com/brntech/myotp-agentkit
cd myotp-agentkit/mcp-server
npm install
npm run build
npm run start:stdio   # or start:http

Notas de segurança

  • Este servidor nunca registra sua chave de API.
  • No modo HTTP, a chave de API é lida apenas de X-API-Key por solicitação — não há chave global configurada na inicialização.
  • A API do MyOTP também aplica uma lista de permissões de IP; certifique-se de que o host que executa este servidor (ou os IPs dos seus usuários finais no modo HTTP) esteja na lista de permissões da chave em uso.
  • Retornar o código OTP em texto simples (return_otp: true) é destinado apenas a testes — nunca habilite isso em fluxos de usuário de produção.

Licença

MIT — veja LICENSE.

Construído por BroadNet Technologies. Perguntas? info@myotp.app.