เซิร์ฟเวอร์ MCP ของ Hushscript เชื่อมผู้ช่วยกับไฟล์บันทึกและข้อความถอดเสียงของคุณผ่าน Model Context Protocol อนุมัติการเชื่อมต่อ OAuth ในเบราว์เซอร์ หรือระบุโทเคนเข้าถึงส่วนบุคคล การถอดเสียงและการดำเนินการที่มีค่าใช้จ่ายใช้กฎการหักนาทีของบัญชีส่วนตัวหรือพื้นที่ทำงานที่มีสิทธิ์
เซิร์ฟเวอร์สองตัว
Hushscript มีเซิร์ฟเวอร์ MCP แยกกันสองตัว และผู้อ่านส่วนใหญ่ต้องการใช้เพียงตัวเดียว
https://mcp.hushscript.com/mcp คือเซิร์ฟเวอร์บัญชีที่อธิบายในส่วนที่เหลือของหน้านี้ รองรับ OAuth หรือโทเคนเข้าถึงส่วนบุคคล และใช้ทำงานในบัญชี: อัปโหลด ถอดเสียง แก้ไข และส่งออก
POST https://hushscript.com/mcp คือเซิร์ฟเวอร์เอกสารฟรีที่แยกต่างหาก ไม่ต้องมีบัญชี ไม่ต้องมีโทเคน ไม่ต้องเข้าสู่ระบบ เป็นเซิร์ฟเวอร์แบบอ่านอย่างเดียวและไม่ระบุตัวตน: ไม่สามารถเปิดบัญชี เริ่มการถอดเสียง หรือเข้าถึงสิ่งใดที่เป็นของบัญชีได้ ตอบคำถามเกี่ยวกับราคา ความสามารถ เนื้อหาหน้าเว็บ และวิธีเชื่อมต่อ ผ่านเครื่องมือห้าตัว (get_pricing, get_capabilities, how_to_connect, list_pages, get_page) และให้ข้อมูลเดียวกันผ่านทรัพยากรสามรายการ (hushscript://pricing, hushscript://capabilities, hushscript://connect)
หากคุณเป็นเอเจนต์ที่เพิ่งพบ Hushscript ยังไม่มีโทเคน และกำลังตัดสินใจว่าเหมาะกับงานหรือไม่ก่อนใช้จ่าย ให้เริ่มที่เซิร์ฟเวอร์เอกสาร แล้วกลับมาอ่านส่วนที่เหลือของหน้านี้เมื่อพร้อมเชื่อมต่อบัญชี
เชื่อมต่อ
เซิร์ฟเวอร์รองรับ Streamable HTTP ที่เอนด์พอยต์เดียว:
https://mcp.hushscript.com/mcp
ไม่มีเอนด์พอยต์ SSE และไม่ต้องติดตั้งซอฟต์แวร์ Hushscript ในเครื่อง สำหรับ Claude Code:
claude mcp add --transport http hushscript https://mcp.hushscript.com/mcp
สำหรับไคลเอนต์ที่รับการตั้งค่าแบบ JSON:
{
"mcpServers": {
"hushscript": {
"type": "http",
"url": "https://mcp.hushscript.com/mcp"
}
}
}
ไคลเอนต์ที่รองรับ OAuth อ่าน /.well-known/oauth-authorization-server เพื่อค้นหาเอนด์พอยต์ อาจลงทะเบียนผ่าน /oauth/register หรือใช้เอกสารเมทาดาทา client ID แล้วเปิดหน้าต่างเบราว์เซอร์เพื่อเข้าสู่ระบบ
สิ่งที่คุณอนุมัติ
การอนุญาตใช้ OAuth 2.1 ร่วมกับ PKCE หน้าต่างเบราว์เซอร์เป็นหน้าจอขอความยินยอมของ Hushscript ไม่ใช่ช่องรหัสผ่านสำหรับไคลเอนต์ โดยระบุชื่อแอปที่ร้องขอ แสดงสิ่งที่ต้องการทำด้วยภาษาที่เข้าใจง่าย และรอคุณตัดสินใจ จะไม่มีการให้สิทธิ์ใดจนกว่าคุณจะอนุมัติที่หน้าจอนั้น
โทเคนเข้าถึงมีอายุหนึ่งชั่วโมง และรีเฟรชโทเคนมีอายุสามสิบวัน เมื่อใช้ OAuth ไคลเอนต์จะจัดการข้อมูลรับรองเหล่านี้ให้ คุณไม่ต้องวางโทเคนเข้าถึงส่วนบุคคลในไฟล์การตั้งค่า
โดยไม่ใช้เบราว์เซอร์
การเชื่อมต่อ OAuth ต้องได้รับการอนุมัติในเบราว์เซอร์ เซิร์ฟเวอร์เดียวกันยังรับโทเคนเข้าถึงส่วนบุคคลโดยตรง โดยไม่มีขั้นตอนเบราว์เซอร์ขณะเชื่อมต่อ บุคคลสร้างโทเคนใต้ สร้างโทเคนใหม่ ใน หน้า MCP ในบัญชี เลือกขอบเขตสิทธิ์และกำหนดว่าโทเคนจะซื้อนาทีได้หรือไม่ โทเคนแสดงเพียงครั้งเดียว มีรูปแบบ hsr1:<region>:pat.<id>.<secret> และใส่ใน Authorization: Bearer <token> ของทุกคำขอ โดยไม่ต้องทำขั้นตอน OAuth ไม่มีหน้าจอขอความยินยอม และไม่ต้องลงทะเบียนไคลเอนต์ โทเคนเดียวกันใช้ได้กับ REST API
โทเคนอาจเป็นของบัญชีเครื่องที่ไม่มีมนุษย์เป็นเจ้าของบัญชีได้เช่นกัน เอเจนต์เริ่มสมัครแบบชำระเงินด้วย POST /v1/agent/accounts ทำ Stripe Checkout แบบโฮสต์ให้เสร็จในเบราว์เซอร์ที่เอเจนต์ควบคุมได้ แล้วเปิดใช้งานบัญชีด้วยรหัสลับที่ใช้ได้ครั้งเดียวผ่าน POST /v1/agent/accounts/{signup_id}/claim เพื่อรับโทเคนแรก โทเคนนี้เชื่อมต่อที่นี่ได้เหมือนโทเคนอื่น ดูขั้นตอนทั้งหมดที่ การถอดเสียงอัตโนมัติ
โทเคนไม่สามารถสร้าง แสดงรายการ หรือเพิกถอนโทเคนอื่นได้ บัญชีหนึ่งมีโทเคนที่ใช้งานได้สูงสุด 25 ตัว โทเคนแรกของบัญชีเครื่องหมุนเวียนตัวเองผ่าน REST API ได้ ดูขั้นตอนที่ การถอดเสียงอัตโนมัติ
สิทธิ์การเข้าถึง
การเชื่อมต่อมีขอบเขตสิทธิ์ชุดหนึ่ง หากคำขอ OAuth ไม่ระบุขอบเขต จะใช้ค่าเริ่มต้นเป็นสิบจากสิบเอ็ดขอบเขตที่ผู้เรียกเลือกได้ คือทุกขอบเขตยกเว้น billing บุคคลเลือกขอบเขตของโทเคนที่สร้างในแอป ส่วนโทเคนแรกของบัญชีเครื่องมีเพียง transcripts:read, transcripts:write, transcribe, account:read, export, billing และขอบเขตแยก pat:rotate สำหรับหมุนเวียนตัวเอง การเปิดใช้งานบัญชีจะเปิดสวิตช์เรียกเก็บเงินทั้งสองตัว ส่วนโทเคนที่บุคคลสร้างต้องเปิดสวิตช์เหล่านั้นโดยตั้งใจ เมื่อทราบขอบเขต เซิร์ฟเวอร์จะประกาศเครื่องมือที่ตรงกัน และระบบหลังบ้านตรวจสอบสิทธิ์ในทุกคำขอ
| ขอบเขต | สิ่งที่อนุญาต |
|---|---|
transcripts:read |
อ่านและส่งออกข้อความถอดเสียง ข้อมูลเมทาดาทา และรายการที่ถูกลบ |
transcripts:write |
แก้ไข ติดแท็ก แปล กู้คืน และลบข้อความถอดเสียง |
transcribe |
อัปโหลดไฟล์บันทึกเสียง นำเข้าจากลิงก์ และเริ่มการถอดเสียง |
insights |
อ่าน สร้าง และลบ Insights |
context |
จัดการพจนานุกรมที่บันทึกไว้และพรอมต์สำเร็จรูป |
account:read |
อ่านยอดคงเหลือ การใช้งาน รายการธุรกรรม และยอดพักไว้ |
settings:write |
เปลี่ยนการตั้งค่าบัญชี |
org:read |
อ่านสมาชิกพื้นที่ทำงาน บันทึกรายการ ใบแจ้งหนี้ และบันทึกการตรวจสอบ |
org:write |
เปลี่ยนสิทธิ์ของสมาชิก อายัดและเลิกอายัดทางกฎหมาย และตั้งเวลาการย้ายไปการครอบครองแบบองค์กร (ถาวร) |
export |
ร้องขอการส่งออกข้อมูลบัญชีทั้งหมด ตรวจสอบสถานะ และดาวน์โหลด |
billing |
บันทึกหรือจัดการวิธีชำระเงิน และซื้อแพ็กเกจนาที |
billing เป็นข้อยกเว้นในทุกกรณี ไม่มีการให้สิทธิ์นี้โดยปริยาย หน้าจอขอความยินยอมจะเตือนก่อนคุณอนุมัติ และเครื่องมือซื้อต้องเปิดทั้งสถานะเรียกเก็บเงินของโทเคนและสวิตช์เรียกเก็บเงินของทั้งบัญชี เลือก pat:rotate ในคำขอ OAuth หรือแบบฟอร์มโทเคนของแอปไม่ได้
เครื่องมือครอบคลุมอะไรบ้าง
เครื่องมือ 56 รายการ แบ่งตามสิ่งที่จัดการ:
| กลุ่ม | เครื่องมือ | ตัวอย่าง |
|---|---|---|
| ข้อความถอดเสียง การอ่าน | 4 | list_transcripts, get_transcript, list_deleted |
| ข้อความถอดเสียง การแก้ไข | 10 | update_body, revert_body, retranslate, tag_transcripts |
| การถอดเสียง | 8 | create_upload, transcribe_from_url, list_jobs, cancel_job |
| บัญชี | 6 | get_balance, get_usage, list_transactions |
| Insights | 3 | get_insights, generate_insights, delete_insights |
| การส่งออก | 4 | export_transcript, request_account_export |
| บริบทการถอดเสียง | 5 | save_dictionary, save_prompt_preset |
| พื้นที่ทำงาน | 10 | get_org, list_org_members, get_org_audit_log, place_transcript_hold |
| การเรียกเก็บเงิน | 6 | list_packs, purchase_pack, list_payment_methods, add_payment_method |
export_transcript ส่งกลับ TXT, SRT, VTT, Markdown หรือ JSON รูปแบบส่งออกทั้งหมด 21 รูปแบบมีให้ในแอป
นอกจากเครื่องมือ เซิร์ฟเวอร์เผยแพร่ทรัพยากรสามรายการและสตริง instructions เมื่อเชื่อมต่อ: แพ็กเกจนาที รูปแบบเครดิตและขอบเขตสิทธิ์ และรายการรหัสข้อผิดพลาดทั้งหมด เพื่อให้ไคลเอนต์อ่านกฎก่อนเรียกใช้งาน เครื่องมือแสดงรายการแบบแบ่งหน้ารับ limit และ cursor ที่ไม่ต้องตีความจาก next_cursor ของหน้าก่อน ส่วน list_packs และ list_payment_methods ส่งกลับรายการโดยไม่มี cursor
การอัปโหลด MCP ส่งเสียงที่เตรียมไว้แล้ว สำหรับวิดีโอในเครื่อง ให้เตรียมเสียงบนอุปกรณ์ก่อน transcribe_from_url ดึงเสียงจากลิงก์ที่รองรับฝั่งเซิร์ฟเวอร์ และไม่นำเข้าลิงก์วิดีโอ งานที่เริ่มผ่าน MCP ใช้โหมดปกติ โดยบันทึกข้อความถอดเสียงตามการตั้งค่าระยะเวลาเก็บข้อมูลของบัญชี โหมดส่วนตัวสำหรับการใช้งานครั้งเดียวมีในแอป แต่ใช้ผ่านโทเคน MCP ไม่ได้
ตัวอย่าง
ไคลเอนต์ที่ใช้ขั้นตอน OAuth จะได้รับเซสชัน MCP ตามปกติและไม่เห็นรายละเอียดเหล่านี้โดยตรง เพราะ SDK สร้าง JSON-RPC เบื้องหลัง นี่คือโพรโทคอลเดียวกับที่ไคลเอนต์ซึ่งมีโทเคนส่งเอง และช่วยดีบักได้ทั้งสองกรณี
เชื่อมต่อด้วยโทเคนโดยใส่ในคำขอโดยตรง ไม่ต้องมีขั้นตอนจับมืออื่นนอกจาก 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" }
}
}'
ส่งคำขอเดิมอีกครั้งโดยเปลี่ยนเนื้อหา เพื่อดูเครื่องมือทั้งหมดที่ขอบเขตโทเคนครอบคลุม:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
แต่ละรายการมีชื่อ คำอธิบาย และ JSON Schema inputSchema ที่ตรงกับกลุ่มข้างต้น ตัวอย่างการเรียกเครื่องมือดังนี้ โดย create_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 }
}
}
}
เครื่องมือที่ส่งข้อมูลแบบมีโครงสร้าง เช่น create_upload ส่งกลับบล็อกข้อความ content ที่มี JSON ในรูปสตริง ตัวอย่าง:
{
"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}"
}
]
}
คำตอบข้างต้นแสดงฟิลด์อัปโหลด ส่วนคำตอบฉบับเต็มยังมี limits, funding และ state อัปโหลดไบต์ไปยัง URL เหล่านั้น เรียก complete_upload พร้อม ETag ของแต่ละส่วน แล้วตรวจสอบ get_job เป็นระยะจนสถานะเป็น done ตัวอย่างข้อมูลแบบมีโครงสร้างด้านล่างแสดง JSON ภายในที่แยกข้อมูลแล้วโดยตรง และละส่วนหุ้มคำขอ {"jsonrpc":"2.0","id":...} เพราะไม่เปลี่ยนแปลง มีเพียง name และ arguments ที่เปลี่ยน
export_transcript ส่งกลับรูปแบบที่จัดแสดงแล้วเป็นข้อความ และ download_account_export_chunk ส่งกลับไบต์ดิบที่เข้ารหัสเป็นข้อความ base64 แยก text ของผลลัพธ์เป็น JSON เฉพาะเมื่อเครื่องมือส่งข้อมูลแบบมีโครงสร้าง
แสดงรายการและอ่านข้อความถอดเสียง:
{
"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 ฟรีเมื่อเรียกครั้งแรกสำหรับข้อความถอดเสียงนั้น ตัวอย่างนี้แสดงยอดคงเหลือหลังเริ่มสร้างครั้งใหม่ โดย reused เป็น false:
{
"name": "generate_insights",
"arguments": { "id": "t_9c2b7f10" }
}
{
"ok": true,
"reused": false,
"balance_seconds": 5400,
"held_seconds": 0
}
ซื้อนาที โดยต้องมี idempotency_key เพื่อป้องกันการเรียกเก็บเงินซ้ำเมื่อลองใหม่หลังคำตอบขาดหาย:
{
"name": "purchase_pack",
"arguments": {
"pack": "300min",
"payment_method_id": "pm_1PxYzABC",
"idempotency_key": "agent-2026-09-11-refill-01"
}
}
{
"status": "ok",
"balance_seconds": 23400
}
ทรัพยากรตอบกลับโดยไม่ต้องเรียกเครื่องมือ ใช้ resources/read ระบุหนึ่งในสาม URI:
{
"jsonrpc": "2.0",
"id": 9,
"method": "resources/read",
"params": { "uri": "hushscript://pricing" }
}
คำตอบแบบย่อ (ละหมายเหตุอธิบายของทรัพยากร):
{
"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}]}"
}
]
}
ใช้ list_packs ดูราคาแพ็กเกจและสกุลเงินปัจจุบัน
ความล้มเหลวจากระบบหลังบ้านทุกรายการมี slug คงที่และรหัสตัวเลข เป็นเนื้อหา {"error": "<slug>", "code": <number>} เดียวกับที่ระบุใน hushscript://error-codes การเรียกเครื่องมือแสดง slug และรหัสเดียวกันในข้อความที่อ่านเข้าใจได้ แทนออบเจกต์ข้อผิดพลาดดิบ และระบุผลลัพธ์ด้วย isError แทนการโยนข้อผิดพลาด:
{
"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
}
สิ่งที่ใช้นาที
การอ่านข้อมูลบัญชีไม่ใช้นาทีถอดเสียง การดำเนินการที่มีค่าใช้จ่ายใช้อัตราเดียวกับแอป โดยทั่วไปหักจากนาทีเติมเงินส่วนตัว การถอดเสียงในพื้นที่ทำงานใช้พูล Teams ได้เมื่อพูลที่ใช้งานอยู่เพียงพูลเดียวมีนาทีพอสำหรับทั้งงานและไม่ได้เลือกภาษาแปลปลายทาง งานที่มีภาษาแปลปลายทางหรือนำเข้าจาก URL เสียงจะใช้นาทีส่วนตัว แหล่งนาทีที่ใช้ไม่เปลี่ยนการครอบครองข้อความถอดเสียง
บัญชีส่วนตัวที่มีสิทธิ์ได้รับฟรี 30 นาทีหลังยืนยันบัตร ส่วนบัญชีเครื่องเริ่มด้วยแพ็กเกจที่ซื้อตอนสมัคร
- การถอดเสียง ไฟล์บันทึกใช้นาทีตามความยาว โหมดการแพทย์เพิ่ม 100% และแต่ละภาษาแปลปลายทางเพิ่ม 25% เมื่อเปิดเสียงหลายช่อง ระบบจะเรียกเก็บแยกตามแต่ละช่องเสียง ไฟล์สเตอริโอจึงนับสองเท่า
- Insights: สร้างครั้งแรกต่อข้อความถอดเสียงฟรี การสร้างใหม่ภายหลังคิด 40% ของความยาวไฟล์บันทึกเมื่อใช้ข้อความถอดเสียงต้นฉบับ หรือ 30% เมื่อใช้ฉบับเกลา การสร้างใหม่ใช้นาทีส่วนตัวของสมาชิก แม้การถอดเสียงจะใช้นาทีจากพูลพื้นที่ทำงาน
- การแปลใหม่ ของข้อความถอดเสียงคิด 25% ของความยาวต่อภาษา และเขียนทับข้อมูลเดิม: ทุกภาษาที่คำขอคิดนาทีจะสูญเสียคำแปลที่แก้ไขด้วยมือ โดยกู้คืนไม่ได้
purchase_packเรียกเก็บเงินจากบัตรที่บันทึกไว้และมีสิทธิ์ทันทีเมื่อสำเร็จ ต้องมีขอบเขตbillingสถานะเรียกเก็บเงินของโทเคน และสวิตช์เรียกเก็บเงินของทั้งบัญชี โดยเพิ่มนาทีในยอดคงเหลือส่วนตัว ไม่ใช่พูล Teamsadd_payment_methodไม่มีค่าใช้จ่าย ส่งกลับลิงก์ Stripe Checkout สำหรับบันทึกบัตรในบัญชีโดยไม่เรียกเก็บเงิน ทำขั้นตอนให้เสร็จครั้งเดียวในเบราว์เซอร์ (เอเจนต์ควบคุมเบราว์เซอร์ของตัวเองได้) ภายหลังpurchase_packจะพยายามเรียกเก็บเงินแบบ off-session หากถูกปฏิเสธหรือผู้ออกบัตรต้องการการยืนยันตัวตนเพิ่มเติม จะส่งรหัสข้อผิดพลาดเฉพาะกลับมา แทนหน้าเว็บที่ทำไม่เสร็จ
ดูแพ็กเกจที่หน้า ราคา
ตรวจสอบและเพิกถอน
สำหรับบัญชีที่คุณเข้าสู่ระบบได้ การเชื่อมต่อ OAuth แสดงใต้ แอปที่เชื่อมต่อ ใน หน้า MCP ในบัญชีของคุณ พร้อมไคลเอนต์และขอบเขตสิทธิ์ โทเคนก็แสดงที่นั่น และการเพิกถอนจะตัดคำขอของโทเคนนั้น การลบการตั้งค่าไคลเอนต์เพียงหยุดไคลเอนต์นั้นจากการส่งคำขอ บัญชีเครื่องไม่มีกล่องอีเมลที่ใช้เข้าสู่ระบบได้ โทเคนจึงหมุนเวียนตัวเองผ่าน ขั้นตอนบัญชีเอเจนต์ แทน
ขีดจำกัด
โทเคนของบัญชีบุคคลส่งคำขอได้ตัวละ 1,200 ครั้งต่อนาที โทเคนบัญชีเอเจนต์ที่สืบต่อกันใช้โควตานี้ร่วมกันข้ามการหมุนเวียน เส้นทางเรียกเก็บเงินที่เรียก Stripe ผ่านโทเคนใช้ขีดจำกัดร่วมกันที่ 60 ครั้งต่อนาทีต่อบัญชี: การตั้งค่าบัตร การซื้อ การเปลี่ยนบัตรเริ่มต้น การลบบัตร และกรณีที่ไม่พบรายการบัตรในแคช การซื้อของบัญชีเอเจนต์และการซื้อผ่านโทเคนบัญชีบุคคลจำกัดที่สามครั้งต่อช่วง 24 ชั่วโมงแบบต่อเนื่องต่อบัญชี การสมัครเอเจนต์แบบชำระเงินนับรวมด้วย รวมถึงความล้มเหลวหลังกันโควตาความพยายามซื้อไว้แล้ว การซื้อผ่านเซสชันเบราว์เซอร์ของบุคคลได้รับยกเว้น การปฏิเสธเพราะถึงเพดานตอบกลับ HTTP 429 / รหัส 4038 agent_purchase_capped ต่างจากการจำกัดอัตราทั่วไป HTTP 429 / รหัส 5000 rate_limited ทั้งสองแบบมี Retry-After
การอนุญาต OAuth และการทำขั้นตอนให้เสร็จใช้โควตาร่วมกันที่ 30 ครั้งต่อนาทีต่อที่อยู่ การลงทะเบียนมีโควตาแยกที่ 30 ครั้งต่อนาที ส่วน /oauth/token มีโควตาแยกที่ 600 ครั้งต่อนาที แต่ละโควตาใช้ที่อยู่ IPv4 หนึ่งที่อยู่หรือเครือข่าย IPv6 /64 หนึ่งเครือข่ายเป็นคีย์ กรณีที่ไม่พบผลตรวจสอบโทเคนดิบในแคชมีโควตาอีกชุดที่ 30 ครั้งต่อนาทีโดยใช้คีย์เดียวกัน นี่ไม่ใช่ขีดจำกัดของการเรียกเครื่องมือ MCP ทุกครั้ง