---
title: "ThunderPhone CLI"
description: "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:

```bash
npm install -g thunderphone
thunderphone --help
```

## Inloggen

```bash
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.

```bash
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.

| Opdracht | Doel |
| --- | --- |
| `login [--no-browser] [--scope "scopes"]` | Autoriseren via een apparaatcode |
| `logout`, `whoami` | Lokale referenties verwijderen; toegankelijke organisaties weergeven |
| `agents list`, `agents get ID` | Agenten ophalen |
| `agents create --file agent.json` | Een agent maken |
| `agents update ID --file agent.json` | Een agentconcept opslaan |
| `agents deploy ID`, `agents delete ID` | Het concept implementeren; een agent verwijderen |
| `numbers list` | Telefoonnummers ophalen |
| `numbers provision --country US --area-code 415` | Een inkomend nummer in de VS provisioneren |
| `numbers assign NUMBER_ID --agent ID` | Een inkomende agent toewijzen |
| `sms send TO --from FROM --body TEXT --idempotency-key KEY` | SMS verzenden via een providernummer dat de klant heeft gekoppeld, met veilige herhaling |
| `sms list [--limit N]`, `sms get UUID` | SMS-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 ID` | Eén oproep of het transcript ervan ophalen |
| `test run AGENT_ID [--scenario ID] --consent-to-charge` | Betaalbare 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.json` | Een JSON-import van een leverancier voorbereiden voor beoordeling |
| `imports get UUID`, `imports commit UUID` | Een import inspecteren; geselecteerde agenten na beoordeling vastleggen |
| `mcp setup`, `mcp serve` | Een 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](/nl/guides/import-agents).

## MCP-configuratie

```bash
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:

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

```bash
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.
