elevenlabs-voice-agent-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +533 -0
  3. package/dist/constants.d.ts +25 -0
  4. package/dist/constants.d.ts.map +1 -0
  5. package/dist/constants.js +51 -0
  6. package/dist/constants.js.map +1 -0
  7. package/dist/index.d.ts +8 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +93 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/schemas/agent-schemas.d.ts +147 -0
  12. package/dist/schemas/agent-schemas.d.ts.map +1 -0
  13. package/dist/schemas/agent-schemas.js +145 -0
  14. package/dist/schemas/agent-schemas.js.map +1 -0
  15. package/dist/schemas/batch-calling-schemas.d.ts +170 -0
  16. package/dist/schemas/batch-calling-schemas.d.ts.map +1 -0
  17. package/dist/schemas/batch-calling-schemas.js +77 -0
  18. package/dist/schemas/batch-calling-schemas.js.map +1 -0
  19. package/dist/schemas/common-schemas.d.ts +54 -0
  20. package/dist/schemas/common-schemas.d.ts.map +1 -0
  21. package/dist/schemas/common-schemas.js +72 -0
  22. package/dist/schemas/common-schemas.js.map +1 -0
  23. package/dist/schemas/conversation-schemas.d.ts +72 -0
  24. package/dist/schemas/conversation-schemas.d.ts.map +1 -0
  25. package/dist/schemas/conversation-schemas.js +30 -0
  26. package/dist/schemas/conversation-schemas.js.map +1 -0
  27. package/dist/schemas/outbound-schemas.d.ts +115 -0
  28. package/dist/schemas/outbound-schemas.d.ts.map +1 -0
  29. package/dist/schemas/outbound-schemas.js +61 -0
  30. package/dist/schemas/outbound-schemas.js.map +1 -0
  31. package/dist/schemas/phone-number-schemas.d.ts +168 -0
  32. package/dist/schemas/phone-number-schemas.d.ts.map +1 -0
  33. package/dist/schemas/phone-number-schemas.js +116 -0
  34. package/dist/schemas/phone-number-schemas.js.map +1 -0
  35. package/dist/schemas/tool-schemas.d.ts +208 -0
  36. package/dist/schemas/tool-schemas.d.ts.map +1 -0
  37. package/dist/schemas/tool-schemas.js +131 -0
  38. package/dist/schemas/tool-schemas.js.map +1 -0
  39. package/dist/services/elevenlabs-api.d.ts +37 -0
  40. package/dist/services/elevenlabs-api.d.ts.map +1 -0
  41. package/dist/services/elevenlabs-api.js +78 -0
  42. package/dist/services/elevenlabs-api.js.map +1 -0
  43. package/dist/services/formatters.d.ts +76 -0
  44. package/dist/services/formatters.d.ts.map +1 -0
  45. package/dist/services/formatters.js +475 -0
  46. package/dist/services/formatters.js.map +1 -0
  47. package/dist/tools/agent-tools.d.ts +228 -0
  48. package/dist/tools/agent-tools.d.ts.map +1 -0
  49. package/dist/tools/agent-tools.js +369 -0
  50. package/dist/tools/agent-tools.js.map +1 -0
  51. package/dist/tools/batch-calling-tools.d.ts +183 -0
  52. package/dist/tools/batch-calling-tools.d.ts.map +1 -0
  53. package/dist/tools/batch-calling-tools.js +203 -0
  54. package/dist/tools/batch-calling-tools.js.map +1 -0
  55. package/dist/tools/conversation-tools.d.ts +103 -0
  56. package/dist/tools/conversation-tools.d.ts.map +1 -0
  57. package/dist/tools/conversation-tools.js +140 -0
  58. package/dist/tools/conversation-tools.js.map +1 -0
  59. package/dist/tools/knowledge-tools.d.ts +75 -0
  60. package/dist/tools/knowledge-tools.d.ts.map +1 -0
  61. package/dist/tools/knowledge-tools.js +63 -0
  62. package/dist/tools/knowledge-tools.js.map +1 -0
  63. package/dist/tools/outbound-tools.d.ts +44 -0
  64. package/dist/tools/outbound-tools.d.ts.map +1 -0
  65. package/dist/tools/outbound-tools.js +84 -0
  66. package/dist/tools/outbound-tools.js.map +1 -0
  67. package/dist/tools/phone-number-tools.d.ts +215 -0
  68. package/dist/tools/phone-number-tools.d.ts.map +1 -0
  69. package/dist/tools/phone-number-tools.js +295 -0
  70. package/dist/tools/phone-number-tools.js.map +1 -0
  71. package/dist/tools/tool-tools.d.ts +165 -0
  72. package/dist/tools/tool-tools.d.ts.map +1 -0
  73. package/dist/tools/tool-tools.js +166 -0
  74. package/dist/tools/tool-tools.js.map +1 -0
  75. package/dist/tools/utility-tools.d.ts +76 -0
  76. package/dist/tools/utility-tools.d.ts.map +1 -0
  77. package/dist/tools/utility-tools.js +121 -0
  78. package/dist/tools/utility-tools.js.map +1 -0
  79. package/dist/types.d.ts +282 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +12 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/utils/error-handlers.d.ts +29 -0
  84. package/dist/utils/error-handlers.d.ts.map +1 -0
  85. package/dist/utils/error-handlers.js +90 -0
  86. package/dist/utils/error-handlers.js.map +1 -0
  87. package/dist/utils/truncation.d.ts +41 -0
  88. package/dist/utils/truncation.d.ts.map +1 -0
  89. package/dist/utils/truncation.js +78 -0
  90. package/dist/utils/truncation.js.map +1 -0
  91. package/package.json +61 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Griffin Long
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,533 @@
1
+ # ElevenLabs Voice Agent MCP Server
2
+
3
+ A Model Context Protocol (MCP) server for developing and managing ElevenLabs Voice Agents. This server provides 23 specialized tools for creating, configuring, testing, monitoring, and deploying voice agents through Claude and other MCP clients.
4
+
5
+ ## Features
6
+
7
+ ### Core Agent Management (Tier 1)
8
+ - **elevenlabs_create_agent** - Create new voice agents with full configuration
9
+ - **elevenlabs_get_agent** - Retrieve agent details and configuration
10
+ - **elevenlabs_update_agent** - Modify existing agent settings
11
+ - **elevenlabs_delete_agent** - Permanently remove agents
12
+ - **elevenlabs_list_agents** - Browse all agents with pagination
13
+
14
+ ### Knowledge Base & Tools (Tier 2)
15
+ - **elevenlabs_add_knowledge_base** - Add documents or URLs to agent knowledge
16
+ - **elevenlabs_create_webhook_tool** - Create webhook integrations for agents
17
+ - **elevenlabs_list_tools** - View all tools configured for an agent
18
+ - **elevenlabs_delete_tool** - Remove tools from agents
19
+
20
+ ### Testing & Monitoring (Tier 3)
21
+ - **elevenlabs_get_conversation** - Retrieve conversation transcripts and analysis
22
+ - **elevenlabs_list_conversations** - Browse conversations with filtering
23
+ - **elevenlabs_generate_widget_code** - Generate HTML embed code for testing
24
+
25
+ ### Utilities (Tier 4)
26
+ - **elevenlabs_list_voices** - Browse available voices with filtering
27
+
28
+ ### Outbound Calling & Phone Management (Tier 5)
29
+ - **elevenlabs_start_outbound_call** - Initiate single outbound calls via Twilio
30
+ - **elevenlabs_submit_batch_call** - Submit batch calling jobs for multiple recipients
31
+ - **elevenlabs_list_batch_calls** - Browse all batch calling jobs
32
+ - **elevenlabs_get_batch_call** - Get detailed batch call status with recipient info
33
+ - **elevenlabs_list_phone_numbers** - List all connected phone numbers
34
+ - **elevenlabs_get_phone_number** - Get phone number details and configuration
35
+ - **elevenlabs_import_phone_number** - Import Twilio phone numbers
36
+ - **elevenlabs_update_phone_number** - Update phone number settings (assign agents)
37
+ - **elevenlabs_delete_phone_number** - Remove phone numbers from workspace
38
+
39
+ ## Installation
40
+
41
+ ### Prerequisites
42
+ - Node.js 18 or higher
43
+ - ElevenLabs API key ([Get one here](https://elevenlabs.io))
44
+
45
+ ### Option 1: Install from npm (Recommended)
46
+
47
+ ```bash
48
+ npm install -g elevenlabs-voice-agent-mcp
49
+ ```
50
+
51
+ ### Option 2: Install from source
52
+
53
+ 1. **Clone the repository:**
54
+ ```bash
55
+ git clone https://github.com/griffinwork40/elevenlabs-voice-agent-mcp.git
56
+ cd elevenlabs-voice-agent-mcp
57
+ ```
58
+
59
+ 2. **Install dependencies:**
60
+ ```bash
61
+ npm install
62
+ ```
63
+
64
+ 3. **Build the project:**
65
+ ```bash
66
+ npm run build
67
+ ```
68
+
69
+ ## Configuration
70
+
71
+ ### Environment Variables
72
+
73
+ Create a `.env` file in the project root:
74
+
75
+ ```bash
76
+ ELEVENLABS_API_KEY=your_elevenlabs_api_key_here
77
+ ```
78
+
79
+ Get your API key from [ElevenLabs Settings](https://elevenlabs.io/app/settings/api-keys).
80
+
81
+ ### Claude Desktop Configuration
82
+
83
+ Add this to your Claude Desktop configuration file:
84
+
85
+ **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
86
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
87
+
88
+ #### If installed via npm:
89
+
90
+ ```json
91
+ {
92
+ "mcpServers": {
93
+ "elevenlabs-voice-agents": {
94
+ "command": "npx",
95
+ "args": [
96
+ "elevenlabs-voice-agent-mcp"
97
+ ],
98
+ "env": {
99
+ "ELEVENLABS_API_KEY": "your_elevenlabs_api_key_here"
100
+ }
101
+ }
102
+ }
103
+ }
104
+ ```
105
+
106
+ #### If installed from source:
107
+
108
+ ```json
109
+ {
110
+ "mcpServers": {
111
+ "elevenlabs-voice-agents": {
112
+ "command": "node",
113
+ "args": [
114
+ "/absolute/path/to/elevenlabs-voice-agent-mcp/dist/index.js"
115
+ ],
116
+ "env": {
117
+ "ELEVENLABS_API_KEY": "your_elevenlabs_api_key_here"
118
+ }
119
+ }
120
+ }
121
+ }
122
+ ```
123
+
124
+ After adding the configuration:
125
+ 1. Save the file
126
+ 2. Restart Claude Desktop
127
+ 3. Look for the 🔌 icon to verify the server is connected
128
+
129
+ ## Quick Start: Outbound Calling
130
+
131
+ ### 1. Import a Twilio Phone Number
132
+
133
+ ```typescript
134
+ elevenlabs_import_phone_number({
135
+ phone_number: "+14155551234",
136
+ label: "Sales Line",
137
+ sid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // Your Twilio Account SID
138
+ token: "your_twilio_auth_token",
139
+ provider: "twilio",
140
+ supports_inbound: true,
141
+ supports_outbound: true
142
+ })
143
+ // Returns: { phone_number_id: "pn_abc123" }
144
+ ```
145
+
146
+ ### 2. Assign Phone Number to Agent
147
+
148
+ ```typescript
149
+ elevenlabs_update_phone_number({
150
+ phone_number_id: "pn_abc123",
151
+ agent_id: "ag_xyz789"
152
+ })
153
+ ```
154
+
155
+ ### 3. Make a Single Outbound Call
156
+
157
+ ```typescript
158
+ elevenlabs_start_outbound_call({
159
+ agent_id: "ag_xyz789",
160
+ agent_phone_number_id: "pn_abc123",
161
+ to_number: "+19175551234",
162
+ conversation_initiation_client_data: {
163
+ dynamic_variables: {
164
+ customer_name: "John Smith",
165
+ account_balance: 1500
166
+ }
167
+ }
168
+ })
169
+ ```
170
+
171
+ ### 4. Submit a Batch Calling Job
172
+
173
+ ```typescript
174
+ elevenlabs_submit_batch_call({
175
+ call_name: "Q4 Customer Survey",
176
+ agent_id: "ag_xyz789",
177
+ agent_phone_number_id: "pn_abc123",
178
+ recipients: [
179
+ {
180
+ phone_number: "+14155551234",
181
+ conversation_initiation_client_data: {
182
+ dynamic_variables: {
183
+ name: "Alice Johnson",
184
+ account_id: "A123"
185
+ }
186
+ }
187
+ },
188
+ {
189
+ phone_number: "+19175555678",
190
+ conversation_initiation_client_data: {
191
+ dynamic_variables: {
192
+ name: "Bob Williams",
193
+ account_id: "B456"
194
+ }
195
+ }
196
+ }
197
+ ]
198
+ })
199
+ ```
200
+
201
+ ### 5. Monitor Batch Progress
202
+
203
+ ```typescript
204
+ elevenlabs_get_batch_call({
205
+ batch_id: "batch_abc123"
206
+ })
207
+ // Shows status for each recipient: completed, in_progress, failed, voicemail, etc.
208
+ ```
209
+
210
+ ## Usage
211
+
212
+ ### Creating a Voice Agent
213
+
214
+ ```typescript
215
+ // Create a basic customer service agent
216
+ elevenlabs_create_agent({
217
+ name: "Customer Support Bot",
218
+ prompt: "You are a helpful customer service agent for TechCorp. Be friendly, professional, and solve customer issues efficiently.",
219
+ llm: "gpt-4o-mini",
220
+ voice_id: "21m00Tcm4TlvDq8ikWAM",
221
+ first_message: "Hi! How can I help you today?",
222
+ language: "en"
223
+ })
224
+ ```
225
+
226
+ ### Adding Knowledge Base
227
+
228
+ ```typescript
229
+ // Add company documentation
230
+ elevenlabs_add_knowledge_base({
231
+ agent_id: "ag_abc123",
232
+ documents: [
233
+ {
234
+ type: "url",
235
+ content: "https://example.com/company-policies"
236
+ },
237
+ {
238
+ type: "text",
239
+ content: "Our support hours are Monday-Friday, 9 AM to 6 PM EST."
240
+ }
241
+ ]
242
+ })
243
+ ```
244
+
245
+ ### Creating Webhook Tools
246
+
247
+ ```typescript
248
+ // Add order status checking capability
249
+ elevenlabs_create_webhook_tool({
250
+ agent_id: "ag_abc123",
251
+ name: "check_order_status",
252
+ description: "Check the status of a customer order by order ID",
253
+ url: "https://api.example.com/orders/status",
254
+ method: "POST",
255
+ parameters: [
256
+ {
257
+ name: "order_id",
258
+ type: "string",
259
+ description: "The unique order identifier",
260
+ required: true
261
+ }
262
+ ]
263
+ })
264
+ ```
265
+
266
+ ### Testing Your Agent
267
+
268
+ ```typescript
269
+ // Generate widget code for testing
270
+ elevenlabs_generate_widget_code({
271
+ agent_id: "ag_abc123",
272
+ color: "#4A90E2",
273
+ avatar_url: "https://example.com/avatar.png"
274
+ })
275
+ ```
276
+
277
+ ### Monitoring Conversations
278
+
279
+ ```typescript
280
+ // List recent conversations
281
+ elevenlabs_list_conversations({
282
+ agent_id: "ag_abc123",
283
+ limit: 10,
284
+ status: "completed"
285
+ })
286
+
287
+ // Get full transcript
288
+ elevenlabs_get_conversation({
289
+ conversation_id: "conv_xyz789"
290
+ })
291
+ ```
292
+
293
+ ## Tool Details
294
+
295
+ ### Response Formats
296
+
297
+ All tools support two response formats:
298
+
299
+ - **markdown** (default) - Human-readable formatted output
300
+ - **json** - Structured data for programmatic use
301
+
302
+ Example:
303
+ ```typescript
304
+ elevenlabs_get_agent({
305
+ agent_id: "ag_abc123",
306
+ response_format: "json"
307
+ })
308
+ ```
309
+
310
+ ### Pagination
311
+
312
+ List endpoints support pagination:
313
+
314
+ ```typescript
315
+ elevenlabs_list_agents({
316
+ limit: 20, // Items per page (1-100)
317
+ offset: 0 // Skip this many items
318
+ })
319
+ ```
320
+
321
+ The response includes:
322
+ - `has_more` - Whether more items exist
323
+ - `next_offset` - Offset value for next page
324
+ - `total` - Total number of items
325
+
326
+ ### Supported LLM Models
327
+
328
+ - `gpt-4o`
329
+ - `gpt-4o-mini` (default)
330
+ - `claude-3-5-sonnet-20241022`
331
+ - `claude-3-5-haiku-20241022`
332
+ - `gemini-2.0-flash-exp`
333
+
334
+ ### Supported Voice Models
335
+
336
+ - `eleven_turbo_v2_5` - Fastest, lowest latency
337
+ - `eleven_flash_v2_5` (default) - Balanced speed and quality
338
+ - `eleven_multilingual_v2` - Best for multiple languages
339
+
340
+ ### Supported Languages
341
+
342
+ `en`, `es`, `fr`, `de`, `it`, `pt`, `pl`, `nl`, `ja`, `zh`, `ko`, `ar`, `hi`
343
+
344
+ ## Development
345
+
346
+ ### Project Structure
347
+
348
+ ```
349
+ elevenlabs-voice-agent-mcp/
350
+ ├── src/
351
+ │ ├── index.ts # Server initialization
352
+ │ ├── types.ts # TypeScript interfaces
353
+ │ ├── constants.ts # API URLs and defaults
354
+ │ ├── schemas/ # Zod validation schemas
355
+ │ │ ├── agent-schemas.ts
356
+ │ │ ├── tool-schemas.ts
357
+ │ │ ├── conversation-schemas.ts
358
+ │ │ └── common-schemas.ts
359
+ │ ├── services/ # API clients and utilities
360
+ │ │ ├── elevenlabs-api.ts
361
+ │ │ └── formatters.ts
362
+ │ ├── tools/ # MCP tool implementations
363
+ │ │ ├── agent-tools.ts
364
+ │ │ ├── knowledge-tools.ts
365
+ │ │ ├── tool-tools.ts
366
+ │ │ ├── conversation-tools.ts
367
+ │ │ └── utility-tools.ts
368
+ │ └── utils/ # Helper functions
369
+ │ ├── error-handlers.ts
370
+ │ └── truncation.ts
371
+ └── dist/ # Compiled JavaScript
372
+ ```
373
+
374
+ ### Scripts
375
+
376
+ - `npm run build` - Compile TypeScript to JavaScript
377
+ - `npm run dev` - Run in watch mode with auto-reload
378
+ - `npm start` - Run the compiled server
379
+ - `npm run clean` - Remove build artifacts
380
+
381
+ ### Adding New Tools
382
+
383
+ 1. Create tool definition in appropriate file under `src/tools/`
384
+ 2. Add Zod schema in `src/schemas/`
385
+ 3. Register tool in `src/index.ts`
386
+ 4. Rebuild with `npm run build`
387
+
388
+ ## Error Handling
389
+
390
+ The server provides clear, actionable error messages:
391
+
392
+ - **401 Unauthorized** - Invalid API key, check `ELEVENLABS_API_KEY`
393
+ - **404 Not Found** - Agent/conversation ID doesn't exist
394
+ - **429 Rate Limited** - Too many requests, wait 60 seconds
395
+ - **400 Bad Request** - Invalid parameters, check tool documentation
396
+
397
+ ## Character Limits
398
+
399
+ Responses are automatically truncated at 25,000 characters with guidance for pagination or filtering.
400
+
401
+ ## Best Practices
402
+
403
+ ### Agent Creation
404
+ - Write clear, specific system prompts
405
+ - Test different LLM models for your use case
406
+ - Use appropriate voice models (flash for speed, multilingual for languages)
407
+ - Set reasonable temperature values (0-0.7 for consistent, 0.8-2.0 for creative)
408
+
409
+ ### Knowledge Base
410
+ - Add focused, relevant documents
411
+ - Use URLs for content that updates frequently
412
+ - Include metadata for better organization
413
+ - Keep documents concise and well-structured
414
+
415
+ ### Webhook Tools
416
+ - Provide clear, descriptive tool names
417
+ - Write detailed parameter descriptions
418
+ - Test webhook endpoints before adding
419
+ - Handle errors gracefully in your webhook responses
420
+
421
+ ### Testing
422
+ - Generate widget code for easy browser testing
423
+ - Review conversation transcripts regularly
424
+ - Monitor conversation analysis metrics
425
+ - Test with various user inputs and edge cases
426
+
427
+ ## Troubleshooting
428
+
429
+ ### Server won't start
430
+ - Verify `ELEVENLABS_API_KEY` is set in environment
431
+ - Check Node.js version (18+ required)
432
+ - Run `npm install` to ensure dependencies are installed
433
+ - Check for port conflicts if running multiple MCP servers
434
+
435
+ ### Tools not appearing in Claude
436
+ - Verify server is registered in `claude_desktop_config.json`
437
+ - Use absolute paths in configuration
438
+ - Restart Claude Desktop after config changes
439
+ - Check Claude Desktop logs for errors
440
+
441
+ ### API errors
442
+ - Verify API key is valid at [ElevenLabs Settings](https://elevenlabs.io/app/settings/api-keys)
443
+ - Check ElevenLabs account has required permissions
444
+ - Ensure you're not exceeding rate limits
445
+ - Verify agent/conversation IDs are correct
446
+
447
+ ## Support
448
+
449
+ - **ElevenLabs Documentation**: https://elevenlabs.io/docs
450
+ - **MCP Documentation**: https://modelcontextprotocol.io
451
+ - **Issues**: Report bugs or request features via GitHub issues
452
+
453
+ ## License
454
+
455
+ MIT
456
+
457
+ ## Contributing
458
+
459
+ Contributions welcome! Please:
460
+ 1. Fork the repository
461
+ 2. Create a feature branch
462
+ 3. Make your changes with tests
463
+ 4. Submit a pull request
464
+
465
+ ## Use Cases
466
+
467
+ ### Customer Outreach
468
+ ```typescript
469
+ // Import leads from CSV and call them all
470
+ elevenlabs_submit_batch_call({
471
+ call_name: "Lead Qualification Q1",
472
+ agent_id: "ag_sales",
473
+ recipients: [
474
+ { phone_number: "+1...", conversation_initiation_client_data: { name: "...", company: "..." } },
475
+ // ... up to 10,000 recipients
476
+ ]
477
+ })
478
+ ```
479
+
480
+ ### Appointment Reminders
481
+ ```typescript
482
+ // Call customers with personalized reminders
483
+ elevenlabs_start_outbound_call({
484
+ agent_id: "ag_scheduler",
485
+ agent_phone_number_id: "pn_main",
486
+ to_number: "+14155551234",
487
+ conversation_initiation_client_data: {
488
+ dynamic_variables: {
489
+ patient_name: "Sarah",
490
+ appointment_time: "3:00 PM tomorrow",
491
+ doctor_name: "Dr. Smith"
492
+ }
493
+ }
494
+ })
495
+ ```
496
+
497
+ ### Survey & Feedback Collection
498
+ ```typescript
499
+ // Batch call for post-purchase surveys
500
+ elevenlabs_submit_batch_call({
501
+ call_name: "Post-Purchase NPS Survey",
502
+ agent_id: "ag_survey",
503
+ recipients: recentCustomers.map(c => ({
504
+ phone_number: c.phone,
505
+ conversation_initiation_client_data: {
506
+ dynamic_variables: {
507
+ name: c.name,
508
+ product: c.lastPurchase,
509
+ order_id: c.orderId
510
+ }
511
+ }
512
+ }))
513
+ })
514
+ ```
515
+
516
+ ## Changelog
517
+
518
+ ### v2.0.0 (2025-01-24)
519
+ - Added 9 new tools for outbound calling and phone management
520
+ - Outbound calling via Twilio integration
521
+ - Batch calling for mass outreach (up to 10,000 recipients)
522
+ - Phone number management (import, assign, configure)
523
+ - Support for dynamic variables and call personalization
524
+ - Voicemail detection in batch calling
525
+ - Total tools: 23 (up from 14)
526
+
527
+ ### v1.0.0 (2025-01-20)
528
+ - Initial release
529
+ - 14 tools for voice agent development
530
+ - Comprehensive agent management
531
+ - Knowledge base and webhook tool support
532
+ - Conversation monitoring and analytics
533
+ - Widget generation for testing
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Constants for ElevenLabs Voice Agent MCP Server
3
+ *
4
+ * Contains API URLs, character limits, default values, and supported options
5
+ * for ElevenLabs Voice Agent API integration.
6
+ */
7
+ export declare const API_BASE_URL = "https://api.elevenlabs.io/v1";
8
+ export declare const CHARACTER_LIMIT = 25000;
9
+ export declare const DEFAULT_LIMIT = 20;
10
+ export declare const MAX_LIMIT = 100;
11
+ export declare const DEFAULT_LLM = "gpt-4o-mini";
12
+ export declare const DEFAULT_VOICE_MODEL = "eleven_flash_v2_5";
13
+ export declare const DEFAULT_VOICE_ID = "21m00Tcm4TlvDq8ikWAM";
14
+ export declare const DEFAULT_LANGUAGE = "en";
15
+ export declare const SUPPORTED_LLMS: readonly ["gpt-4o", "gpt-4o-mini", "claude-3-5-sonnet-20241022", "claude-3-5-haiku-20241022", "gemini-2.0-flash-exp"];
16
+ export declare const SUPPORTED_VOICE_MODELS: readonly ["eleven_turbo_v2_5", "eleven_flash_v2_5", "eleven_multilingual_v2"];
17
+ export declare const SUPPORTED_LANGUAGES: readonly ["en", "es", "fr", "de", "it", "pt", "pl", "nl", "ja", "zh", "ko", "ar", "hi"];
18
+ export declare const AUTH_TYPES: readonly ["none", "manual", "open"];
19
+ export declare const REQUEST_TIMEOUT = 30000;
20
+ export declare const MAX_BATCH_RECIPIENTS = 10000;
21
+ export declare const MIN_BATCH_RECIPIENTS = 1;
22
+ export declare const PHONE_PROVIDERS: readonly ["twilio", "sip_trunk"];
23
+ export declare const REGION_IDS: readonly ["us1", "ie1", "au1"];
24
+ export declare const EDGE_LOCATIONS: readonly ["ashburn", "dublin", "frankfurt", "sao-paulo", "singapore", "sydney", "tokyo", "umatilla", "roaming"];
25
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,YAAY,iCAAiC,CAAC;AAG3D,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,SAAS,MAAM,CAAC;AAG7B,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AACvD,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAGrC,eAAO,MAAM,cAAc,uHAMjB,CAAC;AAGX,eAAO,MAAM,sBAAsB,+EAIzB,CAAC;AAGX,eAAO,MAAM,mBAAmB,yFAEtB,CAAC;AAGX,eAAO,MAAM,UAAU,qCAAsC,CAAC;AAG9D,eAAO,MAAM,eAAe,QAAQ,CAAC;AAGrC,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAC1C,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAGtC,eAAO,MAAM,eAAe,kCAAmC,CAAC;AAGhE,eAAO,MAAM,UAAU,gCAAiC,CAAC;AAGzD,eAAO,MAAM,cAAc,iHAGjB,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Constants for ElevenLabs Voice Agent MCP Server
3
+ *
4
+ * Contains API URLs, character limits, default values, and supported options
5
+ * for ElevenLabs Voice Agent API integration.
6
+ */
7
+ export const API_BASE_URL = "https://api.elevenlabs.io/v1";
8
+ // Response limits
9
+ export const CHARACTER_LIMIT = 25000;
10
+ export const DEFAULT_LIMIT = 20;
11
+ export const MAX_LIMIT = 100;
12
+ // Default configuration values
13
+ export const DEFAULT_LLM = "gpt-4o-mini";
14
+ export const DEFAULT_VOICE_MODEL = "eleven_flash_v2_5";
15
+ export const DEFAULT_VOICE_ID = "21m00Tcm4TlvDq8ikWAM"; // Rachel voice
16
+ export const DEFAULT_LANGUAGE = "en";
17
+ // Supported LLM models
18
+ export const SUPPORTED_LLMS = [
19
+ "gpt-4o",
20
+ "gpt-4o-mini",
21
+ "claude-3-5-sonnet-20241022",
22
+ "claude-3-5-haiku-20241022",
23
+ "gemini-2.0-flash-exp"
24
+ ];
25
+ // Supported voice models
26
+ export const SUPPORTED_VOICE_MODELS = [
27
+ "eleven_turbo_v2_5",
28
+ "eleven_flash_v2_5",
29
+ "eleven_multilingual_v2"
30
+ ];
31
+ // Supported languages
32
+ export const SUPPORTED_LANGUAGES = [
33
+ "en", "es", "fr", "de", "it", "pt", "pl", "nl", "ja", "zh", "ko", "ar", "hi"
34
+ ];
35
+ // Authentication types
36
+ export const AUTH_TYPES = ["none", "manual", "open"];
37
+ // API timeouts
38
+ export const REQUEST_TIMEOUT = 30000; // 30 seconds
39
+ // Batch calling limits
40
+ export const MAX_BATCH_RECIPIENTS = 10000;
41
+ export const MIN_BATCH_RECIPIENTS = 1;
42
+ // Phone providers
43
+ export const PHONE_PROVIDERS = ["twilio", "sip_trunk"];
44
+ // Phone number regions
45
+ export const REGION_IDS = ["us1", "ie1", "au1"];
46
+ // Edge locations
47
+ export const EDGE_LOCATIONS = [
48
+ "ashburn", "dublin", "frankfurt", "sao-paulo",
49
+ "singapore", "sydney", "tokyo", "umatilla", "roaming"
50
+ ];
51
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAE3D,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,+BAA+B;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,CAAC,eAAe;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,uBAAuB;AACvB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ;IACR,aAAa;IACb,4BAA4B;IAC5B,2BAA2B;IAC3B,sBAAsB;CACd,CAAC;AAEX,yBAAyB;AACzB,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,mBAAmB;IACnB,mBAAmB;IACnB,wBAAwB;CAChB,CAAC;AAEX,sBAAsB;AACtB,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACpE,CAAC;AAEX,uBAAuB;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAE9D,eAAe;AACf,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,aAAa;AAEnD,uBAAuB;AACvB,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAC;AAEhE,uBAAuB;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAEzD,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW;IAC7C,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS;CAC7C,CAAC"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ElevenLabs Voice Agent MCP Server
4
+ *
5
+ * Main entry point for the MCP server providing tools for voice agent development.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}