---
title: "ThunderPhone CLI"
description: "Logga in, hantera röstagentar och samtal, konfigurera MCP-klienter och skapa projektmallar från terminalen."
---

CLI:t kräver Node.js 18.18 eller senare. Kör det med `npx` eller installera det globalt:

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

## Logga in

```bash
npx thunderphone login
thunderphone whoami --json
```

Inloggning skriver ut en verifieringskod, öppnar webbläsaren och väntar på auktorisering.
Använd `--no-browser` på en huvudlös dator och öppna den utskrivna URL:en någon annanstans.
Enhetsinloggning kräver att API:ets OAuth-enhetsflöde har lanserats. En organisations-API-
nyckel i `THUNDERPHONE_API_KEY` kan också autentisera kommandon och har företräde
framför sparade inloggningsuppgifter.

Inloggningsuppgifter lagras per profil i `~/.config/thunderphone/credentials.json`
med filbehörigheten `0600`. `XDG_CONFIG_HOME` och `THUNDERPHONE_CONFIG_DIR` åsidosätter
katalogen. Åtkomsttoken uppdateras automatiskt och roterande uppdateringstoken sparas
atomärt. Token skrivs aldrig ut vid inloggning.

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

`THUNDERPHONE_PROFILE` anger standardprofilen. Utloggning tar bort lokala inloggningsuppgifter;
den återkallar inte serverbehörigheten. Standard-API:t är `https://api.thunderphone.com`.
Använd `--api-base-url` eller `THUNDERPHONE_API_BASE_URL` för ett annat API. En profils token
kan inte skickas till en annan konfigurerad API-URL; logga in på den URL:en med en separat profil.

## Kommandon

Varje kommando accepterar `--json`. Lyckade data skickas till stdout; fel skickas till stderr
med en slutkod som inte är noll. Utan `--json` är utdata en kompakt tabell eller fältlista.
JSON behåller API-svarets struktur, med autentiseringsfält maskerade. MCP-servering
reserverar stdout för MCP-protokollet.

| Kommando | Syfte |
| --- | --- |
| `login [--no-browser] [--scope "scopes"]` | Auktorisera via en enhetskod |
| `logout`, `whoami` | Ta bort lokala autentiseringsuppgifter; lista åtkomliga organisationer |
| `agents list`, `agents get ID` | Läs agenter |
| `agents create --file agent.json` | Skapa en agent |
| `agents update ID --file agent.json` | Spara ett agentutkast |
| `agents deploy ID`, `agents delete ID` | Distribuera utkastet; ta bort en agent |
| `numbers list` | Läs telefonnummer |
| `numbers provision --country US --area-code 415` | Tilldela ett amerikanskt inkommande nummer |
| `numbers assign NUMBER_ID --agent ID` | Tilldela en inkommande agent |
| `sms send TO --from FROM --body TEXT --idempotency-key KEY` | Skicka SMS via ett kundanslutet operatörsnummer med säker återupprepning |
| `sms list [--limit N]`, `sms get UUID` | Lista eller granska SMS-poster |
| `call TO --agent ID --from FROM [--wait]` | Ring ett utgående samtal; vänta valfritt på dess transkript |
| `calls list [--limit N] [--agent ID]` | Lista samtal (gräns 1–200) |
| `calls get ID`, `calls transcript ID` | Läs ett samtal eller dess transkript |
| `test run AGENT_ID [--scenario ID] --consent-to-charge` | Kör fakturerbara sparade scenarier med webbkanalen |
| `test status RUN_ID [--agent ID]` | Granska en batch, med scenariodetaljer när en agent anges |
| `import VENDOR export.json` | Förbered en JSON-import från en leverantör för granskning |
| `imports get UUID`, `imports commit UUID` | Granska en import; verkställ valda agenter efter granskning |
| `mcp setup`, `mcp serve` | Konfigurera en klient; starta stdio-bryggan |
| `init [directory]` | Skapa projektstruktur |

Utgående samtal kräver ett nummer med stöd för utgående samtal. `THUNDERPHONE_FROM_NUMBER` kan
ange `--from`. Kunders VoIP-nummer fortsätter att stödja utgående samtal.
Nummer som tillhandahålls av ThunderPhone är initialt endast inkommande; en organisationsadministratör kan
begära utgående samtal på sidan Telefonnumren, där varje begäran
granskas manuellt. `--wait` har som standard en tidsgräns på en timme; ange
`--timeout SECONDS` för att ändra den. En tidsgräns slutar vänta utan att avsluta samtalet.

SMS kräver också ett SMS-kapabelt nummer på ditt anslutna Twilio- eller Telnyx-
konto. Det skickar aldrig från ett nummer som ägs av ThunderPhone. Återanvänd endast en idempotensnyckel
när du försöker igen med exakt samma avsändare, mottagare och meddelandetext.

Importer stöder `vapi`, `retell`, `elevenlabs` och `bland`. Det andra argumentet är en
sökväg till en JSON-export från en leverantör, inte ett fjärranslutet leverantörs-ID. API:t förbereder en mappning
asynkront; granska den med `imports get UUID` och verkställ först när den är klar
och du har granskat de mappade fälten och varningarna. Se [agentimporter](/sv/guides/import-agents).

## MCP-konfiguration

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

Klienter: `claude-code`, `codex`, `cursor`, `vscode`, `gemini`, `claude-desktop` och
`windsurf`. Projektscope är standard. Desktop och Windsurf kräver användarscope.
Utelämna `--client` för att identifiera en enskild klient från projektet; tvetydig identifiering
frågar interaktivt eller misslyckas med instruktioner i en icke-interaktiv session.
Konfigurationen skriver ut filen den skapade och bevarar orelaterade servrar. Befintlig JSON
måste vara giltig strikt JSON; Codex TOML-värden bevaras men kommentarer kan omformateras.

Konfigurationen föredrar direkt fjärr-HTTP. Med `--api-key-env` skriver den en
variabelreferens, aldrig nyckeln. Utan det alternativet förlitar sig direkt HTTP på klientens
OAuth-stöd; den använder inte CLI:ts autentiseringsfil. Om du vill återanvända autentiseringsuppgifter från `thunderphone login`
i en klient som stöder stdio använder du:

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

Omslutningen kontrollerar `THUNDERPHONE_API_KEY`, sedan den aktuella CLI-profilen (och uppdaterar
vid behov), och delegerar därefter OAuth till `mcp-remote`. `THUNDERPHONE_MCP_URL` åsidosätter
slutpunkten. Den skickar ingen telemetri. Fristående konfiguration är också tillgänglig via
`npx -y @thunderphone/mcp setup --client cursor` eller `thunderphone-mcp setup` efter att
du har installerat `@thunderphone/mcp` globalt.

## Skapa ett projekt

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

Mallar är `node` och `python`; agenttyper är `receptionist`, `outbound` och
`custom`. Standardagenten är en engelskspråkig/spanskspråkig tandläkarreceptionist med tydliga
demofakta. Projekt innehåller `agent.json`, distributionsskript, MCP-konfigurationer för
Claude Code, Cursor och VS Code, agentinstruktioner, `.env.example` och en README.
Projektgenereringen sker offline och vägrar att skriva över en icke-tom katalog.

Redigera verksamhetsfakta före distributionen. Exportera API-nyckeln, det anslutna
uppringarnumret och din testmottagare enligt dokumentationen i den genererade README-filen. `npm run deploy`
eller `python deploy.py` skapar eller uppdaterar agenten, distribuerar dess utkast och genomför ett
debiterbart testsamtal. Skripten använder API-nyckelautentisering; CLI:t och stdio MCP-omslutningen
stöder även enhetsinloggning. Python-skript kräver Python 3.9 eller senare.
