ThunderPhone 2.0 is live.Direct zelf aan de slag, vanaf 2¢/min.Lees de aankondiging

Connect tools & data

Gebruik ThunderPhone als een MCP-server

Bouw, test, valideer en beheer ThunderPhone-spraakagenten vanuit Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code of een andere Streamable HTTP MCP-client.

ThunderPhone stelt een Streamable HTTP-server voor het Model Context Protocol beschikbaar op:

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

Dit is de tegenovergestelde richting van een externe MCP-server verbinden met een spraakagent:

RichtingResultaat
Externe MCP-server → ThunderPhone-agentEen spraakagent kan de tools van de externe server aanroepen.
ThunderPhone → je MCP-clientJe programmeeragent kan ThunderPhone bouwen, testen en beheren.

Verifiëren

Gebruik standaard OAuth voor directoryclients: log in, kies een organisatie en keur de gevraagde rechten goed. Trek toegang in via Organisatie → API-sleutels → Geautoriseerde apps.

Voor clients die met een API-sleutel zijn geconfigureerd, maak je een sk_live_-sleutel aan via Organisatie → Sleutels en stel je deze beschikbaar aan je MCP-client als THUNDERPHONE_API_KEY. De sleutel is gekoppeld aan één organisatie; een ID dat eigendom is van een andere organisatie gedraagt zich alsof het niet is gevonden.

CLI- en stdio-alternatieven

De ThunderPhone CLI kan clientconfiguratie schrijven met behoud van niet-gerelateerde servers:

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

Na een globale installatie van @thunderphone/mcp gebruik je thunderphone-mcp setup met dezelfde opties. Setup ondersteunt Claude Code, Codex, Cursor, VS Code, Gemini, Claude Desktop en Windsurf. Directe HTTP heeft de voorkeur; Desktop gebruikt stdio.

Configureer voor elke client die stdio ondersteunt command: "npx" met args: ["-y", "@thunderphone/mcp"]. De wrapper gebruikt eerst THUNDERPHONE_API_KEY, daarna inloggegevens van thunderphone login, waarbij verlopen tokens worden vernieuwd, en vervolgens OAuth via mcp-remote. Inloggen op apparaat en OAuth vereisen de bijbehorende API- OAuth-uitrol. Het pad met API-sleutel niet. Directe HTTP-configuraties lezen de CLI-opslag voor inloggegevens niet; gebruik de stdio-wrapper om inloggen op apparaat opnieuw te gebruiken.

Dit zijn alternatieven voor de handmatige clientconfiguraties hieronder.

Clientconfiguratie

Claude en ChatGPT gebruiken OAuth om in te loggen; er is geen API-sleutel nodig. Als je nog geen ThunderPhone-account hebt, kies je Account maken op de inlogpagina. Na het verifiëren van je e-mailadres keer je terug naar het goedkeuringsscherm.

Claude (web, desktop en mobiel)

  1. Open Aanpassen → Connectors (Instellingen → Connectors in oudere versies). Als ThunderPhone in de connectorlijst staat, selecteer je het. Kies anders Aangepaste connector toevoegen, geef deze de naam ThunderPhone en voer https://api.thunderphone.com/v1/mcp in.
  2. Selecteer Verbinden, log in bij ThunderPhone, kies de organisatie en keur de machtigingen goed.
  3. Schakel ThunderPhone in een chat in via het hulpmiddelenmenu en vraag wat je nodig hebt, bijvoorbeeld "Geef mijn agents weer".

Claude vraagt toestemming voordat het elke tool voor het eerst gebruikt. Om de meeste van die prompts over te slaan, open je Aanpassen → Connectors → ThunderPhone en stel je Alleen-lezen-tools in op altijd toestaan. Deze tools zoeken alleen informatie op: agents, oproepen, transcripties, tegoeden en documentatie. Laat Schrijf-/verwijdertools op goedkeuring staan als je elke wijziging wilt zien voordat deze wordt uitgevoerd.

Aangepaste connectors vereisen een betaald Claude-pakket. Bij Team- en Enterprise-pakketten voegt een eigenaar de connector eerst toe via de connectorinstellingen van de organisatie. Daarna koppelt elk lid zijn eigen ThunderPhone-account.

ChatGPT

  1. Als ThunderPhone in de ChatGPT-appdirectory staat, selecteer je het en maak je verbinding.
  2. Open anders Instellingen → Apps & Connectors → Geavanceerde instellingen, schakel Ontwikkelaarsmodus in en maak een connector met de URL https://api.thunderphone.com/v1/mcp en OAuth-verificatie.
  3. Log in bij ThunderPhone, kies de organisatie en keur de machtigingen goed. Voeg ThunderPhone via het hulpmiddelenmenu toe aan een chat.

Het verwijderen van een agent of telefoonnummer, het verwijderen van een concept, het starten van een campagne en het verzenden van een testverzoek dat naar een extern systeem kan schrijven, vereisen in beide apps een tweede bevestiging; zie Destructieve acties bevestigen.

Claude Code

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

Codex

Voeg dit toe aan ~/.codex/config.toml:

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

Cursor

Maak .cursor/mcp.json:

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

Claude Desktop

Voeg een mcp-remote-bridge toe aan de Claude Desktop-configuratie:

{
  "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

Maak .vscode/mcp.json en voer de sleutel in via de invoerprompt van 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}"
      }
    }
  }
}

Hulpprogramma's

Elk hulpprogramma bevat MCP-annotaties. In de tabellen betekent R alleen-lezen, D destructief, I idempotent en O interactie met de open wereld/het netwerk. Een streepje betekent dat er geen hint is ingesteld.

Verbinding

HulpprogrammaBelangrijkste argumentenAnnotatiesWat het doet
get_connection_identity—R, IValideert de inloggegevens en retourneert de organisatie en veilige metagegevens van de inloggegevens.

Agenten

ToolBelangrijkste argumentenAnnotatiesWat het doet
list_agents—R, IGeeft agents weer.
get_agentagent_idR, IHaalt één agent op.
create_agentagentconfiguratie—Maakt een agent.
update_agentagent_id, gewijzigde veldenDSlaat velden op in het concept van de agent en vervangt wat er al in het concept stond. Wordt uitgevoerd zonder bevestigingsstap: de geïmplementeerde agent blijft ongewijzigd tot deploy_agent, en discard_agent_draft herstelt het concept.
deploy_agentagent_id, optioneel if_updated_atD, IZet het concept over naar productie.
discard_agent_draftagent_id, optioneel if_updated_at, confirmation_token bij het tweede verzoekD, IVerwijdert opgeslagen wijzigingen. Twee stappen, zie Destructieve acties bevestigen.
duplicate_agentagent_id, optioneel name—Kopieert een agent binnen de organisatie.
delete_agentagent_id, confirmation_token bij het tweede verzoekD, IVerwijdert een agent permanent. Twee stappen.
list_agent_versionsagent_idR, IGeeft geïmplementeerde configuratieversies weer.

Telefoonnummers en providers

ToolBelangrijkste argumentenAnnotatiesWat het doet
list_phone_numbers—R, IGeeft organisatienummers en routering weer.
get_phone_number_limits—R, IHaalt gebruik en limieten van beheerde nummers op.
provision_phone_numberoptioneel area_code, city, state, idempotency_keyD, OKoopt een door ThunderPhone beheerd inkomend nummer.
list_voip_connections—R, IGeeft verbonden providers van klanten weer.
search_voip_numbersconnection_id, country, type, optioneel area_codeR, I, ODoorzoekt de nummerinventaris van de provider.
import_voip_numbersconnection_id, numbersD, OImporteert nummers die al eigendom zijn bij de provider.
update_phone_numberphone_number_id, velden voor routering/label/webhookDWerkt de routering van een nummer bij, inclusief toewijzing aan een agent.
delete_phone_numberphone_number_id, confirm, optioneel release_at_provider, confirmation_token bij het tweede verzoekD, I, OGeeft een nummer vrij. In twee stappen.

SMS

ToolBelangrijkste argumentenAnnotatiesWat het doet
send_smsfrom_number, to, body, idempotency_keyD, I, OVerstuurt één sms in platte tekst via een gekoppeld Twilio- of Telnyx-nummer.

Oproepen

ToolBelangrijkste argumentenAnnotatiesWat het doet
list_callsoptionele filters, limit, offsetR, IGeeft oproepen weer met de REST-filters voor Oproepgeschiedenis.
get_callcall_idR, IHaalt de oproepstatus en metadata op.
get_call_transcriptcall_id, optioneel liveR, IHaalt het oproeptranscript op.
get_call_audio_urlcall_id, optioneel downloadR, I, ORetourneert een ondertekende audio-URL; streamt audio nooit via MCP.
get_call_gradecall_idR, IHaalt de meest recente oproepbeoordeling op.
place_callagent_id, from_number, to_numberD, OPlaatst één niet-idempotente uitgaande oproep.
export_callsoproepfilters, export_formatR, IExporteert tot de limiet van het REST-eindpunt als JSON of CSV.

Testen en validatie

ToolBelangrijkste argumentenAnnotatiesWat het doet
list_test_scenariosagent_idR, IGeeft een lijst met testscenario's.
create_test_scenarioagent_id, title, scenario_prompt, optionele voorwaarden—Maakt een scenario.
generate_test_scenariosagent_id, optionele count, include_edge_cases, localeOGenereert scenario's op basis van de agentprompt.
run_agent_testsagent_id, channel, consent_to_charge, optionele selectie/matrixD, OVoert scenario's uit via het web of telefonie.
get_test_runagent_id, batch_idR, IHaalt de batchstatus en resultaten per scenario op.
list_validation_runsagent_idR, IGeeft een lijst met recente validatieruns voor concepten.
get_validation_statusagent_idR, IHaalt de nieuwste validatiestatus en overeenkomst met het concept op.

Kennis

HulpprogrammaBelangrijkste argumentenAnnotatiesWat het doet
list_knowledge_bases—R, IGeeft een lijst met kennisbanken.
create_knowledge_basename, optioneel description—Maakt een kennisbank.
add_knowledge_documentknowledge_base_id, name, content—Voegt tekst of Markdown toe.
import_knowledge_urlurl, optioneel nameOZet een openbare pagina in de wachtrij voor veilige opname.
search_knowledgeknowledge_base_id, queryR, IZoekt in productieretrieval.

Integraties, webhooks en externe MCP-servers

ToolBelangrijkste argumentenAnnotatiesWat het doet
list_integrations—R, IGeeft HTTP-functie-integraties weer.
create_integrationdisplay_name, functie-spec, optionele eindpuntvelden—Maakt een HTTP-tool. Voeg verificatieheaders toe in het dashboard.
test_integrationurl, optionele methode/body/time-out, integration_id met header_names, confirmation_token bij het tweede verzoekD, OVerstuurt een begrensd, tegen SSRF beveiligd testverzoek. Opgeslagen headerwaarden worden vanuit de integratie ingevuld en alleen naar de eigen host verzonden. POST (de standaardwaarde), PUT, PATCH en DELETE verlopen in twee stappen; GET wordt onmiddellijk uitgevoerd.
list_webhook_endpoints—R, IGeeft ondertekende webhookeindpunten weer.
list_webhook_deliveriesoptionele agent_id, optionele endpoint_idR, IGeeft recente resultaten van webhookleveringen zonder payload weer.
create_webhook_endpointlabel, url, optionele gebeurtenissen/statusOMaakt een ondertekend webhookeindpunt.
test_webhook_endpointendpoint_idOVerstuurt een synthetische gebeurtenis via de normale levering.
list_mcp_servers—R, IGeeft externe servers weer die door spraakagenten kunnen worden aangeroepen.
create_mcp_serverdisplay_name, urlORegistreert en synchroniseert een externe server. Servers waarvoor verificatieheaders nodig zijn, voeg je toe in het dashboard.
sync_mcp_server_toolsserver_idD, OVernieuwt de toolcatalogus van een externe server.

Campagnes

HulpprogrammaBelangrijkste argumentenAnnotatiesWat het doet
list_campaigns—R, IGeeft een lijst met uitgaande campagnes.
create_campaigncampagnevelden—Maakt een campagneconcept.
add_campaign_contactscampaign_id, contacts—Voegt maximaal 5.000 JSON-contacten toe.
campaign_actioncampaign_id, action, optioneel consent_to_charge, confirmation_token bij het tweede verzoekD, OVoert start, pause, resume of stop uit. start en resume verlopen in twee stappen; pause en stop worden onmiddellijk uitgevoerd.
get_campaign_statscampaign_idR, IHaalt tellers en recente resultaten op.

Stemmen, facturering en documentatie

ToolHoofdargumentenAnnotatiesWat het doet
list_voices—R, IGeeft stemmen en ondersteunde talen weer.
preview_voicevoice, language, textOGenereert een voorbeeld en retourneert een ondertekende URL.
list_voice_clones—R, IGeeft aangepaste stemklonen weer.
get_billing_summary—R, IHaalt het saldo en de officiële pakketprijzen op; er zijn geen betalingsmutaties beschikbaar.
search_docsquery, optionele limitR, I, ODoorzoekt de openbare documentatie-index.
get_doc_pagepathR, I, OHaalt één openbare Markdown-documentatiepagina op.

Alle producthulpprogramma's gebruiken dezelfde REST-codepaden als de openbare API. REST-validatie, organisatieafbakening, rollen, toelating voor facturering, quota's, TCPA-bevestiging, providerbeveiliging en auditgedrag zijn daarom ongewijzigd van toepassing.

Destructieve acties bevestigen

Tools met de markering D wijzigen of verwijderen iets, of beginnen echte mensen te bellen. Voor acties die niet ongedaan kunnen worden gemaakt, zijn twee verzoeken nodig. Het eerste verzoek wijzigt niets en retourneert:

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

De assistent toont de gebruiker wat wordt beïnvloed en vraagt om een bevestiging. Vervolgens herhaalt deze het verzoek met dezelfde argumenten plus confirmation_token. Een token is 10 minuten geldig en geldt voor één organisatie, één tool en één exacte set argumenten, dus voor het verwijderen van drie agents zijn drie bevestigingen nodig. campaign_action met pause of stop slaat deze stap over, zodat een actieve campagne altijd direct kan worden gestopt. Hetzelfde geldt voor test_integration met GET. Sommige D-tools worden in één verzoek uitgevoerd omdat de D hun effect markeert, niet een bevestiging aan de serverzijde: update_agent vervangt wat het concept bevatte (discard_agent_draft draait dit terug), deploy_agent vervangt de actieve configuratie, update_phone_number leidt actieve oproepen om, sync_mcp_server_tools vervangt de toolcatalogus van een externe server, import_voip_numbers wijst nummers opnieuw toe aan je provider, run_agent_tests kan tegoed verbruiken, send_sms en place_call bereiken een echt persoon (place_call behoudt zijn eigen toestemmingsbevestiging) en provision_phone_number koopt een nummer. Je MCP-client kan je nog steeds vragen deze goed te keuren.

Startprompts

prompts/list biedt vijf herbruikbare workflows:

  • create_inbound_receptionist
  • run_agent_tests
  • buy_and_attach_number
  • review_low_grade_calls
  • add_url_to_agent_knowledge

Gebruik prompts/get met de vermelde promptnaam en de opgegeven argumenten om een kant-en-klaar gebruikersbericht te ontvangen.

Resources

resources/list biedt openbare, gecachte referenties:

URIInhoud
thunderphone://docs/llms.txtOpenbare documentatie-index.
thunderphone://docs/quickstartQuickstart-Markdown.
thunderphone://pricingActuele openbare prijsinformatie in Markdown.

Lees er een met resources/read. Openbare ophaalverzoeken gebruiken een korte time-out, een limiet van 2 MiB en een procescache van tien minuten.

Protocol en fouten

De server ondersteunt protocolversies 2025-06-18 en 2025-03-26; deze echoot een ondersteunde clientversie en selecteert anders 2025-06-18. De server implementeert initialize, ping, tools, prompts, resources en meldingen. Meldingen retourneren 202 Accepted. Deze stateless server biedt geen SSE-listener of sessieverwijdering, dus GET en DELETE retourneren 405 Method Not Allowed met Allow: POST.

Toolfouten blijven succesvolle JSON-RPC-antwoorden met isError: true. Hun tekst bevat een korte zin gevolgd door een JSON-blok:

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

Het onderscheidende voorvoegsel outbound_tcpa_confirmation_required: blijft behouden voor place_call. Onbekende JSON-RPC-methoden retourneren -32601 in een HTTP-antwoord met 200. JSON-RPC-batches worden niet ondersteund door MCP 2025-06-18 en retourneren een duidelijke foutmelding -32600 voor een ongeldig verzoek.