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

Getting Started

ThunderPhone CLI

Log in, beheer spraakagenten en oproepen, configureer MCP-clients en zet projecten op vanuit de terminal.

De CLI vereist Node.js 18.18 of later. Voer deze uit met npx, of installeer deze globaal:

npm install -g thunderphone
thunderphone --help

Inloggen

npx thunderphone login
thunderphone whoami --json

Inloggen toont een verificatiecode, opent de browser en wacht op autorisatie. Gebruik --no-browser op een headless machine en open de getoonde URL elders. Inloggen op een apparaat vereist de uitrol van de OAuth-apparaatstroom van de API. Een API-sleutel van een organisatie in THUNDERPHONE_API_KEY kan ook opdrachten verifiëren en krijgt voorrang op opgeslagen inloggegevens.

Inloggegevens worden per profiel opgeslagen in ~/.config/thunderphone/credentials.json met bestandsmodus 0600. XDG_CONFIG_HOME en THUNDERPHONE_CONFIG_DIR overschrijven de map. Toegangstokens worden automatisch vernieuwd en roterende vernieuwingstokens worden atomair opgeslagen. Tokens worden nooit getoond tijdens het inloggen.

thunderphone login --profile work
thunderphone agents list --profile work --json
thunderphone logout --profile work

THUNDERPHONE_PROFILE stelt het standaardprofiel in. Uitloggen verwijdert lokale inloggegevens; het trekt de serverautorisatie niet in. De standaard-API is https://api.thunderphone.com. Gebruik --api-base-url of THUNDERPHONE_API_BASE_URL voor een andere API. Het token van een profiel kan niet naar een andere geconfigureerde API-URL worden verzonden; log voor die URL in met een afzonderlijk profiel.

Opdrachten

Elke opdracht accepteert --json. Succesvolle gegevens gaan naar stdout; fouten gaan naar stderr met een exitcode die niet nul is. Zonder --json is de uitvoer een compacte tabel of lijst met velden. JSON behoudt de structuur van de API-respons, waarbij referentievelden zijn weggelakt. MCP-serving reserveert stdout voor het MCP-protocol.

OpdrachtDoel
login [--no-browser] [--scope "scopes"]Autoriseren via een apparaatcode
logout, whoamiLokale referenties verwijderen; toegankelijke organisaties weergeven
agents list, agents get IDAgenten ophalen
agents create --file agent.jsonEen agent maken
agents update ID --file agent.jsonEen agentconcept opslaan
agents deploy ID, agents delete IDHet concept implementeren; een agent verwijderen
numbers listTelefoonnummers ophalen
numbers provision --country US --area-code 415Een inkomend nummer in de VS provisioneren
numbers assign NUMBER_ID --agent IDEen inkomende agent toewijzen
sms send TO --from FROM --body TEXT --idempotency-key KEYSMS verzenden via een providernummer dat de klant heeft gekoppeld, met veilige herhaling
sms list [--limit N], sms get UUIDSMS-records weergeven of inspecteren
call TO --agent ID --from FROM [--wait]Een uitgaande oproep plaatsen; optioneel wachten op het transcript
calls list [--limit N] [--agent ID]Oproepen weergeven (limiet 1–200)
calls get ID, calls transcript IDEén oproep of het transcript ervan ophalen
test run AGENT_ID [--scenario ID] --consent-to-chargeBetaalbare opgeslagen scenario's uitvoeren via het webkanaal
test status RUN_ID [--agent ID]Een batch inspecteren, met scenariodetails wanneer een agent is opgegeven
import VENDOR export.jsonEen JSON-import van een leverancier voorbereiden voor beoordeling
imports get UUID, imports commit UUIDEen import inspecteren; geselecteerde agenten na beoordeling vastleggen
mcp setup, mcp serveEen client configureren; de stdio-bridge starten
init [directory]Een projectstructuur genereren

Uitgaande oproepen vereisen een nummer dat geschikt is voor uitgaande oproepen. THUNDERPHONE_FROM_NUMBER kan --from leveren. VoIP-nummers van klanten blijven uitgaande oproepen ondersteunen. Door ThunderPhone geprovisioneerde nummers zijn aanvankelijk alleen inkomend; een organisatiebeheerder kan uitgaande oproepen aanvragen op de pagina Telefoonnummers, waar elk verzoek handmatig wordt beoordeeld. --wait gebruikt standaard een time-out van één uur; stel --timeout SECONDS in om dit te wijzigen. Een time-out stopt het wachten zonder de oproep te beëindigen.

SMS vereist ook een nummer met SMS-ondersteuning in je gekoppelde Twilio- of Telnyx- account. Er wordt nooit verzonden vanaf een nummer van ThunderPhone. Hergebruik een idempotentiesleutel alleen wanneer je exact dezelfde afzender, ontvanger en berichttekst opnieuw probeert.

Imports ondersteunen vapi, retell, elevenlabs en bland. Het tweede argument is een pad naar een JSON-export van een leverancier, geen externe leverancier-ID. De API bereidt asynchroon een toewijzing voor; inspecteer deze met imports get UUID en leg deze pas vast wanneer deze klaar is en je de toegewezen velden en waarschuwingen hebt beoordeeld. Zie agentimports.

MCP-configuratie

thunderphone mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
thunderphone mcp setup --client codex --scope user --api-key-env THUNDERPHONE_API_KEY
thunderphone mcp setup --client claude-desktop --scope user

Clients: claude-code, codex, cursor, vscode, gemini, claude-desktop en windsurf. Projectscope is de standaardinstelling. Desktop en Windsurf vereisen gebruikersscope. Laat --client weg om één client uit het project te detecteren; bij onduidelijke detectie wordt interactief om invoer gevraagd of mislukt de configuratie met instructies in een niet-interactieve sessie. De configuratie toont het bestand dat is geschreven en behoudt niet-gerelateerde servers. Bestaande JSON moet geldige strikte JSON zijn; Codex TOML-waarden blijven behouden, maar opmerkingen kunnen opnieuw worden opgemaakt.

De configuratie geeft de voorkeur aan rechtstreekse externe HTTP. Met --api-key-env schrijft deze een variabeleverwijzing, nooit de sleutel. Zonder die optie is rechtstreekse HTTP afhankelijk van de OAuth-ondersteuning van de client; het gebruikt niet het CLI-inloggegevensbestand. Gebruik het volgende om thunderphone login- inloggegevens opnieuw te gebruiken in elke client die stdio ondersteunt:

{
  "mcpServers": {
    "thunderphone": {
      "command": "npx",
      "args": ["-y", "@thunderphone/mcp"]
    }
  }
}

De wrapper controleert THUNDERPHONE_API_KEY, daarna het huidige CLI-profiel (en vernieuwt dit indien nodig), en delegeert vervolgens OAuth aan mcp-remote. THUNDERPHONE_MCP_URL overschrijft het eindpunt. Er wordt geen telemetrie verzonden. Zelfstandige configuratie is ook beschikbaar via npx -y @thunderphone/mcp setup --client cursor of thunderphone-mcp setup na het globaal installeren van @thunderphone/mcp.

Een project maken

npx create-thunderphone-agent my-receptionist
npx create-thunderphone-agent my-outbound --template python --agent-type outbound
# Equivalent:
thunderphone init my-receptionist --template node --agent-type receptionist

Templates zijn node en python; agenttypen zijn receptionist, outbound en custom. De standaardagent is een Engels-/Spaanstalige tandartsreceptionist met expliciete demofeiten. Projecten bevatten agent.json, deployscripts, MCP-configuraties voor Claude Code, Cursor en VS Code, agentinstructies, .env.example en een README. Scaffolding werkt offline en weigert een niet-lege directory te overschrijven.

Bewerk de bedrijfsgegevens vóór de deployment. Exporteer de API-sleutel, het gekoppelde bellernummer en je testontvanger zoals beschreven in de gegenereerde README. npm run deploy of python deploy.py maakt de agent aan of werkt deze bij, deployt het concept en plaatst een factureerbare testoproep. De scripts gebruiken authenticatie met API-sleutel; de CLI en stdio MCP- wrapper ondersteunen ook inloggen via apparaat. Python-scripts vereisen Python 3.9 of hoger.