Chuyển đến nội dung chính

Nhà phát triển

Máy chủ MCP cho bản phiên âm trong tài khoản của bạn

Kết nối máy chủ MCP phiên âm với tài khoản Hushscript để làm việc với bản ghi và bản phiên âm qua công cụ trợ lý có scope phù hợp.

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ý.

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.

Bắt đầu chuyển thành văn bản với 30 phút dùng thử

Xem trước tối đa 5 phút trước khi bạn tạo tài khoản, và tài khoản cá nhân mới được xem trước miễn phí file đầu tiên tải lên trong ứng dụng. Chuyển toàn bộ bản ghi thành văn bản cần có tài khoản và số phút; tài khoản cá nhân đủ điều kiện nhận 30 phút miễn phí một lần, sau khi xác minh thẻ hoặc cùng lần mua đầu tiên. Không subscription.

Bắt đầu với 30 phút miễn phí