---
title: "ใช้ ThunderPhone เป็นเซิร์ฟเวอร์ MCP"
description: "สร้าง ทดสอบ ตรวจสอบความถูกต้อง และใช้งานเอเจนต์เสียง ThunderPhone จาก Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code หรือไคลเอนต์ Streamable HTTP MCP อื่น"
---

ThunderPhone เปิดให้ใช้เซิร์ฟเวอร์ Model Context Protocol แบบ Streamable HTTP ที่:

```text
https://api.thunderphone.com/v1/mcp
```

นี่เป็นทิศทางตรงข้ามกับ[การเชื่อมต่อเซิร์ฟเวอร์ MCP ระยะไกลเข้ากับเอเจนต์เสียง](/th/guides/mcp-servers):

| ทิศทาง | ผลลัพธ์ |
| --- | --- |
| เซิร์ฟเวอร์ MCP ระยะไกล → เอเจนต์ ThunderPhone | เอเจนต์เสียงสามารถเรียกใช้เครื่องมือของเซิร์ฟเวอร์ระยะไกลได้ |
| ThunderPhone → ไคลเอนต์ MCP ของคุณ | เอเจนต์เขียนโค้ดของคุณสามารถสร้าง ทดสอบ และดำเนินการกับ ThunderPhone ได้ |

## การยืนยันตัวตน

ใช้[OAuth](/th/guides/oauth)เป็นค่าเริ่มต้นสำหรับไคลเอนต์ไดเรกทอรี: ลงชื่อเข้าใช้ เลือกองค์กร และอนุมัติสิทธิ์ที่ร้องขอ เพิกถอนการเข้าถึงได้ที่ **องค์กร → คีย์ API → แอปที่ได้รับอนุญาต**

สำหรับไคลเอนต์ที่กำหนดค่าด้วยคีย์ API ให้สร้างคีย์ `sk_live_` ที่ **องค์กร → คีย์** และเปิดให้ไคลเอนต์ MCP ของคุณใช้เป็น `THUNDERPHONE_API_KEY` คีย์จะผูกกับองค์กรเดียว ID ที่เป็นขององค์กรอื่นจะมีลักษณะเสมือนว่าไม่พบ

<Warning>
  คีย์ `sk_live_` สามารถอ่านข้อมูลองค์กรและดำเนินการในระบบจริง เช่น ปรับใช้เอเจนต์ โทรออก ซื้อหมายเลข เริ่มแคมเปญ และลบทรัพยากร อย่าเก็บคีย์ไว้ในโค้ดเบราว์เซอร์ รีโพซิทอรี ภาพหน้าจอ และบันทึกแชต ใช้พื้นที่เก็บข้อมูลลับหรือการรองรับตัวแปรสภาพแวดล้อมของไคลเอนต์ และเพิกถอนคีย์ที่รั่วไหลทันที
</Warning>

## ทางเลือก CLI และ stdio

[ThunderPhone CLI](/th/guides/cli)สามารถเขียนการกำหนดค่าไคลเอนต์โดยคงไว้ซึ่ง
เซิร์ฟเวอร์อื่นที่ไม่เกี่ยวข้อง:

```bash
npx -y @thunderphone/mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
npx thunderphone mcp setup --client claude-desktop --scope user
```

หลังติดตั้ง `@thunderphone/mcp` แบบส่วนกลาง ให้ใช้ `thunderphone-mcp setup` พร้อม
ตัวเลือกเดียวกัน การตั้งค่ารองรับ Claude Code, Codex, Cursor, VS Code, Gemini, Claude
Desktop และ Windsurf ควรใช้ HTTP โดยตรงเป็นหลัก ส่วน Desktop ใช้ stdio

สำหรับไคลเอนต์ใดก็ตามที่รองรับ stdio ให้กำหนดค่า `command: "npx"` พร้อม
`args: ["-y", "@thunderphone/mcp"]` ตัวห่อหุ้มจะใช้ `THUNDERPHONE_API_KEY` ก่อน
จากนั้นใช้ข้อมูลรับรองจาก `thunderphone login` พร้อมรีเฟรชโทเค็นที่หมดอายุ แล้วจึงใช้
OAuth ผ่าน `mcp-remote` การเข้าสู่ระบบด้วยอุปกรณ์และ OAuth ต้องมีการเปิดใช้ OAuth ของ API
ที่เกี่ยวข้อง แต่เส้นทางคีย์ API ไม่ต้องใช้ การกำหนดค่า HTTP โดยตรงจะไม่อ่าน
พื้นที่เก็บข้อมูลรับรองของ CLI ให้ใช้ตัวห่อหุ้ม stdio เพื่อใช้การเข้าสู่ระบบด้วยอุปกรณ์ซ้ำ

สิ่งเหล่านี้เป็นทางเลือกแทนการกำหนดค่าไคลเอนต์ด้วยตนเองด้านล่าง

## การกำหนดค่าไคลเอนต์

Claude และ ChatGPT ลงชื่อเข้าใช้ด้วย [OAuth](/th/guides/oauth) โดยไม่ใช้คีย์ API หากคุณยังไม่มีบัญชี ThunderPhone ให้เลือก **สร้างบัญชี** ในหน้าลงชื่อเข้าใช้ จากนั้นคุณจะกลับไปยังหน้าจออนุมัติหลังยืนยันอีเมลแล้ว

### Claude (เว็บ เดสก์ท็อป และมือถือ)

1. เปิด **การตั้งค่า → ตัวเชื่อมต่อ** หาก ThunderPhone ปรากฏในไดเรกทอรีตัวเชื่อมต่อ ให้เลือก ThunderPhone มิฉะนั้นให้เลือก **เพิ่มตัวเชื่อมต่อแบบกำหนดเอง** ตั้งชื่อเป็น `ThunderPhone` แล้วป้อน `https://api.thunderphone.com/v1/mcp`
2. เลือก **เชื่อมต่อ** ลงชื่อเข้าใช้ ThunderPhone เลือกองค์กร แล้วอนุมัติสิทธิ์
3. ในแชต ให้เปิดใช้ ThunderPhone จากเมนูเครื่องมือ แล้วขอสิ่งที่คุณต้องการ เช่น "แสดงรายการเอเจนต์ของฉัน"

ตัวเชื่อมต่อแบบกำหนดเองต้องใช้แพ็กเกจ Claude แบบชำระเงิน สำหรับแพ็กเกจ Team และ Enterprise เจ้าของต้องเพิ่มตัวเชื่อมต่อในการตั้งค่าตัวเชื่อมต่อขององค์กรก่อน จากนั้นสมาชิกแต่ละคนจึงเชื่อมต่อบัญชี ThunderPhone ของตนเองได้

### ChatGPT

1. หาก ThunderPhone ปรากฏในไดเรกทอรีแอป ChatGPT ให้เลือกแล้วเชื่อมต่อ
2. มิฉะนั้น ให้เปิด **การตั้งค่า → แอปและตัวเชื่อมต่อ → การตั้งค่าขั้นสูง** เปิด **โหมดนักพัฒนา** แล้วสร้างตัวเชื่อมต่อด้วย URL `https://api.thunderphone.com/v1/mcp` และการรับรองความถูกต้อง OAuth
3. ลงชื่อเข้าใช้ ThunderPhone เลือกองค์กร แล้วอนุมัติสิทธิ์ เพิ่ม ThunderPhone ลงในแชตจากเมนูเครื่องมือ

การลบเอเจนต์หรือหมายเลขโทรศัพท์ การยกเลิกร่าง และการเปิดตัวแคมเปญจะขอการยืนยันครั้งที่สองในทั้งสองแอป ดู [การยืนยันการดำเนินการที่ทำลายข้อมูล](#confirming-destructive-actions)

### Claude Code

```bash
claude mcp add --transport http thunderphone https://api.thunderphone.com/v1/mcp \
  --header "Authorization: Bearer $THUNDERPHONE_API_KEY"
```

### Codex

เพิ่มรายการนี้ลงใน `~/.codex/config.toml`:

```toml
[mcp_servers.thunderphone]
url = "https://api.thunderphone.com/v1/mcp"
bearer_token_env_var = "THUNDERPHONE_API_KEY"
```

### Cursor

สร้าง `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "thunderphone": {
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
      }
    }
  }
}
```

### Claude Desktop

เพิ่มบริดจ์ `mcp-remote` ลงในการกำหนดค่า Claude Desktop:

```json
{
  "mcpServers": {
    "thunderphone": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.thunderphone.com/v1/mcp",
        "--header",
        "Authorization: Bearer ${THUNDERPHONE_API_KEY}"
      ],
      "env": {
        "THUNDERPHONE_API_KEY": "sk_live_YOUR_API_KEY"
      }
    }
  }
}
```

### VS Code

สร้าง `.vscode/mcp.json` แล้วป้อนคีย์ผ่านพรอมต์ป้อนข้อมูลของ VS Code:

```json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "thunderphone-api-key",
      "description": "ThunderPhone organization API key",
      "password": true
    }
  ],
  "servers": {
    "thunderphone": {
      "type": "http",
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${input:thunderphone-api-key}"
      }
    }
  }
}
```

## เครื่องมือ

เครื่องมือทุกตัวมีคำอธิบายประกอบ MCP ในตาราง **R** หมายถึงอ่านอย่างเดียว **D** หมายถึงทำลายข้อมูล **I** หมายถึงทำซ้ำได้โดยให้ผลลัพธ์เดิม และ **O** หมายถึงการโต้ตอบกับโลกภายนอก/เครือข่าย ขีดหมายถึงไม่มีการตั้งค่าคำใบ้

### เอเจนต์

| เครื่องมือ | อาร์กิวเมนต์หลัก | คำอธิบายประกอบ | การทำงาน |
| --- | --- | --- | --- |
| `list_agents` | — | R, I | แสดงรายการเอเจนต์ |
| `get_agent` | `agent_id` | R, I | รับข้อมูลเอเจนต์หนึ่งราย |
| `create_agent` | การกำหนดค่าเอเจนต์ | — | สร้างเอเจนต์ |
| `update_agent` | `agent_id`, ฟิลด์ที่เปลี่ยนแปลง | — | จัดเตรียมฟิลด์ในฉบับร่างของเอเจนต์ |
| `deploy_agent` | `agent_id`, `if_updated_at` ที่ระบุหรือไม่ระบุก็ได้ | I | เลื่อนฉบับร่างไปยังระบบใช้งานจริง |
| `discard_agent_draft` | `agent_id`, `if_updated_at` ที่ระบุหรือไม่ระบุก็ได้, `confirmation_token` ในคำขอครั้งที่สอง | D, I | ยกเลิกการเปลี่ยนแปลงที่จัดเตรียมไว้ ดำเนินการสองขั้นตอน ดู [การยืนยันการดำเนินการที่ทำลายข้อมูล](#confirming-destructive-actions) |
| `duplicate_agent` | `agent_id`, `name` ที่ระบุหรือไม่ระบุก็ได้ | — | คัดลอกเอเจนต์ภายในองค์กร |
| `delete_agent` | `agent_id`, `confirmation_token` ในคำขอครั้งที่สอง | D, I | ลบเอเจนต์อย่างถาวร ดำเนินการสองขั้นตอน |
| `list_agent_versions` | `agent_id` | R, I | แสดงรายการเวอร์ชันการกำหนดค่าที่ปรับใช้แล้ว |

### หมายเลขโทรศัพท์และผู้ให้บริการ

| เครื่องมือ | อาร์กิวเมนต์หลัก | คำอธิบายประกอบ | การทำงาน |
| --- | --- | --- | --- |
| `list_phone_numbers` | — | R, I | แสดงรายการหมายเลขและการกำหนดเส้นทางขององค์กร |
| `get_phone_number_limits` | — | R, I | รับการใช้งานและขีดจำกัดของหมายเลขที่จัดการ |
| `provision_phone_number` | `area_code`, `city`, `state`, `idempotency_key` ที่ระบุหรือไม่ระบุก็ได้ | O | ซื้อหมายเลขขาเข้าที่ ThunderPhone จัดการ |
| `list_voip_connections` | — | R, I | แสดงรายการผู้ให้บริการของลูกค้าที่เชื่อมต่อ |
| `search_voip_numbers` | `connection_id`, `country`, `type`, `area_code` ที่ระบุหรือไม่ระบุก็ได้ | R, I, O | ค้นหาสินค้าคงคลังของผู้ให้บริการ |
| `import_voip_numbers` | `connection_id`, `numbers` | O | นำเข้าหมายเลขที่มีอยู่แล้วกับผู้ให้บริการ |
| `update_phone_number` | `phone_number_id`, ฟิลด์การกำหนดเส้นทาง/ป้ายกำกับ/เว็บฮุก | — | อัปเดตการกำหนดเส้นทางหมายเลข รวมถึงการกำหนดเอเจนต์ |
| `delete_phone_number` | `phone_number_id`, `confirm`, `release_at_provider` ที่ระบุหรือไม่ระบุก็ได้, `confirmation_token` ในคำขอครั้งที่สอง | D, I, O | ปล่อยหมายเลข ดำเนินการสองขั้นตอน |

### การโทร

| เครื่องมือ | อาร์กิวเมนต์หลัก | คำอธิบายประกอบ | การทำงาน |
| --- | --- | --- | --- |
| `list_calls` | ตัวกรองที่ระบุหรือไม่ระบุก็ได้, `limit`, `offset` | R, I | แสดงรายการการโทรโดยใช้ตัวกรองประวัติการโทร REST |
| `get_call` | `call_id` | R, I | รับสถานะและข้อมูลเมตาของการโทร |
| `get_call_transcript` | `call_id`, `live` ที่ระบุหรือไม่ระบุก็ได้ | R, I | รับบทถอดเสียงการโทร |
| `get_call_audio_url` | `call_id`, `download` ที่ระบุหรือไม่ระบุก็ได้ | R, I, O | ส่งคืน URL เสียงที่ลงนาม โดยจะไม่สตรีมเสียงผ่าน MCP |
| `get_call_grade` | `call_id` | R, I | รับคะแนนการโทรล่าสุด |
| `place_call` | `agent_id`, `from_number`, `to_number` | O | โทรออกหนึ่งสายที่ไม่สามารถทำซ้ำโดยให้ผลลัพธ์เดิมได้ |
| `export_calls` | ตัวกรองการโทร, `export_format` | R, I | ส่งออกได้สูงสุดตามขีดจำกัดของปลายทาง REST เป็น JSON หรือ CSV |

### การทดสอบและการตรวจสอบความถูกต้อง

| เครื่องมือ | อาร์กิวเมนต์หลัก | คำอธิบายประกอบ | การทำงาน |
| --- | --- | --- | --- |
| `list_test_scenarios` | `agent_id` | R, I | แสดงรายการสถานการณ์ทดสอบ |
| `create_test_scenario` | `agent_id`, `title`, `scenario_prompt`, เงื่อนไขที่ระบุหรือไม่ระบุก็ได้ | — | สร้างสถานการณ์ |
| `generate_test_scenarios` | `agent_id`, `count`, `include_edge_cases`, `locale` ที่ระบุหรือไม่ระบุก็ได้ | O | สร้างสถานการณ์จากพรอมป์ต์ของเอเจนต์ |
| `run_agent_tests` | `agent_id`, `channel`, `consent_to_charge`, การเลือก/เมทริกซ์ที่ระบุหรือไม่ระบุก็ได้ | O | ดำเนินการสถานการณ์ผ่านเว็บหรือโทรศัพท์ |
| `get_test_run` | `agent_id`, `batch_id` | R, I | รับสถานะแบทช์และผลลัพธ์ของแต่ละสถานการณ์ |
| `list_validation_runs` | `agent_id` | R, I | แสดงรายการการตรวจสอบความถูกต้องของฉบับร่างล่าสุด |
| `get_validation_status` | `agent_id` | R, I | รับสถานะการตรวจสอบความถูกต้องล่าสุดและการตรงกันของฉบับร่าง |

### ฐานความรู้

| เครื่องมือ | อาร์กิวเมนต์หลัก | คำอธิบายประกอบ | การทำงาน |
| --- | --- | --- | --- |
| `list_knowledge_bases` | — | R, I | แสดงรายการฐานความรู้ |
| `create_knowledge_base` | `name`, `description` ที่ระบุหรือไม่ระบุก็ได้ | — | สร้างฐานความรู้ |
| `add_knowledge_document` | `knowledge_base_id`, `name`, `content` | — | เพิ่มข้อความหรือ Markdown |
| `import_knowledge_url` | `url`, `name` ที่ระบุหรือไม่ระบุก็ได้ | O | เข้าคิวหน้าสาธารณะเพื่อการนำเข้าที่ปลอดภัย |
| `search_knowledge` | `knowledge_base_id`, `query` | R, I | ค้นหาผ่านการดึงข้อมูลจากระบบใช้งานจริง |

### การผสานรวม เว็บฮุก และเซิร์ฟเวอร์ MCP ระยะไกล

| เครื่องมือ | อาร์กิวเมนต์หลัก | คำอธิบายประกอบ | การทำงาน |
| --- | --- | --- | --- |
| `list_integrations` | — | R, I | แสดงรายการการผสานรวมฟังก์ชัน HTTP |
| `create_integration` | `display_name`, `spec` ของฟังก์ชัน, ฟิลด์ปลายทางที่ระบุหรือไม่ระบุก็ได้ | — | สร้างเครื่องมือ HTTP |
| `test_integration` | `url`, เมธอด/ส่วนหัว/เนื้อหา/ระยะหมดเวลาที่ระบุหรือไม่ระบุก็ได้ | O | ส่งคำขอทดสอบแบบจำกัดขอบเขตและป้องกัน SSRF |
| `list_webhook_endpoints` | — | R, I | แสดงรายการปลายทางเว็บฮุกที่ลงนาม |
| `create_webhook_endpoint` | `label`, `url`, เหตุการณ์/สถานะที่ระบุหรือไม่ระบุก็ได้ | O | สร้างปลายทางเว็บฮุกที่ลงนาม |
| `test_webhook_endpoint` | `endpoint_id` | O | ส่งเหตุการณ์สังเคราะห์ผ่านการส่งมอบตามปกติ |
| `list_mcp_servers` | — | R, I | แสดงรายการเซิร์ฟเวอร์ระยะไกลที่เอเจนต์เสียงเรียกใช้ได้ |
| `create_mcp_server` | `display_name`, `url`, ส่วนหัวที่ระบุหรือไม่ระบุก็ได้ | O | ลงทะเบียนและซิงค์เซิร์ฟเวอร์ระยะไกล |
| `sync_mcp_server_tools` | `server_id` | O | รีเฟรชแค็ตตาล็อกเครื่องมือของเซิร์ฟเวอร์ระยะไกล |

### แคมเปญ

| เครื่องมือ | อาร์กิวเมนต์หลัก | คำอธิบายประกอบ | การทำงาน |
| --- | --- | --- | --- |
| `list_campaigns` | — | R, I | แสดงรายการแคมเปญโทรออก |
| `create_campaign` | ฟิลด์แคมเปญ | — | สร้างแคมเปญฉบับร่าง |
| `add_campaign_contacts` | `campaign_id`, `contacts` | — | เพิ่มรายชื่อติดต่อ JSON ได้สูงสุด 5,000 รายการ |
| `campaign_action` | `campaign_id`, `action`, `consent_to_charge` ที่ระบุหรือไม่ระบุก็ได้, `confirmation_token` ในคำขอครั้งที่สอง | D, O | เรียกใช้ `start`, `pause`, `resume` หรือ `stop` โดย `start` และ `resume` เป็นการดำเนินการสองขั้นตอน ส่วน `pause` และ `stop` ทำงานทันที |
| `get_campaign_stats` | `campaign_id` | R, I | รับตัวนับและผลลัพธ์ล่าสุด |

### เสียง การเรียกเก็บเงิน การนำเข้า และเอกสาร

| เครื่องมือ | อาร์กิวเมนต์หลัก | คำอธิบายประกอบ | การทำงาน |
| --- | --- | --- | --- |
| `list_voices` | — | R, I | แสดงรายการเสียงและภาษาที่รองรับ |
| `preview_voice` | `voice`, `language`, `text` | O | สร้างตัวอย่างและส่งคืน URL ที่ลงนาม |
| `list_voice_clones` | — | R, I | แสดงรายการโคลนเสียงแบบกำหนดเอง |
| `get_billing_summary` | — | R, I | รับยอดคงเหลือและราคาตามระดับที่เป็นข้อมูลอ้างอิง โดยไม่มีการเปิดเผยการเปลี่ยนแปลงการชำระเงิน |
| `create_agent_import` | `vendor`, `vendor_key` | O | เริ่มการนำเข้า Vapi, Retell, ElevenLabs หรือ Bland แบบเข้ารหัส |
| `get_agent_import` | `public_id` | R, I | รับความแตกต่างของการนำเข้าที่เสนอ |
| `commit_agent_import` | `public_id` | — | ยืนยันเอเจนต์ที่เลือกจากแผนที่ตรวจทานแล้ว |
| `search_docs` | `query`, `limit` ที่ระบุหรือไม่ระบุก็ได้ | R, I, O | ค้นหาดัชนีเอกสารสาธารณะ |
| `get_doc_page` | `path` | R, I, O | ดึงหน้าเอกสาร Markdown สาธารณะหนึ่งหน้า |

เครื่องมือผลิตภัณฑ์ทั้งหมดใช้เส้นทางโค้ด REST เดียวกันกับ API สาธารณะ ดังนั้นการตรวจสอบ REST การกำหนดขอบเขตองค์กร บทบาท การอนุมัติการเรียกเก็บเงิน โควตา การยืนยัน TCPA ความปลอดภัยของผู้ให้บริการ และพฤติกรรมการตรวจสอบ จึงมีผลโดยไม่เปลี่ยนแปลง

## การยืนยันการดำเนินการที่ไม่สามารถย้อนกลับได้

เครื่องมือที่มีเครื่องหมาย D จะเปลี่ยนแปลงหรือลบบางสิ่งที่ไม่สามารถกู้คืนได้ หรือเริ่มโทรออกหาบุคคลจริง เครื่องมือเหล่านี้ต้องใช้คำขอสองครั้ง คำขอแรกจะไม่เปลี่ยนแปลงสิ่งใดและส่งกลับผลลัพธ์ดังนี้:

```json
{
  "status": "confirmation_required",
  "action": "Delete agent",
  "target": { "id": 195, "name": "Front Desk Receptionist" },
  "confirmation_token": "…",
  "expires_in_seconds": 600,
  "next_step": "…"
}
```

ผู้ช่วยจะแสดงให้ผู้ใช้เห็นว่าสิ่งใดได้รับผลกระทบและขอการยืนยัน จากนั้นจะส่งคำขอเดิมอีกครั้งพร้อมอาร์กิวเมนต์เดิมและเพิ่ม `confirmation_token` โทเค็นมีอายุ 10 นาทีและครอบคลุมหนึ่งองค์กร หนึ่งเครื่องมือ และชุดอาร์กิวเมนต์ที่ตรงกันเพียงชุดเดียว ดังนั้นการลบ AI เอเจนต์สามรายการจึงต้องยืนยันสามครั้ง `campaign_action` ที่มี `pause` หรือ `stop` จะข้ามขั้นตอนนี้ เพื่อให้สามารถหยุดแคมเปญที่กำลังทำงานได้ทันทีเสมอ

## พรอมต์เริ่มต้น

`prompts/list` แสดงเวิร์กโฟลว์ที่ใช้ซ้ำได้หกรายการ:

- `create_inbound_receptionist`
- `run_agent_tests`
- `import_vapi_assistants`
- `buy_and_attach_number`
- `review_low_grade_calls`
- `add_url_to_agent_knowledge`

ใช้ `prompts/get` พร้อมชื่อพรอมต์ที่ระบุและอาร์กิวเมนต์ที่ประกาศไว้ เพื่อรับข้อความผู้ใช้ที่พร้อมเรียกใช้

## ทรัพยากร

`resources/list` แสดงข้อมูลอ้างอิงสาธารณะที่แคชไว้:

| URI | เนื้อหา |
| --- | --- |
| `thunderphone://docs/llms.txt` | ดัชนีเอกสารสาธารณะ |
| `thunderphone://docs/quickstart` | Markdown สำหรับเริ่มต้นอย่างรวดเร็ว |
| `thunderphone://pricing` | Markdown ราคาสาธารณะปัจจุบัน |

อ่านรายการใดรายการหนึ่งด้วย `resources/read` การดึงข้อมูลสาธารณะใช้ระยะหมดเวลาสั้น ขีดจำกัด 2 MiB และแคชภายในโปรเซสเป็นเวลา 10 นาที

## โปรโตคอลและข้อผิดพลาด

เซิร์ฟเวอร์รองรับโปรโตคอลเวอร์ชัน `2025-06-18` และ `2025-03-26` โดยจะสะท้อนเวอร์ชันไคลเอนต์ที่รองรับ และในกรณีอื่นจะเลือก `2025-06-18` เซิร์ฟเวอร์รองรับ `initialize` `ping` เครื่องมือ พรอมต์ ทรัพยากร และการแจ้งเตือน การแจ้งเตือนจะส่งกลับ `202 Accepted` เซิร์ฟเวอร์แบบไม่มีสถานะนี้ไม่มีตัวรับฟัง SSE หรือการลบเซสชัน ดังนั้น `GET` และ `DELETE` จึงส่งกลับ `405 Method Not Allowed` พร้อม `Allow: POST`

ความล้มเหลวของเครื่องมือยังคงเป็นการตอบกลับ JSON-RPC ที่สำเร็จโดยมี `isError: true` ข้อความประกอบด้วยประโยคสั้นตามด้วยบล็อก JSON:

```json
{
  "code": "insufficient_balance",
  "detail": "There is not enough prepaid balance.",
  "next_step": "Call get_billing_summary, add funds in Organization > Billing, then retry."
}
```

คำนำหน้า `outbound_tcpa_confirmation_required:` ที่แตกต่างกันยังคงใช้สำหรับ `place_call` เมธอด JSON-RPC ที่ไม่รู้จักจะส่งกลับ `-32601` ในการตอบกลับ HTTP `200` MCP `2025-06-18` ไม่รองรับแบตช์ JSON-RPC และจะส่งกลับข้อผิดพลาดคำขอไม่ถูกต้อง `-32600` ที่ชัดเจน
