ThunderPhone 2.0 este acum disponibil.Self-service, de la 2 ¢/min.Citiți anunțul

Connect tools & data

Utilizați ThunderPhone ca server MCP

Construiți, testați, validați și operați agenți vocali ThunderPhone din Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code sau alt client MCP Streamable HTTP.

ThunderPhone expune un server Streamable HTTP Model Context Protocol la:

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

Aceasta este direcția opusă față de conectarea unui server MCP la distanță la un agent vocal:

DirecțieRezultat
Server MCP la distanță → agent ThunderPhoneUn agent vocal poate apela instrumentele serverului la distanță.
ThunderPhone → clientul dumneavoastră MCPAgentul dumneavoastră de programare poate construi, testa și opera ThunderPhone.

Autentificare

Utilizați OAuth în mod implicit pentru clienții de tip director: autentificați-vă, alegeți o organizație și aprobați permisiunile solicitate. Revocați accesul din Organizație → Chei API → Aplicații autorizate.

Pentru clienții configurați cu o cheie API, creați o cheie sk_live_ din Organizație → Chei și expuneți-o clientului dumneavoastră MCP ca THUNDERPHONE_API_KEY. Cheia este asociată cu o singură organizație; un id deținut de o altă organizație se comportă ca și cum nu ar fi găsit.

Alternative CLI și stdio

ThunderPhone CLI poate scrie configurația clientului păstrând serverele fără legătură:

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

După o instalare globală a @thunderphone/mcp, utilizați thunderphone-mcp setup cu aceleași opțiuni. Configurarea acceptă Claude Code, Codex, Cursor, VS Code, Gemini, Claude Desktop și Windsurf. HTTP direct este preferat; Desktop utilizează stdio.

Pentru orice client compatibil cu stdio, configurați command: "npx" cu args: ["-y", "@thunderphone/mcp"]. Învelișul utilizează mai întâi THUNDERPHONE_API_KEY, apoi acreditările din thunderphone login, reînnoind tokenurile expirate, apoi OAuth prin mcp-remote. Autentificarea pe dispozitiv și OAuth necesită lansarea OAuth corespunzătoare pentru API. Calea cu cheie API nu necesită aceasta. Configurațiile HTTP directe nu citesc stocarea de acreditări CLI; utilizați învelișul stdio pentru a reutiliza autentificarea pe dispozitiv.

Acestea sunt alternative la configurațiile manuale de client de mai jos.

Configurarea clientului

Claude și ChatGPT se conectează cu OAuth; nu este implicată nicio cheie API. Dacă nu aveți încă un cont ThunderPhone, alegeți Creați un cont pe pagina de conectare, iar după ce vă verificați e-mailul reveniți la ecranul de aprobare.

Claude (web, desktop și mobil)

  1. Deschideți Personalizare → Conectori (Setări → Conectori în versiunile mai vechi). Dacă ThunderPhone apare în directorul de conectori, selectați-l. În caz contrar, alegeți Adăugați conector personalizat, denumiți-l ThunderPhone și introduceți https://api.thunderphone.com/v1/mcp.
  2. Selectați Conectare, conectați-vă la ThunderPhone, alegeți organizația și aprobați permisiunile.
  3. Într-un chat, activați ThunderPhone din meniul de instrumente și solicitați ce aveți nevoie, de exemplu „Afișează-mi agenții”.

Claude vă solicită aprobarea înainte de a utiliza fiecare instrument pentru prima dată. Pentru a omite majoritatea acestor solicitări, deschideți Personalizare → Conectori → ThunderPhone și setați Instrumente doar pentru citire să fie permise întotdeauna. Aceste instrumente doar consultă informații: agenți, apeluri, transcrieri, solduri, documentație. Păstrați Instrumente de scriere/ștergere cu aprobare dacă doriți să vedeți fiecare modificare înainte ca aceasta să fie efectuată.

Conectorii personalizați necesită un abonament Claude plătit. În abonamentele Team și Enterprise, un proprietar adaugă mai întâi conectorul în setările de conectori ale organizației, apoi fiecare membru își conectează propriul cont ThunderPhone.

ChatGPT

  1. Dacă ThunderPhone apare în directorul de aplicații ChatGPT, selectați-l și conectați-vă.
  2. În caz contrar, deschideți Setări → Aplicații și conectori → Setări avansate, activați Mod pentru dezvoltatori și creați un conector cu URL-ul https://api.thunderphone.com/v1/mcp și autentificare OAuth.
  3. Conectați-vă la ThunderPhone, alegeți organizația și aprobați permisiunile. Adăugați ThunderPhone într-un chat din meniul de instrumente.

Ștergerea unui agent sau a unui număr de telefon, anularea unei schițe, lansarea unei campanii și trimiterea unei solicitări de test care poate scrie într-un sistem extern necesită o a doua confirmare în oricare dintre aplicații; consultați Confirmarea acțiunilor distructive.

Claude Code

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

Codex

Adăugați aceasta în ~/.codex/config.toml:

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

Cursor

Creați .cursor/mcp.json:

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

Claude Desktop

Adăugați o punte mcp-remote în configurația 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

Creați .vscode/mcp.json și introduceți cheia prin solicitarea de introducere a datelor din 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}"
      }
    }
  }
}

Instrumente

Fiecare instrument include adnotări MCP. În tabele, R înseamnă doar citire, D distructiv, I idempotent și O interacțiune cu lumea externă/rețeaua. O liniuță înseamnă că nu este setat niciun indiciu.

Conexiune

InstrumentArgumente principaleAdnotăriCe face
get_connection_identity—R, IValidează credențiala și returnează organizația acesteia și metadatele sigure ale credențialei.

Agenți

InstrumentArgumente principaleAnotațiiCe face
list_agents—R, IListează agenții.
get_agentagent_idR, IObține un agent.
create_agentconfigurația agentului—Creează un agent.
update_agentagent_id, câmpuri modificateDPregătește câmpurile în schița agentului, înlocuind valorile existente în schiță. Se execută fără o etapă de confirmare: agentul publicat rămâne neschimbat până la deploy_agent, iar discard_agent_draft anulează modificările din schiță.
deploy_agentagent_id, if_updated_at opționalD, IPublică schița în producție.
discard_agent_draftagent_id, if_updated_at opțional, confirmation_token la a doua solicitareD, IAnulează modificările pregătite. Proces în doi pași; consultați Confirmarea acțiunilor distructive.
duplicate_agentagent_id, name opțional—Copiază un agent în cadrul organizației.
delete_agentagent_id, confirmation_token la a doua solicitareD, IȘterge definitiv un agent. Proces în doi pași.
list_agent_versionsagent_idR, IListează versiunile de configurație publicate.

Numere de telefon și operatori

InstrumentArgumente principaleAdnotăriCe face
list_phone_numbers—R, IListează numerele organizației și rutarea acestora.
get_phone_number_limits—R, IObține utilizarea și limitele pentru numerele gestionate.
provision_phone_numberopționale area_code, city, state, idempotency_keyD, OCumpără un număr de intrare gestionat de ThunderPhone.
list_voip_connections—R, IListează operatorii clientului conectați.
search_voip_numbersconnection_id, country, type, opțional area_codeR, I, OCaută în inventarul operatorului.
import_voip_numbersconnection_id, numbersD, OImportă numere deja deținute la operator.
update_phone_numberphone_number_id, câmpuri de rutare/etichetă/webhookDActualizează rutarea numărului, inclusiv atribuirea agentului.
delete_phone_numberphone_number_id, confirm, opționale release_at_provider, confirmation_token la a doua solicitareD, I, OEliberează un număr. Proces în doi pași.

SMS

InstrumentArgumente principaleAdnotăriCe face
send_smsfrom_number, to, body, idempotency_keyD, I, OTrimite un SMS în text simplu printr-un număr Twilio sau Telnyx conectat.

Apeluri

InstrumentArgumente principaleAnotațiiCe face
list_callsfiltre opționale, limit, offsetR, IListează apelurile folosind filtrele REST pentru istoricul apelurilor.
get_callcall_idR, IObține starea și metadatele apelului.
get_call_transcriptcall_id, live opționalR, IObține transcrierea apelului.
get_call_audio_urlcall_id, download opționalR, I, OReturnează un URL audio semnat; nu redă niciodată audio prin MCP.
get_call_gradecall_idR, IObține cea mai recentă evaluare a apelului.
place_callagent_id, from_number, to_numberD, OEfectuează un apel extern ne-idempotent.
export_callsfiltre pentru apeluri, export_formatR, IExportă până la limita endpointului REST ca JSON sau CSV.

Testare și validare

InstrumentArgumente principaleAdnotăriCe face
list_test_scenariosagent_idR, IListează scenariile de testare.
create_test_scenarioagent_id, title, scenario_prompt, condiții opționale—Creează un scenariu.
generate_test_scenariosagent_id, count opțional, include_edge_cases, localeOGenerează scenarii din promptul agentului.
run_agent_testsagent_id, channel, consent_to_charge, selecție/matrice opționalăD, ORulează scenarii prin web sau telefonie.
get_test_runagent_id, batch_idR, IObține starea lotului și rezultatele pentru fiecare scenariu.
list_validation_runsagent_idR, IListează rulările recente de validare a schiței.
get_validation_statusagent_idR, IObține cea mai recentă stare de validare și potrivirea cu schița.

Cunoștințe

InstrumentArgumente principaleAdnotăriCe face
list_knowledge_bases—R, IListează bazele de cunoștințe.
create_knowledge_basename, opțional description—Creează o bază de cunoștințe.
add_knowledge_documentknowledge_base_id, name, content—Adaugă text sau Markdown.
import_knowledge_urlurl, opțional nameOPune în coadă o pagină publică pentru ingerare sigură.
search_knowledgeknowledge_base_id, queryR, ICaută prin mecanismul de recuperare din producție.

Integrări, webhookuri și servere MCP la distanță

InstrumentArgumente principaleAdnotăriCe face
list_integrations—R, IListează integrările funcțiilor HTTP.
create_integrationdisplay_name, spec pentru funcție, câmpuri opționale pentru endpoint—Creează un instrument HTTP. Adăugați antete de autentificare în tabloul de bord.
test_integrationurl, metodă/corp/limită de timp opționale, integration_id cu header_names, confirmation_token la a doua solicitareD, OTrimite o solicitare de test limitată și protejată împotriva SSRF. Valorile salvate ale antetelor sunt preluate din integrare și trimise numai către propriul său gazdă. POST (implicit), PUT, PATCH și DELETE necesită doi pași; GET rulează imediat.
list_webhook_endpoints—R, IListează endpointurile webhook semnate.
list_webhook_deliveriesagent_id opțional, endpoint_id opționalR, IListează rezultatele recente ale livrărilor webhook fără încărcătură utilă.
create_webhook_endpointlabel, url, evenimente/stare opționaleOCreează un endpoint webhook semnat.
test_webhook_endpointendpoint_idOTrimite un eveniment sintetic prin livrarea normală.
list_mcp_servers—R, IListează serverele la distanță care pot fi apelate de agenți vocali.
create_mcp_serverdisplay_name, urlOÎnregistrează și sincronizează un server la distanță. Serverele care necesită antete de autentificare sunt adăugate în tabloul de bord.
sync_mcp_server_toolsserver_idD, OReîmprospătează catalogul de instrumente al unui server la distanță.

Campanii

InstrumentArgumente principaleAdnotăriCe face
list_campaigns—R, IListează campaniile de ieșire.
create_campaigncâmpurile campaniei—Creează o campanie în schiță.
add_campaign_contactscampaign_id, contacts—Adaugă până la 5.000 de contacte JSON.
campaign_actioncampaign_id, action, opțional consent_to_charge, confirmation_token la a doua solicitareD, ORulează start, pause, resume sau stop. start și resume sunt în doi pași; pause și stop rulează imediat.
get_campaign_statscampaign_idR, IObține contoarele și rezultatele recente.

Voci, facturare și documentație

InstrumentArgumente principaleAnotațiiCe face
list_voices—R, IListează vocile și limbile acceptate.
preview_voicevoice, language, textOGenerează un eșantion și returnează un URL semnat.
list_voice_clones—R, IListează clonele vocale personalizate.
get_billing_summary—R, IObține soldul și prețurile oficiale ale nivelurilor; nu sunt expuse modificări ale plăților.
search_docsquery, opțional limitR, I, OCaută în indexul documentației publice.
get_doc_pagepathR, I, OPreia o pagină publică de documentație Markdown.

Toate instrumentele de produs folosesc aceleași căi de cod REST ca API-ul public. Prin urmare, validarea REST, delimitarea la nivel de organizație, rolurile, aprobarea facturării, cotele, confirmarea TCPA, siguranța furnizorilor și comportamentul de audit se aplică fără modificări.

Confirmarea acțiunilor distructive

Instrumentele marcate cu D modifică sau elimină ceva ori încep apelarea unor persoane reale. Cele care nu pot fi anulate necesită două solicitări. Prima solicitare nu modifică nimic și returnează:

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

Asistentul îi arată utilizatorului ce este afectat și solicită confirmarea. Apoi repetă solicitarea cu aceleași argumente, plus confirmation_token. Un token este valabil 10 minute și acoperă o organizație, un instrument și un singur set exact de argumente, astfel că ștergerea a trei agenți necesită trei confirmări. campaign_action cu pause sau stop omite acest pas, astfel încât o campanie în desfășurare să poată fi oprită imediat, la fel ca test_integration cu GET. Unele instrumente D rulează într-o singură solicitare deoarece D le marchează efectul, nu o confirmare pe partea serverului: update_agent înlocuiește conținutul schiței (discard_agent_draft îl revine), deploy_agent înlocuiește configurația activă, update_phone_number redirecționează apelurile active, sync_mcp_server_tools înlocuiește catalogul de instrumente al unui server la distanță, import_voip_numbers redirecționează numerele către operatorul dvs., run_agent_tests poate consuma credit, send_sms și place_call contactează o persoană reală (place_call își păstrează propria confirmare de consimțământ), iar provision_phone_number cumpără un număr. Clientul dvs. MCP vă poate solicita totuși să le aprobați.

Solicitări inițiale

prompts/list oferă cinci fluxuri de lucru reutilizabile:

  • create_inbound_receptionist
  • run_agent_tests
  • buy_and_attach_number
  • review_low_grade_calls
  • add_url_to_agent_knowledge

Utilizați prompts/get cu numele solicitării listate și argumentele declarate ale acesteia pentru a primi un mesaj de utilizator gata de rulat.

Resurse

resources/list expune referințe publice, stocate în cache:

URIConținut
thunderphone://docs/llms.txtIndex public al documentației.
thunderphone://docs/quickstartMarkdown de pornire rapidă.
thunderphone://pricingMarkdown cu prețurile publice curente.

Citiți o resursă cu resources/read. Accesările publice folosesc un timp de expirare scurt, o limită de 2 MiB și un cache în proces de zece minute.

Protocol și erori

Serverul acceptă versiunile de protocol 2025-06-18 și 2025-03-26; returnează o versiune de client acceptată și, în caz contrar, selectează 2025-06-18. Implementează initialize, ping, instrumente, solicitări, resurse și notificări. Notificările returnează 202 Accepted. Acest server fără stare nu expune un listener SSE sau ștergerea sesiunilor, astfel încât GET și DELETE returnează 405 Method Not Allowed cu Allow: POST.

Eșecurile instrumentelor rămân răspunsuri JSON-RPC reușite cu isError: true. Textul lor conține o propoziție scurtă urmată de un bloc JSON:

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

Prefixul distinct outbound_tcpa_confirmation_required: este păstrat pentru place_call. Metodele JSON-RPC necunoscute returnează -32601 într-un răspuns HTTP 200. Loturile JSON-RPC nu sunt acceptate de MCP 2025-06-18 și returnează o eroare clară de solicitare nevalidă -32600.