---
title: "ThunderPhone को MCP सर्वर के रूप में उपयोग करें"
description: "Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code या किसी अन्य Streamable HTTP MCP क्लाइंट से ThunderPhone वॉइस एजेंट बनाएं, टेस्ट करें, वैलिडेट करें और संचालित करें।"
---

ThunderPhone यहां एक स्ट्रीमेबल HTTP मॉडल कॉन्टेक्स्ट प्रोटोकॉल सर्वर उपलब्ध कराता है:

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

यह [किसी रिमोट MCP सर्वर को वॉइस एजेंट से कनेक्ट करने](/hi/guides/mcp-servers) की विपरीत दिशा है:

| दिशा | परिणाम |
| --- | --- |
| रिमोट MCP सर्वर → ThunderPhone एजेंट | एक वॉइस एजेंट रिमोट सर्वर के टूल्स को कॉल कर सकता है। |
| ThunderPhone → आपका MCP क्लाइंट | आपका कोडिंग एजेंट ThunderPhone को बिल्ड, टेस्ट और ऑपरेट कर सकता है। |

## प्रमाणित करें

डायरेक्टरी क्लाइंट्स के लिए डिफ़ॉल्ट रूप से [OAuth](/hi/guides/oauth) का उपयोग करें: साइन इन करें, एक संगठन चुनें, और मांगी गई अनुमतियों को अनुमोदित करें। **संगठन → API कीज़ → अधिकृत ऐप्स** में जाकर एक्सेस रद्द करें।

API key के साथ कॉन्फ़िगर किए गए क्लाइंट्स के लिए, **संगठन → कीज़** में `sk_live_` key बनाएं और इसे अपने MCP क्लाइंट में `THUNDERPHONE_API_KEY` के रूप में उपलब्ध कराएं। key एक संगठन से बंधी होती है; किसी दूसरे संगठन के स्वामित्व वाली id न मिलने जैसा व्यवहार करती है।

<Warning>
  एक `sk_live_` key संगठन का डेटा पढ़ सकती है और एजेंट डिप्लॉय करने, कॉल करने, नंबर खरीदने, कैंपेन शुरू करने और रिसोर्स हटाने जैसी प्रोडक्शन कार्रवाइयां कर सकती है। इसे ब्राउज़र कोड, रिपॉजिटरी, स्क्रीनशॉट और चैट लॉग्स से दूर रखें। अपने क्लाइंट के सीक्रेट स्टोर या एनवायरनमेंट सपोर्ट का उपयोग करें और उजागर हुई key को तुरंत रद्द करें।
</Warning>

## CLI और stdio विकल्प

[ThunderPhone CLI](/hi/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` के क्रेडेंशियल्स का, एक्सपायर हुए टोकन्स को रीफ्रेश करता है, और उसके बाद
`mcp-remote` के माध्यम से OAuth का उपयोग करता है। डिवाइस लॉगिन और OAuth के लिए संबंधित API
OAuth रोलआउट आवश्यक है। API key पाथ के लिए नहीं। सीधे HTTP कॉन्फ़िगरेशन CLI क्रेडेंशियल स्टोर को नहीं पढ़ते;
डिवाइस लॉगिन को दोबारा उपयोग करने के लिए stdio रैपर का उपयोग करें।

ये नीचे दिए गए मैन्युअल क्लाइंट कॉन्फ़िगरेशन के विकल्प हैं।

## क्लाइंट कॉन्फ़िगरेशन

Claude और ChatGPT [OAuth](/hi/guides/oauth) के साथ साइन इन करते हैं; इसमें कोई API key शामिल नहीं होती। अगर आपका अभी तक ThunderPhone अकाउंट नहीं है, तो साइन-इन पेज पर **अकाउंट बनाएं** चुनें और अपना ईमेल सत्यापित करने के बाद आप अप्रूवल स्क्रीन पर वापस आ जाएंगे।

### Claude (वेब, डेस्कटॉप और मोबाइल)

1. **कस्टमाइज़ → कनेक्टर्स** खोलें (पुराने वर्ज़न में **सेटिंग्स → कनेक्टर्स**)। अगर ThunderPhone कनेक्टर डायरेक्टरी में दिखता है, तो उसे चुनें। अन्यथा **कस्टम कनेक्टर जोड़ें** चुनें, उसका नाम `ThunderPhone` रखें और `https://api.thunderphone.com/v1/mcp` दर्ज करें।
2. **कनेक्ट** चुनें, ThunderPhone में साइन इन करें, संगठन चुनें और परमिशन अप्रूव करें।
3. किसी चैट में, टूल्स मेनू से ThunderPhone सक्षम करें और अपनी ज़रूरत के लिए पूछें, उदाहरण के लिए "मेरे एजेंट्स की सूची दिखाएं"।

Claude हर टूल का पहली बार उपयोग करने से पहले पूछता है। इनमें से ज़्यादातर प्रॉम्प्ट छोड़ने के लिए, **कस्टमाइज़ → कनेक्टर्स → 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

Claude Desktop कॉन्फ़िगरेशन में एक `mcp-remote` ब्रिज जोड़ें:

```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 के इनपुट प्रॉम्प्ट के माध्यम से key दर्ज करें:

```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** का अर्थ ओपन-वर्ल्ड/नेटवर्क इंटरैक्शन है। डैश का अर्थ है कि कोई संकेत सेट नहीं है।

### कनेक्शन

| टूल | मुख्य आर्ग्युमेंट | एनोटेशन | यह क्या करता है |
| --- | --- | --- | --- |
| `get_connection_identity` | — | R, I | क्रेडेंशियल को वैलिडेट करता है और उसका संगठन तथा सुरक्षित क्रेडेंशियल मेटाडेटा लौटाता है। |

### एजेंट्स

| टूल | मुख्य आर्ग्युमेंट | एनोटेशन | यह क्या करता है |
| --- | --- | --- | --- |
| `list_agents` | — | R, I | एजेंट की सूची देता है। |
| `get_agent` | `agent_id` | R, I | एक एजेंट प्राप्त करता है। |
| `create_agent` | एजेंट कॉन्फ़िगरेशन | — | एक एजेंट बनाता है। |
| `update_agent` | `agent_id`, बदले गए फ़ील्ड | D | एजेंट ड्राफ़्ट में फ़ील्ड स्टेज करता है और ड्राफ़्ट में मौजूद फ़ील्ड को बदल देता है। यह कन्फ़र्मेशन चरण के बिना चलता है: `deploy_agent` तक डिप्लॉय किया गया एजेंट अपरिवर्तित रहता है और `discard_agent_draft` ड्राफ़्ट को वापस कर देता है। |
| `deploy_agent` | `agent_id`, वैकल्पिक `if_updated_at` | D, 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` | D, 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` | D, O | कैरियर पर पहले से स्वामित्व वाले नंबर इंपोर्ट करता है। |
| `update_phone_number` | `phone_number_id`, रूटिंग/लेबल/webhook फ़ील्ड | D | एजेंट असाइनमेंट सहित नंबर रूटिंग अपडेट करता है। |
| `delete_phone_number` | `phone_number_id`, `confirm`, वैकल्पिक `release_at_provider`, दूसरे अनुरोध पर `confirmation_token` | D, I, O | एक नंबर रिलीज़ करता है। दो चरण। |

### SMS

| टूल | मुख्य आर्ग्युमेंट | एनोटेशन | यह क्या करता है |
| --- | --- | --- | --- |
| `send_sms` | `from_number`, `to`, `body`, `idempotency_key` | D, I, O | कनेक्ट किए गए Twilio या Telnyx नंबर के माध्यम से एक सादा-टेक्स्ट SMS भेजता है। |

### कॉल्स

| टूल | मुख्य आर्ग्युमेंट | एनोटेशन | यह क्या करता है |
| --- | --- | --- | --- |
| `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` | D, 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`, वैकल्पिक चयन/मैट्रिक्स | D, 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`, वैकल्पिक मेथड/बॉडी/टाइमआउट, `header_names` के साथ `integration_id`, दूसरे रिक्वेस्ट पर `confirmation_token` | D, O | एक सीमित, SSRF-सुरक्षित टेस्ट रिक्वेस्ट भेजता है। सेव किए गए हेडर वैल्यू इंटीग्रेशन से भरे जाते हैं और केवल उसके अपने होस्ट को भेजे जाते हैं। `POST` (डिफ़ॉल्ट), `PUT`, `PATCH` और `DELETE` दो-स्टेप वाले हैं; `GET` तुरंत चलता है। |
| `list_webhook_endpoints` | — | R, I | साइन किए गए वेबहुक एंडपॉइंट की सूची देता है। |
| `list_webhook_deliveries` | वैकल्पिक `agent_id`, वैकल्पिक `endpoint_id` | 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` | D, O | रिमोट सर्वर के टूल कैटलॉग को रिफ्रेश करता है। |

### कैंपेन्स

| टूल | मुख्य आर्ग्युमेंट | एनोटेशन | यह क्या करता है |
| --- | --- | --- | --- |
| `list_campaigns` | — | R, I | आउटबाउंड कैंपेन्स की सूची देता है। |
| `create_campaign` | कैंपेन फ़ील्ड्स | — | एक ड्राफ़्ट कैंपेन बनाता है। |
| `add_campaign_contacts` | `campaign_id`, `contacts` | — | अधिकतम 5,000 JSON कॉन्टैक्ट्स जोड़ता है। |
| `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 | बैलेंस और आधिकारिक टियर मूल्य प्राप्त करता है; कोई पेमेंट परिवर्तन एक्सपोज़ नहीं किए जाते। |
| `search_docs` | `query`, वैकल्पिक `limit` | R, I, O | सार्वजनिक दस्तावेज़ इंडेक्स में खोजता है। |
| `get_doc_page` | `path` | R, I, O | एक सार्वजनिक Markdown दस्तावेज़ पेज प्राप्त करता है। |

सभी प्रोडक्ट टूल्स सार्वजनिक API के समान REST कोड पाथ्स का उपयोग करते हैं। इसलिए 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 मिनट के लिए वैध होता है और एक संगठन, एक टूल और आर्ग्युमेंट्स के एक सटीक सेट को कवर करता है, इसलिए तीन एजेंट हटाने के लिए तीन पुष्टियों की आवश्यकता होती है। `pause` या `stop` के साथ `campaign_action` इस चरण को छोड़ देता है, ताकि चल रहे कैंपेन को हमेशा तुरंत रोका जा सके; `GET` के साथ `test_integration` भी ऐसा ही करता है। कुछ D टूल एक ही अनुरोध में चलते हैं, क्योंकि D उनके प्रभाव को चिह्नित करता है, सर्वर-साइड पुष्टि को नहीं: `update_agent` ड्राफ्ट में मौजूद कॉन्फ़िगरेशन को बदल देता है (`discard_agent_draft` इसे वापस करता है), `deploy_agent` लाइव कॉन्फ़िगरेशन को बदल देता है, `update_phone_number` लाइव कॉल को दोबारा रूट करता है, `sync_mcp_server_tools` रिमोट सर्वर के टूल कैटलॉग को बदल देता है, `import_voip_numbers` नंबरों को आपके कैरियर पर दोबारा पॉइंट करता है, `run_agent_tests` क्रेडिट खर्च कर सकता है, `send_sms` और `place_call` किसी वास्तविक व्यक्ति तक पहुंचते हैं (`place_call` अपनी अलग सहमति पुष्टि रखता है), और `provision_phone_number` एक नंबर खरीदता है। आपका MCP क्लाइंट फिर भी आपसे इन्हें मंज़ूरी देने के लिए कह सकता है।

## स्टार्टर प्रॉम्प्ट

`prompts/list` पाँच दोबारा इस्तेमाल किए जा सकने वाले वर्कफ़्लो उपलब्ध कराता है:

- `create_inbound_receptionist`
- `run_agent_tests`
- `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 सीमा और दस मिनट के इन-प्रोसेस कैश का उपयोग करते हैं।

## प्रोटोकॉल और त्रुटियां

सर्वर `2025-06-18` और `2025-03-26` प्रोटोकॉल वर्जन सपोर्ट करता है; यह सपोर्ट किए गए क्लाइंट वर्जन को इको करता है और अन्यथा `2025-06-18` चुनता है। यह `initialize`, `ping`, टूल, प्रॉम्प्ट, रिसोर्स और नोटिफ़िकेशन इम्प्लीमेंट करता है। नोटिफ़िकेशन `202 Accepted` लौटाते हैं। यह स्टेटलेस सर्वर SSE लिस्नर या सेशन हटाने की सुविधा एक्सपोज़ नहीं करता, इसलिए `GET` और `DELETE`, `Allow: POST` के साथ `405 Method Not Allowed` लौटाते हैं।

टूल विफलताएं `isError: true` के साथ सफल JSON-RPC रिस्पॉन्स ही रहती हैं। इनके टेक्स्ट में एक छोटे वाक्य के बाद 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."
}
```

`place_call` के लिए अलग `outbound_tcpa_confirmation_required:` प्रीफ़िक्स बनाए रखा गया है। अज्ञात JSON-RPC मेथड HTTP `200` रिस्पॉन्स में `-32601` लौटाते हैं। MCP `2025-06-18` JSON-RPC बैच को सपोर्ट नहीं करता और एक साफ़ `-32600` अमान्य-अनुरोध त्रुटि लौटाता है।
