Zum Hauptinhalt springen

Entwickler

MCP-Server für Transkription mit Ihrem Konto

Verbinden Sie den MCP-Server für Transkription mit Ihrem Hushscript-Konto, um Aufnahmen und Transkripte über Assistenten-Tools mit festgelegten Berechtigungen zu bearbeiten.

Der MCP-Server für Transkription von Hushscript verbindet einen Assistenten über das Model Context Protocol mit Ihren Aufnahmen und Transkripten. Genehmigen Sie eine OAuth-Verbindung im Browser oder geben Sie einen persönlichen Zugriffstoken an. Transkriptionen und kostenpflichtige Aktionen folgen den Finanzierungsregeln Ihres Kontos für persönliche Minuten oder berechtigte Workspace-Pools.

Zwei Server

Hushscript betreibt tatsächlich zwei getrennte MCP-Server, und die meisten Leser brauchen nur einen davon.

https://mcp.hushscript.com/mcp ist der Kontoserver, den der Rest dieser Seite beschreibt. Er akzeptiert OAuth oder einen persönlichen Zugriffstoken und ist der Ort, an dem die eigentliche Arbeit stattfindet: hochladen, transkribieren, bearbeiten, exportieren.

POST https://hushscript.com/mcp ist ein separater kostenloser Dokumentationsserver. Kein Konto, kein Token, keine Anmeldung nötig. Er ist nur lesend und anonym: Er kann kein Konto eröffnen, keine Transkription ausführen und nichts anfassen, das zu einem Konto gehört. Er beantwortet Fragen zu Preisen, Funktionsumfang, Seiteninhalten und zum Verbinden, über fünf Tools (get_pricing, get_capabilities, how_to_connect, list_pages, get_page) und dieselben Informationen als drei Ressourcen (hushscript://pricing, hushscript://capabilities, hushscript://connect).

Wenn Sie ein Agent sind, der Hushscript gerade erst gefunden hat, keinen Token besitzt und noch entscheidet, ob es passt, bevor Sie etwas ausgeben, beginnen Sie mit dem Dokumentationsserver. Kommen Sie zum Rest dieser Seite zurück, sobald Sie bereit sind, ein Konto zu verbinden.

Verbinden

Der Server spricht Streamable HTTP an einem einzigen Endpunkt:

https://mcp.hushscript.com/mcp

Es gibt keinen SSE-Endpunkt und keine Hushscript-Software, die Sie lokal installieren müssen. In Claude Code:

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

In einem Client, der eine JSON-Konfiguration akzeptiert:

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

Ein OAuth-fähiger Client liest /.well-known/oauth-authorization-server, um die Endpunkte zu finden. Er kann sich über /oauth/register registrieren oder ein Metadatendokument mit Client-ID verwenden und öffnet dann ein Browserfenster zur Anmeldung.

Was Sie genehmigen

Die Autorisierung erfolgt über OAuth 2.1 mit PKCE. Das Browserfenster ist ein Zustimmungsbildschirm von Hushscript, keine Passwortabfrage für den Client: Er nennt die anfragende Anwendung, listet in einfachen Worten auf, was sie tun möchte, und wartet auf Sie. Nichts wird gewährt, bevor Sie dort zustimmen.

Zugriffstoken gelten eine Stunde, Refresh-Token dreißig Tage. Bei OAuth verwaltet Ihr Client diese Zugangsdaten für Sie. Sie müssen keinen persönlichen Zugriffstoken in die Konfiguration einfügen.

Ohne Browser

Eine OAuth-Verbindung benötigt Ihre Zustimmung im Browser. Derselbe Server akzeptiert auch direkt einen persönlichen Zugriffstoken, ohne Browserschritt beim Verbinden. Eine Person erstellt ihn unter Neuen Token erstellen auf der MCP-Seite im Konto, wählt seine Berechtigungen und entscheidet, ob er Minuten kaufen darf. Der Token wird einmal angezeigt, sieht aus wie hsr1:<region>:pat.<id>.<secret> und steht bei jeder Anfrage in Authorization: Bearer <token>: kein OAuth-Roundtrip, kein Zustimmungsbildschirm, keine Client-Registrierung. Derselbe Token funktioniert mit der REST-API.

Ein Token kann auch zu einem Maschinenkonto ohne menschlichen Kontoinhaber gehören. Ein Agent startet mit POST /v1/agent/accounts eine bezahlte Registrierung, schließt den gehosteten Stripe Checkout in einem Browser ab, den er selbst steuern darf, und aktiviert das Konto mit einem einmaligen Geheimnis über POST /v1/agent/accounts/{signup_id}/claim, um seinen ersten Token zu erhalten. Dieser Token verbindet sich hier wie jeder andere. Automatisierte Nutzung erklärt den vollständigen Ablauf.

Ein Token kann keine anderen Token erstellen, auflisten oder widerrufen. Ein Konto hat höchstens 25 aktive Token. Der erste Token des Maschinenkontos kann sich über die REST-API selbst rotieren; den Ablauf zeigt Automatisierte Nutzung.

Berechtigungen

Eine Verbindung hat eine Reihe von Berechtigungen. Eine OAuth-Anfrage, die keine nennt, erhält standardmäßig zehn der elf auswählbaren Berechtigungen, alle außer billing. Eine Person wählt die Berechtigungen eines in der App erstellten Tokens selbst. Der erste Token eines Maschinenkontos hat nur transcripts:read, transcripts:write, transcribe, account:read, export, billing und die separate Berechtigung pat:rotate zur Selbstrotation. Die Kontoaktivierung schaltet beide Abrechnungsschalter ein; bei einem von einer Person erstellten Token müssen sie bewusst eingeschaltet werden. Wenn die Berechtigungen bekannt sind, bietet der Server die passenden Tools an; das Backend prüft sie bei jedem Aufruf.

Berechtigung Was sie erlaubt
transcripts:read Transkripte, ihre Metadaten und die Liste gelöschter Transkripte lesen und exportieren
transcripts:write Transkripte bearbeiten, taggen, übersetzen, wiederherstellen und löschen
transcribe Aufnahmen hochladen, per Link importieren und Transkriptionen starten
insights Insights lesen, erstellen und löschen
context Gespeicherte Wörterbücher und Prompt-Vorlagen verwalten
account:read Guthaben, Nutzung, Transaktionen und Reservierungen lesen
settings:write Kontoeinstellungen ändern
org:read Workspace-Mitglieder, Journal, Rechnungen und Prüfprotokoll lesen
org:write Mitgliedsrechte ändern, rechtliche Sperren setzen und aufheben und den Wechsel zur (dauerhaften) Firmenverwahrung planen
export Einen vollständigen Kontoexport anfordern, seinen Status prüfen und ihn herunterladen
billing Zahlungsmethoden speichern oder verwalten und Minutenpakete kaufen

billing ist in jeder Hinsicht die Ausnahme. Sie wird nie implizit gewährt, der Zustimmungsbildschirm warnt Sie vor der Genehmigung, und ein Kauf-Tool benötigt sowohl den Abrechnungsschalter des Tokens als auch den des Kontos. pat:rotate lässt sich weder in einer OAuth-Anfrage noch im Tokenformular der App auswählen.

Was die Tools abdecken

56 Tools, gruppiert nach dem, worauf sie zugreifen:

Gruppe Tools Beispiele
Transkripte, Lesen 4 list_transcripts, get_transcript, list_deleted
Transkripte, Schreiben 10 update_body, revert_body, retranslate, tag_transcripts
Transkribieren 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
Export 4 export_transcript, request_account_export
Transkriptionskontext 5 save_dictionary, save_prompt_preset
Workspace 10 get_org, list_org_members, get_org_audit_log, place_transcript_hold
Abrechnung 6 list_packs, purchase_pack, list_payment_methods, add_payment_method

export_transcript liefert TXT, SRT, VTT, Markdown oder JSON. Der vollständige Satz von 21 Exportformaten befindet sich in der App.

Neben den Tools veröffentlicht der Server beim Verbinden drei Ressourcen und einen instructions-String: die Minutenpakete, das Guthaben- und Berechtigungsmodell sowie den vollständigen Fehlercode-Katalog, damit ein Client die Regeln lesen kann, bevor er etwas aufruft. Paginierte Listen-Tools nehmen ein limit und einen opaken cursor aus dem next_cursor der vorherigen Seite entgegen. list_packs und list_payment_methods liefern ihre Listen ohne Cursor.

MCP-Uploads senden vorbereitete Audiodateien. Bei einem lokalen Video bereiten Sie die Audiospur zuerst auf Ihrem Gerät vor. transcribe_from_url ruft unterstützte Audio-Links serverseitig ab und importiert keine Video-Links. Über MCP gestartete Jobs verwenden den Standardmodus: Ihre Transkripte werden gemäß der Aufbewahrungseinstellung des Kontos gespeichert. Der einmalige private Modus ist in der App verfügbar, nicht über MCP-Token.

Beispiele

Ein Client, der den OAuth-Flow durchläuft, erhält eine normale MCP-Sitzung und sieht davon nichts direkt: Sein SDK baut das JSON-RPC im Hintergrund auf. Es ist dasselbe Protokoll, das ein Client mit Token von Hand senden kann, und dient in beiden Fällen als Debugging-Hilfe.

Verbinden Sie sich mit einem Token, indem Sie ihn direkt in die Anfrage einsetzen, ohne Handshake über initialize hinaus:

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" }
    }
  }'

Senden Sie dieselbe Anfrage erneut mit einem anderen Body, um alle Tools zu sehen, die die Berechtigungen des Tokens abdecken:

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

Jeder Eintrag trägt einen Namen, eine Beschreibung und ein JSON-Schema inputSchema, passend zu den Gruppen oben. Ein Tool-Aufruf sieht so aus: create_upload reserviert Guthaben und startet einen Upload:

{
  "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 }
    }
  }
}

Strukturierte Tools wie create_upload liefern einen content-Textblock mit JSON als String. Zum Beispiel:

{
  "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}"
    }
  ]
}

Die Antwort oben zeigt die Upload-Felder. Die vollständige Antwort enthält auch limits, funding und state. Laden Sie die Bytes zu diesen URLs hoch, rufen Sie complete_upload mit dem ETag jedes Teils auf und fragen Sie get_job ab, bis der Status done ist. Die strukturierten Beispiele unten zeigen das innere JSON direkt, bereits geparst, und lassen die {"jsonrpc":"2.0","id":...}-Hülle der Anfrage weg, da sie sich nie ändert: Nur name und arguments variieren.

export_transcript liefert das gerenderte Format als Text, download_account_export_chunk die Rohbytes als Base64-kodierten Text. Parsen Sie den text eines Ergebnisses nur dann als JSON, wenn das Tool strukturierte Daten liefert.

Transkripte auflisten und lesen:

{
  "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
}

Insights erstellen, beim ersten Aufruf für ein Transkript kostenlos. Dieses Beispiel zeigt das Guthaben nach dem Start einer neuen Erstellung; reused ist false:

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

Minuten kaufen, idempotency_key ist erforderlich, damit ein Wiederholungsversuch nach einer verlorenen Antwort keine Doppelbelastung verursacht:

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

Ressourcen antworten ohne Tool-Aufruf, resources/read nennt eine der drei URIs:

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

Gekürzte Antwort (der erläuternde Hinweis der Ressource wurde weggelassen):

{
  "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}]}"
    }
  ]
}

Aktuelle Paketpreise und Währungen liefert list_packs.

Jeder Backend-Fehler trägt einen stabilen Slug und einen numerischen Code, denselben {"error": "<slug>", "code": <number>}-Body, der unter hushscript://error-codes dokumentiert ist. Ein Tool-Aufruf zeigt denselben Slug und Code, eingebettet in eine lesbare Meldung statt eines rohen Fehlerobjekts, und markiert das Ergebnis mit isError, statt eine Exception zu werfen:

{
  "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
}

Was Minuten kostet

Das Lesen von Kontodaten verbraucht keine Transkriptionsminuten. Kostenpflichtige Aktionen verwenden dieselben Sätze wie die App. Normalerweise werden sie aus persönlichen vorausbezahlten Minuten finanziert. Eine Workspace-Transkription kann einen Teams-Pool nutzen, wenn der aktive Pool allein den gesamten Job abdeckt und kein Übersetzungsziel ausgewählt ist. Ein Job mit Übersetzungszielen oder einer importierten Audio-URL verwendet persönliche Minuten. Die Finanzierung ändert die Transkriptverwahrung nicht.

Berechtigte persönliche Konten erhalten nach der Kartenverifizierung 30 kostenlose Minuten. Ein Maschinenkonto startet mit dem bei der Registrierung gekauften Paket.

Die Pakete selbst finden Sie unter Preise.

Überprüfen und trennen

Bei einem Konto, an dem Sie sich anmelden können, erscheinen OAuth-Verbindungen unter Verbundene Apps auf der MCP-Seite in Ihrem Konto, mit dem jeweiligen Client und seinen Berechtigungen. Dort werden auch Token aufgelistet; ein Widerruf unterbindet ihre Aufrufe. Das Entfernen einer Client-Konfiguration verhindert nur Anfragen dieses Clients. Ein Maschinenkonto hat kein nutzbares Postfach zur Anmeldung; sein Token rotiert sich stattdessen selbst über den Ablauf für Agenten-Konten.

Limits

Token menschlicher Konten erlauben jeweils 1.200 Anfragen pro Minute. Die Token-Nachfolger eines Agenten-Kontos teilen sich dieses Budget auch über Rotationen hinweg. Über Token aufgerufene Abrechnungsrouten, die Stripe aufrufen, teilen sich 60 Anfragen pro Minute und Konto: Karteneinrichtung, Kauf, Wechsel der Standardkarte, Entfernen einer Karte und Cache-Fehlzugriffe der Kartenliste. Käufe von Agenten-Konten und Token-Käufe menschlicher Konten sind auf drei Versuche pro rollierenden 24 Stunden und Konto begrenzt. Die bezahlte Agenten-Registrierung zählt mit, ebenso Fehler nach der Reservierung eines Versuchs. Käufe über menschliche Browser-Sitzungen sind ausgenommen. Eine Ablehnung wegen dieses Limits liefert HTTP 429 / Code 4038 agent_purchase_capped, anders als die normale Drosselung mit HTTP 429 / Code 5000 rate_limited. Beide liefern Retry-After.

OAuth-Autorisierung und -Abschluss teilen sich ein adressbezogenes Limit von 30 Anfragen pro Minute. Die Registrierung hat ein eigenes Limit von 30 Anfragen pro Minute; /oauth/token ein separates Limit von 600 pro Minute. Als Schlüssel dient jeweils eine IPv4-Adresse oder ein IPv6-/64-Netz. Cache-Fehlzugriffe bei der Introspektion direkter Token haben ein weiteres Limit von 30 Anfragen pro Minute mit demselben Schlüssel. Dieses Limit gilt nicht für jeden MCP-Tool-Aufruf.

Transkription starten mit 30 Minuten zum Ausprobieren

Sehen Sie bis zu 5 Minuten kostenlos als Vorschau, bevor Sie ein Konto erstellen, und ein neues persönliches Konto erhält eine kostenlose Vorschau seines ersten Uploads in der App. Für die vollständige Transkription benötigen Sie ein Konto und Minuten; berechtigte persönliche Konten erhalten einmalig 30 Freiminuten, nach der Kartenverifizierung oder mit dem ersten Kauf. Kein Abo.

Starten mit 30 kostenlosen Minuten