Open in
Bruk ThunderPhone som en MCP-server
Bygg, test, valider og drift ThunderPhone-stemmeagenter fra Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code eller en annen Streamable HTTP MCP-klient.
ThunderPhone eksponerer en Streamable HTTP Model Context Protocol-server på:
https://api.thunderphone.com/v1/mcpDette er motsatt retning av å koble en ekstern MCP-server til en stemmeagent:
| Retning | Resultat |
|---|---|
| Ekstern MCP-server → ThunderPhone-agent | En stemmeagent kan kalle verktøyene på den eksterne serveren. |
| ThunderPhone → MCP-klienten din | Kodeagenten din kan bygge, teste og drifte ThunderPhone. |
Autentiser
Bruk OAuth som standard for katalogklienter: logg inn, velg en organisasjon og godkjenn de forespurte tillatelsene. Tilbakekall tilgang under Organisasjon → API-nøkler → Autoriserte apper.
For klienter som er konfigurert med en API-nøkkel, opprett en sk_live_-nøkkel under Organisasjon → Nøkler og eksponer den for MCP-klienten din som THUNDERPHONE_API_KEY. Nøkkelen er knyttet til én organisasjon; en ID som eies av en annen organisasjon, oppfører seg som om den ikke finnes.
CLI- og stdio-alternativer
ThunderPhone CLI kan skrive klientkonfigurasjon samtidig som uavhengige servere bevares:
npx -y @thunderphone/mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
npx thunderphone mcp setup --client claude-desktop --scope userEtter en global installasjon av @thunderphone/mcp bruker du thunderphone-mcp setup med de
samme alternativene. Oppsett støtter Claude Code, Codex, Cursor, VS Code, Gemini, Claude
Desktop og Windsurf. Direkte HTTP foretrekkes; Desktop bruker stdio.
For enhver klient som støtter stdio, konfigurer command: "npx" med
args: ["-y", "@thunderphone/mcp"]. Wrapperen bruker først THUNDERPHONE_API_KEY,
deretter legitimasjon fra thunderphone login, og oppdaterer utløpte tokener, deretter
OAuth gjennom mcp-remote. Enhetsinnlogging og OAuth krever at den tilsvarende API-
OAuth-funksjonen er rullet ut. API-nøkkelbanen gjør ikke det. Direkte HTTP-konfigurasjoner leser ikke
CLI-legitimasjonslageret; bruk stdio-wrapperen for å gjenbruke enhetsinnlogging.
Dette er alternativer til de manuelle klientkonfigurasjonene nedenfor.
Klientkonfigurasjon
Claude og ChatGPT logger inn med OAuth; ingen API-nøkkel er involvert. Hvis du ikke har en ThunderPhone-konto ennå, velger du Opprett konto på innloggingssiden og kommer tilbake til godkjenningsskjermen etter at du har bekreftet e-postadressen din.
Claude (nett, skrivebord og mobil)
- Åpne Tilpass → Koblinger (Innstillinger → Koblinger i eldre versjoner). Hvis ThunderPhone vises i koblingskatalogen, velger du det. Ellers velger du Legg til egendefinert kobling, gir den navnet
ThunderPhoneog angirhttps://api.thunderphone.com/v1/mcp. - Velg Koble til, logg inn på ThunderPhone, velg organisasjonen og godkjenn tillatelsene.
- I en chat aktiverer du ThunderPhone fra verktøymenyen og ber om det du trenger, for eksempel «Vis agentene mine».
Claude spør før det bruker hvert verktøy for første gang. For å hoppe over de fleste av disse spørsmålene åpner du Tilpass → Koblinger → ThunderPhone og angir Skrivebeskyttede verktøy til alltid å tillate. Disse verktøyene slår bare opp informasjon: agenter, samtaler, transkripsjoner, saldoer og dokumentasjon. La Verktøy for skriving/sletting kreve godkjenning hvis du vil se hver endring før den skjer.
Egendefinerte koblinger krever et betalt Claude-abonnement. I Team- og Enterprise-abonnementer legger en eier først til koblingen under organisasjonens koblingsinnstillinger, og deretter kobler hvert medlem til sin egen ThunderPhone-konto.
ChatGPT
- Hvis ThunderPhone vises i ChatGPTs appkatalog, velger du det og kobler til.
- Ellers åpner du Innstillinger → Apper og koblinger → Avanserte innstillinger, slår på Utviklermodus og oppretter en kobling med URL-en
https://api.thunderphone.com/v1/mcpog OAuth-autentisering. - Logg inn på ThunderPhone, velg organisasjonen og godkjenn tillatelsene. Legg til ThunderPhone i en chat fra verktøymenyen.
Sletting av en agent eller et telefonnummer, forkasting av et utkast, lansering av en kampanje og sending av en testforespørsel som kan skrive til et eksternt system krever en ekstra bekreftelse i begge appene. Se Bekrefte destruktive handlinger.
Claude Code
claude mcp add --transport http thunderphone https://api.thunderphone.com/v1/mcp \
--header "Authorization: Bearer $THUNDERPHONE_API_KEY"Codex
Legg dette til i ~/.codex/config.toml:
[mcp_servers.thunderphone]
url = "https://api.thunderphone.com/v1/mcp"
bearer_token_env_var = "THUNDERPHONE_API_KEY"Cursor
Opprett .cursor/mcp.json:
{
"mcpServers": {
"thunderphone": {
"url": "https://api.thunderphone.com/v1/mcp",
"headers": {
"Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
}
}
}
}Claude Desktop
Legg til en mcp-remote-bro i Claude Desktop-konfigurasjonen:
{
"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
Opprett .vscode/mcp.json og angi nøkkelen via VS Codes inndatadialog:
{
"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}"
}
}
}
}Verktøy
Alle verktøy har MCP-merknader. I tabellene betyr R skrivebeskyttet, D destruktivt, I idempotent og O samhandling med åpen verden/nettverk. En bindestrek betyr at ingen merknad er angitt.
Tilkobling
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
get_connection_identity | — | R, I | Validerer legitimasjonen og returnerer organisasjonen og sikker metadata om legitimasjonen. |
Agenter
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
list_agents | — | R, I | Viser agenter. |
get_agent | agent_id | R, I | Henter én agent. |
create_agent | agentkonfigurasjon | — | Oppretter en agent. |
update_agent | agent_id, endrede felt | D | Mellomlagrer felt i agentutkastet og erstatter det utkastet hadde. Kjører uten et bekreftelsestrinn: den distribuerte agenten forblir uendret til deploy_agent, og discard_agent_draft tilbakestiller utkastet. |
deploy_agent | agent_id, valgfri if_updated_at | D, I | Forfremmer utkastet til produksjon. |
discard_agent_draft | agent_id, valgfri if_updated_at, confirmation_token i den andre forespørselen | D, I | Forkaster mellomlagrede endringer. To trinn, se Bekrefte destruktive handlinger. |
duplicate_agent | agent_id, valgfri name | — | Kopierer en agent i organisasjonen. |
delete_agent | agent_id, confirmation_token i den andre forespørselen | D, I | Sletter en agent permanent. To trinn. |
list_agent_versions | agent_id | R, I | Viser distribuerte konfigurasjonsversjoner. |
Telefonnummer og operatører
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
list_phone_numbers | — | R, I | Viser organisasjonens numre og ruting. |
get_phone_number_limits | — | R, I | Henter bruk og grenser for administrerte numre. |
provision_phone_number | valgfri area_code, city, state, idempotency_key | D, O | Kjøper et innkommende nummer administrert av ThunderPhone. |
list_voip_connections | — | R, I | Viser tilkoblede kundeteleoperatører. |
search_voip_numbers | connection_id, country, type, valgfri area_code | R, I, O | Søker i teleoperatørens nummerbeholdning. |
import_voip_numbers | connection_id, numbers | D, O | Importerer numre som allerede eies hos teleoperatøren. |
update_phone_number | phone_number_id, felt for ruting/etikett/webhook | D | Oppdaterer nummerets ruting, inkludert tildeling av stemmeagent. |
delete_phone_number | phone_number_id, confirm, valgfri release_at_provider, confirmation_token i den andre forespørselen | D, I, O | Frigir et nummer. To trinn. |
SMS
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
send_sms | from_number, to, body, idempotency_key | D, I, O | Sender én SMS i ren tekst via et tilkoblet Twilio- eller Telnyx-nummer. |
Samtaler
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
list_calls | valgfrie filtre, limit, offset | R, I | Viser samtaler med REST-filtrene for samtalehistorikk. |
get_call | call_id | R, I | Henter samtalestatus og metadata. |
get_call_transcript | call_id, valgfri live | R, I | Henter samtaletranskripsjonen. |
get_call_audio_url | call_id, valgfri download | R, I, O | Returnerer en signert lyd-URL; strømmer aldri lyd via MCP. |
get_call_grade | call_id | R, I | Henter den nyeste samtalevurderingen. |
place_call | agent_id, from_number, to_number | D, O | Foretar én ikke-idempotent utgående samtale. |
export_calls | samtalefiltre, export_format | R, I | Eksporterer opptil REST-endepunktets grense som JSON eller CSV. |
Testing og validering
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
list_test_scenarios | agent_id | R, I | Viser testscenarioer. |
create_test_scenario | agent_id, title, scenario_prompt, valgfrie betingelser | — | Oppretter et scenario. |
generate_test_scenarios | agent_id, valgfri count, include_edge_cases, locale | O | Genererer scenarioer fra agentprompten. |
run_agent_tests | agent_id, channel, consent_to_charge, valgfritt utvalg/matrise | D, O | Kjører scenarioer via nett eller telefoni. |
get_test_run | agent_id, batch_id | R, I | Henter batchstatus og resultater per scenario. |
list_validation_runs | agent_id | R, I | Viser nylige valideringskjøringer for utkast. |
get_validation_status | agent_id | R, I | Henter den nyeste valideringstilstanden og samsvaret for utkastet. |
Kunnskap
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
list_knowledge_bases | — | R, I | Viser kunnskapsbaser. |
create_knowledge_base | name, valgfri description | — | Oppretter en kunnskapsbase. |
add_knowledge_document | knowledge_base_id, name, content | — | Legger til tekst eller Markdown. |
import_knowledge_url | url, valgfri name | O | Setter en offentlig side i kø for sikker innlasting. |
search_knowledge | knowledge_base_id, query | R, I | Søker i produksjonshenting. |
Integrasjoner, webhooks og eksterne MCP-servere
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
list_integrations | — | R, I | Viser HTTP-funksjonsintegrasjoner. |
create_integration | display_name, funksjons-spec, valgfrie endepunktfelter | — | Oppretter et HTTP-verktøy. Legg til autentiseringshoder i dashbordet. |
test_integration | url, valgfri metode/brødtekst/tidsavbrudd, integration_id med header_names, confirmation_token i den andre forespørselen | D, O | Sender en avgrenset, SSRF-beskyttet testforespørsel. Lagrede headerverdier fylles inn fra integrasjonen og sendes bare til dens egen vert. POST (standard), PUT, PATCH og DELETE er totrinns; GET kjører umiddelbart. |
list_webhook_endpoints | — | R, I | Viser signerte webhook-endepunkter. |
list_webhook_deliveries | valgfri agent_id, valgfri endpoint_id | R, I | Viser nylige resultater for webhook-leveringer uten nyttelast. |
create_webhook_endpoint | label, url, valgfrie hendelser/status | O | Oppretter et signert webhook-endepunkt. |
test_webhook_endpoint | endpoint_id | O | Sender en syntetisk hendelse gjennom vanlig levering. |
list_mcp_servers | — | R, I | Viser eksterne servere som kan kalles av stemmeagenter. |
create_mcp_server | display_name, url | O | Registrerer og synkroniserer en ekstern server. Servere som trenger autentiseringshoder, legges til i dashbordet. |
sync_mcp_server_tools | server_id | D, O | Oppdaterer en ekstern servers verktøykatalog. |
Kampanjer
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
list_campaigns | — | R, I | Viser utgående kampanjer. |
create_campaign | kampanjefelt | — | Oppretter en utkastkampanje. |
add_campaign_contacts | campaign_id, contacts | — | Legger til opptil 5 000 JSON-kontakter. |
campaign_action | campaign_id, action, valgfri consent_to_charge, confirmation_token i den andre forespørselen | D, O | Kjører start, pause, resume eller stop. start og resume har to trinn; pause og stop kjøres umiddelbart. |
get_campaign_stats | campaign_id | R, I | Henter tellere og nylige resultater. |
Stemmer, fakturering og dokumentasjon
| Verktøy | Hovedargumenter | Merknader | Hva det gjør |
|---|---|---|---|
list_voices | — | R, I | Viser stemmer og støttede språk. |
preview_voice | voice, language, text | O | Genererer et eksempel og returnerer en signert URL. |
list_voice_clones | — | R, I | Viser egendefinerte stemmekloner. |
get_billing_summary | — | R, I | Henter saldo og autoritative priser for nivåer; ingen betalingsendringer er eksponert. |
search_docs | query, valgfri limit | R, I, O | Søker i den offentlige dokumentasjonsindeksen. |
get_doc_page | path | R, I, O | Henter én offentlig Markdown-dokumentasjonsside. |
Alle produktverktøy bruker de samme REST-kodebanene som det offentlige API-et. REST-validering, organisasjonsavgrensning, roller, faktureringsgodkjenning, kvoter, TCPA-bekreftelse, leverandørsikkerhet og revisjonsatferd gjelder derfor uendret.
Bekreftelse av destruktive handlinger
Verktøy merket med D endrer eller fjerner noe, eller begynner å ringe ekte personer. De som ikke kan angres, krever to forespørsler. Den første forespørselen endrer ingenting 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 brukeren hva som påvirkes, og ber om et ja. Deretter gjentar den forespørselen med de samme argumentene pluss confirmation_token. En token er gyldig i 10 minutter og gjelder for én organisasjon, ett verktøy og ett eksakt sett med argumenter, så sletting av tre stemmeagenter krever tre bekreftelser. campaign_action med pause eller stop hopper over dette trinnet, slik at en aktiv kampanje alltid kan stanses umiddelbart, og det samme gjør test_integration med GET. Enkelte D-verktøy kjøres med én forespørsel fordi D-en angir effekten deres, ikke en bekreftelse på serversiden: update_agent erstatter det utkastet hadde (discard_agent_draft tilbakestiller det), deploy_agent erstatter den aktive konfigurasjonen, update_phone_number ruter aktive samtaler på nytt, sync_mcp_server_tools erstatter verktøykatalogen til en ekstern server, import_voip_numbers peker numre på nytt til operatøren din, run_agent_tests kan bruke kreditt, send_sms og place_call når en ekte person (place_call beholder sin egen samtykkebekreftelse), og provision_phone_number kjøper et nummer. MCP-klienten din kan fortsatt be deg om å godkjenne dem.
Startmeldinger
prompts/list viser fem gjenbrukbare arbeidsflyter:
create_inbound_receptionistrun_agent_testsbuy_and_attach_numberreview_low_grade_callsadd_url_to_agent_knowledge
Bruk prompts/get med det oppførte promptnavnet og de deklarerte argumentene for å motta en klar brukerforespørsel.
Ressurser
resources/list eksponerer offentlige, hurtigbufrede referanser:
| URI | Innhold |
|---|---|
thunderphone://docs/llms.txt | Offentlig dokumentasjonsindeks. |
thunderphone://docs/quickstart | Hurtigstart-Markdown. |
thunderphone://pricing | Gjeldende offentlig pris-Mardown. |
Les en ressurs med resources/read. Offentlige hentinger bruker en kort tidsavbruddsgrense, en grense på 2 MiB og en ti minutters hurtigbuffer i prosessen.
Protokoll og feil
Serveren støtter protokollversjonene 2025-06-18 og 2025-03-26; den gjentar en støttet klientversjon og velger ellers 2025-06-18. Den implementerer initialize, ping, verktøy, prompter, ressurser og varsler. Varsler returnerer 202 Accepted. Denne tilstandsløse serveren eksponerer ikke en SSE-lytter eller sletting av økter, så GET og DELETE returnerer 405 Method Not Allowed med Allow: POST.
Verktøyfeil forblir vellykkede JSON-RPC-svar med isError: true. Teksten inneholder en kort setning etterfulgt av en JSON-blokk:
{
"code": "insufficient_balance",
"detail": "There is not enough prepaid balance.",
"next_step": "Call get_billing_summary, add funds in Organization > Billing, then retry."
}Det distinkte prefikset outbound_tcpa_confirmation_required: beholdes for place_call. Ukjente JSON-RPC-metoder returnerer -32601 i et HTTP-200-svar. JSON-RPC-batcher støttes ikke av MCP 2025-06-18 og returnerer en ren -32600-feil for ugyldig forespørsel.