Przejdź do głównej treści

Dla programistów

Serwer MCP do transkrypcji dla twojego konta

Połącz serwer MCP do transkrypcji z kontem Hushscript, aby pracować z nagraniami i transkrypcjami przez narzędzia asystenta z przypisanymi zakresami.

Serwer MCP Hushscript łączy asystenta z twoimi nagraniami i transkrypcjami przez Model Context Protocol. Zatwierdź połączenie OAuth w przeglądarce albo podaj osobisty token dostępu. Transkrypcja i płatne działania podlegają zasadom finansowania z twojego konta osobistego albo z przestrzeni zespołu spełniającej warunki.

Dwa serwery

Hushscript faktycznie uruchamia dwa osobne serwery MCP i większość czytelników potrzebuje tylko jednego z nich.

https://mcp.hushscript.com/mcp to serwer konta, który opisuje reszta tej strony. Przyjmuje OAuth lub osobisty token dostępu i to na nim odbywa się praca na koncie: przesyłanie, transkrypcja, edycja, eksport.

POST https://hushscript.com/mcp to osobny, bezpłatny serwer dokumentacji. Bez konta, bez tokenu, bez logowania. Jest tylko do odczytu i anonimowy: nie może otworzyć konta, uruchomić transkrypcji ani dotknąć niczego, co do konta należy. Odpowiada na pytania o cennik, możliwości, treść stron i sposób połączenia przez pięć narzędzi (get_pricing, get_capabilities, how_to_connect, list_pages, get_page) oraz te same informacje w postaci trzech zasobów (hushscript://pricing, hushscript://capabilities, hushscript://connect).

Jeśli jesteś agentem, który dopiero znalazł Hushscript, nie masz tokenu i wciąż oceniasz, czy to ci odpowiada, zanim cokolwiek wydasz, zacznij od serwera dokumentacji. Wróć do reszty tej strony, gdy będziesz gotowy połączyć konto.

Połączenie

Serwer obsługuje Streamable HTTP pod jednym endpointem:

https://mcp.hushscript.com/mcp

Nie ma endpointu SSE ani oprogramowania Hushscript do zainstalowania lokalnie. W Claude Code:

claude mcp add --transport http hushscript https://mcp.hushscript.com/mcp

W kliencie przyjmującym konfigurację JSON:

{
  "mcpServers": {
    "hushscript": {
      "type": "http",
      "url": "https://mcp.hushscript.com/mcp"
    }
  }
}

Klient obsługujący OAuth odczytuje /.well-known/oauth-authorization-server, aby znaleźć endpointy. Może zarejestrować się przez /oauth/register albo użyć dokumentu metadanych identyfikatora klienta, a potem otwiera okno przeglądarki do logowania.

Co zatwierdzasz

Autoryzacja to OAuth 2.1 z PKCE. Okno przeglądarki to ekran zgody Hushscript, a nie pole na hasło dla klienta: podaje nazwę aplikacji, która o coś prosi, wylicza prostym językiem, co chce robić, i czeka na ciebie. Nic nie jest przyznawane, dopóki tam tego nie zatwierdzisz.

Tokeny dostępu ważne są godzinę, a tokeny odświeżania trzydzieści dni. Przy OAuth twój klient obsługuje te poświadczenia za ciebie; nigdy nie wklejasz osobistego tokenu dostępu do konfiguracji.

Bez przeglądarki

Połączenie OAuth wymaga zatwierdzenia w przeglądarce. Ten sam serwer przyjmuje też osobisty token dostępu bezpośrednio, bez kroku w przeglądarce w chwili łączenia. Osoba tworzy go w sekcji Tokens na stronie MCP w koncie, wybiera jego zakresy i decyduje, czy może on kupować minuty. Token jest pokazywany raz, wygląda tak: hsr1:<region>:pat.<id>.<secret>, i trafia do Authorization: Bearer <token> w każdym żądaniu: bez rundy OAuth, bez ekranu zgody, bez rejestracji klienta. Ten sam token działa z REST API.

Token może też należeć do konta maszynowego bez człowieka będącego właścicielem konta. Agent rozpoczyna płatną rejestrację przez POST /v1/agent/accounts, kończy hostowany Stripe Checkout w przeglądarce, którą może obsługiwać, i odbiera konto jednorazowym sekretem pod POST /v1/agent/accounts/{signup_id}/claim, aby dostać pierwszy token. Ten token łączy się tutaj tak samo jak każdy inny. Cały proces opisuje Automatyzacja.

Token nie może tworzyć, wyświetlać ani unieważniać innych tokenów. Konto ma najwyżej 25 aktywnych tokenów. Pierwszy token konta maszynowego może rotować samego siebie przez REST API; proces opisuje Automatyzacja.

Uprawnienia

Połączenie ma zestaw zakresów. Żądanie OAuth, które żadnego nie wymienia, domyślnie dostaje dziesięć z jedenastu zakresów do wyboru, wszystkie oprócz billing. Osoba wybiera zakresy tokenu utworzonego w aplikacji. Pierwszy token konta maszynowego ma tylko transcripts:read, transcripts:write, transcribe, account:read, export, billing oraz osobny zakres pat:rotate do samodzielnej rotacji. Jego odbiór włącza oba przełączniki rozliczeń; token utworzony przez osobę wymaga ich świadomego włączenia. Gdy zakresy są znane, serwer pokazuje pasujące narzędzia; backend egzekwuje je przy każdym wywołaniu.

Zakres Co umożliwia
transcripts:read Odczyt i eksport transkrypcji, ich metadanych oraz listy usuniętych
transcripts:write Edycja, tagowanie, tłumaczenie, przywracanie i usuwanie transkrypcji
transcribe Przesyłanie nagrań, import z linku i uruchamianie transkrypcji
insights Odczyt, generowanie i usuwanie Insights
context Zarządzanie zapisanymi słownikami i zestawami instrukcji
account:read Odczyt salda, wykorzystania, transakcji i rezerwacji
settings:write Zmiana ustawień konta
org:read Odczyt członków przestrzeni zespołu, księgi, faktur i dziennika audytu
org:write Zmiana uprawnień członków, zakładanie i zdejmowanie blokad usunięcia na potrzeby prawne oraz planowanie przejścia na zarządzanie przez organizację (trwałe)
export Zlecenie pełnego eksportu konta, sprawdzenie jego statusu i pobranie
billing Zapisywanie lub zarządzanie metodami płatności i kupowanie pakietów minut

billing jest wyjątkiem pod każdym względem. Nigdy nie jest przyznawany domyślnie, ekran zgody ostrzega cię przed jego zatwierdzeniem, a narzędzie zakupu wymaga włączenia zarówno flagi rozliczeń tokenu, jak i przełącznika rozliczeń całego konta. pat:rotate nie można wybrać w żądaniu OAuth ani w formularzu tokenu w aplikacji.

Co obejmują narzędzia

56 narzędzi, pogrupowanych według tego, czego dotyczą:

Grupa Narzędzia Przykłady
Transkrypcje, odczyt 4 list_transcripts, get_transcript, list_deleted
Transkrypcje, zapis 10 update_body, revert_body, retranslate, tag_transcripts
Transkrybowanie 8 create_upload, transcribe_from_url, list_jobs, cancel_job
Konto 6 get_balance, get_usage, list_transactions
Insights 3 get_insights, generate_insights, delete_insights
Eksport 4 export_transcript, request_account_export
Kontekst transkrypcji 5 save_dictionary, save_prompt_preset
Przestrzeń zespołu 10 get_org, list_org_members, get_org_audit_log, place_transcript_hold
Rozliczenia 6 list_packs, purchase_pack, list_payment_methods, add_payment_method

export_transcript zwraca TXT, SRT, VTT, Markdown lub JSON. Pełny zestaw 21 formatów eksportu jest w aplikacji.

Oprócz narzędzi serwer po połączeniu publikuje trzy zasoby i ciąg instructions: pakiety minut, model kredytu i zakresów oraz kompletny katalog kodów błędów, aby klient mógł przeczytać zasady, zanim cokolwiek wywoła. Stronicowane narzędzia list przyjmują limit i nieprzezroczysty cursor z next_cursor poprzedniej strony; list_packs i list_payment_methods zwracają swoje listy bez kursora.

Przesyłanie przez MCP wysyła przygotowane audio. W przypadku lokalnego wideo najpierw przygotuj jego audio na swoim urządzeniu; transcribe_from_url pobiera po stronie serwera obsługiwane linki do audio i nie importuje linków do wideo. Zadania uruchomione przez MCP używają trybu standardowego: ich transkrypcje są przechowywane zgodnie z ustawieniem okresu przechowywania konta. Jednorazowy tryb prywatny jest dostępny w aplikacji, a nie przez tokeny MCP.

Przykłady

Klient wykonujący proces OAuth dostaje zwykłą sesję MCP i nigdy nie widzi niczego z tego bezpośrednio: jego SDK buduje JSON-RPC pod spodem. To ten sam protokół, który klient z tokenem wysyła ręcznie, i w obu przypadkach przydaje się do debugowania.

Połącz się tokenem, umieszczając go wprost w żądaniu, bez żadnego uzgadniania poza initialize:

curl -s https://mcp.hushscript.com/mcp \
  -H "Authorization: Bearer hsr1:us:pat.4f2a1c.9e7b3d2a5c8f1e6b4a0d7c3f2e1b9a8d" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "capabilities": {},
      "clientInfo": { "name": "example-client", "version": "1.0.0" }
    }
  }'

Wyślij to samo żądanie jeszcze raz z inną treścią, aby zobaczyć wszystkie narzędzia, które obejmują zakresy tokenu:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list"
}

Każdy wpis ma nazwę, opis i schemat JSON Schema inputSchema, zgodnie z grupami powyżej. Wywołanie narzędzia wygląda tak, gdzie create_upload rezerwuje kredyt i rozpoczyna przesyłanie:

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "create_upload",
    "arguments": {
      "size_bytes": 52428800,
      "duration_seconds": 1800,
      "title": "Team standup 2026-09-10",
      "transcription_options": { "speaker_detection": true }
    }
  }
}

Narzędzia strukturalne, takie jak create_upload, zwracają blok tekstowy content z JSON zapisanym jako ciąg. Na przykład:

{
  "content": [
    {
      "type": "text",
      "text": "{\n  \"job_id\": \"job_8f3a1c2b9e\",\n  \"balance_seconds\": 5400,\n  \"held_seconds\": 1800,\n  \"upload\": {\n    \"part_size_bytes\": 33554432,\n    \"total_parts\": 2,\n    \"part_urls\": [\n      { \"n\": 1, \"url\": \"https://...\" }\n    ],\n    \"next_part_number\": 2\n  }\n}"
    }
  ]
}

Powyższa odpowiedź pokazuje pola przesyłania; pełna odpowiedź zawiera też limits, funding i state. Prześlij bajty pod te adresy URL, wywołaj complete_upload z ETag każdej części, a potem odpytuj get_job, aż jego stan będzie done. Poniższe przykłady strukturalne pokazują wewnętrzny JSON wprost, już sparsowany, i pomijają obudowę żądania {"jsonrpc":"2.0","id":...}, bo nigdy się nie zmienia: zmieniają się tylko name i arguments.

export_transcript zwraca wyrenderowany format jako tekst, a download_account_export_chunk zwraca surowe bajty zakodowane jako tekst base64. Parsuj text wyniku jako JSON tylko wtedy, gdy narzędzie zwraca dane strukturalne.

Lista i odczyt transkrypcji:

{
  "name": "list_transcripts",
  "arguments": { "limit": 5 }
}
{
  "transcripts": [
    {
      "id": "t_9c2b7f10",
      "title": "Team standup 2026-09-10",
      "language_detected": "en",
      "duration_seconds": 1800,
      "tags": ["standup"],
      "insights_state": "none"
    }
  ],
  "next_cursor": null
}

Generowanie Insights, bezpłatne przy pierwszym wywołaniu dla transkrypcji. Ten przykład pokazuje saldo po rozpoczęciu nowego generowania; reused ma wartość false:

{
  "name": "generate_insights",
  "arguments": { "id": "t_9c2b7f10" }
}
{
  "ok": true,
  "reused": false,
  "balance_seconds": 5400,
  "held_seconds": 0
}

Kupno minut, z wymaganym idempotency_key, aby ponowienie po utraconej odpowiedzi nie obciążyło karty dwa razy:

{
  "name": "purchase_pack",
  "arguments": {
    "pack": "300min",
    "payment_method_id": "pm_1PxYzABC",
    "idempotency_key": "agent-2026-09-11-refill-01"
  }
}
{
  "status": "ok",
  "balance_seconds": 23400
}

Zasoby odpowiadają bez wywołania narzędzia, resources/read wskazuje jeden z trzech URI:

{
  "jsonrpc": "2.0",
  "id": 9,
  "method": "resources/read",
  "params": { "uri": "hushscript://pricing" }
}

Skrócona odpowiedź (pominięto objaśnienie zasobu):

{
  "contents": [
    {
      "uri": "hushscript://pricing",
      "mimeType": "application/json",
      "text": "{\"packs\":[{\"id\":\"45min\",\"minutes\":45},{\"id\":\"300min\",\"minutes\":300},{\"id\":\"900min\",\"minutes\":900},{\"id\":\"1800min\",\"minutes\":1800},{\"id\":\"6000min\",\"minutes\":6000}]}"
    }
  ]
}

Aktualne kwoty i waluty pakietów zwraca list_packs.

Każdy błąd backendu ma stały slug i kod numeryczny, tę samą treść {"error": "<slug>", "code": <number>} opisaną w hushscript://error-codes. Wywołanie narzędzia pokazuje ten sam slug i kod, wpisane w czytelny komunikat zamiast surowego obiektu błędu, i oznacza wynik flagą isError, zamiast zgłaszać wyjątek:

{
  "content": [
    {
      "type": "text",
      "text": "Not enough transcription credit. This job needs 1800 seconds and the balance is 900 seconds. Top up at https://app.hushscript.com/billing (insufficient_balance, E3001)"
    }
  ],
  "isError": true
}

Co kosztuje minuty

Odczyt danych konta nie zużywa minut transkrypcji. Płatne działania mają te same stawki co w aplikacji. Zwykle finansują je osobiste minuty opłacone z góry; transkrypcja w przestrzeni zespołu może korzystać ze wspólnej puli Teams, gdy sama aktywna pula pokrywa całe zadanie i nie wybrano żadnego języka docelowego tłumaczenia. Zadanie z językami docelowymi tłumaczenia lub z importowanym adresem audio używa minut osobistych. Źródło finansowania nie zmienia zarządzania transkrypcją.

Konta osobiste spełniające warunki dostają 30 bezpłatnych minut po weryfikacji karty; konto maszynowe zaczyna od pakietu kupionego przy rejestracji.

Same pakiety znajdziesz w Cenniku.

Przeglądanie i unieważnianie

Dla konta, na które możesz się zalogować, połączenia OAuth są widoczne w sekcji Connected apps na stronie MCP w twoim koncie, razem z klientem i zakresami. Tokeny też tam są wymienione; unieważnienie jednego odcina jego wywołania. Usunięcie konfiguracji klienta tylko powstrzymuje tego klienta przed wysyłaniem próśb. Konto maszynowe nie ma działającej skrzynki logowania, więc jego token rotuje się samodzielnie przez proces konta agenta.

Limity

Tokeny kont osób pozwalają na 1200 żądań na minutę każdy. Ciąg rotowanych tokenów konta agenta dzieli ten budżet między rotacjami. Trasy rozliczeń wywołujące Stripe, osiągane przez token, dzielą 60 żądań na minutę na konto: konfiguracja karty, zakup, zmiany karty domyślnej, usunięcie karty i chybienia pamięci podręcznej listy kart. Zakupy konta agenta i zakupy tokenem konta osoby są ograniczone do trzech prób na kroczące 24 godziny na konto. Płatna rejestracja agenta się liczy, tak samo jak niepowodzenia po zarezerwowaniu próby; zakupy w sesji przeglądarki osoby są wyłączone z limitu. Odmowa z powodu limitu to HTTP 429 / kod 4038 agent_purchase_capped, odrębny od zwykłego HTTP 429 / kod 5000 rate_limited. Oba zwracają Retry-After.

Autoryzacja OAuth i jej zakończenie dzielą limit 30 na minutę na adres. Rejestracja ma własny limit 30 na minutę; /oauth/token ma osobny limit 600 na minutę. Każdy używa jako klucza jednego adresu IPv4 albo jednej sieci IPv6 /64. Chybienia pamięci podręcznej introspekcji surowego tokenu mają kolejny limit 30 na minutę na tym samym kluczu; to nie jest limit na każde wywołanie narzędzia MCP.

Zacznij transkrybować z 30 bezpłatnymi minutami

Sprawdź podgląd do 5 minut, zanim utworzysz konto, a nowe konto osobiste otrzymuje bezpłatny podgląd pierwszego pliku przesłanego w aplikacji. Pełna transkrypcja wymaga konta i minut; konta osobiste spełniające warunki jednorazowo dostają 30 bezpłatnych minut, po weryfikacji karty lub przy pierwszym zakupie. Bez abonamentu.

Otrzymaj 30 bezpłatnych minut