Open in
ThunderPhone-কে MCP সার্ভার হিসেবে ব্যবহার করুন
Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code বা অন্য কোনো Streamable HTTP MCP ক্লায়েন্ট থেকে ThunderPhone ভয়েস এজেন্ট তৈরি, পরীক্ষা, যাচাই এবং পরিচালনা করুন।
ThunderPhone এখানে একটি Streamable HTTP Model Context Protocol সার্ভার প্রদান করে:
https://api.thunderphone.com/v1/mcpএটি একটি রিমোট MCP সার্ভারকে ভয়েস এজেন্টের সঙ্গে সংযুক্ত করা-র বিপরীত দিক:
| দিক | ফলাফল |
|---|---|
| রিমোট MCP সার্ভার → ThunderPhone এজেন্ট | একটি ভয়েস এজেন্ট রিমোট সার্ভারের টুল কল করতে পারে। |
| ThunderPhone → আপনার MCP ক্লায়েন্ট | আপনার কোডিং এজেন্ট ThunderPhone তৈরি, পরীক্ষা ও পরিচালনা করতে পারে। |
প্রমাণীকরণ
ডিরেক্টরি ক্লায়েন্টের জন্য ডিফল্টভাবে OAuth ব্যবহার করুন: সাইন ইন করুন, একটি সংগঠন বেছে নিন এবং অনুরোধ করা অনুমতিগুলো অনুমোদন করুন। সংগঠন → API কী → অনুমোদিত অ্যাপ থেকে অ্যাক্সেস প্রত্যাহার করুন।
API কী দিয়ে কনফিগার করা ক্লায়েন্টের জন্য সংগঠন → কীসমূহ-এর অধীনে একটি sk_live_ কী তৈরি করুন এবং সেটিকে আপনার MCP ক্লায়েন্টে THUNDERPHONE_API_KEY হিসেবে প্রকাশ করুন। কীটি একটি সংগঠনের সঙ্গে আবদ্ধ; অন্য সংগঠনের মালিকানাধীন একটি id পাওয়া যায়নি হিসেবে আচরণ করে।
CLI এবং stdio বিকল্প
ThunderPhone CLI অসংশ্লিষ্ট সার্ভার সংরক্ষণ রেখে ক্লায়েন্ট কনফিগারেশন লিখতে পারে:
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-কী পাথের ক্ষেত্রে তা প্রয়োজন হয় না। সরাসরি HTTP কনফিগারেশন CLI
ক্রেডেনশিয়াল স্টোর পড়ে না; ডিভাইস লগইন পুনঃব্যবহার করতে stdio র্যাপার ব্যবহার করুন।
এগুলো নিচের ম্যানুয়াল ক্লায়েন্ট কনফিগারেশনের বিকল্প।
ক্লায়েন্ট কনফিগারেশন
Claude এবং ChatGPT OAuth দিয়ে সাইন ইন করে; এতে কোনো API কী ব্যবহৃত হয় না। আপনার এখনও ThunderPhone অ্যাকাউন্ট না থাকলে, সাইন-ইন পৃষ্ঠায় অ্যাকাউন্ট তৈরি করুন বেছে নিন এবং ইমেল যাচাই করার পর আপনি অনুমোদন স্ক্রিনে ফিরে আসবেন।
Claude (ওয়েব, ডেস্কটপ এবং মোবাইল)
- সেটিংস → কানেক্টর খুলুন। কানেক্টর ডিরেক্টরিতে ThunderPhone দেখা গেলে সেটি নির্বাচন করুন। অন্যথায় কাস্টম কানেক্টর যোগ করুন বেছে নিন, এর নাম দিন
ThunderPhone, এবংhttps://api.thunderphone.com/v1/mcpলিখুন। - সংযুক্ত করুন নির্বাচন করুন, ThunderPhone-এ সাইন ইন করুন, সংস্থাটি বেছে নিন এবং অনুমতিগুলো অনুমোদন করুন।
- একটি চ্যাটে টুলস মেনু থেকে ThunderPhone সক্রিয় করুন এবং আপনার প্রয়োজনীয় বিষয়ের জন্য জিজ্ঞাসা করুন, যেমন "আমার এজেন্টগুলোর তালিকা দেখান"।
কাস্টম কানেক্টরের জন্য পেইড Claude প্ল্যান প্রয়োজন। Team এবং Enterprise প্ল্যানে, একজন মালিক প্রথমে সংস্থার কানেক্টর সেটিংসে কানেক্টর যোগ করেন, তারপর প্রতিটি সদস্য নিজের ThunderPhone অ্যাকাউন্ট সংযুক্ত করেন।
ChatGPT
- ChatGPT অ্যাপ ডিরেক্টরিতে ThunderPhone দেখা গেলে সেটি নির্বাচন করুন এবং সংযুক্ত করুন।
- অন্যথায় সেটিংস → অ্যাপস ও কানেক্টর → উন্নত সেটিংস খুলুন, ডেভেলপার মোড চালু করুন এবং
https://api.thunderphone.com/v1/mcpURL ও OAuth প্রমাণীকরণ দিয়ে একটি কানেক্টর তৈরি করুন। - ThunderPhone-এ সাইন ইন করুন, সংস্থাটি বেছে নিন এবং অনুমতিগুলো অনুমোদন করুন। টুলস মেনু থেকে একটি চ্যাটে ThunderPhone যোগ করুন।
এজেন্ট বা ফোন নম্বর মুছে ফেলা, একটি খসড়া বাতিল করা এবং ক্যাম্পেইন চালু করার ক্ষেত্রে উভয় অ্যাপেই দ্বিতীয়বার নিশ্চিতকরণ চাওয়া হয়; দেখুন ধ্বংসাত্মক কাজ নিশ্চিত করা।
Claude Code
claude mcp add --transport http thunderphone https://api.thunderphone.com/v1/mcp \
--header "Authorization: Bearer $THUNDERPHONE_API_KEY"Codex
এটি ~/.codex/config.toml-এ যোগ করুন:
[mcp_servers.thunderphone]
url = "https://api.thunderphone.com/v1/mcp"
bearer_token_env_var = "THUNDERPHONE_API_KEY"Cursor
.cursor/mcp.json তৈরি করুন:
{
"mcpServers": {
"thunderphone": {
"url": "https://api.thunderphone.com/v1/mcp",
"headers": {
"Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
}
}
}
}Claude Desktop
Claude Desktop কনফিগারেশনে একটি mcp-remote ব্রিজ যোগ করুন:
{
"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-এর ইনপুট prompt-এর মাধ্যমে কী লিখুন:
{
"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 | স্টেজ করা পরিবর্তন বাতিল করে। দুই ধাপের, ধ্বংসাত্মক অ্যাকশন নিশ্চিত করা দেখুন। |
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, রাউটিং/লেবেল/webhook ফিল্ড | — | এজেন্ট অ্যাসাইনমেন্টসহ নম্বর রাউটিং আপডেট করে। |
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 | এজেন্ট prompt থেকে সিনারিও তৈরি করে। |
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 | প্রোডাকশন রিট্রিভালের মাধ্যমে অনুসন্ধান করে। |
ইন্টিগ্রেশন, webhook এবং রিমোট MCP সার্ভার
| টুল | প্রধান আর্গুমেন্ট | অ্যানোটেশন | এটি কী করে |
|---|---|---|---|
list_integrations | — | R, I | HTTP ফাংশন ইন্টিগ্রেশনের তালিকা দেয়। |
create_integration | display_name, ফাংশন spec, ঐচ্ছিক এন্ডপয়েন্ট ফিল্ড | — | একটি HTTP টুল তৈরি করে। |
test_integration | url, ঐচ্ছিক মেথড/হেডার/body/timeout | O | সীমাবদ্ধ, SSRF-সুরক্ষিত পরীক্ষা অনুরোধ পাঠায়। |
list_webhook_endpoints | — | R, I | স্বাক্ষরিত webhook এন্ডপয়েন্টের তালিকা দেয়। |
create_webhook_endpoint | label, url, ঐচ্ছিক ইভেন্ট/স্ট্যাটাস | O | একটি স্বাক্ষরিত webhook এন্ডপয়েন্ট তৈরি করে। |
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 | — | সর্বোচ্চ 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 | ব্যালেন্স এবং প্রামাণিক টিয়ার মূল্য পায়; কোনো পেমেন্ট পরিবর্তন উন্মুক্ত করা হয় না। |
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 ডকস পেজ ফেচ করে। |
সব পণ্য টুল পাবলিক API-এর মতো একই REST কোড পাথ ব্যবহার করে। তাই REST ভ্যালিডেশন, সংস্থা স্কোপিং, ভূমিকা, বিলিং অনুমোদন, কোটা, TCPA নিশ্চিতকরণ, প্রোভাইডার নিরাপত্তা এবং অডিট আচরণ অপরিবর্তিতভাবে প্রযোজ্য।
ধ্বংসাত্মক কাজ নিশ্চিত করা
D চিহ্নিত টুল এমন কিছু পরিবর্তন বা মুছে দেয় যা পুনরুদ্ধার করা যায় না, অথবা প্রকৃত মানুষকে ডায়াল করা শুরু করে। এগুলোর জন্য দুটি অনুরোধ লাগে। প্রথম অনুরোধে কিছুই পরিবর্তিত হয় না এবং এটি ফেরত দেয়:
{
"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 এই ধাপটি এড়িয়ে যায়, যাতে চলমান ক্যাম্পেইন সবসময় সঙ্গে সঙ্গে থামানো যায়।
প্রারম্ভিক prompt
prompts/list ছয়টি পুনঃব্যবহারযোগ্য ওয়ার্কফ্লো প্রকাশ করে:
create_inbound_receptionistrun_agent_testsimport_vapi_assistantsbuy_and_attach_numberreview_low_grade_callsadd_url_to_agent_knowledge
চালানোর জন্য প্রস্তুত একটি ব্যবহারকারী বার্তা পেতে তালিকাভুক্ত prompt নাম ও তার ঘোষিত আর্গুমেন্টসহ 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, টুল, prompt, রিসোর্স এবং নোটিফিকেশন বাস্তবায়ন করে। নোটিফিকেশন 202 Accepted ফেরত দেয়। এই স্টেটলেস সার্ভার SSE লিসেনার বা সেশন মুছে ফেলার সুবিধা প্রকাশ করে না, তাই GET এবং DELETE, Allow: POST সহ 405 Method Not Allowed ফেরত দেয়।
টুল ব্যর্থতা isError: true সহ সফল JSON-RPC প্রতিক্রিয়া হিসেবেই থাকে। তাদের লেখায় একটি সংক্ষিপ্ত বাক্যের পর একটি 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 মেথড HTTP 200 প্রতিক্রিয়ায় -32601 ফেরত দেয়। JSON-RPC ব্যাচ MCP 2025-06-18 দ্বারা সমর্থিত নয় এবং একটি পরিষ্কার -32600 অবৈধ-অনুরোধ ত্রুটি ফেরত দেয়।