ThunderPhone 2.0 är här.Kom igång på egen hand, från 2 ¢/min.Läs lanseringsnyheten

Connect tools & data

Använd ThunderPhone som en MCP-server

Bygg, testa, validera och hantera ThunderPhone-röstagenter från Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code eller en annan Streamable HTTP MCP-klient.

ThunderPhone tillhandahåller en Streamable HTTP Model Context Protocol-server på:

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

Detta är motsatt riktning jämfört med att ansluta en fjärransluten MCP-server till en röstagent:

RiktningResultat
Fjärransluten MCP-server → ThunderPhone-agentEn röstagent kan anropa verktygen på fjärrservern.
ThunderPhone → din MCP-klientDin kodningsagent kan bygga, testa och administrera ThunderPhone.

Autentisera

Använd OAuth som standard för katalogklienter: logga in, välj en organisation och godkänn de begärda behörigheterna. Återkalla åtkomst under Organisation → API-nycklar → Auktoriserade appar.

För klienter som konfigurerats med en API-nyckel skapar du en sk_live_-nyckel under Organisation → Nycklar och exponerar den för din MCP-klient som THUNDERPHONE_API_KEY. Nyckeln är bunden till en organisation; ett ID som ägs av en annan organisation behandlas som om det inte hittades.

CLI- och stdio-alternativ

ThunderPhone CLI kan skriva klientkonfiguration samtidigt som andra servrar bevaras:

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

Efter en global installation av @thunderphone/mcp använder du thunderphone-mcp setup med samma alternativ. Konfigurationen stöder Claude Code, Codex, Cursor, VS Code, Gemini, Claude Desktop och Windsurf. Direkt HTTP rekommenderas; Desktop använder stdio.

För alla klienter som stöder stdio konfigurerar du command: "npx" med args: ["-y", "@thunderphone/mcp"]. Wrappen använder först THUNDERPHONE_API_KEY, sedan autentiseringsuppgifter från thunderphone login, uppdaterar utgångna token och därefter OAuth via mcp-remote. Enhetsinloggning och OAuth kräver motsvarande API- OAuth-utrullning. API-nyckelsökvägen gör inte det. Direkta HTTP-konfigurationer läser inte CLI:ts autentiseringslagring; använd stdio-wrappen för att återanvända enhetsinloggning.

Dessa är alternativ till de manuella klientkonfigurationerna nedan.

Klientkonfiguration

Claude och ChatGPT loggar in med OAuth; ingen API-nyckel används. Om du ännu inte har ett ThunderPhone-konto väljer du Skapa konto på inloggningssidan och återvänder till godkännandeskärmen efter att du har verifierat din e-postadress.

Claude (webb, dator och mobil)

  1. Öppna Anpassa → Anslutningar (Inställningar → Anslutningar i äldre versioner). Om ThunderPhone visas i anslutningskatalogen väljer du det. Annars väljer du Lägg till egen anslutning, namnger den ThunderPhone och anger https://api.thunderphone.com/v1/mcp.
  2. Välj Anslut, logga in på ThunderPhone, välj organisation och godkänn behörigheterna.
  3. Aktivera ThunderPhone i verktygsmenyn i en chatt och be om det du behöver, till exempel ”Lista mina agenter”.

Claude frågar innan det använder varje verktyg för första gången. För att hoppa över de flesta av dessa uppmaningar öppnar du Anpassa → Anslutningar → ThunderPhone och ställer in Skrivskyddade verktyg på alltid tillåtna. Dessa verktyg hämtar bara information: agenter, samtal, transkriptioner, saldon och dokumentation. Låt Verktyg för att skriva/ta bort kräva godkännande om du vill se varje ändring innan den sker.

Egna anslutningar kräver en betald Claude-plan. I Team- och Enterprise-planer lägger en ägare först till anslutningen i organisationens anslutningsinställningar, och sedan ansluter varje medlem sitt eget ThunderPhone-konto.

ChatGPT

  1. Om ThunderPhone visas i ChatGPT:s appkatalog väljer du det och ansluter.
  2. Annars öppnar du Inställningar → Appar och anslutningar → Avancerade inställningar, aktiverar Utvecklarläge och skapar en anslutning med URL:en https://api.thunderphone.com/v1/mcp och OAuth-autentisering.
  3. Logga in på ThunderPhone, välj organisation och godkänn behörigheterna. Lägg till ThunderPhone i en chatt från verktygsmenyn.

Om du raderar en agent eller ett telefonnummer, kasserar ett utkast, startar en kampanj eller skickar en testbegäran som kan skriva till ett externt system krävs en andra bekräftelse i båda apparna. Se Bekräfta destruktiva åtgärder.

Claude Code

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

Codex

Lägg till detta i ~/.codex/config.toml:

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

Cursor

Skapa .cursor/mcp.json:

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

Claude Desktop

Lägg till en mcp-remote-brygga i Claude Desktops konfiguration:

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

Skapa .vscode/mcp.json och ange nyckeln via VS Codes inmatningsdialog:

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

Verktyg

Varje verktyg har MCP-annoteringar. I tabellerna betyder R skrivskyddad, D destruktiv, I idempotent och O interaktion med omvärlden/nätverket. Ett streck betyder att ingen indikator är angiven.

Anslutning

VerktygHuvudargumentAnnoteringarFunktion
get_connection_identity—R, IValiderar autentiseringsuppgifterna och returnerar dess organisation samt säker metadata om autentiseringsuppgifterna.

Agenter

VerktygHuvudargumentAnteckningarVad det gör
list_agents—R, IListar agenter.
get_agentagent_idR, IHämtar en agent.
create_agentagentkonfiguration—Skapar en agent.
update_agentagent_id, ändrade fältDLagrar fält i agentutkastet och ersätter det som fanns i utkastet. Körs utan bekräftelsesteg: den driftsatta agenten är oförändrad tills deploy_agent, och discard_agent_draft återställer utkastet.
deploy_agentagent_id, valfritt if_updated_atD, IBefordrar utkastet till produktion.
discard_agent_draftagent_id, valfritt if_updated_at, confirmation_token i den andra begäranD, IKasserar mellanlagrade ändringar. Två steg, se Bekräfta förstörande åtgärder.
duplicate_agentagent_id, valfritt name—Kopierar en agent inom organisationen.
delete_agentagent_id, confirmation_token i den andra begäranD, ITar permanent bort en agent. Två steg.
list_agent_versionsagent_idR, IListar driftsatta konfigurationsversioner.

Telefonnummer och operatörer

VerktygHuvudargumentAnteckningarVad det gör
list_phone_numbers—R, IListar organisationens nummer och dirigering.
get_phone_number_limits—R, IHämtar användning och gränser för hanterade nummer.
provision_phone_numbervalfritt area_code, city, state, idempotency_keyD, OKöper ett inkommande nummer som hanteras av ThunderPhone.
list_voip_connections—R, IListar anslutna kundoperatörer.
search_voip_numbersconnection_id, country, type, valfritt area_codeR, I, OSöker i operatörens nummerinventarie.
import_voip_numbersconnection_id, numbersD, OImporterar nummer som redan ägs hos operatören.
update_phone_numberphone_number_id, fält för dirigering/etikett/webhookDUppdaterar nummerdirigering, inklusive agenttilldelning.
delete_phone_numberphone_number_id, confirm, valfritt release_at_provider, confirmation_token vid den andra begäranD, I, OFrisläpper ett nummer. I två steg.

SMS

VerktygHuvudargumentAnteckningarVad det gör
send_smsfrom_number, to, body, idempotency_keyD, I, OSkickar ett SMS i klartext via ett anslutet Twilio- eller Telnyx-nummer.

Samtal

VerktygHuvudargumentAnteckningarVad det gör
list_callsvalfria filter, limit, offsetR, IListar samtal med REST-filtren för samtalshistorik.
get_callcall_idR, IHämtar samtalsstatus och metadata.
get_call_transcriptcall_id, valfritt liveR, IHämtar samtalstranskriptionen.
get_call_audio_urlcall_id, valfritt downloadR, I, OReturnerar en signerad ljud-URL; ljud strömmas aldrig via MCP.
get_call_gradecall_idR, IHämtar den senaste samtalsbedömningen.
place_callagent_id, from_number, to_numberD, ORinger ett icke-idempotent utgående samtal.
export_callssamtalsfilter, export_formatR, IExporterar upp till REST-slutpunktens gräns som JSON eller CSV.

Testning och validering

VerktygHuvudargumentKommentarerFunktion
list_test_scenariosagent_idR, IVisar testscenarier.
create_test_scenarioagent_id, title, scenario_prompt, valfria villkor—Skapar ett scenario.
generate_test_scenariosagent_id, valfria count, include_edge_cases, localeOGenererar scenarier från agentens prompt.
run_agent_testsagent_id, channel, consent_to_charge, valfritt urval/matrisD, OKör scenarier via webben eller telefoni.
get_test_runagent_id, batch_idR, IHämtar batchstatus och resultat per scenario.
list_validation_runsagent_idR, IVisar senaste valideringskörningar för utkast.
get_validation_statusagent_idR, IHämtar den senaste valideringsstatusen och matchningen för utkastet.

Kunskap

VerktygHuvudargumentAnnoteringarFunktion
list_knowledge_bases—R, IListar kunskapsbaser.
create_knowledge_basename, valfri description—Skapar en kunskapsbas.
add_knowledge_documentknowledge_base_id, name, content—Lägger till text eller Markdown.
import_knowledge_urlurl, valfri nameOKöar en offentlig sida för säker inläsning.
search_knowledgeknowledge_base_id, queryR, ISöker via hämtning i produktion.

Integrationer, webhooks och fjärranslutna MCP-servrar

VerktygHuvudargumentAnteckningarVad det gör
list_integrations—R, IListar HTTP-funktionsintegrationer.
create_integrationdisplay_name, funktions-spec, valfria slutpunktsfält—Skapar ett HTTP-verktyg. Lägg till autentiseringsrubriker i instrumentpanelen.
test_integrationurl, valfri metod/brödtext/tidsgräns, integration_id med header_names, confirmation_token vid den andra begäranD, OSkickar en begränsad, SSRF-skyddad testbegäran. Sparade rubrikvärden fylls i från integrationen och skickas endast till dess egen värd. POST (standard), PUT, PATCH och DELETE sker i två steg; GET körs direkt.
list_webhook_endpoints—R, IListar signerade webhook-slutpunkter.
list_webhook_deliveriesvalfritt agent_id, valfritt endpoint_idR, IListar senaste utfall för webhook-leveranser utan nyttolast.
create_webhook_endpointlabel, url, valfria händelser/statusOSkapar en signerad webhook-slutpunkt.
test_webhook_endpointendpoint_idOSkickar en syntetisk händelse via normal leverans.
list_mcp_servers—R, IListar fjärrservrar som kan anropas av röstagenten.
create_mcp_serverdisplay_name, urlORegistrerar och synkroniserar en fjärrserver. Servrar som behöver autentiseringsrubriker läggs till i instrumentpanelen.
sync_mcp_server_toolsserver_idD, OUppdaterar en fjärrservers verktygskatalog.

Kampanjer

VerktygHuvudargumentAnnoteringarFunktion
list_campaigns—R, IListar utgående kampanjer.
create_campaignkampanjfält—Skapar en utkastskampanj.
add_campaign_contactscampaign_id, contacts—Lägger till upp till 5 000 JSON-kontakter.
campaign_actioncampaign_id, action, valfri consent_to_charge, confirmation_token vid den andra begäranD, OKör start, pause, resume eller stop. start och resume sker i två steg; pause och stop körs direkt.
get_campaign_statscampaign_idR, IHämtar räknare och nyliga utfall.

Röster, fakturering och dokumentation

VerktygHuvudargumentAnmärkningarFunktion
list_voices—R, IListar röster och språk som stöds.
preview_voicevoice, language, textOGenererar ett exempel och returnerar en signerad URL.
list_voice_clones—R, IListar anpassade röstkloner.
get_billing_summary—R, IHämtar saldo och auktoritativa priser för nivåer; inga betalningsändringar exponeras.
search_docsquery, valfritt limitR, I, OSöker i det offentliga dokumentationsindexet.
get_doc_pagepathR, I, OHämtar en offentlig Markdown-dokumentationssida.

Alla produktverktyg använder samma REST-kodvägar som det offentliga API:et. REST-validering, organisationsavgränsning, roller, behörighetskontroll för fakturering, kvoter, TCPA-bekräftelse, leverantörssäkerhet och granskningsbeteende gäller därför utan förändringar.

Bekräfta destruktiva åtgärder

Verktyg märkta med D ändrar eller tar bort något, eller börjar ringa riktiga personer. De som inte kan ångras kräver två förfrågningar. Den första förfrågan ändrar ingenting och returnerar:

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

Assistenten visar användaren vad som påverkas och ber om ett ja. Därefter upprepar den förfrågan med samma argument plus confirmation_token. En token är giltig i 10 minuter och gäller för en organisation, ett verktyg och en exakt uppsättning argument, så att ta bort tre agenter kräver tre bekräftelser. campaign_action med pause eller stop hoppar över det här steget så att en pågående kampanj alltid kan stoppas direkt, och detsamma gäller test_integration med GET. Vissa D-verktyg körs med en förfrågan eftersom D markerar deras effekt, inte en bekräftelse på serversidan: update_agent ersätter det som utkastet innehöll (discard_agent_draft återställer det), deploy_agent ersätter den aktiva konfigurationen, update_phone_number dirigerar om aktiva samtal, sync_mcp_server_tools ersätter en fjärrservers verktygskatalog, import_voip_numbers pekar om nummer till din operatör, run_agent_tests kan använda kredit, send_sms och place_call når en riktig person (place_call behåller sin egen samtyckesbekräftelse) och provision_phone_number köper ett nummer. Din MCP-klient kan fortfarande be dig att godkänna dem.

Startprompter

prompts/list visar fem återanvändbara arbetsflöden:

  • create_inbound_receptionist
  • run_agent_tests
  • buy_and_attach_number
  • review_low_grade_calls
  • add_url_to_agent_knowledge

Använd prompts/get med det angivna promptnamnet och dess deklarerade argument för att få ett körklart användarmeddelande.

Resurser

resources/list exponerar offentliga, cachade referenser:

URIInnehåll
thunderphone://docs/llms.txtIndex över offentlig dokumentation.
thunderphone://docs/quickstartSnabbstart i Markdown.
thunderphone://pricingAktuell offentlig prisinformation i Markdown.

Läs en resurs med resources/read. Offentliga hämtningar använder en kort tidsgräns, en gräns på 2 MiB och en tiominuterscache i processen.

Protokoll och fel

Servern stöder protokollversionerna 2025-06-18 och 2025-03-26; den ekar en klientversion som stöds och väljer annars 2025-06-18. Den implementerar initialize, ping, verktyg, prompter, resurser och notifieringar. Notifieringar returnerar 202 Accepted. Denna tillståndslösa server exponerar ingen SSE-lyssnare eller sessionsradering, så GET och DELETE returnerar 405 Method Not Allowed med Allow: POST.

Verktygsfel är fortfarande lyckade JSON-RPC-svar med isError: true. Deras text innehåller en kort mening följd av ett JSON-block:

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

Det distinkta prefixet outbound_tcpa_confirmation_required: behålls för place_call. Okända JSON-RPC-metoder returnerar -32601 i ett HTTP-200-svar. JSON-RPC-batchar stöds inte av MCP 2025-06-18 och returnerar ett tydligt -32600-fel för ogiltig förfrågan.