Langsung ke konten utama

Pengembang

Server MCP transkripsi untuk akun Anda

Hubungkan server MCP transkripsi ke akun Hushscript Anda untuk bekerja dengan rekaman dan transkrip lewat alat asisten bercakupan.

Server MCP Hushscript menghubungkan asisten ke rekaman dan transkrip Anda dengan Model Context Protocol. Setujui koneksi OAuth di browser Anda, atau gunakan token akses pribadi. Transkripsi dan tindakan berbayar mengikuti aturan pendanaan akun Anda, yaitu pendanaan pribadi atau pendanaan ruang kerja yang memenuhi syarat.

Dua server

Hushscript sebenarnya menjalankan dua server MCP terpisah, dan sebagian besar pembaca hanya membutuhkan salah satunya.

https://mcp.hushscript.com/mcp adalah server akun yang dijelaskan di sisa halaman ini. Server ini menerima OAuth atau token akses pribadi, dan di sinilah pekerjaan akun berlangsung: unggah, transkripsi, edit, ekspor.

POST https://hushscript.com/mcp adalah server dokumentasi gratis yang terpisah. Tanpa akun, tanpa token, tidak ada yang perlu dimasuki. Server ini hanya-baca dan anonim: tidak dapat membuka akun, menjalankan transkripsi, atau menyentuh apa pun milik sebuah akun. Server ini menjawab pertanyaan tentang harga, kemampuan, isi halaman, dan cara menghubungkan, lewat lima alat (get_pricing, get_capabilities, how_to_connect, list_pages, get_page) dan informasi yang sama sebagai tiga resource (hushscript://pricing, hushscript://capabilities, hushscript://connect).

Jika Anda agen yang baru menemukan Hushscript, tidak memegang token, dan masih menimbang apakah layanan ini cocok sebelum mengeluarkan biaya apa pun, mulailah dengan server dokumentasi. Kembalilah ke sisa halaman ini setelah Anda siap menghubungkan akun.

Hubungkan

Server ini berbicara Streamable HTTP di satu endpoint:

https://mcp.hushscript.com/mcp

Tidak ada endpoint SSE dan tidak ada perangkat lunak Hushscript yang perlu dipasang secara lokal. Di Claude Code:

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

Di klien yang menerima konfigurasi JSON:

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

Klien yang mendukung OAuth membaca /.well-known/oauth-authorization-server untuk menemukan endpoint-nya. Klien dapat mendaftar lewat /oauth/register atau memakai dokumen metadata ID klien, lalu membuka jendela browser untuk masuk.

Yang Anda setujui

Otorisasinya adalah OAuth 2.1 dengan PKCE. Jendela browser itu adalah layar persetujuan Hushscript, bukan kotak kata sandi untuk klien: layar itu menyebut aplikasi yang meminta, mencantumkan dengan bahasa yang jelas apa yang ingin dilakukannya, dan menunggu Anda. Tidak ada yang diberikan sampai Anda menyetujuinya di sana.

Token akses berlaku satu jam, dan token refresh berlaku tiga puluh hari. Dengan OAuth, klien Anda menangani kredensial itu untuk Anda; Anda tidak pernah menempelkan token akses pribadi ke konfigurasi.

Tanpa browser

Koneksi OAuth memerlukan persetujuan lewat browser. Server yang sama juga menerima token akses pribadi secara langsung, tanpa langkah browser saat menghubungkan. Seseorang membuatnya di bawah Tokens pada halaman MCP di akun, memilih scope-nya, dan menentukan apakah token boleh membeli menit. Token itu hanya ditampilkan sekali, berbentuk hsr1:<region>:pat.<id>.<secret>, dan dipasang di Authorization: Bearer <token> pada setiap permintaan: tanpa putaran OAuth, tanpa layar persetujuan, tanpa pendaftaran klien. Token yang sama berfungsi pada REST API.

Token juga dapat dimiliki akun mesin tanpa pemegang akun manusia. Agen memulai pendaftaran berbayar dengan POST /v1/agent/accounts, menyelesaikan Stripe Checkout yang dihosting di browser yang dapat dijalankannya, lalu mengklaim akun dengan secret sekali pakai di POST /v1/agent/accounts/{signup_id}/claim untuk mendapat token pertamanya. Token itu terhubung ke sini persis seperti token lain. Lihat Penggunaan otomatis untuk alur selengkapnya.

Token tidak dapat membuat, menampilkan daftar, atau mencabut token lain. Satu akun memiliki paling banyak 25 token aktif. Token pertama akun mesin dapat merotasi dirinya sendiri lewat REST API; alurnya ada di Penggunaan otomatis.

Izin

Sebuah koneksi memegang sekumpulan scope. Permintaan OAuth yang tidak menyebut scope apa pun secara default mendapat sepuluh dari sebelas scope yang dapat dipilih pemanggil, semuanya kecuali billing. Seseorang memilih scope pada token yang dibuat di aplikasi. Token pertama akun mesin hanya memiliki transcripts:read, transcripts:write, transcribe, account:read, export, billing, dan scope terpisah pat:rotate untuk rotasi diri. Klaimnya mengaktifkan kedua sakelar penagihan; token buatan seseorang memerlukan keduanya diaktifkan secara sengaja. Jika scope diketahui, server menawarkan alat yang sesuai; backend memberlakukannya pada setiap panggilan.

Scope Yang diizinkan
transcripts:read Membaca dan mengekspor transkrip, metadata-nya, serta daftar yang dihapus
transcripts:write Mengedit, memberi tag, menerjemahkan, memulihkan, dan menghapus transkrip
transcribe Mengunggah rekaman, mengimpor dari tautan, dan menjalankan transkripsi
insights Membaca, membuat, dan menghapus Insights
context Mengelola kamus dan preset instruksi yang tersimpan
account:read Membaca saldo, pemakaian, transaksi, dan penahanan
settings:write Mengubah pengaturan akun
org:read Membaca anggota ruang kerja, buku besar, faktur, dan log audit
org:write Mengubah hak anggota, memasang dan mencabut penahanan untuk keperluan hukum, serta menjadwalkan pemindahan ke pengelolaan oleh organisasi (permanen)
export Meminta ekspor akun penuh, memeriksa statusnya, dan mengunduhnya
billing Menyimpan atau mengelola metode pembayaran dan membeli paket menit

billing adalah pengecualian dalam segala arah. Scope ini tidak pernah diberikan secara implisit, layar persetujuan memperingatkan Anda sebelum Anda menyetujuinya, dan alat pembelian memerlukan sakelar penagihan pada token serta sakelar penagihan tingkat akun, keduanya diaktifkan. pat:rotate tidak dapat dipilih dalam permintaan OAuth atau formulir token di aplikasi.

Cakupan alat

56 alat, dikelompokkan menurut yang disentuhnya:

Grup Alat Contoh
Transkrip, membaca 4 list_transcripts, get_transcript, list_deleted
Transkrip, menulis 10 update_body, revert_body, retranslate, tag_transcripts
Transkripsi 8 create_upload, transcribe_from_url, list_jobs, cancel_job
Akun 6 get_balance, get_usage, list_transactions
Insights 3 get_insights, generate_insights, delete_insights
Ekspor 4 export_transcript, request_account_export
Konteks transkripsi 5 save_dictionary, save_prompt_preset
Ruang kerja 10 get_org, list_org_members, get_org_audit_log, place_transcript_hold
Penagihan 6 list_packs, purchase_pack, list_payment_methods, add_payment_method

export_transcript mengembalikan TXT, SRT, VTT, Markdown, atau JSON. Seluruh 21 format ekspor ada di aplikasi.

Selain alat, server menerbitkan tiga resource dan string instructions saat terhubung: paket menit, model kredit dan scope, serta katalog kode error yang lengkap, sehingga klien dapat membaca aturannya sebelum memanggil apa pun. Alat daftar yang berhalaman menerima limit dan cursor buram dari next_cursor halaman sebelumnya; list_packs dan list_payment_methods mengembalikan daftarnya tanpa cursor.

Unggahan MCP mengirim audio yang sudah disiapkan. Untuk video lokal, siapkan audionya di perangkat Anda terlebih dahulu; transcribe_from_url mengambil tautan audio yang didukung di sisi server dan tidak mengimpor tautan video. Pekerjaan yang dimulai lewat MCP memakai mode standar: transkripnya disimpan sesuai pengaturan masa penyimpanan akun. Mode privat sekali pakai tersedia di aplikasi, bukan lewat token MCP.

Contoh

Klien yang menjalankan alur OAuth mendapat sesi MCP biasa dan tidak pernah melihat semua ini secara langsung: SDK-nya membangun JSON-RPC di baliknya. Ini adalah protokol yang sama yang dikirim secara manual oleh klien pemegang token, dan berguna sebagai alat bantu debug dalam kedua kasus.

Hubungkan dengan token dengan memasangnya langsung pada permintaan, tanpa jabat tangan selain 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" }
    }
  }'

Kirim lagi permintaan yang sama dengan body berbeda untuk melihat setiap alat yang tercakup scope token:

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

Setiap entri membawa nama, deskripsi, dan inputSchema JSON Schema, sesuai grup di atas. Memanggil alat tampak seperti ini, dengan create_upload mencadangkan kredit dan memulai unggahan:

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

Alat terstruktur seperti create_upload mengembalikan blok teks content berisi JSON yang sudah menjadi string. Contohnya:

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

Respons di atas menampilkan kolom unggahan; respons lengkapnya juga memuat limits, funding, dan state. Unggah byte ke URL itu, panggil complete_upload dengan ETag setiap bagian, lalu polling get_job sampai statusnya done. Contoh terstruktur di bawah menampilkan JSON bagian dalam secara langsung, yang sudah di-parse, dan menghilangkan pembungkus permintaan {"jsonrpc":"2.0","id":...} karena tidak pernah berubah: hanya name dan arguments yang berubah.

export_transcript mengembalikan format hasil render sebagai teks, dan download_account_export_chunk mengembalikan byte mentah yang disandikan sebagai teks base64. Parse text hasil sebagai JSON hanya jika alat mengembalikan data terstruktur.

Menampilkan daftar dan membaca transkrip:

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

Membuat Insights, gratis pada panggilan pertama untuk sebuah transkrip. Contoh ini menampilkan saldo setelah pembuatan baru dimulai; reused bernilai false:

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

Membeli menit, dengan idempotency_key wajib agar percobaan ulang setelah respons yang terputus tidak menagih dua kali:

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

Resource menjawab tanpa panggilan alat, dengan resources/read yang menyebut salah satu dari tiga URI:

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

Respons ringkas (catatan penjelasan resource dihilangkan):

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

Gunakan list_packs untuk jumlah dan mata uang paket terkini.

Setiap kegagalan backend membawa slug yang stabil dan kode numerik, body {"error": "<slug>", "code": <number>} yang sama seperti yang didokumentasikan di hushscript://error-codes. Panggilan alat menampilkan slug dan kode yang sama, dimasukkan ke dalam pesan yang mudah dibaca alih-alih objek error mentah, dan menandai hasilnya dengan isError alih-alih melempar error:

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

Apa yang memakan menit

Membaca data akun tidak menghabiskan menit transkripsi. Tindakan berbayar memakai tarif yang sama dengan aplikasi. Menit prabayar pribadi biasanya mendanainya; transkripsi ruang kerja dapat memakai saldo menit bersama Teams jika saldo bersama yang aktif saja sudah menutupi seluruh pekerjaan dan tidak ada target terjemahan yang dipilih. Pekerjaan dengan target terjemahan atau URL audio yang diimpor memakai menit pribadi. Sumber dana tidak mengubah pengelolaan transkrip.

Akun pribadi yang memenuhi syarat mendapat 30 menit gratis setelah verifikasi kartu; akun mesin dimulai dengan paket yang dibelinya saat pendaftaran.

Lihat harga untuk paketnya sendiri.

Meninjau dan mencabut

Untuk akun yang dapat Anda masuki, koneksi OAuth muncul di bawah Connected apps pada halaman MCP di akun Anda, beserta klien dan scope-nya. Token juga tercantum di sana; mencabut satu token memutus panggilannya. Menghapus konfigurasi klien hanya menghentikan klien itu dari meminta akses. Akun mesin tidak memiliki kotak surat login yang dapat dipakai, sehingga tokennya merotasi dirinya sendiri lewat alur akun agen.

Batas

Token akun manusia mengizinkan 1.200 permintaan per menit untuk masing-masing token. Rangkaian token akun agen berbagi jatah itu di seluruh rotasi. Rute penagihan yang memanggil Stripe dan dijangkau lewat token berbagi 60 permintaan per menit per akun: penyiapan kartu, pembelian, perubahan kartu default, penghapusan kartu, dan cache miss pada daftar kartu. Pembelian akun agen dan pembelian token akun manusia dibatasi tiga percobaan per 24 jam bergulir per akun. Pendaftaran agen berbayar dihitung, begitu pula kegagalan setelah percobaan direservasi; pembelian lewat sesi browser manusia dikecualikan. Penolakan karena batas adalah HTTP 429 / kode 4038 agent_purchase_capped, berbeda dari HTTP 429 / kode 5000 rate_limited yang biasa. Keduanya menyertakan Retry-After.

Otorisasi dan penyelesaian OAuth berbagi satu bucket alamat sebesar 30 per menit. Pendaftaran memiliki bucket 30 per menit tersendiri; /oauth/token memiliki bucket terpisah sebesar 600 per menit. Masing-masing memakai satu alamat IPv4 atau satu IPv6 /64 sebagai kuncinya. Cache miss introspeksi token mentah memiliki bucket 30 per menit lainnya pada kunci yang sama; itu bukan batas untuk setiap panggilan alat MCP.

Mulai transkripsi dengan 30 menit gratis

Coba pratinjau hingga 5 menit sebelum Anda membuat akun, dan akun pribadi baru mendapat pratinjau gratis untuk unggahan pertamanya di aplikasi. Transkripsi lengkap memerlukan akun dan menit; akun pribadi yang memenuhi syarat mendapat 30 menit gratis satu kali, setelah verifikasi kartu atau dengan pembelian pertama. Tanpa langganan.

Dapatkan 30 menit gratis