ThunderPhone 2.0 já está no ar.Contrate online, a partir de 2¢/min.Leia o anúncio

Connect tools & data

Use o ThunderPhone como um servidor MCP

Crie, teste, valide e opere agentes de voz do ThunderPhone a partir do Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code ou outro cliente MCP HTTP transmissível.

O ThunderPhone disponibiliza um servidor HTTP com streaming do Model Context Protocol em:

https://api.thunderphone.com/v1/mcp

Esta é a direção oposta de conectar um servidor MCP remoto a um agente de voz:

DireçãoResultado
Servidor MCP remoto → agente do ThunderPhoneUm agente de voz pode chamar as ferramentas do servidor remoto.
ThunderPhone → seu cliente MCPSeu agente de programação pode criar, testar e operar o ThunderPhone.

Autenticar

Use o OAuth por padrão para clientes de diretório: faça login, escolha uma organização e aprove as permissões solicitadas. Revogue o acesso em Organização → Chaves de API → Aplicativos autorizados.

Para clientes configurados com uma chave de API, crie uma chave sk_live_ em Organização → Chaves e exponha-a ao seu cliente MCP como THUNDERPHONE_API_KEY. A chave é vinculada a uma organização; um id pertencente a outra organização se comporta como se não fosse encontrado.

Alternativas de CLI e stdio

A CLI do ThunderPhone pode gravar a configuração do cliente preservando servidores não relacionados:

npx -y @thunderphone/mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
npx thunderphone mcp setup --client claude-desktop --scope user

Após uma instalação global de @thunderphone/mcp, use thunderphone-mcp setup com as mesmas opções. A configuração é compatível com Claude Code, Codex, Cursor, VS Code, Gemini, Claude Desktop e Windsurf. HTTP direto é preferível; o Desktop usa stdio.

Para qualquer cliente compatível com stdio, configure command: "npx" com args: ["-y", "@thunderphone/mcp"]. O wrapper usa primeiro THUNDERPHONE_API_KEY, depois as credenciais de thunderphone login, renovando tokens expirados, e então OAuth por meio de mcp-remote. O login por dispositivo e o OAuth exigem a disponibilização correspondente de OAuth da API. O caminho com chave de API não exige isso. Configurações HTTP diretas não leem o armazenamento de credenciais da CLI; use o wrapper stdio para reutilizar o login por dispositivo.

Estas são alternativas às configurações manuais de cliente abaixo.

Configuração do cliente

Claude e ChatGPT usam OAuth para iniciar sessão; nenhuma chave de API é usada. Se você ainda não tiver uma conta do ThunderPhone, escolha Criar conta na página de início de sessão e você retornará à tela de aprovação após verificar seu e-mail.

Claude (web, desktop e mobile)

  1. Abra Personalizar → Conectores (Configurações → Conectores em versões mais antigas). Se o ThunderPhone aparecer no diretório de conectores, selecione-o. Caso contrário, escolha Adicionar conector personalizado, nomeie-o como ThunderPhone e insira https://api.thunderphone.com/v1/mcp.
  2. Selecione Conectar, inicie sessão no ThunderPhone, escolha a organização e aprove as permissões.
  3. Em um chat, habilite o ThunderPhone no menu de ferramentas e peça o que precisar, por exemplo, "Liste meus agentes".

O Claude pede confirmação antes de usar cada ferramenta pela primeira vez. Para ignorar a maioria dessas solicitações, abra Personalizar → Conectores → ThunderPhone e defina Ferramentas somente de leitura como sempre permitidas. Essas ferramentas apenas consultam informações: agentes, chamadas, transcrições, saldos e documentação. Mantenha Ferramentas de gravação/exclusão com aprovação se quiser ver cada alteração antes que ela aconteça.

Conectores personalizados exigem um plano pago do Claude. Nos planos Team e Enterprise, um proprietário primeiro adiciona o conector nas configurações de conectores da organização; depois, cada membro conecta sua própria conta do ThunderPhone.

ChatGPT

  1. Se o ThunderPhone aparecer no diretório de aplicativos do ChatGPT, selecione-o e conecte-se.
  2. Caso contrário, abra Configurações → Aplicativos e conectores → Configurações avançadas, ative o Modo desenvolvedor e crie um conector com a URL https://api.thunderphone.com/v1/mcp e autenticação OAuth.
  3. Inicie sessão no ThunderPhone, escolha a organização e aprove as permissões. Adicione o ThunderPhone a um chat pelo menu de ferramentas.

Excluir um agente ou número de telefone, descartar um rascunho, iniciar uma campanha e enviar uma solicitação de teste que possa gravar em um sistema externo exigem uma segunda confirmação em qualquer um dos aplicativos; consulte Confirmar ações destrutivas.

Claude Code

claude mcp add --transport http thunderphone https://api.thunderphone.com/v1/mcp \
  --header "Authorization: Bearer $THUNDERPHONE_API_KEY"

Codex

Adicione isto a ~/.codex/config.toml:

[mcp_servers.thunderphone]
url = "https://api.thunderphone.com/v1/mcp"
bearer_token_env_var = "THUNDERPHONE_API_KEY"

Cursor

Crie .cursor/mcp.json:

{
  "mcpServers": {
    "thunderphone": {
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
      }
    }
  }
}

Claude Desktop

Adicione uma ponte mcp-remote à configuração do Claude Desktop:

{
  "mcpServers": {
    "thunderphone": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.thunderphone.com/v1/mcp",
        "--header",
        "Authorization: Bearer ${THUNDERPHONE_API_KEY}"
      ],
      "env": {
        "THUNDERPHONE_API_KEY": "sk_live_YOUR_API_KEY"
      }
    }
  }
}

VS Code

Crie .vscode/mcp.json e insira a chave pelo prompt de entrada do VS Code:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "thunderphone-api-key",
      "description": "ThunderPhone organization API key",
      "password": true
    }
  ],
  "servers": {
    "thunderphone": {
      "type": "http",
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${input:thunderphone-api-key}"
      }
    }
  }
}

Ferramentas

Todas as ferramentas incluem anotações MCP. Nas tabelas, R significa somente leitura, D destrutiva, I idempotente e O interação com ambiente externo/rede. Um travessão indica que nenhuma indicação está definida.

Conexão

FerramentaArgumentos principaisAnotaçõesO que faz
get_connection_identity—R, IValida a credencial e retorna a organização e os metadados seguros da credencial.

Agentes

FerramentaArgumentos principaisAnotaçõesO que faz
list_agents—R, ILista agentes.
get_agentagent_idR, IObtém um agente.
create_agentconfiguração do agente—Cria um agente.
update_agentagent_id, campos alteradosDPrepara campos no rascunho do agente, substituindo o que havia no rascunho. É executada sem uma etapa de confirmação: o agente implantado permanece inalterado até deploy_agent, e discard_agent_draft reverte o rascunho.
deploy_agentagent_id, if_updated_at opcionalD, IPromove o rascunho para produção.
discard_agent_draftagent_id, if_updated_at opcional, confirmation_token na segunda solicitaçãoD, IDescarta alterações preparadas. Em duas etapas; consulte Confirmação de ações destrutivas.
duplicate_agentagent_id, name opcional—Copia um agente dentro da organização.
delete_agentagent_id, confirmation_token na segunda solicitaçãoD, IExclui permanentemente um agente. Em duas etapas.
list_agent_versionsagent_idR, ILista versões de configuração implantadas.

Números de telefone e operadoras

FerramentaPrincipais argumentosAnotaçõesO que faz
list_phone_numbers—R, ILista os números e o roteamento da organização.
get_phone_number_limits—R, IObtém o uso e os limites de números gerenciados.
provision_phone_numberarea_code, city, state, idempotency_key opcionaisD, OCompra um número de entrada gerenciado pelo ThunderPhone.
list_voip_connections—R, ILista as operadoras conectadas do cliente.
search_voip_numbersconnection_id, country, type, area_code opcionalR, I, OPesquisa o inventário da operadora.
import_voip_numbersconnection_id, numbersD, OImporta números já pertencentes à operadora.
update_phone_numberphone_number_id, campos de roteamento/rótulo/webhookDAtualiza o roteamento do número, incluindo a atribuição ao agente.
delete_phone_numberphone_number_id, confirm, release_at_provider opcional, confirmation_token na segunda solicitaçãoD, I, OLibera um número. Em duas etapas.

SMS

FerramentaPrincipais argumentosAnotaçõesO que faz
send_smsfrom_number, to, body, idempotency_keyD, I, OEnvia um SMS de texto simples por meio de um número Twilio ou Telnyx conectado.

Chamadas

FerramentaArgumentos principaisAnotaçõesO que faz
list_callsfiltros opcionais, limit, offsetR, ILista chamadas com os filtros de histórico de chamadas da REST.
get_callcall_idR, IObtém o status e os metadados da chamada.
get_call_transcriptcall_id, live opcionalR, IObtém a transcrição da chamada.
get_call_audio_urlcall_id, download opcionalR, I, ORetorna uma URL de áudio assinada; nunca transmite áudio pelo MCP.
get_call_gradecall_idR, IObtém a avaliação mais recente da chamada.
place_callagent_id, from_number, to_numberD, OFaz uma chamada de saída não idempotente.
export_callsfiltros de chamadas, export_formatR, IExporta até o limite do endpoint REST como JSON ou CSV.

Testes e validação

FerramentaPrincipais argumentosAnotaçõesO que faz
list_test_scenariosagent_idR, ILista cenários de teste.
create_test_scenarioagent_id, title, scenario_prompt, condições opcionais—Cria um cenário.
generate_test_scenariosagent_id, count opcional, include_edge_cases, localeOGera cenários a partir do prompt do agente.
run_agent_testsagent_id, channel, consent_to_charge, seleção/matriz opcionalD, OExecuta cenários pela web ou telefonia.
get_test_runagent_id, batch_idR, IObtém o status do lote e os resultados por cenário.
list_validation_runsagent_idR, ILista execuções recentes de validação de rascunho.
get_validation_statusagent_idR, IObtém o estado mais recente da validação e a correspondência do rascunho.

Conhecimento

FerramentaArgumentos principaisAnotaçõesO que faz
list_knowledge_bases—R, ILista bases de conhecimento.
create_knowledge_basename, description opcional—Cria uma base de conhecimento.
add_knowledge_documentknowledge_base_id, name, content—Adiciona texto ou Markdown.
import_knowledge_urlurl, name opcionalOEnfileira uma página pública para ingestão segura.
search_knowledgeknowledge_base_id, queryR, IPesquisa na recuperação em produção.

Integrações, webhooks e servidores MCP remotos

FerramentaArgumentos principaisAnotaçõesO que faz
list_integrations—R, ILista integrações de funções HTTP.
create_integrationdisplay_name, spec da função, campos opcionais do endpoint—Cria uma ferramenta HTTP. Adicione cabeçalhos de autenticação no painel.
test_integrationurl, método/corpo/tempo limite opcionais, integration_id com header_names, confirmation_token na segunda solicitaçãoD, OEnvia uma solicitação de teste limitada e protegida contra SSRF. Os valores de cabeçalho salvos são preenchidos pela integração e enviados apenas ao seu próprio host. POST (o padrão), PUT, PATCH e DELETE ocorrem em duas etapas; GET é executado imediatamente.
list_webhook_endpoints—R, ILista endpoints de webhook assinados.
list_webhook_deliveriesagent_id opcional, endpoint_id opcionalR, ILista resultados recentes de entregas de webhook sem payload.
create_webhook_endpointlabel, url, eventos/status opcionaisOCria um endpoint de webhook assinado.
test_webhook_endpointendpoint_idOEnvia um evento sintético pelo fluxo normal de entrega.
list_mcp_servers—R, ILista servidores remotos que podem ser chamados por agentes de voz.
create_mcp_serverdisplay_name, urlORegistra e sincroniza um servidor remoto. Servidores que exigem cabeçalhos de autenticação são adicionados no painel.
sync_mcp_server_toolsserver_idD, OAtualiza o catálogo de ferramentas de um servidor remoto.

Campanhas

FerramentaArgumentos principaisAnotaçõesO que faz
list_campaigns—R, ILista campanhas de saída.
create_campaigncampos da campanha—Cria uma campanha em rascunho.
add_campaign_contactscampaign_id, contacts—Adiciona até 5.000 contatos JSON.
campaign_actioncampaign_id, action, consent_to_charge opcional, confirmation_token na segunda solicitaçãoD, OExecuta start, pause, resume ou stop. start e resume são em duas etapas; pause e stop são executados imediatamente.
get_campaign_statscampaign_idR, IObtém contadores e resultados recentes.

Vozes, faturamento e documentação

FerramentaArgumentos principaisAnotaçõesO que faz
list_voices—R, ILista vozes e idiomas compatíveis.
preview_voicevoice, language, textOGera uma amostra e retorna uma URL assinada.
list_voice_clones—R, ILista clones de voz personalizados.
get_billing_summary—R, IObtém o saldo e os preços oficiais do nível; não expõe alterações de pagamento.
search_docsquery, limit opcionalR, I, OPesquisa o índice da documentação pública.
get_doc_pagepathR, I, OBusca uma página pública de documentação em Markdown.

Todas as ferramentas de produto usam os mesmos caminhos de código REST da API pública. Portanto, a validação REST, o escopo da organização, as funções, a autorização de faturamento, as cotas, a confirmação TCPA, a segurança do provedor e o comportamento de auditoria são aplicados sem alterações.

Confirmação de ações destrutivas

Ferramentas marcadas com D alteram ou removem algo, ou começam a ligar para pessoas reais. As que não podem ser desfeitas exigem duas solicitações. A primeira solicitação não altera nada e retorna:

{
  "status": "confirmation_required",
  "action": "Delete agent",
  "target": { "id": 195, "name": "Front Desk Receptionist" },
  "confirmation_token": "…",
  "expires_in_seconds": 600,
  "next_step": "…"
}

O assistente mostra à pessoa usuária o que será afetado e pede uma confirmação. Em seguida, repete a solicitação com os mesmos argumentos mais confirmation_token. Um token é válido por 10 minutos e abrange uma organização, uma ferramenta e um conjunto exato de argumentos; portanto, excluir três agentes exige três confirmações. campaign_action com pause ou stop ignora esta etapa para que uma campanha em execução possa sempre ser interrompida imediatamente, assim como test_integration com GET. Algumas ferramentas D são executadas em uma solicitação porque o D indica seu efeito, e não uma confirmação do lado do servidor: update_agent substitui o que estava no rascunho (discard_agent_draft o reverte), deploy_agent substitui a configuração ativa, update_phone_number redireciona chamadas ativas, sync_mcp_server_tools substitui o catálogo de ferramentas de um servidor remoto, import_voip_numbers redireciona números para sua operadora, run_agent_tests pode consumir crédito, send_sms e place_call entram em contato com uma pessoa real (place_call mantém sua própria confirmação de consentimento), e provision_phone_number compra um número. Seu cliente MCP ainda pode pedir que você as aprove.

Prompts iniciais

prompts/list disponibiliza cinco fluxos de trabalho reutilizáveis:

  • create_inbound_receptionist
  • run_agent_tests
  • buy_and_attach_number
  • review_low_grade_calls
  • add_url_to_agent_knowledge

Use prompts/get com o nome do prompt listado e os argumentos declarados para receber uma mensagem de usuário pronta para executar.

Recursos

resources/list expõe referências públicas armazenadas em cache:

URIConteúdo
thunderphone://docs/llms.txtÍndice da documentação pública.
thunderphone://docs/quickstartMarkdown de início rápido.
thunderphone://pricingMarkdown dos preços públicos atuais.

Leia um recurso com resources/read. As buscas públicas usam um tempo limite curto, um limite de 2 MiB e um cache no processo de dez minutos.

Protocolo e erros

O servidor oferece suporte às versões de protocolo 2025-06-18 e 2025-03-26; ele retorna uma versão de cliente compatível e, caso contrário, seleciona 2025-06-18. Ele implementa initialize, ping, ferramentas, prompts, recursos e notificações. As notificações retornam 202 Accepted. Este servidor sem estado não expõe um ouvinte SSE nem exclusão de sessão; portanto, GET e DELETE retornam 405 Method Not Allowed com Allow: POST.

Falhas de ferramentas continuam sendo respostas JSON-RPC bem-sucedidas com isError: true. Seu texto contém uma frase curta seguida por um bloco JSON:

{
  "code": "insufficient_balance",
  "detail": "There is not enough prepaid balance.",
  "next_step": "Call get_billing_summary, add funds in Organization > Billing, then retry."
}

O prefixo distinto outbound_tcpa_confirmation_required: é mantido para place_call. Métodos JSON-RPC desconhecidos retornam -32601 em uma resposta HTTP 200. Lotes JSON-RPC não são compatíveis com MCP 2025-06-18 e retornam um erro de solicitação inválida -32600 claro.