ThunderPhone 2.0 уже доступний.Підключайте самостійно — від 2 ¢/хв.Прочитати анонс

Connect tools & data

Використовуйте ThunderPhone як MCP-сервер

Створюйте, тестуйте, перевіряйте та керуйте голосовими агентами ThunderPhone із Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code або іншого клієнта Streamable HTTP MCP.

ThunderPhone надає сервер Streamable HTTP Model Context Protocol за адресою:

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

Це протилежний напрямок до підключення віддаленого MCP-сервера до голосового агента:

НапрямокРезультат
Віддалений MCP-сервер → агент ThunderPhoneГолосовий агент може викликати інструменти віддаленого сервера.
ThunderPhone → ваш MCP-клієнтВаш агент для програмування може створювати, тестувати та керувати ThunderPhone.

Автентифікація

За замовчуванням використовуйте OAuth для клієнтів каталогу: увійдіть, виберіть організацію та схваліть запитувані дозволи. Відкликати доступ можна в розділі Організація → API-ключі → Авторизовані застосунки.

Для клієнтів, налаштованих з API-ключем, створіть ключ sk_live_ у розділі Організація → Ключі та надайте його MCP-клієнту як THUNDERPHONE_API_KEY. Ключ прив’язаний до однієї організації; ідентифікатор, що належить іншій організації, обробляється як не знайдений.

Альтернативи CLI та stdio

ThunderPhone CLI може записувати конфігурацію клієнта, зберігаючи непов’язані сервери:

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

Після глобального встановлення @thunderphone/mcp використовуйте thunderphone-mcp setup із тими самими параметрами. Налаштування підтримує Claude Code, Codex, Cursor, VS Code, Gemini, Claude Desktop і Windsurf. Прямий HTTP є рекомендованим; Desktop використовує stdio.

Для будь-якого клієнта з підтримкою stdio налаштуйте command: "npx" з args: ["-y", "@thunderphone/mcp"]. Обгортка спершу використовує THUNDERPHONE_API_KEY, потім облікові дані з thunderphone login, оновлюючи прострочені токени, а потім OAuth через mcp-remote. Вхід через пристрій і OAuth потребують відповідного розгортання OAuth API. Шлях із API-ключем цього не потребує. Конфігурації прямого HTTP не читають сховище облікових даних CLI; використовуйте обгортку stdio для повторного використання входу через пристрій.

Це альтернативи ручним конфігураціям клієнта нижче.

Налаштування клієнта

Claude і ChatGPT входять через OAuth; ключ API не потрібен. Якщо у вас ще немає облікового запису ThunderPhone, виберіть Створити обліковий запис на сторінці входу, і після підтвердження електронної пошти ви повернетеся на екран надання дозволів.

Claude (вебверсія, настільна та мобільна версії)

  1. Відкрийте Налаштувати → Конектори (Налаштування → Конектори у старіших версіях). Якщо ThunderPhone відображається в каталозі конекторів, виберіть його. Інакше виберіть Додати власний конектор, назвіть його ThunderPhone і введіть https://api.thunderphone.com/v1/mcp.
  2. Виберіть Підключити, увійдіть до ThunderPhone, виберіть організацію та надайте дозволи.
  3. У чаті увімкніть ThunderPhone в меню інструментів і сформулюйте свій запит, наприклад «Покажи список моїх агентів».

Claude запитує підтвердження перед першим використанням кожного інструмента. Щоб пропускати більшість таких запитів, відкрийте Налаштувати → Конектори → ThunderPhone і встановіть для Інструменти лише для читання значення завжди дозволяти. Ці інструменти лише переглядають дані: агентів, дзвінки, транскрипти, баланси, документацію. Залиште для Інструменти запису/видалення вимогу підтвердження, якщо хочете бачити кожну зміну до її виконання.

Для власних конекторів потрібен платний тариф Claude. У тарифах Team і Enterprise власник спочатку додає конектор у налаштуваннях конекторів організації, а потім кожен учасник підключає власний обліковий запис ThunderPhone.

ChatGPT

  1. Якщо ThunderPhone відображається в каталозі застосунків ChatGPT, виберіть його та підключіться.
  2. Інакше відкрийте Налаштування → Застосунки й конектори → Розширені налаштування, увімкніть Режим розробника та створіть конектор з URL https://api.thunderphone.com/v1/mcp і автентифікацією OAuth.
  3. Увійдіть до ThunderPhone, виберіть організацію та надайте дозволи. Додайте ThunderPhone до чату з меню інструментів.

Видалення агента або номера телефону, скасування чернетки, запуск кампанії та надсилання тестового запиту, який може записувати дані до зовнішньої системи, потребують другого підтвердження в обох застосунках; див. Підтвердження руйнівних дій.

Claude Code

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

Codex

Додайте це до ~/.codex/config.toml:

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

Cursor

Створіть .cursor/mcp.json:

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

Claude Desktop

Додайте міст mcp-remote до конфігурації 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

Створіть .vscode/mcp.json і введіть ключ через запит введення 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}"
      }
    }
  }
}

Інструменти

Кожен інструмент має анотації MCP. У таблицях R означає лише читання, D — руйнівну дію, I — ідемпотентність, а O — взаємодію з відкритим світом/мережею. Тире означає, що підказку не встановлено.

Підключення

ІнструментОсновні аргументиАнотаціїЩо робить
get_connection_identity—R, IПеревіряє облікові дані та повертає дані про організацію й безпечні метадані облікових даних.

Агенти

ІнструментОсновні аргументиАнотаціїПризначення
list_agents—R, IПерелічує агентів.
get_agentagent_idR, IОтримує одного агента.
create_agentконфігурація агента—Створює агента.
update_agentagent_id, змінені поляDЗберігає поля в чернетці агента, замінюючи дані, що були в чернетці. Виконується без кроку підтвердження: розгорнутий агент не змінюється до deploy_agent, а discard_agent_draft скасовує зміни в чернетці.
deploy_agentagent_id, необов’язковий if_updated_atD, IПереносить чернетку в продакшн.
discard_agent_draftagent_id, необов’язковий if_updated_at, confirmation_token у другому запитіD, IВідкидає збережені зміни. Два кроки, див. Підтвердження руйнівних дій.
duplicate_agentagent_id, необов’язковий name—Копіює агента в межах організації.
delete_agentagent_id, confirmation_token у другому запитіD, IОстаточно видаляє агента. Два кроки.
list_agent_versionsagent_idR, IПерелічує версії розгорнутої конфігурації.

Номери телефонів і оператори зв’язку

ІнструментОсновні аргументиАнотаціїЩо робить
list_phone_numbers—R, IПерелічує номери організації та маршрутизацію.
get_phone_number_limits—R, IОтримує використання та ліміти керованих номерів.
provision_phone_numberнеобов’язкові area_code, city, state, idempotency_keyD, OКупує вхідний номер, керований ThunderPhone.
list_voip_connections—R, IПерелічує підключених операторів клієнта.
search_voip_numbersconnection_id, country, type, необов’язковий area_codeR, I, OШукає в інвентарі оператора.
import_voip_numbersconnection_id, numbersD, OІмпортує номери, якими вже володіє оператор.
update_phone_numberphone_number_id, поля маршрутизації/мітки/webhookDОновлює маршрутизацію номера, зокрема призначення агента.
delete_phone_numberphone_number_id, confirm, необов’язковий release_at_provider, confirmation_token у другому запитіD, I, OВивільняє номер. Два кроки.

SMS

ІнструментОсновні аргументиАнотаціїЩо робить
send_smsfrom_number, to, body, idempotency_keyD, I, OНадсилає одне текстове SMS через підключений номер Twilio або Telnyx.

Дзвінки

ІнструментОсновні аргументиАнотаціїЩо робить
list_callsнеобов’язкові фільтри, limit, offsetR, IПерелічує дзвінки за допомогою REST-фільтрів історії дзвінків.
get_callcall_idR, IОтримує статус і метадані дзвінка.
get_call_transcriptcall_id, необов’язковий liveR, IОтримує транскрипт дзвінка.
get_call_audio_urlcall_id, необов’язковий downloadR, I, OПовертає підписаний URL аудіо; ніколи не передає аудіо через MCP.
get_call_gradecall_idR, IОтримує останню оцінку дзвінка.
place_callagent_id, from_number, to_numberD, OЗдійснює один неідемпотентний вихідний дзвінок.
export_callsфільтри дзвінків, export_formatR, IЕкспортує до ліміту REST-ендпойнта у форматі JSON або CSV.

Тестування та перевірка

ІнструментОсновні аргументиАнотаціїЩо робить
list_test_scenariosagent_idR, IПерелічує тестові сценарії.
create_test_scenarioagent_id, title, scenario_prompt, необов’язкові умови—Створює сценарій.
generate_test_scenariosagent_id, необов’язкові count, include_edge_cases, localeOГенерує сценарії на основі промпту агента.
run_agent_testsagent_id, channel, consent_to_charge, необов’язковий вибір/матрицяD, OВиконує сценарії через веб або телефонію.
get_test_runagent_id, batch_idR, IОтримує статус пакета та результати для кожного сценарію.
list_validation_runsagent_idR, IПерелічує нещодавні запуски валідації чернеток.
get_validation_statusagent_idR, IОтримує найновіший стан валідації та відповідність чернетці.

База знань

ІнструментОсновні аргументиАнотаціїЩо робить
list_knowledge_bases—R, IПерелічує бази знань.
create_knowledge_basename, необов’язковий description—Створює базу знань.
add_knowledge_documentknowledge_base_id, name, content—Додає текст або Markdown.
import_knowledge_urlurl, необов’язковий nameOДодає загальнодоступну сторінку в чергу для безпечного завантаження.
search_knowledgeknowledge_base_id, queryR, IШукає через пошук у продакшні.

Інтеграції, вебхуки та віддалені MCP-сервери

ІнструментОсновні аргументиАнотаціїЩо робить
list_integrations—R, IПерелічує інтеграції HTTP-функцій.
create_integrationdisplay_name, специфікація функції spec, необов’язкові поля кінцевої точки—Створює HTTP-інструмент. Додайте заголовки автентифікації в панелі керування.
test_integrationurl, необов’язкові метод/тіло/час очікування, integration_id із header_names, confirmation_token у другому запитіD, OНадсилає обмежений тестовий запит із захистом від SSRF. Збережені значення заголовків підставляються з інтеграції та надсилаються лише на її власний хост. POST (за замовчуванням), PUT, PATCH і DELETE виконуються у два кроки; GET виконується негайно.
list_webhook_endpoints—R, IПерелічує підписані кінцеві точки вебхуків.
list_webhook_deliveriesнеобов’язковий agent_id, необов’язковий endpoint_idR, IПерелічує останні результати доставлення вебхуків без корисного навантаження.
create_webhook_endpointlabel, url, необов’язкові події/статусOСтворює підписану кінцеву точку вебхука.
test_webhook_endpointendpoint_idOНадсилає синтетичну подію через звичайне доставлення.
list_mcp_servers—R, IПерелічує віддалені сервери, які можуть викликати голосові агенти.
create_mcp_serverdisplay_name, urlOРеєструє та синхронізує віддалений сервер. Сервери, яким потрібні заголовки автентифікації, додаються в панелі керування.
sync_mcp_server_toolsserver_idD, OОновлює каталог інструментів віддаленого сервера.

Кампанії

ІнструментОсновні аргументиАнотаціїЩо робить
list_campaigns—R, IПерелічує вихідні кампанії.
create_campaignполя кампанії—Створює чернетку кампанії.
add_campaign_contactscampaign_id, contacts—Додає до 5 000 контактів JSON.
campaign_actioncampaign_id, action, необов’язкові consent_to_charge, confirmation_token у другому запитіD, OВиконує start, pause, resume або stop. start і resume виконуються у два кроки; pause і stop виконуються негайно.
get_campaign_statscampaign_idR, IОтримує лічильники та останні результати.

Голоси, виставлення рахунків і документація

ІнструментОсновні аргументиАнотаціїПризначення
list_voices—R, IВиводить список голосів і підтримуваних мов.
preview_voicevoice, language, textOГенерує зразок і повертає підписаний URL.
list_voice_clones—R, IВиводить список користувацьких клонів голосу.
get_billing_summary—R, IОтримує баланс і актуальні ціни тарифів; зміни платежів недоступні.
search_docsquery, необов’язковий limitR, I, OВиконує пошук у загальнодоступному індексі документації.
get_doc_pagepathR, I, OЗавантажує одну загальнодоступну сторінку документації у Markdown.

Усі інструменти продукту використовують ті самі шляхи коду REST, що й загальнодоступний API. Тому перевірка REST, обмеження областю організації, ролі, допуск за виставленням рахунків, квоти, підтвердження TCPA, безпека постачальників і поведінка аудиту застосовуються без змін.

Підтвердження руйнівних дій

Інструменти, позначені D, змінюють або видаляють щось чи починають набір номера реальних людей. Для тих, які неможливо скасувати, потрібні два запити. Перший запит нічого не змінює та повертає:

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

Агент показує користувачеві, на що це вплине, і просить підтвердження. Потім він повторює запит із тими самими аргументами та confirmation_token. Токен дійсний протягом 10 хвилин і охоплює одну організацію, один інструмент і один точний набір аргументів, тому для видалення трьох агентів потрібні три підтвердження. campaign_action із pause або stop пропускає цей крок, щоб активну кампанію завжди можна було негайно зупинити; так само його пропускає test_integration із GET. Деякі інструменти D виконуються за один запит, оскільки D позначає їхній ефект, а не серверне підтвердження: update_agent замінює вміст чернетки (discard_agent_draft скасовує цю дію), deploy_agent замінює активну конфігурацію, update_phone_number перенаправляє активні дзвінки, sync_mcp_server_tools замінює каталог інструментів віддаленого сервера, import_voip_numbers перенаправляє номери на вашого оператора, run_agent_tests може витрачати кредит, send_sms і place_call зв’язуються з реальною людиною (place_call зберігає власне підтвердження згоди), а provision_phone_number купує номер. Ваш MCP-клієнт усе одно може попросити вас підтвердити ці дії.

Початкові запити

prompts/list пропонує п’ять повторно використовуваних робочих процесів:

  • create_inbound_receptionist
  • run_agent_tests
  • buy_and_attach_number
  • review_low_grade_calls
  • add_url_to_agent_knowledge

Використовуйте prompts/get із вказаною назвою запиту та його оголошеними аргументами, щоб отримати готове до запуску повідомлення користувача.

Ресурси

resources/list надає загальнодоступні кешовані довідкові матеріали:

URIВміст
thunderphone://docs/llms.txtІндекс загальнодоступної документації.
thunderphone://docs/quickstartMarkdown для швидкого початку роботи.
thunderphone://pricingПоточний Markdown із загальнодоступними цінами.

Прочитайте ресурс за допомогою resources/read. Для загальнодоступних отримань використовується короткий тайм-аут, обмеження 2 MiB і десятихвилинний кеш у процесі.

Протокол і помилки

Сервер підтримує версії протоколу 2025-06-18 і 2025-03-26; він повторює підтримувану клієнтом версію, а в інших випадках вибирає 2025-06-18. Він реалізує initialize, ping, інструменти, запити, ресурси та сповіщення. Сповіщення повертають 202 Accepted. Цей сервер без стану не надає SSE-приймача або видалення сесій, тому GET і DELETE повертають 405 Method Not Allowed із Allow: POST.

Помилки інструментів залишаються успішними відповідями JSON-RPC з isError: true. Їхній текст містить коротке речення, за яким іде блок JSON:

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

Для place_call зберігається окремий префікс outbound_tcpa_confirmation_required:. Невідомі методи JSON-RPC повертають -32601 у відповіді HTTP 200. Пакети JSON-RPC не підтримуються MCP 2025-06-18 і повертають чисту помилку недійсного запиту -32600.