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.
- Transkrybowanie nagrania zużywa minuty w wymiarze jego długości. Tryb medyczny dodaje 100%, a każdy język docelowy tłumaczenia dodaje 25%. Przy włączonym trybie wielokanałowym każdy kanał audio jest naliczany osobno, więc plik stereo liczy się podwójnie.
- Insights: pierwsze generowanie dla transkrypcji jest bezpłatne. Późniejsze ponowne generowanie kosztuje 40% długości nagrania z oryginalnej wersji transkrypcji albo 30% ze zredagowanej wersji. Ponowne generowanie używa osobistych minut członka zespołu, nawet gdy transkrypcję opłaciła wspólna pula przestrzeni zespołu.
- Ponowne tłumaczenie transkrypcji kosztuje 25% jej długości za język i nadpisuje: każdy język, za który wywołanie nalicza opłatę, traci ręcznie edytowaną kopię tego tłumaczenia, bez możliwości jej odzyskania.
purchase_packpo powodzeniu od razu obciąża zapisaną kartę spełniającą warunki. Wymaga zakresubilling, własnej flagi rozliczeń tokenu i przełącznika rozliczeń całego konta. Dodaje minuty do salda osobistego, a nie do wspólnej puli Teams.add_payment_methodnic nie kosztuje. Zwraca link do Stripe Checkout, który zapisuje kartę na koncie bez jej obciążania; dokończ go raz w przeglądarce (agent może obsłużyć własną). Późniejsze próbypurchase_packobciążają kartę w trybie off-session; odrzucenie lub weryfikacja wymagana przez wystawcę zwraca odrębny kod błędu zamiast niedokończonej strony.
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.