---
title: "ThunderPhone CLI"
description: "Kirjaudu sisään, hallitse puheagentteja ja puheluita, määritä MCP-asiakkaita ja luo projektirunkoja terminaalista."
---

CLI edellyttää Node.js:n versiota 18.18 tai uudempaa. Suorita se komennolla `npx` tai asenna se globaalisti:

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

## Kirjaudu sisään

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

Kirjautuminen tulostaa vahvistuskoodin, avaa selaimen ja odottaa valtuutusta.
Käytä päätelaitteettomassa ympäristössä `--no-browser`-asetusta ja avaa tulostettu URL muualla.
Laitekirjautuminen edellyttää API:n OAuth-laitevirran käyttöönottoa. Organisaation API-avain
muuttujassa `THUNDERPHONE_API_KEY` voi myös todentaa komennot, ja se on ensisijainen
tallennettuihin kirjautumistietoihin nähden.

Tunnistetiedot tallennetaan profiilikohtaisesti tiedostoon `~/.config/thunderphone/credentials.json`
tiedostotilalla `0600`. `XDG_CONFIG_HOME` ja `THUNDERPHONE_CONFIG_DIR` ohittavat
hakemiston. Käyttöoikeustunnukset päivittyvät automaattisesti, ja kiertävät päivitystunnukset
tallennetaan atomisesti. Kirjautuminen ei koskaan tulosta tunnuksia.

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

`THUNDERPHONE_PROFILE` määrittää oletusprofiilin. Uloskirjautuminen poistaa paikalliset tunnistetiedot;
se ei peruuta palvelimen myöntämää valtuutusta. Oletus-API on `https://api.thunderphone.com`.
Käytä toista APIa varten `--api-base-url`-asetusta tai `THUNDERPHONE_API_BASE_URL`-muuttujaa. Profiilin tunnusta
ei voi lähettää toiseen määritettyyn API-URL:ään; kirjaudu kyseiseen URL:ään erillisellä profiililla.

## Komennot

Jokainen komento hyväksyy `--json`-valitsimen. Onnistuneet tiedot tulostetaan stdoutiin; virheet stderr:iin
nollasta poikkeavalla poistumiskoodilla. Ilman `--json`-valitsinta tuloste on tiivis taulukko tai kenttäluettelo.
JSON säilyttää API-vastauksen rakenteen, ja tunnistetietokentät peitetään. MCP-palvelu
varaa stdoutin MCP-protokollalle.

| Komento | Tarkoitus |
| --- | --- |
| `login [--no-browser] [--scope "scopes"]` | Valtuuta laitekoodin avulla |
| `logout`, `whoami` | Poista paikalliset tunnistetiedot; luettele käytettävissä olevat organisaatiot |
| `agents list`, `agents get ID` | Lue agentit |
| `agents create --file agent.json` | Luo agentti |
| `agents update ID --file agent.json` | Tallenna agenttiluonnos |
| `agents deploy ID`, `agents delete ID` | Ota luonnos käyttöön; poista agentti |
| `numbers list` | Lue puhelinnumerot |
| `numbers provision --country US --area-code 415` | Ota käyttöön yhdysvaltalainen saapuvien puhelujen numero |
| `numbers assign NUMBER_ID --agent ID` | Määritä saapuvien puhelujen agentti |
| `sms send TO --from FROM --body TEXT --idempotency-key KEY` | Lähetä SMS asiakkaan yhdistetyn operaattorin numeron kautta turvallisella uudelleentoistolla |
| `sms list [--limit N]`, `sms get UUID` | Luettele tai tarkastele SMS-tietueita |
| `call TO --agent ID --from FROM [--wait]` | Soita lähtevä puhelu; odota halutessasi sen transkriptiota |
| `calls list [--limit N] [--agent ID]` | Luettele puhelut (raja 1–200) |
| `calls get ID`, `calls transcript ID` | Lue yksittäinen puhelu tai sen transkriptio |
| `test run AGENT_ID [--scenario ID] --consent-to-charge` | Suorita laskutettavia tallennettuja skenaarioita verkkokanavalla |
| `test status RUN_ID [--agent ID]` | Tarkastele erää ja skenaariotietoja, kun agentti on annettu |
| `import VENDOR export.json` | Valmistele toimittajan JSON-tuonti tarkistettavaksi |
| `imports get UUID`, `imports commit UUID` | Tarkastele tuontia; vahvista valitut agentit tarkistuksen jälkeen |
| `mcp setup`, `mcp serve` | Määritä asiakas; käynnistä stdio-silta |
| `init [directory]` | Luo projektin perusrakenne |

Lähtevät puhelut edellyttävät lähteviin puheluihin sallittua numeroa. `THUNDERPHONE_FROM_NUMBER` voi
antaa arvon `--from`-valitsimelle. Asiakkaan VoIP-numerot tukevat edelleen lähteviä puheluita.
ThunderPhone-palvelun käyttöön ottamat numerot ovat aluksi vain saapuvia puheluita varten; organisaation ylläpitäjä voi
pyytää lähtevien puhelujen käyttöönottoa Phone Numbers -sivulta, jossa jokainen pyyntö
tarkistetaan manuaalisesti. `--wait`-valitsimen oletusaikakatkaisu on yksi tunti; muuta sitä
valitsimella `--timeout SECONDS`. Aikakatkaisu lopettaa odottamisen päättämättä puhelua.

SMS edellyttää myös SMS-ominaisuudella varustettua numeroa yhdistetyllä Twilio- tai Telnyx-tililläsi.
Sitä ei koskaan lähetetä ThunderPhone-omisteisesta numerosta. Käytä idempotenssiavainta uudelleen
vain, kun yrität täsmälleen samaa lähettäjää, vastaanottajaa ja viestin sisältöä uudelleen.

Tuonnit tukevat palveluita `vapi`, `retell`, `elevenlabs` ja `bland`. Toinen argumentti on
polku toimittajan JSON-vientiin, ei etätoimittajan tunnus. API valmistelee määrityksen
asynkronisesti; tarkastele sitä komennolla `imports get UUID` ja vahvista se vasta, kun se on valmis
ja olet tarkistanut yhdistetyt kentät ja varoitukset. Katso [agenttituonnit](/fi/guides/import-agents).

## MCP-asennus

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

Asiakasohjelmat: `claude-code`, `codex`, `cursor`, `vscode`, `gemini`, `claude-desktop` ja
`windsurf`. Projektialue on oletusarvo. Työpöytäsovellus ja Windsurf edellyttävät käyttäjäaluetta.
Jätä `--client` pois, jos haluat tunnistaa yhden asiakasohjelman projektista; epäselvä tunnistus
pyytää valintaa interaktiivisesti tai epäonnistuu ohjeiden kera ei-interaktiivisessa istunnossa.
Asennus tulostaa kirjoittamansa tiedoston ja säilyttää muut palvelimet ennallaan. Olemassa olevan JSONin
on oltava kelvollista tiukkaa JSONia; Codexin TOML-arvot säilyvät, mutta kommenttien muotoilu voi muuttua.

Asennus käyttää ensisijaisesti suoraa etä-HTTP:tä. Kun käytät `--api-key-env`-asetusta, se kirjoittaa
muuttujaviittauksen, ei koskaan avainta. Ilman tätä asetusta suora HTTP käyttää asiakasohjelman
OAuth-tukea; se ei käytä CLI-tunnistetiedostoa. Jos haluat käyttää `thunderphone login` -tunnistetietoja
uudelleen missä tahansa stdio-yhteensopivassa asiakasohjelmassa, käytä:

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

Kääre tarkistaa ensin `THUNDERPHONE_API_KEY`-muuttujan, sitten nykyisen CLI-profiilin (päivittäen sen
tarvittaessa) ja delegoi sitten OAuthin `mcp-remote`-palvelulle. `THUNDERPHONE_MCP_URL` ohittaa
päätepisteen. Se ei lähetä telemetriaa. Erillinen asennus on saatavilla myös komennolla
`npx -y @thunderphone/mcp setup --client cursor` tai `thunderphone-mcp setup`, kun
`@thunderphone/mcp` on asennettu globaalisti.

## Luo projekti

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

Mallit ovat `node` ja `python`; agenttityypit ovat `receptionist`, `outbound` ja
`custom`. Oletusagentti on englannin- ja espanjankielinen hammaslääkäriaseman vastaanottoagentti,
jolla on eksplisiittiset demotiedot. Projekteihin sisältyvät `agent.json`, julkaisuohjelmat,
MCP-määritykset Claude Codelle, Cursorille ja VS Codelle, agentin ohjeet, `.env.example` ja README.
Projektirungon luonti toimii offline-tilassa eikä ylikirjoita ei-tyhjää hakemistoa.

Muokkaa liiketoimintatiedot ennen julkaisua. Vie API-avain, yhdistetty soittajan numero
ja testivastaanottajasi ympäristöön luodussa README-tiedostossa kuvatulla tavalla. `npm run deploy`
tai `python deploy.py` luo tai päivittää agentin, julkaisee sen luonnoksen ja soittaa laskutettavan
testipuhelun. Komentosarjat käyttävät API-avainautentikointia; CLI ja stdio MCP -kääre tukevat myös
laitteella kirjautumista. Python-komentosarjat edellyttävät Python 3.9:ää tai uudempaa.
