ThunderPhone 2.0 kini resmi hadir.Gunakan langsung secara mandiri, mulai 2¢/menit.Baca pengumumannya

Getting Started

ThunderPhone CLI

Masuk, kelola agen suara dan panggilan, konfigurasikan klien MCP, dan buat kerangka proyek dari terminal.

CLI memerlukan Node.js 18.18 atau versi lebih baru. Jalankan dengan npx, atau instal secara global:

npm install -g thunderphone
thunderphone --help

Masuk

npx thunderphone login
thunderphone whoami --json

Perintah masuk mencetak kode verifikasi, membuka browser, lalu menunggu otorisasi. Gunakan --no-browser pada mesin tanpa antarmuka grafis dan buka URL yang dicetak di tempat lain. Masuk perangkat memerlukan peluncuran alur perangkat OAuth API. Kunci API organisasi di THUNDERPHONE_API_KEY juga dapat mengautentikasi perintah dan diprioritaskan dibandingkan kredensial masuk yang tersimpan.

Kredensial disimpan berdasarkan profil di ~/.config/thunderphone/credentials.json dengan mode file 0600. XDG_CONFIG_HOME dan THUNDERPHONE_CONFIG_DIR menggantikan direktori tersebut. Token akses diperbarui secara otomatis dan token penyegaran bergilir disimpan secara atomik. Token tidak pernah dicetak oleh perintah masuk.

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

THUNDERPHONE_PROFILE menetapkan profil default. Keluar menghapus kredensial lokal; perintah ini tidak mencabut grant server. API default adalah https://api.thunderphone.com. Gunakan --api-base-url atau THUNDERPHONE_API_BASE_URL untuk API lain. Token sebuah profil tidak dapat dikirim ke URL API terkonfigurasi yang berbeda; masuklah ke URL tersebut dengan profil terpisah.

Perintah

Setiap perintah menerima --json. Data yang berhasil dikirim ke stdout; kesalahan dikirim ke stderr dengan kode keluar bukan nol. Tanpa --json, output berupa tabel ringkas atau daftar kolom. JSON mempertahankan struktur respons API, dengan kolom kredensial disamarkan. Penyajian MCP mencadangkan stdout untuk protokol MCP.

PerintahTujuan
login [--no-browser] [--scope "scopes"]Otorisasi melalui kode perangkat
logout, whoamiHapus kredensial lokal; tampilkan organisasi yang dapat diakses
agents list, agents get IDTampilkan agen
agents create --file agent.jsonBuat agen
agents update ID --file agent.jsonSimpan draf agen
agents deploy ID, agents delete IDDeploy draf; hapus agen
numbers listTampilkan nomor telepon
numbers provision --country US --area-code 415Sediakan nomor masuk AS
numbers assign NUMBER_ID --agent IDTetapkan agen untuk panggilan masuk
sms send TO --from FROM --body TEXT --idempotency-key KEYKirim SMS melalui nomor operator yang terhubung dengan pelanggan dengan pengulangan aman
sms list [--limit N], sms get UUIDTampilkan atau periksa rekaman SMS
call TO --agent ID --from FROM [--wait]Lakukan panggilan keluar; opsional menunggu transkripnya
calls list [--limit N] [--agent ID]Tampilkan panggilan (batas 1–200)
calls get ID, calls transcript IDTampilkan satu panggilan atau transkripnya
test run AGENT_ID [--scenario ID] --consent-to-chargeJalankan skenario tersimpan berbayar menggunakan kanal web
test status RUN_ID [--agent ID]Periksa batch, dengan detail skenario saat agen diberikan
import VENDOR export.jsonSiapkan impor JSON vendor untuk ditinjau
imports get UUID, imports commit UUIDPeriksa impor; konfirmasikan agen yang dipilih setelah peninjauan
mcp setup, mcp serveKonfigurasikan klien; mulai bridge stdio
init [directory]Buat kerangka proyek

Panggilan keluar memerlukan nomor yang mendukung panggilan keluar. THUNDERPHONE_FROM_NUMBER dapat menyediakan --from. Nomor VoIP pelanggan tetap mendukung panggilan keluar. Nomor yang disediakan ThunderPhone pada awalnya hanya untuk panggilan masuk; administrator organisasi dapat meminta panggilan keluar dari halaman Nomor Telepon, tempat setiap permintaan ditinjau secara manual. --wait secara default memiliki batas waktu satu jam; tetapkan --timeout SECONDS untuk mengubahnya. Batas waktu menghentikan penantian tanpa mengakhiri panggilan.

SMS juga memerlukan nomor yang mendukung SMS pada akun Twilio atau Telnyx Anda yang terhubung. SMS tidak pernah dikirim dari nomor milik ThunderPhone. Gunakan kembali kunci idempotensi hanya saat mencoba ulang pengirim, penerima, dan isi yang benar-benar sama.

Impor mendukung vapi, retell, elevenlabs, dan bland. Argumen kedua adalah jalur ke ekspor JSON vendor, bukan ID vendor jarak jauh. API menyiapkan pemetaan secara asinkron; periksa dengan imports get UUID dan konfirmasikan hanya setelah pemetaan siap serta Anda telah meninjau kolom yang dipetakan dan peringatannya. Lihat impor agen.

Penyiapan MCP

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

Klien: claude-code, codex, cursor, vscode, gemini, claude-desktop, dan windsurf. Cakupan proyek adalah default. Desktop dan Windsurf memerlukan cakupan pengguna. Hilangkan --client untuk mendeteksi satu klien dari proyek; deteksi yang ambigu akan meminta input secara interaktif atau gagal dengan instruksi dalam sesi noninteraktif. Penyiapan mencetak file yang ditulis dan mempertahankan server yang tidak terkait. JSON yang ada harus berupa JSON ketat yang valid; nilai TOML Codex dipertahankan, tetapi komentar dapat diformat ulang.

Penyiapan mengutamakan HTTP jarak jauh langsung. Dengan --api-key-env, penyiapan menulis referensi variabel, bukan kunci. Tanpa opsi tersebut, HTTP langsung mengandalkan dukungan OAuth klien; penyiapan tidak menggunakan file kredensial CLI. Untuk menggunakan kembali kredensial thunderphone login pada klien apa pun yang mendukung stdio, gunakan:

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

Wrapper memeriksa THUNDERPHONE_API_KEY, lalu profil CLI saat ini (memperbarui jika diperlukan), kemudian mendelegasikan OAuth ke mcp-remote. THUNDERPHONE_MCP_URL menggantikan endpoint. Wrapper tidak mengirim telemetri. Penyiapan mandiri juga tersedia melalui npx -y @thunderphone/mcp setup --client cursor atau thunderphone-mcp setup setelah menginstal @thunderphone/mcp secara global.

Buat proyek

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

Template adalah node dan python; jenis agen adalah receptionist, outbound, dan custom. Agen default adalah resepsionis klinik gigi berbahasa Inggris/Spanyol dengan fakta demo yang eksplisit. Proyek mencakup agent.json, skrip deployment, konfigurasi MCP untuk Claude Code, Cursor, dan VS Code, instruksi agen, .env.example, serta README. Scaffolding dilakukan secara offline dan menolak menimpa direktori yang tidak kosong.

Edit fakta bisnis sebelum deployment. Ekspor kunci API, nomor penelepon yang terhubung, dan penerima pengujian Anda sebagaimana didokumentasikan dalam README yang dihasilkan. npm run deploy atau python deploy.py membuat atau memperbarui agen, men-deploy drafnya, dan melakukan panggilan pengujian yang dapat ditagihkan. Skrip menggunakan autentikasi kunci API; wrapper MCP CLI dan stdio juga mendukung login perangkat. Skrip Python memerlukan Python 3.9 atau yang lebih baru.