Open in
Brug ThunderPhone som en MCP-server
Byg, test, valider og administrer ThunderPhone-stemmeagenter fra Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code eller en anden Streamable HTTP MCP-klient.
ThunderPhone eksponerer en Streamable HTTP Model Context Protocol-server på:
https://api.thunderphone.com/v1/mcpDette er den modsatte retning af at forbinde en ekstern MCP-server til en stemmeagent:
| Retning | Resultat |
|---|---|
| Ekstern MCP-server → ThunderPhone-agent | En stemmeagent kan kalde den eksterne servers værktøjer. |
| ThunderPhone → din MCP-klient | Din kodningsagent kan bygge, teste og drive ThunderPhone. |
Godkendelse
Brug som standard OAuth til katalogklienter: Log ind, vælg en organisation, og godkend de anmodede tilladelser. Tilbagekald adgang under Organisation → API-nøgler → Autoriserede apps.
For klienter, der er konfigureret med en API-nøgle, skal du oprette en sk_live_-nøgle under Organisation → Nøgler og eksponere den for din MCP-klient som THUNDERPHONE_API_KEY. Nøglen er knyttet til én organisation; et id, der ejes af en anden organisation, opfører sig som om, det ikke findes.
CLI- og stdio-alternativer
ThunderPhone CLI kan skrive klientkonfiguration, mens ikke-relaterede servere bevares:
npx -y @thunderphone/mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
npx thunderphone mcp setup --client claude-desktop --scope userEfter en global installation af @thunderphone/mcp skal du bruge thunderphone-mcp setup med de
samme indstillinger. Opsætning understøtter Claude Code, Codex, Cursor, VS Code, Gemini, Claude
Desktop og Windsurf. Direkte HTTP foretrækkes; Desktop bruger stdio.
For enhver klient, der understøtter stdio, skal du konfigurere command: "npx" med
args: ["-y", "@thunderphone/mcp"]. Wrapperen bruger først THUNDERPHONE_API_KEY,
derefter legitimationsoplysninger fra thunderphone login, opdaterer udløbne tokens og derefter
OAuth via mcp-remote. Enhedslogin og OAuth kræver den tilsvarende API-
OAuth-udrulning. API-nøglestien gør ikke. Direkte HTTP-konfigurationer læser ikke
CLI-legitimationslageret; brug stdio-wrapperen for at genbruge enhedslogin.
Dette er alternativer til de manuelle klientkonfigurationer nedenfor.
Klientkonfiguration
Claude og ChatGPT logger ind med OAuth; der bruges ingen API-nøgle. Hvis du endnu ikke har en ThunderPhone-konto, skal du vælge Opret konto på login-siden. Efter du har bekræftet din e-mail, vender du tilbage til godkendelsesskærmen.
Claude (web, desktop og mobil)
- Åbn Tilpas → Forbindelser (Indstillinger → Forbindelser i ældre versioner). Hvis ThunderPhone vises i oversigten over forbindelser, skal du vælge den. Ellers skal du vælge Tilføj brugerdefineret forbindelse, navngive den
ThunderPhoneog angivehttps://api.thunderphone.com/v1/mcp. - Vælg Forbind, log ind på ThunderPhone, vælg organisationen, og godkend tilladelserne.
- Aktivér ThunderPhone fra værktøjsmenuen i en chat, og bed om det, du har brug for, f.eks. "Vis mine agenter".
Claude spørger, før den bruger hvert værktøj første gang. For at springe de fleste af disse forespørgsler over skal du åbne Tilpas → Forbindelser → ThunderPhone og indstille Skrivebeskyttede værktøjer til altid at være tilladt. Disse værktøjer slår kun ting op: agenter, opkald, transskriptioner, saldi og dokumentation. Lad Værktøjer til skrivning/sletning kræve godkendelse, hvis du vil se hver ændring, før den sker.
Brugerdefinerede forbindelser kræver et betalt Claude-abonnement. På Team- og Enterprise-abonnementer tilføjer en ejer først forbindelsen under organisationens forbindelsesindstillinger, hvorefter hvert medlem forbinder sin egen ThunderPhone-konto.
ChatGPT
- Hvis ThunderPhone vises i ChatGPTs appoversigt, skal du vælge den og oprette forbindelse.
- Ellers skal du åbne Indstillinger → Apps og forbindelser → Avancerede indstillinger, slå Udviklertilstand til og oprette en forbindelse med URL-adressen
https://api.thunderphone.com/v1/mcpog OAuth-godkendelse. - Log ind på ThunderPhone, vælg organisationen, og godkend tilladelserne. Føj ThunderPhone til en chat fra værktøjsmenuen.
Sletning af en agent eller et telefonnummer, kassering af et udkast, lancering af en kampagne og afsendelse af en testanmodning, der kan skrive til et eksternt system, kræver en ekstra bekræftelse i begge apps. Se Bekræftelse af destruktive handlinger.
Claude Code
claude mcp add --transport http thunderphone https://api.thunderphone.com/v1/mcp \
--header "Authorization: Bearer $THUNDERPHONE_API_KEY"Codex
Føj dette til ~/.codex/config.toml:
[mcp_servers.thunderphone]
url = "https://api.thunderphone.com/v1/mcp"
bearer_token_env_var = "THUNDERPHONE_API_KEY"Cursor
Opret .cursor/mcp.json:
{
"mcpServers": {
"thunderphone": {
"url": "https://api.thunderphone.com/v1/mcp",
"headers": {
"Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
}
}
}
}Claude Desktop
Føj en mcp-remote-bro til Claude Desktop-konfigurationen:
{
"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
Opret .vscode/mcp.json, og indtast nøglen via VS Codes inputprompt:
{
"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}"
}
}
}
}Værktøjer
Alle værktøjer har MCP-annoteringer. I tabellerne betyder R skrivebeskyttet, D destruktiv, I idempotent og O interaktion med omverdenen/netværket. En tankestreg betyder, at der ikke er angivet noget hint.
Forbindelse
| Værktøj | Primære argumenter | Annoteringer | Hvad det gør |
|---|---|---|---|
get_connection_identity | — | R, I | Validerer legitimationsoplysningerne og returnerer organisationen samt sikre metadata for legitimationsoplysninger. |
Agenter
| Værktøj | Primære argumenter | Annotationer | Hvad det gør |
|---|---|---|---|
list_agents | — | R, I | Viser agenter. |
get_agent | agent_id | R, I | Henter én agent. |
create_agent | agentkonfiguration | — | Opretter en agent. |
update_agent | agent_id, ændrede felter | D | Klargør felter i agentens kladde og erstatter det, kladden indeholdt. Kører uden et bekræftelsestrin: Den deployede agent er uændret indtil deploy_agent, og discard_agent_draft gendanner kladden. |
deploy_agent | agent_id, valgfri if_updated_at | D, I | Forfremmer kladden til produktion. |
discard_agent_draft | agent_id, valgfri if_updated_at, confirmation_token i den anden anmodning | D, I | Kasserer klargjorte ændringer. To trin, se Bekræftelse af destruktive handlinger. |
duplicate_agent | agent_id, valgfri name | — | Kopierer en agent i organisationen. |
delete_agent | agent_id, confirmation_token i den anden anmodning | D, I | Sletter en agent permanent. To trin. |
list_agent_versions | agent_id | R, I | Viser deployede konfigurationsversioner. |
Telefonnumre og operatører
| Værktøj | Hovedargumenter | Annotationer | Hvad det gør |
|---|---|---|---|
list_phone_numbers | — | R, I | Viser organisationens numre og routing. |
get_phone_number_limits | — | R, I | Henter forbrug og grænser for administrerede numre. |
provision_phone_number | valgfri area_code, city, state, idempotency_key | D, O | Køber et ThunderPhone-administreret indgående nummer. |
list_voip_connections | — | R, I | Viser tilsluttede kundeteleoperatører. |
search_voip_numbers | connection_id, country, type, valgfri area_code | R, I, O | Søger i teleoperatørens nummerbeholdning. |
import_voip_numbers | connection_id, numbers | D, O | Importerer numre, der allerede ejes hos teleoperatøren. |
update_phone_number | phone_number_id, routing-/etiket-/webhook-felter | D | Opdaterer nummerrouting, herunder tildeling af agent. |
delete_phone_number | phone_number_id, confirm, valgfri release_at_provider, confirmation_token ved den anden anmodning | D, I, O | Frigiver et nummer. To trin. |
SMS
| Værktøj | Vigtigste argumenter | Annotationer | Hvad det gør |
|---|---|---|---|
send_sms | from_number, to, body, idempotency_key | D, I, O | Sender én SMS i ren tekst via et tilsluttet Twilio- eller Telnyx-nummer. |
Opkald
| Værktøj | Primære argumenter | Annotationer | Hvad det gør |
|---|---|---|---|
list_calls | valgfrie filtre, limit, offset | R, I | Viser opkald med REST-filtrene for opkaldshistorik. |
get_call | call_id | R, I | Henter opkaldsstatus og metadata. |
get_call_transcript | call_id, valgfri live | R, I | Henter opkaldstransskriptionen. |
get_call_audio_url | call_id, valgfri download | R, I, O | Returnerer en signeret lyd-URL; den streamer aldrig lyd via MCP. |
get_call_grade | call_id | R, I | Henter den seneste opkaldsvurdering. |
place_call | agent_id, from_number, to_number | D, O | Foretager ét ikke-idempotent udgående opkald. |
export_calls | opkaldsfiltre, export_format | R, I | Eksporterer op til REST-endpointets grænse som JSON eller CSV. |
Test og validering
| Værktøj | Primære argumenter | Annotationer | Hvad det gør |
|---|---|---|---|
list_test_scenarios | agent_id | R, I | Viser testscenarier. |
create_test_scenario | agent_id, title, scenario_prompt, valgfri betingelser | — | Opretter et scenarie. |
generate_test_scenarios | agent_id, valgfri count, include_edge_cases, locale | O | Genererer scenarier ud fra agentens prompt. |
run_agent_tests | agent_id, channel, consent_to_charge, valgfrit udvalg/matrix | D, O | Kører scenarier via web eller telefoni. |
get_test_run | agent_id, batch_id | R, I | Henter batchstatus og resultater pr. scenarie. |
list_validation_runs | agent_id | R, I | Viser seneste valideringskørsler for kladder. |
get_validation_status | agent_id | R, I | Henter den seneste valideringstilstand og kladdematch. |
Viden
| Værktøj | Primære argumenter | Annoteringer | Hvad det gør |
|---|---|---|---|
list_knowledge_bases | — | R, I | Viser en liste over vidensbaser. |
create_knowledge_base | name, valgfri description | — | Opretter en vidensbase. |
add_knowledge_document | knowledge_base_id, name, content | — | Tilføjer tekst eller Markdown. |
import_knowledge_url | url, valgfri name | O | Sætter en offentlig side i kø til sikker indlæsning. |
search_knowledge | knowledge_base_id, query | R, I | Søger via produktionshentning. |
Integrationer, webhooks og eksterne MCP-servere
| Værktøj | Primære argumenter | Annoteringer | Hvad det gør |
|---|---|---|---|
list_integrations | — | R, I | Viser HTTP-funktionsintegrationer. |
create_integration | display_name, funktions-spec, valgfrie endpointfelter | — | Opretter et HTTP-værktøj. Tilføj godkendelsesheadere i dashboardet. |
test_integration | url, valgfri metode/body/timeout, integration_id med header_names, confirmation_token ved den anden anmodning | D, O | Sender en afgrænset, SSRF-beskyttet testanmodning. Gemte headerværdier udfyldes fra integrationen og sendes kun til dens egen vært. POST (standarden), PUT, PATCH og DELETE foregår i to trin; GET kører med det samme. |
list_webhook_endpoints | — | R, I | Viser signerede webhook-endpoints. |
list_webhook_deliveries | valgfri agent_id, valgfri endpoint_id | R, I | Viser nylige resultater for webhook-leveringer uden payload. |
create_webhook_endpoint | label, url, valgfrie hændelser/status | O | Opretter et signeret webhook-endpoint. |
test_webhook_endpoint | endpoint_id | O | Sender en syntetisk hændelse gennem den normale levering. |
list_mcp_servers | — | R, I | Viser fjernservere, som kan kaldes af stemmeagenter. |
create_mcp_server | display_name, url | O | Registrerer og synkroniserer en fjernserver. Servere, der kræver godkendelsesheadere, tilføjes i dashboardet. |
sync_mcp_server_tools | server_id | D, O | Opdaterer en fjernservers værktøjskatalog. |
Kampagner
| Værktøj | Primære argumenter | Annoteringer | Hvad det gør |
|---|---|---|---|
list_campaigns | — | R, I | Viser en liste over udgående kampagner. |
create_campaign | kampagnefelter | — | Opretter en kampagnekladde. |
add_campaign_contacts | campaign_id, contacts | — | Tilføjer op til 5.000 JSON-kontakter. |
campaign_action | campaign_id, action, valgfri consent_to_charge, confirmation_token i den anden anmodning | D, O | Kører start, pause, resume eller stop. start og resume er i to trin; pause og stop køres med det samme. |
get_campaign_stats | campaign_id | R, I | Henter tællere og seneste resultater. |
Stemmer, fakturering og dokumentation
| Værktøj | Primære argumenter | Annoteringer | Hvad det gør |
|---|---|---|---|
list_voices | — | R, I | Viser stemmer og understøttede sprog. |
preview_voice | voice, language, text | O | Genererer en prøve og returnerer en signeret URL. |
list_voice_clones | — | R, I | Viser brugerdefinerede stemmekloner. |
get_billing_summary | — | R, I | Henter saldo og autoritative priser for niveauer; ingen betalingsændringer er tilgængelige. |
search_docs | query, valgfri limit | R, I, O | Søger i det offentlige dokumentationsindeks. |
get_doc_page | path | R, I, O | Henter én offentlig Markdown-dokumentationsside. |
Alle produktværktøjer bruger de samme REST-kodestier som det offentlige API. REST-validering, organisationsafgrænsning, roller, faktureringsadgang, kvoter, TCPA-bekræftelse, udbydersikkerhed og revisionsadfærd gælder derfor uændret.
Bekræftelse af destruktive handlinger
Værktøjer markeret med D ændrer eller fjerner noget eller begynder at ringe til rigtige personer. De, der ikke kan fortrydes, kræver to anmodninger. Den første anmodning ændrer ikke noget og returnerer:
{
"status": "confirmation_required",
"action": "Delete agent",
"target": { "id": 195, "name": "Front Desk Receptionist" },
"confirmation_token": "…",
"expires_in_seconds": 600,
"next_step": "…"
}Assistenten viser brugeren, hvad der påvirkes, og beder om et ja. Derefter gentager den anmodningen med de samme argumenter plus confirmation_token. En token er gyldig i 10 minutter og dækker én organisation, ét værktøj og ét præcist sæt argumenter, så sletning af tre agenter kræver tre bekræftelser. campaign_action med pause eller stop springer dette trin over, så en kørende kampagne altid kan stoppes med det samme, og det samme gælder test_integration med GET. Nogle D-værktøjer kører i én anmodning, fordi D angiver deres effekt, ikke en bekræftelse på serversiden: update_agent erstatter det, kladden indeholdt (discard_agent_draft gendanner det), deploy_agent erstatter den aktive konfiguration, update_phone_number omdirigerer aktive opkald, sync_mcp_server_tools erstatter et fjernservers værktøjskatalog, import_voip_numbers omdirigerer numre til din operatør, run_agent_tests kan bruge kredit, send_sms og place_call kontakter en rigtig person (place_call beholder sin egen samtykkebekræftelse), og provision_phone_number køber et nummer. Din MCP-klient kan stadig bede dig om at godkende dem.
Startprompter
prompts/list tilbyder fem genanvendelige arbejdsgange:
create_inbound_receptionistrun_agent_testsbuy_and_attach_numberreview_low_grade_callsadd_url_to_agent_knowledge
Brug prompts/get med det angivne promptnavn og dets deklarerede argumenter for at modtage en klar-til-kørsel-brugermeddelelse.
Ressourcer
resources/list eksponerer offentlige, cachelagrede referencer:
| URI | Indhold |
|---|---|
thunderphone://docs/llms.txt | Offentligt dokumentationsindeks. |
thunderphone://docs/quickstart | Hurtigstart-Markdown. |
thunderphone://pricing | Aktuel offentlig pris-Markdown. |
Læs en ressource med resources/read. Offentlige hentninger bruger en kort timeout, en grænse på 2 MiB og en ti minutters cache i processen.
Protokol og fejl
Serveren understøtter protokolversionerne 2025-06-18 og 2025-03-26; den gengiver en understøttet klientversion og vælger ellers 2025-06-18. Den implementerer initialize, ping, værktøjer, prompter, ressourcer og notifikationer. Notifikationer returnerer 202 Accepted. Denne tilstandsløse server eksponerer ikke en SSE-lytter eller sletning af sessioner, så GET og DELETE returnerer 405 Method Not Allowed med Allow: POST.
Værktøjsfejl forbliver vellykkede JSON-RPC-svar med isError: true. Deres tekst indeholder en kort sætning efterfulgt af en 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."
}Det særskilte præfiks outbound_tcpa_confirmation_required: bevares for place_call. Ukendte JSON-RPC-metoder returnerer -32601 i et HTTP-200-svar. JSON-RPC-batches understøttes ikke af MCP 2025-06-18 og returnerer en ren -32600-fejl for ugyldig anmodning.