ThunderPhone 2.0 jest już dostępny.Uruchom samodzielnie, od 2¢/min.Przeczytaj komunikat

Connect tools & data

Używaj ThunderPhone jako serwera MCP

Twórz, testuj, weryfikuj i obsługuj agentów głosowych ThunderPhone z poziomu Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code lub innego klienta Streamable HTTP MCP.

ThunderPhone udostępnia serwer Model Context Protocol z obsługą Streamable HTTP pod adresem:

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

Jest to kierunek odwrotny do łączenia zdalnego serwera MCP z agentem głosowym:

KierunekWynik
Zdalny serwer MCP → agent ThunderPhoneAgent głosowy może wywoływać narzędzia zdalnego serwera.
ThunderPhone → Twój klient MCPTwój agent programistyczny może tworzyć, testować i obsługiwać ThunderPhone.

Uwierzytelnianie

Domyślnie używaj OAuth w przypadku klientów katalogowych: zaloguj się, wybierz organizację i zatwierdź żądane uprawnienia. Odbierz dostęp w Organizacja → Klucze API → Autoryzowane aplikacje.

W przypadku klientów skonfigurowanych z kluczem API utwórz klucz sk_live_ w Organizacja → Klucze i udostępnij go klientowi MCP jako THUNDERPHONE_API_KEY. Klucz jest przypisany do jednej organizacji; identyfikator należący do innej organizacji zachowuje się tak, jakby nie został znaleziony.

Alternatywy CLI i stdio

CLI ThunderPhone może zapisać konfigurację klienta, zachowując niepowiązane serwery:

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

Po globalnej instalacji @thunderphone/mcp użyj thunderphone-mcp setup z tymi samymi opcjami. Konfiguracja obsługuje Claude Code, Codex, Cursor, VS Code, Gemini, Claude Desktop i Windsurf. Preferowane jest bezpośrednie HTTP; Claude Desktop używa stdio.

Dla dowolnego klienta obsługującego stdio skonfiguruj command: "npx" z args: ["-y", "@thunderphone/mcp"]. Wrapper najpierw używa THUNDERPHONE_API_KEY, następnie poświadczeń z thunderphone login, odświeżając wygasłe tokeny, a potem OAuth przez mcp-remote. Logowanie urządzenia i OAuth wymagają wdrożenia odpowiedniej funkcji OAuth API. Ścieżka z kluczem API tego nie wymaga. Bezpośrednie konfiguracje HTTP nie odczytują magazynu poświadczeń CLI; użyj wrappera stdio, aby ponownie wykorzystać logowanie urządzenia.

Są to alternatywy dla ręcznych konfiguracji klientów poniżej.

Konfiguracja klienta

Claude i ChatGPT logują się za pomocą OAuth; nie jest wymagany klucz API. Jeśli nie masz jeszcze konta ThunderPhone, wybierz Utwórz konto na stronie logowania, a po zweryfikowaniu adresu e-mail wrócisz do ekranu zatwierdzania.

Claude (wersja internetowa, komputerowa i mobilna)

  1. Otwórz Dostosuj → Łączniki (Ustawienia → Łączniki w starszych wersjach). Jeśli ThunderPhone znajduje się w katalogu łączników, wybierz go. W przeciwnym razie wybierz Dodaj niestandardowy łącznik, nadaj mu nazwę ThunderPhone i wpisz https://api.thunderphone.com/v1/mcp.
  2. Wybierz Połącz, zaloguj się do ThunderPhone, wybierz organizację i zatwierdź uprawnienia.
  3. Na czacie włącz ThunderPhone z menu narzędzi i poproś o to, czego potrzebujesz, na przykład „Wyświetl moich agentów”.

Claude pyta o zgodę przed pierwszym użyciem każdego narzędzia. Aby pominąć większość tych monitów, otwórz Dostosuj → Łączniki → ThunderPhone i ustaw opcję Narzędzia tylko do odczytu na zawsze zezwalaj. Te narzędzia jedynie wyszukują informacje: agentów, połączenia, transkrypcje, salda i dokumentację. Pozostaw opcję Narzędzia zapisu/usuwania jako wymagającą zatwierdzenia, jeśli chcesz zobaczyć każdą zmianę, zanim zostanie wprowadzona.

Niestandardowe łączniki wymagają płatnego planu Claude. W planach Team i Enterprise właściciel najpierw dodaje łącznik w ustawieniach łączników organizacji, a następnie każdy członek łączy własne konto ThunderPhone.

ChatGPT

  1. Jeśli ThunderPhone znajduje się w katalogu aplikacji ChatGPT, wybierz go i połącz.
  2. W przeciwnym razie otwórz Ustawienia → Aplikacje i łączniki → Ustawienia zaawansowane, włącz Tryb dewelopera i utwórz łącznik z adresem URL https://api.thunderphone.com/v1/mcp oraz uwierzytelnianiem OAuth.
  3. Zaloguj się do ThunderPhone, wybierz organizację i zatwierdź uprawnienia. Dodaj ThunderPhone do czatu z menu narzędzi.

Usunięcie agenta lub numeru telefonu, odrzucenie wersji roboczej, uruchomienie kampanii i wysłanie żądania testowego, które może zapisywać dane w systemie zewnętrznym, wymagają drugiego potwierdzenia w obu aplikacjach; zobacz Potwierdzanie działań destrukcyjnych.

Claude Code

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

Codex

Dodaj poniższe do ~/.codex/config.toml:

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

Cursor

Utwórz .cursor/mcp.json:

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

Claude Desktop

Dodaj most mcp-remote do konfiguracji 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

Utwórz .vscode/mcp.json i wprowadź klucz za pomocą monitu wejściowego 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}"
      }
    }
  }
}

Narzędzia

Każde narzędzie zawiera adnotacje MCP. W tabelach R oznacza tylko do odczytu, D działanie niszczące, I idempotentność, a O interakcję ze światem zewnętrznym/siecią. Myślnik oznacza, że nie ustawiono żadnej wskazówki.

Połączenie

NarzędzieGłówne argumentyAdnotacjeDziałanie
get_connection_identity—R, IWeryfikuje poświadczenie i zwraca organizację oraz bezpieczne metadane poświadczenia.

Agenci

NarzędzieGłówne argumentyAdnotacjeDziałanie
list_agents—R, IWyświetla listę agentów.
get_agentagent_idR, IPobiera jednego agenta.
create_agentkonfiguracja agenta—Tworzy agenta.
update_agentagent_id, zmienione polaDPrzygotowuje pola w wersji roboczej agenta, zastępując wcześniejszą zawartość wersji roboczej. Działa bez kroku potwierdzenia: wdrożony agent pozostaje bez zmian do czasu użycia deploy_agent, a discard_agent_draft przywraca poprzedni stan wersji roboczej.
deploy_agentagent_id, opcjonalne if_updated_atD, IPromuje wersję roboczą do produkcji.
discard_agent_draftagent_id, opcjonalne if_updated_at, confirmation_token przy drugim żądaniuD, IOdrzuca przygotowane zmiany. Proces dwuetapowy, zobacz Potwierdzanie działań destrukcyjnych.
duplicate_agentagent_id, opcjonalne name—Kopiuje agenta w organizacji.
delete_agentagent_id, confirmation_token przy drugim żądaniuD, ITrwale usuwa agenta. Proces dwuetapowy.
list_agent_versionsagent_idR, IWyświetla listę wdrożonych wersji konfiguracji.

Numery telefonów i operatorzy

NarzędzieGłówne argumentyAdnotacjeDziałanie
list_phone_numbers—R, IWyświetla numery organizacji i routing.
get_phone_number_limits—R, IPobiera wykorzystanie i limity zarządzanych numerów.
provision_phone_numberopcjonalne area_code, city, state, idempotency_keyD, OKupuje numer przychodzący zarządzany przez ThunderPhone.
list_voip_connections—R, IWyświetla połączonych operatorów klienta.
search_voip_numbersconnection_id, country, type, opcjonalne area_codeR, I, OPrzeszukuje zasoby numerów operatora.
import_voip_numbersconnection_id, numbersD, OImportuje numery należące już do operatora.
update_phone_numberphone_number_id, pola routingu/etykiety/webhookaDAktualizuje routing numeru, w tym przypisanie agenta.
delete_phone_numberphone_number_id, confirm, opcjonalne release_at_provider, confirmation_token w drugim żądaniuD, I, OZwalnia numer. Dwuetapowo.

SMS

NarzędzieGłówne argumentyAdnotacjeDziałanie
send_smsfrom_number, to, body, idempotency_keyD, I, OWysyła jedną wiadomość SMS w postaci zwykłego tekstu przez połączony numer Twilio lub Telnyx.

Połączenia

NarzędzieGłówne argumentyAdnotacjeDziałanie
list_callsopcjonalne filtry, limit, offsetR, IWyświetla połączenia z użyciem filtrów historii połączeń REST.
get_callcall_idR, IPobiera status połączenia i metadane.
get_call_transcriptcall_id, opcjonalne liveR, IPobiera transkrypcję połączenia.
get_call_audio_urlcall_id, opcjonalne downloadR, I, OZwraca podpisany adres URL audio; nigdy nie przesyła strumieniowo dźwięku przez MCP.
get_call_gradecall_idR, IPobiera najnowszą ocenę połączenia.
place_callagent_id, from_number, to_numberD, OWykonuje jedno nieidempotentne połączenie wychodzące.
export_callsfiltry połączeń, export_formatR, IEksportuje dane do limitu punktu końcowego REST w formacie JSON lub CSV.

Testowanie i walidacja

NarzędzieGłówne argumentyAdnotacjeDziałanie
list_test_scenariosagent_idR, IWyświetla scenariusze testowe.
create_test_scenarioagent_id, title, scenario_prompt, opcjonalne warunki—Tworzy scenariusz.
generate_test_scenariosagent_id, opcjonalne count, include_edge_cases, localeOGeneruje scenariusze na podstawie promptu agenta.
run_agent_testsagent_id, channel, consent_to_charge, opcjonalny wybór/macierzD, OUruchamia scenariusze przez internet lub telefonię.
get_test_runagent_id, batch_idR, IPobiera status partii i wyniki dla każdego scenariusza.
list_validation_runsagent_idR, IWyświetla ostatnie uruchomienia walidacji wersji roboczej.
get_validation_statusagent_idR, IPobiera najnowszy stan walidacji i dopasowanie wersji roboczej.

Wiedza

NarzędzieGłówne argumentyAdnotacjeDziałanie
list_knowledge_bases—R, IWyświetla bazy wiedzy.
create_knowledge_basename, opcjonalne description—Tworzy bazę wiedzy.
add_knowledge_documentknowledge_base_id, name, content—Dodaje tekst lub Markdown.
import_knowledge_urlurl, opcjonalne nameOKolejkuje publiczną stronę do bezpiecznego pozyskania treści.
search_knowledgeknowledge_base_id, queryR, IWyszukuje w produkcyjnym systemie pobierania wiedzy.

Integracje, webhooki i zdalne serwery MCP

NarzędzieGłówne argumentyAdnotacjeDziałanie
list_integrations—R, IWyświetla integracje funkcji HTTP.
create_integrationdisplay_name, spec funkcji, opcjonalne pola punktu końcowego—Tworzy narzędzie HTTP. Dodaj nagłówki uwierzytelniania w panelu.
test_integrationurl, opcjonalne metoda/treść/limit czasu, integration_id z header_names, confirmation_token w drugim żądaniuD, OWysyła ograniczone żądanie testowe chronione przed SSRF. Zapisane wartości nagłówków są uzupełniane z integracji i wysyłane tylko do jej własnego hosta. POST (domyślnie), PUT, PATCH i DELETE są dwuetapowe; GET uruchamia się od razu.
list_webhook_endpoints—R, IWyświetla podpisane punkty końcowe webhooków.
list_webhook_deliveriesopcjonalne agent_id, opcjonalne endpoint_idR, IWyświetla ostatnie wyniki dostarczania webhooków bez ładunków.
create_webhook_endpointlabel, url, opcjonalne zdarzenia/statusOTworzy podpisany punkt końcowy webhooka.
test_webhook_endpointendpoint_idOWysyła syntetyczne zdarzenie poprzez standardowe dostarczanie.
list_mcp_servers—R, IWyświetla zdalne serwery wywoływalne przez agentów głosowych.
create_mcp_serverdisplay_name, urlORejestruje i synchronizuje zdalny serwer. Serwery wymagające nagłówków uwierzytelniania dodaje się w panelu.
sync_mcp_server_toolsserver_idD, OOdświeża katalog narzędzi zdalnego serwera.

Kampanie

NarzędzieGłówne argumentyAdnotacjeDziałanie
list_campaigns—R, IWyświetla kampanie wychodzące.
create_campaignpola kampanii—Tworzy wersję roboczą kampanii.
add_campaign_contactscampaign_id, contacts—Dodaje do 5 000 kontaktów JSON.
campaign_actioncampaign_id, action, opcjonalne consent_to_charge, confirmation_token w drugim żądaniuD, OUruchamia start, pause, resume lub stop. start i resume wymagają dwóch kroków; pause i stop są uruchamiane natychmiast.
get_campaign_statscampaign_idR, IPobiera liczniki i ostatnie wyniki.

Głosy, rozliczenia i dokumentacja

NarzędzieGłówne argumentyAdnotacjeDziałanie
list_voices—R, IWyświetla głosy i obsługiwane języki.
preview_voicevoice, language, textOGeneruje próbkę i zwraca podpisany adres URL.
list_voice_clones—R, IWyświetla niestandardowe klony głosu.
get_billing_summary—R, IPobiera saldo i wiążące ceny poziomów; nie udostępnia operacji modyfikujących płatności.
search_docsquery, opcjonalny limitR, I, OPrzeszukuje publiczny indeks dokumentacji.
get_doc_pagepathR, I, OPobiera jedną publiczną stronę dokumentacji w formacie Markdown.

Wszystkie narzędzia produktowe używają tych samych ścieżek kodu REST co publiczne API. Walidacja REST, zakres organizacji, role, dopuszczanie rozliczeń, limity, potwierdzenie TCPA, bezpieczeństwo dostawcy i zachowanie audytu mają zatem zastosowanie bez zmian.

Potwierdzanie działań destrukcyjnych

Narzędzia oznaczone symbolem D zmieniają lub usuwają coś albo rozpoczynają wybieranie numerów do prawdziwych osób. Te, których nie można cofnąć, wymagają dwóch żądań. Pierwsze żądanie niczego nie zmienia i zwraca:

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

Asystent pokazuje użytkownikowi, czego dotyczy działanie, i prosi o potwierdzenie. Następnie powtarza żądanie z tymi samymi argumentami oraz confirmation_token. Token jest ważny przez 10 minut i obejmuje jedną organizację, jedno narzędzie oraz jeden dokładny zestaw argumentów, więc usunięcie trzech agentów wymaga trzech potwierdzeń. campaign_action z pause lub stop pomija ten krok, aby aktywną kampanię można było zawsze natychmiast zatrzymać, podobnie jak test_integration z GET. Niektóre narzędzia D działają w jednym żądaniu, ponieważ D oznacza ich skutek, a nie potwierdzenie po stronie serwera: update_agent zastępuje zawartość wersji roboczej (discard_agent_draft ją przywraca), deploy_agent zastępuje aktywną konfigurację, update_phone_number przekierowuje aktywne połączenia, sync_mcp_server_tools zastępuje katalog narzędzi zdalnego serwera, import_voip_numbers przekierowuje numery do operatora, run_agent_tests może wykorzystać środki, send_sms i place_call kontaktują się z prawdziwą osobą (place_call zachowuje własne potwierdzenie zgody), a provision_phone_number kupuje numer. Klient MCP może nadal poprosić o zatwierdzenie tych działań.

Prompty startowe

prompts/list udostępnia pięć przepływów pracy wielokrotnego użytku:

  • create_inbound_receptionist
  • run_agent_tests
  • buy_and_attach_number
  • review_low_grade_calls
  • add_url_to_agent_knowledge

Użyj prompts/get z nazwą wymienionego promptu i jego zadeklarowanymi argumentami, aby otrzymać gotową do uruchomienia wiadomość użytkownika.

Zasoby

resources/list udostępnia publiczne, buforowane odwołania:

URIZawartość
thunderphone://docs/llms.txtIndeks publicznej dokumentacji.
thunderphone://docs/quickstartMarkdown szybkiego startu.
thunderphone://pricingMarkdown z aktualnym publicznym cennikiem.

Odczytaj zasób za pomocą resources/read. Publiczne pobrania używają krótkiego limitu czasu, limitu 2 MiB oraz dziesięciominutowej pamięci podręcznej w procesie.

Protokół i błędy

Serwer obsługuje wersje protokołu 2025-06-18 i 2025-03-26; odzwierciedla obsługiwaną wersję klienta, a w przeciwnym razie wybiera 2025-06-18. Implementuje initialize, ping, narzędzia, prompty, zasoby i powiadomienia. Powiadomienia zwracają 202 Accepted. Ten bezstanowy serwer nie udostępnia nasłuchiwania SSE ani usuwania sesji, dlatego GET i DELETE zwracają 405 Method Not Allowed z Allow: POST.

Niepowodzenia narzędzi pozostają pomyślnymi odpowiedziami JSON-RPC z isError: true. Ich tekst zawiera krótkie zdanie, po którym następuje 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."
}

Charakterystyczny prefiks outbound_tcpa_confirmation_required: jest zachowywany dla place_call. Nieznane metody JSON-RPC zwracają -32601 w odpowiedzi HTTP 200. Partie JSON-RPC nie są obsługiwane przez MCP 2025-06-18 i zwracają jednoznaczny błąd nieprawidłowego żądania -32600.