---
title: "ThunderPhone CLI"
description: "Conectați-vă, gestionați agenți vocali și apeluri, configurați clienți MCP și creați structuri de proiecte din terminal."
---

CLI necesită Node.js 18.18 sau o versiune ulterioară. Rulați-l cu `npx` sau instalați-l global:

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

## Autentificare

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

Autentificarea afișează un cod de verificare, deschide browserul și așteaptă autorizarea.
Utilizați `--no-browser` pe o mașină fără interfață grafică și deschideți URL-ul afișat în altă parte.
Autentificarea dispozitivului necesită implementarea fluxului OAuth pentru dispozitive al API-ului. O cheie API a organizației
din `THUNDERPHONE_API_KEY` poate autentifica, de asemenea, comenzile și are prioritate
față de datele de autentificare stocate.

Datele de autentificare sunt stocate pe profil în `~/.config/thunderphone/credentials.json`
cu modul de fișier `0600`. `XDG_CONFIG_HOME` și `THUNDERPHONE_CONFIG_DIR` suprascriu
directorul. Tokenurile de acces se reîmprospătează automat, iar tokenurile de reîmprospătare rotative sunt
salvate atomic. Tokenurile nu sunt afișate niciodată de autentificare.

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

`THUNDERPHONE_PROFILE` stabilește profilul implicit. Deautentificarea elimină datele de autentificare locale;
nu revocă autorizarea de pe server. API-ul implicit este `https://api.thunderphone.com`.
Utilizați `--api-base-url` sau `THUNDERPHONE_API_BASE_URL` pentru un alt API. Tokenul unui profil
nu poate fi trimis către un URL API configurat diferit; autentificați-vă la acel URL cu un profil separat.

## Comenzi

Fiecare comandă acceptă `--json`. Datele reușite sunt trimise la stdout; erorile sunt trimise la stderr
cu un cod de ieșire diferit de zero. Fără `--json`, rezultatul este un tabel compact sau o listă de câmpuri.
JSON păstrează structura răspunsului API, cu câmpurile de acreditare redactate. Servirea MCP
rezervă stdout pentru protocolul MCP.

| Comandă | Scop |
| --- | --- |
| `login [--no-browser] [--scope "scopes"]` | Autorizați printr-un cod de dispozitiv |
| `logout`, `whoami` | Eliminați acreditările locale; listați organizațiile accesibile |
| `agents list`, `agents get ID` | Citiți agenți |
| `agents create --file agent.json` | Creați un agent |
| `agents update ID --file agent.json` | Salvați o schiță de agent |
| `agents deploy ID`, `agents delete ID` | Implementați schița; ștergeți un agent |
| `numbers list` | Citiți numere de telefon |
| `numbers provision --country US --area-code 415` | Furnizați un număr de intrare din SUA |
| `numbers assign NUMBER_ID --agent ID` | Atribuiți un agent pentru apeluri primite |
| `sms send TO --from FROM --body TEXT --idempotency-key KEY` | Trimiteți SMS printr-un număr de operator conectat de client, cu reluare sigură |
| `sms list [--limit N]`, `sms get UUID` | Listați sau inspectați înregistrări SMS |
| `call TO --agent ID --from FROM [--wait]` | Efectuați un apel de ieșire; opțional, așteptați transcrierea acestuia |
| `calls list [--limit N] [--agent ID]` | Listați apeluri (limită 1–200) |
| `calls get ID`, `calls transcript ID` | Citiți un apel sau transcrierea acestuia |
| `test run AGENT_ID [--scenario ID] --consent-to-charge` | Rulați scenarii salvate facturabile prin canalul web |
| `test status RUN_ID [--agent ID]` | Inspectați un lot, cu detalii despre scenarii atunci când este furnizat un agent |
| `import VENDOR export.json` | Pregătiți pentru revizuire un import JSON de la un furnizor |
| `imports get UUID`, `imports commit UUID` | Inspectați un import; confirmați agenții selectați după revizuire |
| `mcp setup`, `mcp serve` | Configurați un client; porniți puntea stdio |
| `init [directory]` | Generați structura unui proiect |

Apelurile de ieșire necesită un număr activat pentru apeluri de ieșire. `THUNDERPHONE_FROM_NUMBER` poate
furniza `--from`. Numerele VoIP ale clienților continuă să accepte apeluri de ieșire.
Numerele furnizate de ThunderPhone sunt inițial doar pentru apeluri primite; un administrator al organizației poate
solicita apeluri de ieșire din pagina Numere de telefon, unde fiecare solicitare este
revizuită manual. `--wait` folosește implicit un termen de expirare de o oră; setați
`--timeout SECONDS` pentru a-l modifica. Expirarea termenului oprește așteptarea fără a încheia apelul.

SMS necesită, de asemenea, un număr compatibil SMS în contul Twilio sau Telnyx
conectat. Nu trimite niciodată de la un număr deținut de ThunderPhone. Reutilizați o cheie de idempotentă
numai atunci când reîncercați cu exact același expeditor, destinatar și conținut.

Importurile acceptă `vapi`, `retell`, `elevenlabs` și `bland`. Al doilea argument este o
cale către un export JSON al furnizorului, nu un ID de furnizor la distanță. API-ul pregătește o mapare
asincron; inspectați-o cu `imports get UUID` și confirmați-o numai după ce este pregătită
și ați revizuit câmpurile mapate și avertismentele. Consultați [importuri de agenți](/ro/guides/import-agents).

## Configurarea MCP

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

Clienți: `claude-code`, `codex`, `cursor`, `vscode`, `gemini`, `claude-desktop` și
`windsurf`. Scopul de proiect este implicit. Desktop și Windsurf necesită scop de utilizator.
Omiteți `--client` pentru a detecta un singur client din proiect; detectarea ambiguă
solicită interactiv o alegere sau eșuează cu instrucțiuni într-o sesiune neinteractivă.
Configurarea afișează fișierul scris și păstrează serverele fără legătură. Fișierul JSON
existent trebuie să fie JSON strict valid; valorile TOML Codex sunt păstrate, însă comentariile pot fi reformatare.

Configurarea preferă HTTP remote direct. Cu `--api-key-env`, scrie o referință
la variabilă, niciodată cheia. Fără această opțiune, HTTP direct se bazează pe suportul
OAuth al clientului; nu utilizează fișierul de acreditări al CLI-ului. Pentru a reutiliza acreditările
`thunderphone login` în orice client compatibil cu stdio, utilizați:

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

Wrapperul verifică `THUNDERPHONE_API_KEY`, apoi profilul CLI curent (reîmprospătându-l
când este necesar), apoi deleagă OAuth către `mcp-remote`. `THUNDERPHONE_MCP_URL` suprascrie
endpointul. Nu transmite telemetrie. Configurarea independentă este disponibilă și prin
`npx -y @thunderphone/mcp setup --client cursor` sau `thunderphone-mcp setup` după
instalarea globală a `@thunderphone/mcp`.

## Creați un proiect

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

Șabloanele sunt `node` și `python`; tipurile de agenți sunt `receptionist`, `outbound` și
`custom`. Agentul implicit este un recepționer pentru cabinet stomatologic în engleză/spaniolă, cu date
demonstrative explicite. Proiectele includ `agent.json`, scripturi de implementare, configurații MCP pentru
Claude Code, Cursor și VS Code, instrucțiuni pentru agent, `.env.example` și un README.
Generarea structurii funcționează offline și refuză să suprascrie un director nevid.

Editați informațiile despre afacere înainte de implementare. Exportați cheia API, numărul conectat
al apelantului și destinatarul de test conform documentației din README-ul generat. `npm run deploy`
sau `python deploy.py` creează sau actualizează agentul, implementează versiunea sa ciornă și plasează un
apel de test facturabil. Scripturile utilizează autentificarea cu cheie API; CLI-ul și wrapperul MCP stdio
acceptă, de asemenea, autentificarea pe dispozitiv. Scripturile Python necesită Python 3.9 sau o versiune ulterioară.
