@trustpager/mcp-server 1.1.4 → 1.1.6
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.
- package/dist/tools/ai.d.ts.map +1 -1
- package/dist/tools/ai.js +41 -0
- package/dist/tools/ai.js.map +1 -1
- package/dist/tools/automations.d.ts.map +1 -1
- package/dist/tools/automations.js +14 -0
- package/dist/tools/automations.js.map +1 -1
- package/dist/tools/communications.d.ts.map +1 -1
- package/dist/tools/communications.js +466 -11
- package/dist/tools/communications.js.map +1 -1
- package/dist/tools/deals.d.ts.map +1 -1
- package/dist/tools/deals.js +130 -0
- package/dist/tools/deals.js.map +1 -1
- package/dist/tools/documents.d.ts.map +1 -1
- package/dist/tools/documents.js +118 -0
- package/dist/tools/documents.js.map +1 -1
- package/dist/tools/forms.d.ts.map +1 -1
- package/dist/tools/forms.js +204 -4
- package/dist/tools/forms.js.map +1 -1
- package/dist/tools/platform.d.ts.map +1 -1
- package/dist/tools/platform.js +411 -1
- package/dist/tools/platform.js.map +1 -1
- package/dist/tools/products.d.ts.map +1 -1
- package/dist/tools/products.js +78 -0
- package/dist/tools/products.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +63 -0
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/webhooks.d.ts.map +1 -1
- package/dist/tools/webhooks.js +41 -0
- package/dist/tools/webhooks.js.map +1 -1
- package/package.json +1 -1
|
@@ -32,7 +32,7 @@ export const communicationTools = [
|
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
name: 'list_email_threads',
|
|
35
|
-
description: 'List all email threads
|
|
35
|
+
description: 'List all email threads -- browse, view, or get all email conversations, inbox messages, and sent emails. Use this to see email history or find a conversation.',
|
|
36
36
|
inputSchema: {
|
|
37
37
|
type: 'object',
|
|
38
38
|
properties: {
|
|
@@ -54,7 +54,7 @@ export const communicationTools = [
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
name: 'list_sms_conversations',
|
|
57
|
-
description: 'List all SMS conversations
|
|
57
|
+
description: 'List all SMS conversations -- browse, view, or get all text message threads and SMS chats. Use this to see SMS history or find a text conversation.',
|
|
58
58
|
inputSchema: {
|
|
59
59
|
type: 'object',
|
|
60
60
|
properties: {},
|
|
@@ -62,7 +62,7 @@ export const communicationTools = [
|
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
name: 'list_phone_numbers',
|
|
65
|
-
description: 'List all phone numbers
|
|
65
|
+
description: 'List all phone numbers -- browse, view, or get all configured phone lines, telephony numbers, and their capabilities. Use this to find a phone_number_id for sending SMS or making calls.',
|
|
66
66
|
inputSchema: {
|
|
67
67
|
type: 'object',
|
|
68
68
|
properties: {
|
|
@@ -74,7 +74,7 @@ export const communicationTools = [
|
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
name: 'list_voice_agents',
|
|
77
|
-
description: 'List all AI voice agents
|
|
77
|
+
description: 'List all AI voice agents -- browse, view, or get all voice bots, AI call agents, and phone agents configured for the company.',
|
|
78
78
|
inputSchema: {
|
|
79
79
|
type: 'object',
|
|
80
80
|
properties: {
|
|
@@ -122,7 +122,7 @@ export const communicationTools = [
|
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
name: 'list_email_configs',
|
|
125
|
-
description: 'List all email configs
|
|
125
|
+
description: 'List all email configs -- browse, view, or get all email sending settings, SMTP configurations, Postmark identities, and branding. Use this to see configured email senders.',
|
|
126
126
|
inputSchema: {
|
|
127
127
|
type: 'object',
|
|
128
128
|
properties: {},
|
|
@@ -201,7 +201,7 @@ export const communicationTools = [
|
|
|
201
201
|
},
|
|
202
202
|
{
|
|
203
203
|
name: 'list_email_logs',
|
|
204
|
-
description: 'List email send history
|
|
204
|
+
description: 'List email send history -- browse, view, or get email delivery logs with status (sent, delivered, bounced, failed). Filter by status, contact, or deal.',
|
|
205
205
|
inputSchema: {
|
|
206
206
|
type: 'object',
|
|
207
207
|
properties: {
|
|
@@ -226,7 +226,7 @@ export const communicationTools = [
|
|
|
226
226
|
},
|
|
227
227
|
{
|
|
228
228
|
name: 'get_sms_messages',
|
|
229
|
-
description: 'Get all messages in an SMS conversation
|
|
229
|
+
description: 'Get all messages in an SMS conversation -- view the full text message history with timestamps, direction (inbound/outbound), and delivery status.',
|
|
230
230
|
inputSchema: {
|
|
231
231
|
type: 'object',
|
|
232
232
|
properties: {
|
|
@@ -237,7 +237,7 @@ export const communicationTools = [
|
|
|
237
237
|
},
|
|
238
238
|
{
|
|
239
239
|
name: 'search_phone_numbers',
|
|
240
|
-
description: 'Search for available phone numbers to purchase
|
|
240
|
+
description: 'Search for available phone numbers to purchase -- find numbers by country (AU, US), area code, or pattern. Use this before buy_phone_number to see what is available.',
|
|
241
241
|
inputSchema: {
|
|
242
242
|
type: 'object',
|
|
243
243
|
properties: {
|
|
@@ -261,7 +261,7 @@ export const communicationTools = [
|
|
|
261
261
|
},
|
|
262
262
|
{
|
|
263
263
|
name: 'release_phone_number',
|
|
264
|
-
description: 'Release and deprovision a phone number
|
|
264
|
+
description: 'Release and deprovision a phone number -- stop paying for it and remove it from the company. This action cannot be undone.',
|
|
265
265
|
inputSchema: {
|
|
266
266
|
type: 'object',
|
|
267
267
|
properties: {
|
|
@@ -272,7 +272,7 @@ export const communicationTools = [
|
|
|
272
272
|
},
|
|
273
273
|
{
|
|
274
274
|
name: 'list_phone_call_logs',
|
|
275
|
-
description: 'List phone call logs
|
|
275
|
+
description: 'List phone call logs -- browse, view, or get call history and call records. Filter by phone number, direction (inbound/outbound), and call status.',
|
|
276
276
|
inputSchema: {
|
|
277
277
|
type: 'object',
|
|
278
278
|
properties: {
|
|
@@ -286,7 +286,7 @@ export const communicationTools = [
|
|
|
286
286
|
},
|
|
287
287
|
{
|
|
288
288
|
name: 'resend_signing_email',
|
|
289
|
-
description: 'Resend the e-signature email for a signing envelope
|
|
289
|
+
description: 'Resend the e-signature email for a signing envelope -- use this if the original signing email was missed, lost, or expired.',
|
|
290
290
|
inputSchema: {
|
|
291
291
|
type: 'object',
|
|
292
292
|
properties: {
|
|
@@ -295,6 +295,347 @@ export const communicationTools = [
|
|
|
295
295
|
required: ['envelope_id'],
|
|
296
296
|
},
|
|
297
297
|
},
|
|
298
|
+
// =========================================================================
|
|
299
|
+
// Voice Agent CRUD + Sub-resources
|
|
300
|
+
// =========================================================================
|
|
301
|
+
{
|
|
302
|
+
name: 'create_voice_agent',
|
|
303
|
+
description: 'Create a new AI voice agent for handling phone calls autonomously. Requires agent_name. Optional fields control voice, language, responsiveness, call duration, and more.',
|
|
304
|
+
inputSchema: {
|
|
305
|
+
type: 'object',
|
|
306
|
+
properties: {
|
|
307
|
+
agent_name: { type: 'string', description: 'Display name for the voice agent (required)' },
|
|
308
|
+
language: { type: 'string', description: 'Language code (e.g. "en-AU", "en-US")' },
|
|
309
|
+
voice_id: { type: 'string', description: 'Voice ID for text-to-speech' },
|
|
310
|
+
voice_model: { type: 'string', description: 'Voice model to use' },
|
|
311
|
+
voice_speed: { type: 'number', description: 'Voice speed multiplier' },
|
|
312
|
+
voice_temperature: { type: 'number', description: 'Voice temperature (creativity)' },
|
|
313
|
+
volume: { type: 'number', description: 'Voice volume level' },
|
|
314
|
+
ambient_sound: { type: 'string', description: 'Background ambient sound type' },
|
|
315
|
+
ambient_sound_volume: { type: 'number', description: 'Ambient sound volume level' },
|
|
316
|
+
backchannel_frequency: { type: 'number', description: 'How often the agent makes backchannel sounds (e.g. "uh-huh")' },
|
|
317
|
+
backchannel_words: { type: 'array', items: { type: 'string' }, description: 'Words to use for backchannel responses' },
|
|
318
|
+
enable_backchannel: { type: 'boolean', description: 'Enable backchannel sounds during conversation' },
|
|
319
|
+
conversation_flow_config: { type: 'object', description: 'Conversation flow configuration object' },
|
|
320
|
+
data_storage_setting: { type: 'string', description: 'Data storage setting' },
|
|
321
|
+
default_dynamic_variables: { type: 'object', description: 'Default dynamic variables for the agent' },
|
|
322
|
+
end_call_after_silence_ms: { type: 'number', description: 'End call after this many ms of silence' },
|
|
323
|
+
fallback_voice_ids: { type: 'array', items: { type: 'string' }, description: 'Fallback voice IDs' },
|
|
324
|
+
interruption_sensitivity: { type: 'number', description: 'Sensitivity to user interruptions (0-1)' },
|
|
325
|
+
max_call_duration_ms: { type: 'number', description: 'Maximum call duration in milliseconds' },
|
|
326
|
+
post_call_analysis_data: { type: 'array', description: 'Post-call analysis configuration' },
|
|
327
|
+
post_call_analysis_model: { type: 'string', description: 'Model for post-call analysis' },
|
|
328
|
+
reminder_max_count: { type: 'number', description: 'Max number of reminders' },
|
|
329
|
+
reminder_trigger_ms: { type: 'number', description: 'Trigger reminder after this many ms of silence' },
|
|
330
|
+
response_engine: { type: 'object', description: 'Response engine configuration' },
|
|
331
|
+
responsiveness: { type: 'number', description: 'Agent responsiveness level (0-1)' },
|
|
332
|
+
},
|
|
333
|
+
required: ['agent_name'],
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
name: 'update_voice_agent',
|
|
338
|
+
description: 'Update a voice agent configuration. Only include fields you want to change.',
|
|
339
|
+
inputSchema: {
|
|
340
|
+
type: 'object',
|
|
341
|
+
properties: {
|
|
342
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
343
|
+
agent_name: { type: 'string', description: 'Display name for the voice agent' },
|
|
344
|
+
language: { type: 'string', description: 'Language code (e.g. "en-AU", "en-US")' },
|
|
345
|
+
voice_id: { type: 'string', description: 'Voice ID for text-to-speech' },
|
|
346
|
+
voice_model: { type: 'string', description: 'Voice model to use' },
|
|
347
|
+
voice_speed: { type: 'number', description: 'Voice speed multiplier' },
|
|
348
|
+
voice_temperature: { type: 'number', description: 'Voice temperature (creativity)' },
|
|
349
|
+
volume: { type: 'number', description: 'Voice volume level' },
|
|
350
|
+
ambient_sound: { type: 'string', description: 'Background ambient sound type' },
|
|
351
|
+
ambient_sound_volume: { type: 'number', description: 'Ambient sound volume level' },
|
|
352
|
+
backchannel_frequency: { type: 'number', description: 'How often the agent makes backchannel sounds' },
|
|
353
|
+
backchannel_words: { type: 'array', items: { type: 'string' }, description: 'Words to use for backchannel responses' },
|
|
354
|
+
enable_backchannel: { type: 'boolean', description: 'Enable backchannel sounds during conversation' },
|
|
355
|
+
conversation_flow_config: { type: 'object', description: 'Conversation flow configuration object' },
|
|
356
|
+
data_storage_setting: { type: 'string', description: 'Data storage setting' },
|
|
357
|
+
default_dynamic_variables: { type: 'object', description: 'Default dynamic variables for the agent' },
|
|
358
|
+
end_call_after_silence_ms: { type: 'number', description: 'End call after this many ms of silence' },
|
|
359
|
+
fallback_voice_ids: { type: 'array', items: { type: 'string' }, description: 'Fallback voice IDs' },
|
|
360
|
+
interruption_sensitivity: { type: 'number', description: 'Sensitivity to user interruptions (0-1)' },
|
|
361
|
+
max_call_duration_ms: { type: 'number', description: 'Maximum call duration in milliseconds' },
|
|
362
|
+
post_call_analysis_data: { type: 'array', description: 'Post-call analysis configuration' },
|
|
363
|
+
post_call_analysis_model: { type: 'string', description: 'Model for post-call analysis' },
|
|
364
|
+
reminder_max_count: { type: 'number', description: 'Max number of reminders' },
|
|
365
|
+
reminder_trigger_ms: { type: 'number', description: 'Trigger reminder after this many ms of silence' },
|
|
366
|
+
response_engine: { type: 'object', description: 'Response engine configuration' },
|
|
367
|
+
responsiveness: { type: 'number', description: 'Agent responsiveness level (0-1)' },
|
|
368
|
+
},
|
|
369
|
+
required: ['id'],
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
name: 'delete_voice_agent',
|
|
374
|
+
description: 'Permanently delete a voice agent. This action cannot be undone.',
|
|
375
|
+
inputSchema: {
|
|
376
|
+
type: 'object',
|
|
377
|
+
properties: {
|
|
378
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
379
|
+
},
|
|
380
|
+
required: ['id'],
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
name: 'sync_voice_agent',
|
|
385
|
+
description: 'Sync a voice agent configuration with the Retell provider. Use after making changes to ensure the external service reflects the latest config.',
|
|
386
|
+
inputSchema: {
|
|
387
|
+
type: 'object',
|
|
388
|
+
properties: {
|
|
389
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
390
|
+
},
|
|
391
|
+
required: ['id'],
|
|
392
|
+
},
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
name: 'list_voice_agent_calls',
|
|
396
|
+
description: 'List call logs for a specific voice agent -- browse call history, statuses, durations, and summaries for one agent.',
|
|
397
|
+
inputSchema: {
|
|
398
|
+
type: 'object',
|
|
399
|
+
properties: {
|
|
400
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
401
|
+
limit: { type: 'number', description: 'Items per page (default 25, max 100)' },
|
|
402
|
+
after: { type: 'string', description: 'Cursor: get items after this ID' },
|
|
403
|
+
},
|
|
404
|
+
required: ['id'],
|
|
405
|
+
},
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
name: 'list_voice_agent_website_configs',
|
|
409
|
+
description: 'List website configurations for a voice agent -- shows which websites are linked, rate limits, and CRM auto-deal settings for inbound web calls.',
|
|
410
|
+
inputSchema: {
|
|
411
|
+
type: 'object',
|
|
412
|
+
properties: {
|
|
413
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
414
|
+
},
|
|
415
|
+
required: ['id'],
|
|
416
|
+
},
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
name: 'create_voice_agent_website_config',
|
|
420
|
+
description: 'Create a website configuration for a voice agent. Links the agent to a website with rate limits and optional CRM auto-deal creation for inbound web calls.',
|
|
421
|
+
inputSchema: {
|
|
422
|
+
type: 'object',
|
|
423
|
+
properties: {
|
|
424
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
425
|
+
website_id: { type: 'string', description: 'Website UUID to link (required)' },
|
|
426
|
+
rate_limit_max_requests: { type: 'number', description: 'Max requests per IP in the rate limit window' },
|
|
427
|
+
rate_limit_window_hours: { type: 'number', description: 'Rate limit window in hours' },
|
|
428
|
+
global_rate_limit_max_requests: { type: 'number', description: 'Global max requests in the rate limit window' },
|
|
429
|
+
global_rate_limit_window_hours: { type: 'number', description: 'Global rate limit window in hours' },
|
|
430
|
+
crm_auto_create_deal: { type: 'boolean', description: 'Auto-create a CRM deal for web calls' },
|
|
431
|
+
crm_pipeline_id: { type: 'string', description: 'Pipeline UUID for auto-created deals' },
|
|
432
|
+
crm_initial_stage_id: { type: 'string', description: 'Initial stage UUID for auto-created deals' },
|
|
433
|
+
crm_default_products: { type: 'array', description: 'Default product UUIDs to attach to auto-created deals' },
|
|
434
|
+
},
|
|
435
|
+
required: ['id', 'website_id'],
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
name: 'update_voice_agent_website_config',
|
|
440
|
+
description: 'Update a website configuration for a voice agent. Only include fields you want to change.',
|
|
441
|
+
inputSchema: {
|
|
442
|
+
type: 'object',
|
|
443
|
+
properties: {
|
|
444
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
445
|
+
config_id: { type: 'string', description: 'Website config UUID (required)' },
|
|
446
|
+
website_id: { type: 'string', description: 'Website UUID to link' },
|
|
447
|
+
rate_limit_max_requests: { type: 'number', description: 'Max requests per IP in the rate limit window' },
|
|
448
|
+
rate_limit_window_hours: { type: 'number', description: 'Rate limit window in hours' },
|
|
449
|
+
global_rate_limit_max_requests: { type: 'number', description: 'Global max requests in the rate limit window' },
|
|
450
|
+
global_rate_limit_window_hours: { type: 'number', description: 'Global rate limit window in hours' },
|
|
451
|
+
crm_auto_create_deal: { type: 'boolean', description: 'Auto-create a CRM deal for web calls' },
|
|
452
|
+
crm_pipeline_id: { type: 'string', description: 'Pipeline UUID for auto-created deals' },
|
|
453
|
+
crm_initial_stage_id: { type: 'string', description: 'Initial stage UUID for auto-created deals' },
|
|
454
|
+
crm_default_products: { type: 'array', description: 'Default product UUIDs to attach to auto-created deals' },
|
|
455
|
+
},
|
|
456
|
+
required: ['id', 'config_id'],
|
|
457
|
+
},
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
name: 'delete_voice_agent_website_config',
|
|
461
|
+
description: 'Delete a website configuration from a voice agent. This action cannot be undone.',
|
|
462
|
+
inputSchema: {
|
|
463
|
+
type: 'object',
|
|
464
|
+
properties: {
|
|
465
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
466
|
+
config_id: { type: 'string', description: 'Website config UUID (required)' },
|
|
467
|
+
},
|
|
468
|
+
required: ['id', 'config_id'],
|
|
469
|
+
},
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
name: 'list_voice_agent_outbound_configs',
|
|
473
|
+
description: 'List outbound configurations for a voice agent -- shows outbound call settings, default from number, allowed country codes, rate limits, and CRM auto-deal settings.',
|
|
474
|
+
inputSchema: {
|
|
475
|
+
type: 'object',
|
|
476
|
+
properties: {
|
|
477
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
478
|
+
},
|
|
479
|
+
required: ['id'],
|
|
480
|
+
},
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
name: 'create_voice_agent_outbound_config',
|
|
484
|
+
description: 'Create an outbound configuration for a voice agent. Sets default from number, allowed countries, rate limits, and optional CRM auto-deal creation for outbound calls.',
|
|
485
|
+
inputSchema: {
|
|
486
|
+
type: 'object',
|
|
487
|
+
properties: {
|
|
488
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
489
|
+
website_id: { type: 'string', description: 'Website UUID to link (required)' },
|
|
490
|
+
default_from_number: { type: 'string', description: 'Default caller ID phone number in E.164 format' },
|
|
491
|
+
allowed_country_codes: { type: 'array', items: { type: 'string' }, description: 'Allowed country codes for outbound calls (e.g. ["AU", "US"])' },
|
|
492
|
+
rate_limit_max_requests: { type: 'number', description: 'Max requests per IP in the rate limit window' },
|
|
493
|
+
rate_limit_window_hours: { type: 'number', description: 'Rate limit window in hours' },
|
|
494
|
+
global_rate_limit_max_requests: { type: 'number', description: 'Global max requests in the rate limit window' },
|
|
495
|
+
global_rate_limit_window_hours: { type: 'number', description: 'Global rate limit window in hours' },
|
|
496
|
+
crm_auto_create_deal: { type: 'boolean', description: 'Auto-create a CRM deal for outbound calls' },
|
|
497
|
+
crm_pipeline_id: { type: 'string', description: 'Pipeline UUID for auto-created deals' },
|
|
498
|
+
crm_initial_stage_id: { type: 'string', description: 'Initial stage UUID for auto-created deals' },
|
|
499
|
+
crm_default_products: { type: 'array', description: 'Default product UUIDs to attach to auto-created deals' },
|
|
500
|
+
},
|
|
501
|
+
required: ['id', 'website_id'],
|
|
502
|
+
},
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
name: 'update_voice_agent_outbound_config',
|
|
506
|
+
description: 'Update an outbound configuration for a voice agent. Only include fields you want to change.',
|
|
507
|
+
inputSchema: {
|
|
508
|
+
type: 'object',
|
|
509
|
+
properties: {
|
|
510
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
511
|
+
config_id: { type: 'string', description: 'Outbound config UUID (required)' },
|
|
512
|
+
website_id: { type: 'string', description: 'Website UUID to link' },
|
|
513
|
+
default_from_number: { type: 'string', description: 'Default caller ID phone number in E.164 format' },
|
|
514
|
+
allowed_country_codes: { type: 'array', items: { type: 'string' }, description: 'Allowed country codes for outbound calls' },
|
|
515
|
+
rate_limit_max_requests: { type: 'number', description: 'Max requests per IP in the rate limit window' },
|
|
516
|
+
rate_limit_window_hours: { type: 'number', description: 'Rate limit window in hours' },
|
|
517
|
+
global_rate_limit_max_requests: { type: 'number', description: 'Global max requests in the rate limit window' },
|
|
518
|
+
global_rate_limit_window_hours: { type: 'number', description: 'Global rate limit window in hours' },
|
|
519
|
+
crm_auto_create_deal: { type: 'boolean', description: 'Auto-create a CRM deal for outbound calls' },
|
|
520
|
+
crm_pipeline_id: { type: 'string', description: 'Pipeline UUID for auto-created deals' },
|
|
521
|
+
crm_initial_stage_id: { type: 'string', description: 'Initial stage UUID for auto-created deals' },
|
|
522
|
+
crm_default_products: { type: 'array', description: 'Default product UUIDs to attach to auto-created deals' },
|
|
523
|
+
},
|
|
524
|
+
required: ['id', 'config_id'],
|
|
525
|
+
},
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
name: 'delete_voice_agent_outbound_config',
|
|
529
|
+
description: 'Delete an outbound configuration from a voice agent. This action cannot be undone.',
|
|
530
|
+
inputSchema: {
|
|
531
|
+
type: 'object',
|
|
532
|
+
properties: {
|
|
533
|
+
id: { type: 'string', description: 'Voice agent UUID (required)' },
|
|
534
|
+
config_id: { type: 'string', description: 'Outbound config UUID (required)' },
|
|
535
|
+
},
|
|
536
|
+
required: ['id', 'config_id'],
|
|
537
|
+
},
|
|
538
|
+
},
|
|
539
|
+
// =========================================================================
|
|
540
|
+
// Phone Number Management
|
|
541
|
+
// =========================================================================
|
|
542
|
+
{
|
|
543
|
+
name: 'get_phone_number',
|
|
544
|
+
description: 'Get a single phone number by ID with full details including status, capabilities, country, locality, transfer number, and monthly cost.',
|
|
545
|
+
inputSchema: {
|
|
546
|
+
type: 'object',
|
|
547
|
+
properties: {
|
|
548
|
+
id: { type: 'string', description: 'Phone number UUID (required)' },
|
|
549
|
+
},
|
|
550
|
+
required: ['id'],
|
|
551
|
+
},
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
name: 'update_phone_number',
|
|
555
|
+
description: 'Update a phone number configuration. Can set transfer number (for call forwarding), text agent, and friendly name.',
|
|
556
|
+
inputSchema: {
|
|
557
|
+
type: 'object',
|
|
558
|
+
properties: {
|
|
559
|
+
id: { type: 'string', description: 'Phone number UUID (required)' },
|
|
560
|
+
transfer_number: { type: 'string', description: 'Phone number to forward/transfer calls to in E.164 format' },
|
|
561
|
+
text_agent_config_id: { type: 'string', description: 'Text agent UUID to handle SMS on this number' },
|
|
562
|
+
friendly_name: { type: 'string', description: 'Display name for the phone number' },
|
|
563
|
+
},
|
|
564
|
+
required: ['id'],
|
|
565
|
+
},
|
|
566
|
+
},
|
|
567
|
+
// =========================================================================
|
|
568
|
+
// Phone Regulatory Compliance
|
|
569
|
+
// =========================================================================
|
|
570
|
+
{
|
|
571
|
+
name: 'list_phone_addresses',
|
|
572
|
+
description: 'List phone regulatory addresses -- browse addresses registered for phone number compliance and emergency services.',
|
|
573
|
+
inputSchema: {
|
|
574
|
+
type: 'object',
|
|
575
|
+
properties: {
|
|
576
|
+
limit: { type: 'number', description: 'Items per page (default 25, max 100)' },
|
|
577
|
+
after: { type: 'string', description: 'Cursor: get items after this ID' },
|
|
578
|
+
},
|
|
579
|
+
},
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
name: 'create_phone_address',
|
|
583
|
+
description: 'Create a regulatory address for phone number compliance. Required for purchasing phone numbers in some countries. All address fields are required.',
|
|
584
|
+
inputSchema: {
|
|
585
|
+
type: 'object',
|
|
586
|
+
properties: {
|
|
587
|
+
customer_name: { type: 'string', description: 'Customer or business name (required)' },
|
|
588
|
+
street: { type: 'string', description: 'Street address (required)' },
|
|
589
|
+
street_secondary: { type: 'string', description: 'Unit, suite, or floor number' },
|
|
590
|
+
city: { type: 'string', description: 'City or suburb (required)' },
|
|
591
|
+
region: { type: 'string', description: 'State or region (required)' },
|
|
592
|
+
postal_code: { type: 'string', description: 'Postal/ZIP code (required)' },
|
|
593
|
+
iso_country: { type: 'string', description: 'ISO country code, e.g. "AU" (required)' },
|
|
594
|
+
emergency_enabled: { type: 'boolean', description: 'Enable for emergency services' },
|
|
595
|
+
},
|
|
596
|
+
required: ['customer_name', 'street', 'city', 'region', 'postal_code', 'iso_country'],
|
|
597
|
+
},
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
name: 'list_phone_bundles',
|
|
601
|
+
description: 'List phone regulatory bundles -- browse compliance bundles for phone number provisioning with status, country, and number type.',
|
|
602
|
+
inputSchema: {
|
|
603
|
+
type: 'object',
|
|
604
|
+
properties: {
|
|
605
|
+
limit: { type: 'number', description: 'Items per page (default 25, max 100)' },
|
|
606
|
+
after: { type: 'string', description: 'Cursor: get items after this ID' },
|
|
607
|
+
},
|
|
608
|
+
},
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
name: 'create_phone_bundle',
|
|
612
|
+
description: 'Create a regulatory bundle for phone number compliance. Required before purchasing numbers in regulated countries. Specify country, number type, and end user type.',
|
|
613
|
+
inputSchema: {
|
|
614
|
+
type: 'object',
|
|
615
|
+
properties: {
|
|
616
|
+
friendly_name: { type: 'string', description: 'Display name for the bundle' },
|
|
617
|
+
country_code: { type: 'string', description: 'Country code, e.g. "AU" (required)' },
|
|
618
|
+
number_type: { type: 'string', description: 'Number type, e.g. "local", "mobile", "toll-free" (required)' },
|
|
619
|
+
end_user_type: { type: 'string', description: 'End user type, e.g. "individual", "business" (required)' },
|
|
620
|
+
regulation_sid: { type: 'string', description: 'Twilio regulation SID' },
|
|
621
|
+
address_sid: { type: 'string', description: 'Twilio address SID to associate' },
|
|
622
|
+
document_sid: { type: 'string', description: 'Twilio document SID for identity proof' },
|
|
623
|
+
end_user_data: { type: 'object', description: 'End user data object for regulatory compliance' },
|
|
624
|
+
},
|
|
625
|
+
required: ['country_code', 'number_type', 'end_user_type'],
|
|
626
|
+
},
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
name: 'submit_phone_bundle',
|
|
630
|
+
description: 'Submit a regulatory bundle for review. Once submitted, the bundle will be reviewed and approved or rejected by the provider.',
|
|
631
|
+
inputSchema: {
|
|
632
|
+
type: 'object',
|
|
633
|
+
properties: {
|
|
634
|
+
id: { type: 'string', description: 'Bundle UUID (required)' },
|
|
635
|
+
},
|
|
636
|
+
required: ['id'],
|
|
637
|
+
},
|
|
638
|
+
},
|
|
298
639
|
];
|
|
299
640
|
export async function handleCommunicationTool(name, args) {
|
|
300
641
|
switch (name) {
|
|
@@ -419,6 +760,120 @@ export async function handleCommunicationTool(name, args) {
|
|
|
419
760
|
const res = await apiRequest('POST', `/signing/envelopes/${args.envelope_id}/resend`, {}, generateIdempotencyKey());
|
|
420
761
|
return formatResponse(res);
|
|
421
762
|
}
|
|
763
|
+
// =========================================================================
|
|
764
|
+
// Voice Agent CRUD + Sub-resources
|
|
765
|
+
// =========================================================================
|
|
766
|
+
case 'create_voice_agent': {
|
|
767
|
+
const { agent_name, language, voice_id, voice_model, voice_speed, voice_temperature, volume, ambient_sound, ambient_sound_volume, backchannel_frequency, backchannel_words, enable_backchannel, conversation_flow_config, data_storage_setting, default_dynamic_variables, end_call_after_silence_ms, fallback_voice_ids, interruption_sensitivity, max_call_duration_ms, post_call_analysis_data, post_call_analysis_model, reminder_max_count, reminder_trigger_ms, response_engine, responsiveness } = args;
|
|
768
|
+
const res = await apiRequest('POST', '/voice-agents', {
|
|
769
|
+
agent_name, language, voice_id, voice_model, voice_speed, voice_temperature, volume, ambient_sound, ambient_sound_volume, backchannel_frequency, backchannel_words, enable_backchannel, conversation_flow_config, data_storage_setting, default_dynamic_variables, end_call_after_silence_ms, fallback_voice_ids, interruption_sensitivity, max_call_duration_ms, post_call_analysis_data, post_call_analysis_model, reminder_max_count, reminder_trigger_ms, response_engine, responsiveness,
|
|
770
|
+
}, generateIdempotencyKey());
|
|
771
|
+
return formatResponse(res);
|
|
772
|
+
}
|
|
773
|
+
case 'update_voice_agent': {
|
|
774
|
+
const { id, ...body } = args;
|
|
775
|
+
const res = await apiRequest('PATCH', `/voice-agents/${id}`, body);
|
|
776
|
+
return formatResponse(res);
|
|
777
|
+
}
|
|
778
|
+
case 'delete_voice_agent': {
|
|
779
|
+
const res = await apiRequest('DELETE', `/voice-agents/${args.id}`);
|
|
780
|
+
return formatResponse(res);
|
|
781
|
+
}
|
|
782
|
+
case 'sync_voice_agent': {
|
|
783
|
+
const res = await apiRequest('POST', `/voice-agents/${args.id}/sync`, {}, generateIdempotencyKey());
|
|
784
|
+
return formatResponse(res);
|
|
785
|
+
}
|
|
786
|
+
case 'list_voice_agent_calls': {
|
|
787
|
+
const { id, limit, after } = args;
|
|
788
|
+
const query = buildQuery({ limit: limit, after: after });
|
|
789
|
+
const res = await apiRequest('GET', `/voice-agents/${id}/calls${query}`);
|
|
790
|
+
return formatResponse(res);
|
|
791
|
+
}
|
|
792
|
+
case 'list_voice_agent_website_configs': {
|
|
793
|
+
const res = await apiRequest('GET', `/voice-agents/${args.id}/website-config`);
|
|
794
|
+
return formatResponse(res);
|
|
795
|
+
}
|
|
796
|
+
case 'create_voice_agent_website_config': {
|
|
797
|
+
const { id, website_id, rate_limit_max_requests, rate_limit_window_hours, global_rate_limit_max_requests, global_rate_limit_window_hours, crm_auto_create_deal, crm_pipeline_id, crm_initial_stage_id, crm_default_products } = args;
|
|
798
|
+
const res = await apiRequest('POST', `/voice-agents/${id}/website-config`, {
|
|
799
|
+
website_id, rate_limit_max_requests, rate_limit_window_hours, global_rate_limit_max_requests, global_rate_limit_window_hours, crm_auto_create_deal, crm_pipeline_id, crm_initial_stage_id, crm_default_products,
|
|
800
|
+
}, generateIdempotencyKey());
|
|
801
|
+
return formatResponse(res);
|
|
802
|
+
}
|
|
803
|
+
case 'update_voice_agent_website_config': {
|
|
804
|
+
const { id, config_id, ...body } = args;
|
|
805
|
+
const res = await apiRequest('PATCH', `/voice-agents/${id}/website-config/${config_id}`, body);
|
|
806
|
+
return formatResponse(res);
|
|
807
|
+
}
|
|
808
|
+
case 'delete_voice_agent_website_config': {
|
|
809
|
+
const res = await apiRequest('DELETE', `/voice-agents/${args.id}/website-config/${args.config_id}`);
|
|
810
|
+
return formatResponse(res);
|
|
811
|
+
}
|
|
812
|
+
case 'list_voice_agent_outbound_configs': {
|
|
813
|
+
const res = await apiRequest('GET', `/voice-agents/${args.id}/outbound-config`);
|
|
814
|
+
return formatResponse(res);
|
|
815
|
+
}
|
|
816
|
+
case 'create_voice_agent_outbound_config': {
|
|
817
|
+
const { id, website_id, default_from_number, allowed_country_codes, rate_limit_max_requests, rate_limit_window_hours, global_rate_limit_max_requests, global_rate_limit_window_hours, crm_auto_create_deal, crm_pipeline_id, crm_initial_stage_id, crm_default_products } = args;
|
|
818
|
+
const res = await apiRequest('POST', `/voice-agents/${id}/outbound-config`, {
|
|
819
|
+
website_id, default_from_number, allowed_country_codes, rate_limit_max_requests, rate_limit_window_hours, global_rate_limit_max_requests, global_rate_limit_window_hours, crm_auto_create_deal, crm_pipeline_id, crm_initial_stage_id, crm_default_products,
|
|
820
|
+
}, generateIdempotencyKey());
|
|
821
|
+
return formatResponse(res);
|
|
822
|
+
}
|
|
823
|
+
case 'update_voice_agent_outbound_config': {
|
|
824
|
+
const { id, config_id, ...body } = args;
|
|
825
|
+
const res = await apiRequest('PATCH', `/voice-agents/${id}/outbound-config/${config_id}`, body);
|
|
826
|
+
return formatResponse(res);
|
|
827
|
+
}
|
|
828
|
+
case 'delete_voice_agent_outbound_config': {
|
|
829
|
+
const res = await apiRequest('DELETE', `/voice-agents/${args.id}/outbound-config/${args.config_id}`);
|
|
830
|
+
return formatResponse(res);
|
|
831
|
+
}
|
|
832
|
+
// =========================================================================
|
|
833
|
+
// Phone Number Management
|
|
834
|
+
// =========================================================================
|
|
835
|
+
case 'get_phone_number': {
|
|
836
|
+
const res = await apiRequest('GET', `/phone/numbers/${args.id}`);
|
|
837
|
+
return formatResponse(res);
|
|
838
|
+
}
|
|
839
|
+
case 'update_phone_number': {
|
|
840
|
+
const { id, ...body } = args;
|
|
841
|
+
const res = await apiRequest('PATCH', `/phone/numbers/${id}`, body);
|
|
842
|
+
return formatResponse(res);
|
|
843
|
+
}
|
|
844
|
+
// =========================================================================
|
|
845
|
+
// Phone Regulatory Compliance
|
|
846
|
+
// =========================================================================
|
|
847
|
+
case 'list_phone_addresses': {
|
|
848
|
+
const { limit, after } = args;
|
|
849
|
+
const query = buildQuery({ limit: limit, after: after });
|
|
850
|
+
const res = await apiRequest('GET', `/phone/addresses${query}`);
|
|
851
|
+
return formatResponse(res);
|
|
852
|
+
}
|
|
853
|
+
case 'create_phone_address': {
|
|
854
|
+
const { customer_name, street, street_secondary, city, region, postal_code, iso_country, emergency_enabled } = args;
|
|
855
|
+
const res = await apiRequest('POST', '/phone/addresses', {
|
|
856
|
+
customer_name, street, street_secondary, city, region, postal_code, iso_country, emergency_enabled,
|
|
857
|
+
}, generateIdempotencyKey());
|
|
858
|
+
return formatResponse(res);
|
|
859
|
+
}
|
|
860
|
+
case 'list_phone_bundles': {
|
|
861
|
+
const { limit, after } = args;
|
|
862
|
+
const query = buildQuery({ limit: limit, after: after });
|
|
863
|
+
const res = await apiRequest('GET', `/phone/bundles${query}`);
|
|
864
|
+
return formatResponse(res);
|
|
865
|
+
}
|
|
866
|
+
case 'create_phone_bundle': {
|
|
867
|
+
const { friendly_name, country_code, number_type, end_user_type, regulation_sid, address_sid, document_sid, end_user_data } = args;
|
|
868
|
+
const res = await apiRequest('POST', '/phone/bundles', {
|
|
869
|
+
friendly_name, country_code, number_type, end_user_type, regulation_sid, address_sid, document_sid, end_user_data,
|
|
870
|
+
}, generateIdempotencyKey());
|
|
871
|
+
return formatResponse(res);
|
|
872
|
+
}
|
|
873
|
+
case 'submit_phone_bundle': {
|
|
874
|
+
const res = await apiRequest('POST', `/phone/bundles/${args.id}/submit`, {}, generateIdempotencyKey());
|
|
875
|
+
return formatResponse(res);
|
|
876
|
+
}
|
|
422
877
|
default:
|
|
423
878
|
return { text: `Unknown communication tool: ${name}`, isError: true };
|
|
424
879
|
}
|