---
title: "ThunderPhone CLI"
description: "Увійдіть, керуйте голосовими агентами й дзвінками, налаштовуйте клієнти MCP і створюйте структуру проєктів із термінала."
---

Для CLI потрібна Node.js 18.18 або новішої версії. Запустіть її через `npx` або встановіть глобально:

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

## Увійдіть

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

Вхід виводить код підтвердження, відкриває браузер і очікує авторизації.
На машині без графічного інтерфейсу використовуйте `--no-browser` і відкрийте виведену URL-адресу в іншому місці.
Вхід із пристрою потребує підтримки потоку OAuth для пристроїв в API. Ключ API організації в `THUNDERPHONE_API_KEY` також може автентифікувати команди й має пріоритет
над збереженими обліковими даними для входу.

Облікові дані зберігаються за профілями у `~/.config/thunderphone/credentials.json`
з режимом доступу до файлу `0600`. `XDG_CONFIG_HOME` і `THUNDERPHONE_CONFIG_DIR` перевизначають
каталог. Токени доступу оновлюються автоматично, а ротаційні токени оновлення
зберігаються атомарно. Токени ніколи не виводяться під час входу.

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

`THUNDERPHONE_PROFILE` встановлює профіль за замовчуванням. Вихід видаляє локальні облікові дані;
він не відкликає дозвіл на сервері. API за замовчуванням — `https://api.thunderphone.com`.
Використовуйте `--api-base-url` або `THUNDERPHONE_API_BASE_URL` для іншого API. Токен профілю
не можна надсилати на іншу налаштовану URL-адресу API; увійдіть на цю URL-адресу за допомогою окремого профілю.

## Команди

Кожна команда приймає `--json`. Дані в разі успіху надсилаються до stdout; помилки — до stderr
із ненульовим кодом завершення. Без `--json` виводиться компактна таблиця або список полів.
JSON зберігає структуру відповіді API, а поля облікових даних редагуються. Обслуговування MCP
резервує stdout для протоколу MCP.

| Команда | Призначення |
| --- | --- |
| `login [--no-browser] [--scope "scopes"]` | Авторизуватися за допомогою коду пристрою |
| `logout`, `whoami` | Видалити локальні облікові дані; перелічити доступні організації |
| `agents list`, `agents get ID` | Отримати агентів |
| `agents create --file agent.json` | Створити агента |
| `agents update ID --file agent.json` | Зберегти чернетку агента |
| `agents deploy ID`, `agents delete ID` | Розгорнути чернетку; видалити агента |
| `numbers list` | Отримати номери телефонів |
| `numbers provision --country US --area-code 415` | Підключити вхідний номер США |
| `numbers assign NUMBER_ID --agent ID` | Призначити агента для вхідних дзвінків |
| `sms send TO --from FROM --body TEXT --idempotency-key KEY` | Надіслати SMS через номер оператора, підключений клієнтом, із безпечним повторним виконанням |
| `sms list [--limit N]`, `sms get UUID` | Перелічити або переглянути записи SMS |
| `call TO --agent ID --from FROM [--wait]` | Здійснити вихідний дзвінок; за потреби дочекатися його транскрипту |
| `calls list [--limit N] [--agent ID]` | Перелічити дзвінки (ліміт 1–200) |
| `calls get ID`, `calls transcript ID` | Отримати один дзвінок або його транскрипт |
| `test run AGENT_ID [--scenario ID] --consent-to-charge` | Запустити платні збережені сценарії через вебканал |
| `test status RUN_ID [--agent ID]` | Переглянути пакет із деталями сценарію, якщо вказано агента |
| `import VENDOR export.json` | Підготувати імпорт JSON постачальника для перевірки |
| `imports get UUID`, `imports commit UUID` | Переглянути імпорт; підтвердити вибраних агентів після перевірки |
| `mcp setup`, `mcp serve` | Налаштувати клієнт; запустити міст stdio |
| `init [directory]` | Створити каркас проєкту |

Для вихідних дзвінків потрібен номер із підтримкою вихідних дзвінків. `THUNDERPHONE_FROM_NUMBER` може
задати `--from`. Клієнтські номери VoIP і надалі підтримують вихідні дзвінки.
Номери, підключені через ThunderPhone, спочатку доступні лише для вхідних дзвінків; адміністратор організації може
надіслати запит на вихідні дзвінки на сторінці «Номери телефонів», де кожен запит
перевіряється вручну. За замовчуванням `--wait` має тайм-аут одну годину; установіть
`--timeout SECONDS`, щоб змінити його. Тайм-аут припиняє очікування, не завершуючи дзвінок.

Для SMS також потрібен номер із підтримкою SMS у вашому підключеному обліковому записі Twilio або Telnyx.
SMS ніколи не надсилаються із номера, що належить ThunderPhone. Повторно використовуйте ключ ідемпотентності
лише під час повторної спроби з точно тим самим відправником, одержувачем і текстом.

Імпорт підтримує `vapi`, `retell`, `elevenlabs` і `bland`. Другий аргумент — це
шлях до експорту JSON постачальника, а не віддалений ідентифікатор постачальника. API асинхронно
готує зіставлення; перегляньте його за допомогою `imports get UUID` і підтверджуйте лише після того,
як воно буде готове та ви переглянете зіставлені поля й попередження. Див. [імпорт агентів](/uk/guides/import-agents).

## Налаштування 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
```

Клієнти: `claude-code`, `codex`, `cursor`, `vscode`, `gemini`, `claude-desktop` і
`windsurf`. За замовчуванням використовується область проєкту. Desktop і Windsurf потребують області користувача.
Не вказуйте `--client`, щоб виявити один клієнт у проєкті; неоднозначне виявлення
запитує вибір в інтерактивному режимі або завершується помилкою з інструкціями в неінтерактивному сеансі.
Налаштування виводить записаний файл і зберігає непов’язані сервери. Наявний JSON
має бути дійсним строгим JSON; значення TOML для Codex зберігаються, але форматування коментарів може змінитися.

Налаштування надає перевагу прямому віддаленому HTTP. З `--api-key-env` воно записує посилання
на змінну, а не ключ. Без цього параметра прямий HTTP використовує підтримку
OAuth клієнта; файл облікових даних CLI не використовується. Щоб повторно використати облікові дані
`thunderphone login` у будь-якому клієнті з підтримкою stdio, використовуйте:

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

Обгортка перевіряє `THUNDERPHONE_API_KEY`, потім поточний профіль CLI (оновлюючи його
за потреби), а потім передає OAuth до `mcp-remote`. `THUNDERPHONE_MCP_URL` перевизначає
кінцеву точку. Вона не надсилає телеметрію. Автономне налаштування також доступне через
`npx -y @thunderphone/mcp setup --client cursor` або `thunderphone-mcp setup` після
глобального встановлення `@thunderphone/mcp`.

## Створення проєкту

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

Шаблони: `node` і `python`; типи агентів: `receptionist`, `outbound` і
`custom`. Агент за замовчуванням — англо-іспанський голосовий агент-реєстратор стоматологічної клініки з явними
демонстраційними фактами. Проєкти містять `agent.json`, скрипти розгортання, конфігурації MCP для
Claude Code, Cursor і VS Code, інструкції для агента, `.env.example` та README.
Генерація каркаса працює офлайн і не перезаписує непорожній каталог.

Відредагуйте факти про компанію перед розгортанням. Експортуйте API-ключ, підключений номер
абонента та одержувача тестового виклику, як описано в згенерованому README. `npm run deploy`
або `python deploy.py` створює чи оновлює агента, розгортає його чернетку та здійснює
платний тестовий виклик. Скрипти використовують автентифікацію за API-ключем; CLI та обгортка MCP
stdio також підтримують вхід з пристрою. Скрипти Python потребують Python 3.9 або новішої версії.
