Máy chủ MCP phiên âm của Hushscript kết nối trợ lý với bản ghi và bản phiên âm của bạn qua Model Context Protocol. Phê duyệt kết nối OAuth trong trình duyệt hoặc cung cấp token truy cập cá nhân. Việc phiên âm và các thao tác trả phí tuân theo quy tắc chi trả từ tài khoản cá nhân hoặc workspace đủ điều kiện của bạn.
Hai máy chủ
Hushscript vận hành hai máy chủ MCP riêng biệt, và phần lớn người đọc chỉ cần một.
https://mcp.hushscript.com/mcp là máy chủ tài khoản được mô tả trong phần còn
lại của trang này. Máy chủ chấp nhận OAuth hoặc token truy cập cá nhân, và thực
hiện các công việc trong tài khoản: tải lên, phiên âm, chỉnh sửa, xuất file.
POST https://hushscript.com/mcp là máy chủ tài liệu miễn phí riêng biệt.
Không cần tài khoản, không cần token, không có gì để đăng nhập. Máy chủ chỉ đọc và ẩn danh:
không thể mở tài khoản, chạy phiên âm hay truy cập bất kỳ dữ liệu nào thuộc tài
khoản. Máy chủ trả lời câu hỏi về giá, tính năng, nội dung trang và cách kết nối
qua năm công cụ (get_pricing, get_capabilities, how_to_connect, list_pages,
get_page), và cung cấp cùng thông tin qua ba tài nguyên (hushscript://pricing,
hushscript://capabilities, hushscript://connect).
Nếu bạn là agent vừa tìm thấy Hushscript, chưa có token và đang cân nhắc mức độ phù hợp trước khi chi tiền, hãy bắt đầu với máy chủ tài liệu. Quay lại phần còn lại của trang này khi sẵn sàng kết nối tài khoản.
Kết nối
Máy chủ dùng Streamable HTTP tại một endpoint duy nhất:
https://mcp.hushscript.com/mcp
Không có endpoint SSE và không cần cài đặt phần mềm Hushscript trên thiết bị. Trong Claude Code:
claude mcp add --transport http hushscript https://mcp.hushscript.com/mcp
Trong client nhận cấu hình JSON:
{
"mcpServers": {
"hushscript": {
"type": "http",
"url": "https://mcp.hushscript.com/mcp"
}
}
}
Client hỗ trợ OAuth đọc /.well-known/oauth-authorization-server để tìm các
endpoint. Client có thể đăng ký qua /oauth/register hoặc dùng tài liệu metadata
client ID, rồi mở cửa sổ trình duyệt để đăng nhập.
Những gì bạn phê duyệt
Việc ủy quyền dùng OAuth 2.1 với PKCE. Cửa sổ trình duyệt hiển thị màn hình đồng ý của Hushscript, không phải ô mật khẩu của client: màn hình nêu tên ứng dụng yêu cầu, liệt kê bằng ngôn ngữ dễ hiểu những gì ứng dụng muốn làm và chờ bạn. Không quyền nào được cấp trước khi bạn phê duyệt tại đó.
Access token có hiệu lực một giờ, còn refresh token có hiệu lực ba mươi ngày. Với OAuth, client quản lý các thông tin xác thực này cho bạn; bạn không phải dán token truy cập cá nhân vào cấu hình.
Không cần trình duyệt
Kết nối OAuth cần phê duyệt trong trình duyệt. Cùng máy chủ cũng nhận trực tiếp
token truy cập cá nhân, không cần bước trình duyệt khi kết nối. Bạn tạo token
trong mục Tạo token mới trên
trang MCP trong tài khoản, chọn scope
và quyết định liệu token có được mua phút hay không. Token chỉ hiển thị một lần,
có dạng hsr1:<region>:pat.<id>.<secret> và được đặt trong
Authorization: Bearer <token> trên mỗi yêu cầu: không có vòng trao đổi OAuth,
màn hình đồng ý hay đăng ký client. Cùng token đó dùng được với
REST API.
Token cũng có thể thuộc tài khoản máy không có chủ tài khoản là con người.
Agent bắt đầu đăng ký trả phí với POST /v1/agent/accounts, hoàn tất Stripe
Checkout được lưu trữ trong trình duyệt mà agent có thể điều khiển, rồi xác nhận
tài khoản bằng bí mật dùng một lần tại POST /v1/agent/accounts/{signup_id}/claim
để nhận token đầu tiên. Token đó kết nối tại đây như mọi token khác. Xem
Sử dụng tự động để biết toàn bộ quy trình.
Token không thể tạo, liệt kê hay thu hồi token khác. Mỗi tài khoản có tối đa 25 token đang hoạt động. Token đầu tiên của tài khoản máy có thể tự xoay vòng qua REST API; quy trình nằm trong Sử dụng tự động.
Quyền
Kết nối có một tập scope. Yêu cầu OAuth không chỉ định scope mặc định nhận mười
trong mười một scope mà bên gọi có thể chọn, trừ billing. Bạn chọn scope khi
tạo token trong ứng dụng. Token đầu tiên của tài khoản máy chỉ có
transcripts:read, transcripts:write, transcribe, account:read, export,
billing và scope pat:rotate riêng để tự xoay vòng. Việc xác nhận tài khoản
bật cả hai công tắc thanh toán; token do con người tạo cần chủ động bật chúng.
Khi biết scope, máy chủ công bố các công cụ tương ứng; backend kiểm tra scope
trên mỗi lệnh gọi.
| Scope | Cho phép làm gì |
|---|---|
transcripts:read |
Đọc và xuất bản phiên âm, metadata và danh sách đã xóa |
transcripts:write |
Chỉnh sửa, gắn thẻ, dịch, khôi phục và xóa bản phiên âm |
transcribe |
Tải lên bản ghi, nhập từ liên kết và chạy phiên âm |
insights |
Đọc, tạo và xóa Insights |
context |
Quản lý từ điển đã lưu và mẫu lời nhắc |
account:read |
Đọc số dư, mức sử dụng, giao dịch và khoản giữ |
settings:write |
Thay đổi cài đặt tài khoản |
org:read |
Đọc thành viên workspace, sổ cái, hóa đơn và nhật ký kiểm toán |
org:write |
Thay đổi quyền thành viên, đặt và gỡ Giữ pháp lý, lên lịch chuyển sang lưu giữ tổ chức (vĩnh viễn) |
export |
Yêu cầu xuất toàn bộ tài khoản, kiểm tra trạng thái và tải xuống |
billing |
Lưu hoặc quản lý phương thức thanh toán và mua gói phút |
billing là ngoại lệ trong mọi trường hợp. Scope này không bao giờ được cấp ngầm
định, màn hình đồng ý cảnh báo trước khi bạn phê duyệt, và công cụ mua phút cần
bật cả cờ thanh toán của token lẫn công tắc thanh toán toàn tài khoản.
Không thể chọn pat:rotate trong yêu cầu OAuth hoặc biểu mẫu tạo token của ứng dụng.
Các công cụ hỗ trợ những gì
56 công cụ, được nhóm theo dữ liệu chúng tác động đến:
| Nhóm | Số công cụ | Ví dụ |
|---|---|---|
| Bản phiên âm, đọc | 4 | list_transcripts, get_transcript, list_deleted |
| Bản phiên âm, ghi | 10 | update_body, revert_body, retranslate, tag_transcripts |
| Phiên âm | 8 | create_upload, transcribe_from_url, list_jobs, cancel_job |
| Tài khoản | 6 | get_balance, get_usage, list_transactions |
| Insights | 3 | get_insights, generate_insights, delete_insights |
| Xuất | 4 | export_transcript, request_account_export |
| Ngữ cảnh phiên âm | 5 | save_dictionary, save_prompt_preset |
| Workspace | 10 | get_org, list_org_members, get_org_audit_log, place_transcript_hold |
| Thanh toán | 6 | list_packs, purchase_pack, list_payment_methods, add_payment_method |
export_transcript trả về TXT, SRT, VTT, Markdown hoặc JSON. Bộ đầy đủ 21 định
dạng xuất nằm trong ứng dụng.
Ngoài công cụ, máy chủ công bố ba tài nguyên và chuỗi instructions khi kết nối:
các gói phút, mô hình tín dụng và scope, cùng toàn bộ danh mục mã lỗi, để client
có thể đọc quy tắc trước khi gọi. Công cụ liệt kê có phân trang nhận limit và
cursor không cần diễn giải từ next_cursor của trang trước; list_packs và
list_payment_methods trả về danh sách không có cursor.
Lượt tải lên qua MCP gửi âm thanh đã chuẩn bị. Với video trên thiết bị, hãy chuẩn
bị âm thanh trên thiết bị trước; transcribe_from_url lấy liên kết âm thanh được
hỗ trợ từ phía máy chủ và không nhập liên kết video. Job bắt đầu qua MCP dùng chế
độ thông thường: bản phiên âm được lưu theo cài đặt thời hạn lưu giữ của tài khoản.
Chế độ riêng tư dùng một lần có trong ứng dụng, không có qua token MCP.
Ví dụ
Client dùng quy trình OAuth nhận phiên MCP thông thường và không thấy trực tiếp những nội dung này: SDK xây dựng JSON-RPC bên dưới. Đây cũng là giao thức client có token gửi thủ công, hữu ích để gỡ lỗi trong cả hai trường hợp.
Kết nối bằng token bằng cách đặt token trực tiếp trong yêu cầu, không cần bước
bắt tay nào ngoài 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" }
}
}'
Gửi lại cùng yêu cầu với nội dung khác để xem mọi công cụ mà scope của token cho phép:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
Mỗi mục chứa tên, mô tả và JSON Schema inputSchema, khớp với các nhóm trên.
Lệnh gọi công cụ có dạng sau, trong đó create_upload giữ tín dụng và bắt đầu tải lên:
{
"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 }
}
}
}
Công cụ trả dữ liệu có cấu trúc như create_upload trả về khối văn bản content
chứa JSON dưới dạng chuỗi. Ví dụ:
{
"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}"
}
]
}
Phản hồi trên hiển thị các trường tải lên; phản hồi đầy đủ còn có limits,
funding và state. Tải byte đến các URL đó, gọi complete_upload với ETag của
từng phần, rồi kiểm tra get_job định kỳ đến khi trạng thái là done.
Các ví dụ dữ liệu có cấu trúc bên dưới hiển thị trực tiếp JSON bên trong đã được
phân tích, bỏ lớp bọc yêu cầu {"jsonrpc":"2.0","id":...} vì lớp bọc này
không thay đổi: chỉ name và arguments thay đổi.
export_transcript trả định dạng đã dựng dưới dạng văn bản, còn
download_account_export_chunk trả byte thô được mã hóa thành văn bản base64.
Chỉ phân tích text của kết quả thành JSON khi công cụ trả dữ liệu có cấu trúc.
Liệt kê và đọc bản phiên âm:
{
"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
}
Tạo Insights, miễn phí cho lần gọi đầu tiên của một bản phiên âm. Ví dụ này
hiển thị số dư sau khi bắt đầu lần tạo mới; reused là false:
{
"name": "generate_insights",
"arguments": { "id": "t_9c2b7f10" }
}
{
"ok": true,
"reused": false,
"balance_seconds": 5400,
"held_seconds": 0
}
Mua phút, cần idempotency_key để thử lại sau khi mất phản hồi không tính phí hai lần:
{
"name": "purchase_pack",
"arguments": {
"pack": "300min",
"payment_method_id": "pm_1PxYzABC",
"idempotency_key": "agent-2026-09-11-refill-01"
}
}
{
"status": "ok",
"balance_seconds": 23400
}
Tài nguyên trả lời không cần gọi công cụ, với resources/read chỉ định một
trong ba URI:
{
"jsonrpc": "2.0",
"id": 9,
"method": "resources/read",
"params": { "uri": "hushscript://pricing" }
}
Phản hồi rút gọn (đã bỏ ghi chú giải thích của tài nguyên):
{
"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}]}"
}
]
}
Dùng list_packs để biết giá gói và đơn vị tiền tệ hiện tại.
Mỗi lỗi backend chứa slug ổn định và mã số, cùng nội dung
{"error": "<slug>", "code": <number>} được mô tả trong
hushscript://error-codes. Lệnh gọi công cụ đưa ra cùng slug và mã đó,
gói trong thông báo dễ đọc thay cho đối tượng lỗi thô, và đánh dấu kết quả
bằng isError thay vì ném lỗi:
{
"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
}
Thao tác nào tốn phút
Đọc dữ liệu tài khoản không dùng phút phiên âm. Thao tác tính phí dùng cùng mức giá với ứng dụng. Phút trả trước cá nhân thường chi trả các thao tác này; phiên âm trong workspace có thể dùng quỹ Teams khi riêng quỹ đang hoạt động đủ trả toàn bộ job và không chọn ngôn ngữ dịch đích. Job có ngôn ngữ dịch đích hoặc nhập URL âm thanh dùng phút cá nhân. Nguồn chi trả không thay đổi quyền lưu giữ bản phiên âm.
Tài khoản cá nhân đủ điều kiện nhận 30 phút miễn phí sau khi xác minh thẻ; tài khoản máy bắt đầu với gói mua khi đăng ký.
- Phiên âm bản ghi dùng số phút bằng thời lượng bản ghi. Chế độ y tế cộng thêm 100%, và mỗi ngôn ngữ dịch đích cộng thêm 25%. Khi bật đa kênh, mỗi kênh âm thanh được tính phí riêng, nên một tệp stereo được tính hai lần.
- Insights: lần tạo đầu tiên cho mỗi bản phiên âm miễn phí. Tạo lại sau đó tốn 40% thời lượng bản ghi từ bản phiên âm gốc, hoặc 30% từ Bản làm sạch. Việc tạo lại dùng phút cá nhân của thành viên, ngay cả khi quỹ workspace đã chi trả phiên âm.
- Dịch lại bản phiên âm tốn 25% thời lượng cho mỗi ngôn ngữ và ghi đè: mỗi ngôn ngữ được tính phí trong lệnh gọi sẽ mất bản dịch chỉnh sửa thủ công, không thể khôi phục.
purchase_packtính phí ngay vào thẻ đã lưu đủ điều kiện khi thành công. Lệnh gọi cần scopebilling, cờ thanh toán của token và công tắc thanh toán toàn tài khoản. Phút được thêm vào số dư cá nhân, không phải quỹ Teams.add_payment_methodkhông tốn phí. Lệnh gọi trả liên kết Stripe Checkout lưu thẻ vào tài khoản mà không tính phí; hoàn tất một lần trong trình duyệt (agent có thể điều khiển trình duyệt riêng). Sau đópurchase_packthử tính phí ngoài phiên; thẻ bị từ chối hoặc yêu cầu xác thực của ngân hàng phát hành trả về mã lỗi riêng, thay vì trang chưa hoàn tất.
Xem bảng giá để biết các gói.
Xem lại và thu hồi
Với tài khoản bạn có thể đăng nhập, kết nối OAuth xuất hiện trong mục Ứng dụng đã kết nối trên trang MCP trong tài khoản của bạn, cùng client và scope. Token cũng được liệt kê tại đó; thu hồi token sẽ chặn các lệnh gọi của nó. Xóa cấu hình client chỉ ngăn client đó gửi yêu cầu. Tài khoản máy không có hộp thư đăng nhập khả dụng, nên token tự xoay vòng qua quy trình tài khoản agent.
Giới hạn
Token của tài khoản con người cho phép 1.200 yêu cầu mỗi phút cho mỗi token.
Chuỗi token kế nhiệm của tài khoản agent dùng chung hạn mức đó qua các lần xoay
vòng. Route thanh toán gọi Stripe qua token dùng chung hạn mức 60 yêu cầu mỗi
phút cho mỗi tài khoản: lưu thẻ, mua phút, đổi thẻ mặc định, xóa thẻ và truy vấn
danh sách thẻ khi không có dữ liệu trong bộ nhớ đệm. Giao dịch mua của tài khoản
agent và qua token của tài khoản con người bị giới hạn ở ba lần thử trong mỗi
khoảng 24 giờ liên tục cho mỗi tài khoản. Đăng ký trả phí của agent cũng được
tính, cũng như lỗi sau khi đã giữ lượt thử; giao dịch mua qua phiên trình duyệt
của con người được miễn. Từ chối do hết lượt là HTTP 429 / mã 4038
agent_purchase_capped, khác với giới hạn tốc độ thông thường HTTP 429 / mã 5000
rate_limited. Cả hai cung cấp Retry-After.
Ủy quyền và hoàn tất OAuth dùng chung hạn mức 30 yêu cầu mỗi phút theo địa chỉ.
Đăng ký có hạn mức riêng 30 yêu cầu mỗi phút; /oauth/token có hạn mức riêng
600 yêu cầu mỗi phút. Mỗi hạn mức dùng một địa chỉ IPv4 hoặc một dải IPv6 /64
làm khóa. Truy vấn xác minh token thô khi không có dữ liệu trong bộ nhớ đệm có
hạn mức khác 30 yêu cầu mỗi phút theo cùng khóa; đây không phải giới hạn cho
mọi lệnh gọi công cụ MCP.