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

Connect tools & data

Gunakan ThunderPhone sebagai server MCP

Bangun, uji, validasi, dan operasikan agen suara ThunderPhone dari Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code, atau klien MCP HTTP yang dapat di-streaming lainnya.

ThunderPhone menyediakan server Model Context Protocol HTTP yang dapat di-stream di:

https://api.thunderphone.com/v1/mcp

Ini adalah arah kebalikan dari menghubungkan server MCP jarak jauh ke agen suara:

ArahHasil
Server MCP jarak jauh → agen ThunderPhoneAgen suara dapat memanggil alat server jarak jauh.
ThunderPhone → klien MCP AndaAgen pengodean Anda dapat membangun, menguji, dan mengoperasikan ThunderPhone.

Autentikasi

Gunakan OAuth secara default untuk klien direktori: Masuk, pilih organisasi, dan setujui izin yang diminta. Cabut akses di Organisasi → Kunci API → Aplikasi terotorisasi.

Untuk klien yang dikonfigurasi dengan kunci API, buat kunci sk_live_ di Organisasi → Kunci dan ekspos ke klien MCP Anda sebagai THUNDERPHONE_API_KEY. Kunci tersebut terikat ke satu organisasi; ID yang dimiliki organisasi lain akan dianggap tidak ditemukan.

Alternatif CLI dan stdio

CLI ThunderPhone dapat menulis konfigurasi klien sambil mempertahankan server lain yang tidak terkait:

npx -y @thunderphone/mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
npx thunderphone mcp setup --client claude-desktop --scope user

Setelah instalasi global @thunderphone/mcp, gunakan thunderphone-mcp setup dengan opsi yang sama. Penyiapan mendukung Claude Code, Codex, Cursor, VS Code, Gemini, Claude Desktop, dan Windsurf. HTTP langsung lebih disarankan; Desktop menggunakan stdio.

Untuk klien apa pun yang mendukung stdio, konfigurasikan command: "npx" dengan args: ["-y", "@thunderphone/mcp"]. Wrapper menggunakan THUNDERPHONE_API_KEY terlebih dahulu, kemudian kredensial dari thunderphone login, memperbarui token yang kedaluwarsa, lalu OAuth melalui mcp-remote. Login perangkat dan OAuth memerlukan peluncuran OAuth API yang sesuai. Jalur kunci API tidak memerlukannya. Konfigurasi HTTP langsung tidak membaca penyimpanan kredensial CLI; gunakan wrapper stdio untuk menggunakan kembali login perangkat.

Ini adalah alternatif untuk konfigurasi klien manual di bawah.

Konfigurasi klien

Claude dan ChatGPT menggunakan OAuth untuk Masuk; tidak memerlukan kunci API. Jika Anda belum memiliki akun ThunderPhone, pilih Buat akun di halaman masuk, lalu Anda akan kembali ke layar persetujuan setelah memverifikasi email.

Claude (web, desktop, dan seluler)

  1. Buka Sesuaikan → Konektor (Pengaturan → Konektor di versi lama). Jika ThunderPhone muncul di direktori konektor, pilih ThunderPhone. Jika tidak, pilih Tambahkan konektor kustom, beri nama ThunderPhone, lalu masukkan https://api.thunderphone.com/v1/mcp.
  2. Pilih Sambungkan, Masuk ke ThunderPhone, pilih organisasi, lalu setujui izin.
  3. Dalam chat, aktifkan ThunderPhone dari menu alat dan minta apa yang Anda perlukan, misalnya "Tampilkan agen saya".

Claude meminta persetujuan sebelum menggunakan setiap alat untuk pertama kalinya. Untuk melewati sebagian besar prompt tersebut, buka Sesuaikan → Konektor → ThunderPhone dan atur Alat baca-saja agar selalu diizinkan. Alat tersebut hanya mencari informasi: agen, panggilan, transkrip, saldo, dokumentasi. Biarkan Alat tulis/hapus memerlukan persetujuan jika Anda ingin melihat setiap perubahan sebelum terjadi.

Konektor kustom memerlukan paket Claude berbayar. Pada paket Team dan Enterprise, pemilik harus menambahkan konektor terlebih dahulu di pengaturan konektor organisasi, lalu setiap anggota menyambungkan akun ThunderPhone mereka sendiri.

ChatGPT

  1. Jika ThunderPhone muncul di direktori aplikasi ChatGPT, pilih ThunderPhone dan sambungkan.
  2. Jika tidak, buka Pengaturan → Aplikasi & Konektor → Pengaturan lanjutan, aktifkan Mode pengembang, lalu buat konektor dengan URL https://api.thunderphone.com/v1/mcp dan autentikasi OAuth.
  3. Masuk ke ThunderPhone, pilih organisasi, lalu setujui izin. Tambahkan ThunderPhone ke chat dari menu alat.

Menghapus agen atau nomor telepon, membuang draf, meluncurkan kampanye, dan mengirim permintaan pengujian yang dapat menulis ke sistem eksternal memerlukan konfirmasi kedua di salah satu aplikasi; lihat Mengonfirmasi tindakan destruktif.

Claude Code

claude mcp add --transport http thunderphone https://api.thunderphone.com/v1/mcp \
  --header "Authorization: Bearer $THUNDERPHONE_API_KEY"

Codex

Tambahkan ini ke ~/.codex/config.toml:

[mcp_servers.thunderphone]
url = "https://api.thunderphone.com/v1/mcp"
bearer_token_env_var = "THUNDERPHONE_API_KEY"

Cursor

Buat .cursor/mcp.json:

{
  "mcpServers": {
    "thunderphone": {
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
      }
    }
  }
}

Claude Desktop

Tambahkan bridge mcp-remote ke konfigurasi Claude Desktop:

{
  "mcpServers": {
    "thunderphone": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.thunderphone.com/v1/mcp",
        "--header",
        "Authorization: Bearer ${THUNDERPHONE_API_KEY}"
      ],
      "env": {
        "THUNDERPHONE_API_KEY": "sk_live_YOUR_API_KEY"
      }
    }
  }
}

VS Code

Buat .vscode/mcp.json dan masukkan kunci melalui prompt input VS Code:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "thunderphone-api-key",
      "description": "ThunderPhone organization API key",
      "password": true
    }
  ],
  "servers": {
    "thunderphone": {
      "type": "http",
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${input:thunderphone-api-key}"
      }
    }
  }
}

Alat

Setiap alat memiliki anotasi MCP. Dalam tabel, R berarti hanya-baca, D destruktif, I idempoten, dan O interaksi dunia terbuka/jaringan. Tanda hubung berarti tidak ada petunjuk yang ditetapkan.

Koneksi

AlatArgumen utamaAnotasiFungsinya
get_connection_identity—R, IMemvalidasi kredensial dan mengembalikan organisasi serta metadata kredensial yang aman.

Agen

AlatArgumen utamaAnotasiFungsinya
list_agents—R, IMencantumkan agen.
get_agentagent_idR, IMendapatkan satu agen.
create_agentkonfigurasi agen—Membuat agen.
update_agentagent_id, bidang yang diubahDMenyimpan bidang dalam draf agen, menggantikan isi draf sebelumnya. Berjalan tanpa langkah konfirmasi: agen yang telah di-deploy tidak berubah hingga deploy_agent, dan discard_agent_draft mengembalikan draf.
deploy_agentagent_id, if_updated_at opsionalD, IMempromosikan draf ke produksi.
discard_agent_draftagent_id, if_updated_at opsional, confirmation_token pada permintaan keduaD, IMembuang perubahan yang disimpan. Dua langkah, lihat Mengonfirmasi tindakan destruktif.
duplicate_agentagent_id, name opsional—Menyalin agen di dalam organisasi.
delete_agentagent_id, confirmation_token pada permintaan keduaD, IMenghapus agen secara permanen. Dua langkah.
list_agent_versionsagent_idR, IMencantumkan versi konfigurasi yang telah di-deploy.

Nomor telepon dan operator

AlatArgumen utamaAnotasiFungsinya
list_phone_numbers—R, IMencantumkan nomor organisasi dan perutean.
get_phone_number_limits—R, IMendapatkan penggunaan dan batas nomor yang dikelola.
provision_phone_numberopsional area_code, city, state, idempotency_keyD, OMembeli nomor masuk yang dikelola ThunderPhone.
list_voip_connections—R, IMencantumkan operator pelanggan yang terhubung.
search_voip_numbersconnection_id, country, type, opsional area_codeR, I, OMencari inventaris operator.
import_voip_numbersconnection_id, numbersD, OMengimpor nomor yang sudah dimiliki di operator.
update_phone_numberphone_number_id, kolom perutean/label/webhookDMemperbarui perutean nomor, termasuk penetapan agen.
delete_phone_numberphone_number_id, confirm, opsional release_at_provider, confirmation_token pada permintaan keduaD, I, OMelepaskan nomor. Dua langkah.

SMS

AlatArgumen utamaAnotasiFungsinya
send_smsfrom_number, to, body, idempotency_keyD, I, OMengirim satu SMS teks biasa melalui nomor Twilio atau Telnyx yang terhubung.

Panggilan

AlatArgumen utamaAnotasiFungsinya
list_callsfilter opsional, limit, offsetR, IMencantumkan panggilan dengan filter riwayat panggilan REST.
get_callcall_idR, IMendapatkan Status dan metadata panggilan.
get_call_transcriptcall_id, live opsionalR, IMendapatkan transkrip panggilan.
get_call_audio_urlcall_id, download opsionalR, I, OMengembalikan URL audio bertanda tangan; audio tidak pernah di-stream melalui MCP.
get_call_gradecall_idR, IMendapatkan penilaian panggilan terbaru.
place_callagent_id, from_number, to_numberD, OMelakukan satu panggilan keluar non-idempoten.
export_callsfilter panggilan, export_formatR, IMengekspor hingga batas endpoint REST sebagai JSON atau CSV.

Pengujian dan validasi

AlatArgumen utamaAnotasiFungsinya
list_test_scenariosagent_idR, IMencantumkan skenario pengujian.
create_test_scenarioagent_id, title, scenario_prompt, kondisi opsional—Membuat skenario.
generate_test_scenariosagent_id, count opsional, include_edge_cases, localeOMenghasilkan skenario dari Prompt agen.
run_agent_testsagent_id, channel, consent_to_charge, pilihan/matriks opsionalD, OMenjalankan skenario melalui web atau telepon.
get_test_runagent_id, batch_idR, IMendapatkan Status batch dan hasil per skenario.
list_validation_runsagent_idR, IMencantumkan proses validasi draf terbaru.
get_validation_statusagent_idR, IMendapatkan status validasi terbaru dan kecocokan draf.

Pengetahuan

AlatArgumen utamaAnotasiFungsinya
list_knowledge_bases—R, IMencantumkan basis pengetahuan.
create_knowledge_basename, opsional description—Membuat basis pengetahuan.
add_knowledge_documentknowledge_base_id, name, content—Menambahkan teks atau Markdown.
import_knowledge_urlurl, opsional nameOMengantrikan halaman publik untuk penyerapan yang aman.
search_knowledgeknowledge_base_id, queryR, IMencari melalui pengambilan produksi.

Integrasi, webhook, dan server MCP jarak jauh

AlatArgumen utamaAnotasiFungsinya
list_integrations—R, IMencantumkan integrasi fungsi HTTP.
create_integrationdisplay_name, spec fungsi, kolom endpoint opsional—Membuat alat HTTP. Tambahkan header autentikasi di dashboard.
test_integrationurl, metode/badan/waktu tunggu opsional, integration_id dengan header_names, confirmation_token pada permintaan keduaD, OMengirim permintaan pengujian yang dibatasi dan dilindungi SSRF. Nilai header yang disimpan diisi dari integrasi dan hanya dikirim ke host-nya sendiri. POST (default), PUT, PATCH, dan DELETE menggunakan dua tahap; GET langsung dijalankan.
list_webhook_endpoints—R, IMencantumkan endpoint webhook yang ditandatangani.
list_webhook_deliveriesagent_id opsional, endpoint_id opsionalR, IMencantumkan hasil pengiriman webhook terbaru tanpa payload.
create_webhook_endpointlabel, url, peristiwa/Status opsionalOMembuat endpoint webhook yang ditandatangani.
test_webhook_endpointendpoint_idOMengirim peristiwa sintetis melalui pengiriman normal.
list_mcp_servers—R, IMencantumkan server jarak jauh yang dapat dipanggil oleh agen suara AI.
create_mcp_serverdisplay_name, urlOMendaftarkan dan menyinkronkan server jarak jauh. Server yang memerlukan header autentikasi ditambahkan di dashboard.
sync_mcp_server_toolsserver_idD, OMemperbarui katalog alat server jarak jauh.

Kampanye

AlatArgumen utamaAnotasiFungsinya
list_campaigns—R, IMencantumkan kampanye keluar.
create_campaignbidang kampanye—Membuat draf kampanye.
add_campaign_contactscampaign_id, contacts—Menambahkan hingga 5.000 kontak JSON.
campaign_actioncampaign_id, action, opsional consent_to_charge, confirmation_token pada permintaan keduaD, OMenjalankan start, pause, resume, atau stop. start dan resume memerlukan dua langkah; pause dan stop dijalankan segera.
get_campaign_statscampaign_idR, IMendapatkan penghitung dan hasil terbaru.

Suara, penagihan, dan dokumentasi

AlatArgumen utamaAnotasiFungsinya
list_voices—R, IMencantumkan suara dan bahasa yang didukung.
preview_voicevoice, language, textOMembuat sampel dan mengembalikan URL bertanda tangan.
list_voice_clones—R, IMencantumkan klon suara kustom.
get_billing_summary—R, IMendapatkan saldo dan harga tingkatan yang otoritatif; tidak ada mutasi pembayaran yang tersedia.
search_docsquery, opsional limitR, I, OMencari indeks dokumentasi publik.
get_doc_pagepathR, I, OMengambil satu halaman dokumentasi Markdown publik.

Semua alat produk menggunakan jalur kode REST yang sama dengan API publik. Karena itu, validasi REST, cakupan organisasi, peran, penerimaan penagihan, kuota, konfirmasi TCPA, keamanan provider, dan perilaku audit berlaku tanpa perubahan.

Mengonfirmasi tindakan destruktif

Tool yang ditandai D mengubah atau menghapus sesuatu, atau mulai menelepon orang sungguhan. Tool yang tidak dapat dibatalkan memerlukan dua permintaan. Permintaan pertama tidak mengubah apa pun dan mengembalikan:

{
  "status": "confirmation_required",
  "action": "Delete agent",
  "target": { "id": 195, "name": "Front Desk Receptionist" },
  "confirmation_token": "…",
  "expires_in_seconds": 600,
  "next_step": "…"
}

Agen menampilkan kepada pengguna apa yang akan terdampak dan meminta persetujuan. Kemudian, agen mengulangi permintaan dengan argumen yang sama ditambah confirmation_token. Token berlaku selama 10 menit dan mencakup satu organisasi, satu tool, serta satu set argumen yang persis sama, sehingga menghapus tiga agen memerlukan tiga konfirmasi. campaign_action dengan pause atau stop melewati langkah ini agar kampanye yang berjalan selalu dapat dihentikan segera, begitu pula test_integration dengan GET. Beberapa tool D berjalan dalam satu permintaan karena D menandai efeknya, bukan konfirmasi di sisi server: update_agent menggantikan isi draf (discard_agent_draft mengembalikannya), deploy_agent menggantikan konfigurasi aktif, update_phone_number mengarahkan ulang panggilan aktif, sync_mcp_server_tools menggantikan katalog tool server jarak jauh, import_voip_numbers mengarahkan ulang nomor ke operator Anda, run_agent_tests dapat menggunakan kredit, send_sms dan place_call menghubungi orang sungguhan (place_call mempertahankan konfirmasi persetujuannya sendiri), dan provision_phone_number membeli nomor. Klien MCP Anda mungkin tetap meminta Anda untuk menyetujuinya.

Prompt awal

prompts/list menyediakan lima alur kerja yang dapat digunakan kembali:

  • create_inbound_receptionist
  • run_agent_tests
  • buy_and_attach_number
  • review_low_grade_calls
  • add_url_to_agent_knowledge

Gunakan prompts/get dengan nama Prompt yang tercantum dan argumen yang dideklarasikannya untuk menerima pesan pengguna yang siap dijalankan.

Sumber daya

resources/list menyediakan referensi publik yang di-cache:

URIKonten
thunderphone://docs/llms.txtIndeks dokumentasi publik.
thunderphone://docs/quickstartMarkdown mulai cepat.
thunderphone://pricingMarkdown harga publik saat ini.

Baca salah satunya dengan resources/read. Pengambilan publik menggunakan waktu tunggu singkat, batas 2 MiB, dan cache dalam proses selama sepuluh menit.

Protokol dan error

Server mendukung versi protokol 2025-06-18 dan 2025-03-26; server menggemakan versi klien yang didukung dan selain itu memilih 2025-06-18. Server mengimplementasikan initialize, ping, alat, Prompt, sumber daya, dan notifikasi. Notifikasi mengembalikan 202 Accepted. Server stateless ini tidak menyediakan listener SSE atau penghapusan sesi, sehingga GET dan DELETE mengembalikan 405 Method Not Allowed dengan Allow: POST.

Kegagalan alat tetap berupa respons JSON-RPC yang berhasil dengan isError: true. Teksnya berisi kalimat singkat diikuti blok JSON:

{
  "code": "insufficient_balance",
  "detail": "There is not enough prepaid balance.",
  "next_step": "Call get_billing_summary, add funds in Organization > Billing, then retry."
}

Prefiks berbeda outbound_tcpa_confirmation_required: tetap dipertahankan untuk place_call. Metode JSON-RPC yang tidak dikenal mengembalikan -32601 dalam respons HTTP 200. Batch JSON-RPC tidak didukung oleh MCP 2025-06-18 dan mengembalikan error permintaan tidak valid -32600 yang bersih.