elevenlabs-voice-agent-mcp 1.0.15 → 1.1.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 (158) hide show
  1. package/README.md +202 -23
  2. package/dist/__tests__/mocks/fixtures.d.ts +136 -0
  3. package/dist/__tests__/mocks/fixtures.d.ts.map +1 -0
  4. package/dist/__tests__/mocks/fixtures.js +393 -0
  5. package/dist/__tests__/mocks/fixtures.js.map +1 -0
  6. package/dist/__tests__/schemas/schemas.test.d.ts +7 -0
  7. package/dist/__tests__/schemas/schemas.test.d.ts.map +1 -0
  8. package/dist/__tests__/schemas/schemas.test.js +537 -0
  9. package/dist/__tests__/schemas/schemas.test.js.map +1 -0
  10. package/dist/__tests__/services/elevenlabs-api.test.d.ts +7 -0
  11. package/dist/__tests__/services/elevenlabs-api.test.d.ts.map +1 -0
  12. package/dist/__tests__/services/elevenlabs-api.test.js +272 -0
  13. package/dist/__tests__/services/elevenlabs-api.test.js.map +1 -0
  14. package/dist/__tests__/services/formatters.test.d.ts +7 -0
  15. package/dist/__tests__/services/formatters.test.d.ts.map +1 -0
  16. package/dist/__tests__/services/formatters.test.js +387 -0
  17. package/dist/__tests__/services/formatters.test.js.map +1 -0
  18. package/dist/__tests__/setup.d.ts +7 -0
  19. package/dist/__tests__/setup.d.ts.map +1 -0
  20. package/dist/__tests__/setup.js +25 -0
  21. package/dist/__tests__/setup.js.map +1 -0
  22. package/dist/__tests__/tools/agent-tools.test.d.ts +7 -0
  23. package/dist/__tests__/tools/agent-tools.test.d.ts.map +1 -0
  24. package/dist/__tests__/tools/agent-tools.test.js +343 -0
  25. package/dist/__tests__/tools/agent-tools.test.js.map +1 -0
  26. package/dist/__tests__/tools/batch-calling-tools.test.d.ts +7 -0
  27. package/dist/__tests__/tools/batch-calling-tools.test.d.ts.map +1 -0
  28. package/dist/__tests__/tools/batch-calling-tools.test.js +236 -0
  29. package/dist/__tests__/tools/batch-calling-tools.test.js.map +1 -0
  30. package/dist/__tests__/tools/conversation-tools.test.d.ts +7 -0
  31. package/dist/__tests__/tools/conversation-tools.test.d.ts.map +1 -0
  32. package/dist/__tests__/tools/conversation-tools.test.js +212 -0
  33. package/dist/__tests__/tools/conversation-tools.test.js.map +1 -0
  34. package/dist/__tests__/tools/knowledge-tools.test.d.ts +7 -0
  35. package/dist/__tests__/tools/knowledge-tools.test.d.ts.map +1 -0
  36. package/dist/__tests__/tools/knowledge-tools.test.js +209 -0
  37. package/dist/__tests__/tools/knowledge-tools.test.js.map +1 -0
  38. package/dist/__tests__/tools/outbound-tools.test.d.ts +7 -0
  39. package/dist/__tests__/tools/outbound-tools.test.d.ts.map +1 -0
  40. package/dist/__tests__/tools/outbound-tools.test.js +194 -0
  41. package/dist/__tests__/tools/outbound-tools.test.js.map +1 -0
  42. package/dist/__tests__/tools/phone-number-tools.test.d.ts +7 -0
  43. package/dist/__tests__/tools/phone-number-tools.test.d.ts.map +1 -0
  44. package/dist/__tests__/tools/phone-number-tools.test.js +314 -0
  45. package/dist/__tests__/tools/phone-number-tools.test.js.map +1 -0
  46. package/dist/__tests__/tools/tool-tools.test.d.ts +7 -0
  47. package/dist/__tests__/tools/tool-tools.test.d.ts.map +1 -0
  48. package/dist/__tests__/tools/tool-tools.test.js +287 -0
  49. package/dist/__tests__/tools/tool-tools.test.js.map +1 -0
  50. package/dist/__tests__/tools/utility-tools.test.d.ts +7 -0
  51. package/dist/__tests__/tools/utility-tools.test.d.ts.map +1 -0
  52. package/dist/__tests__/tools/utility-tools.test.js +207 -0
  53. package/dist/__tests__/tools/utility-tools.test.js.map +1 -0
  54. package/dist/__tests__/utils/error-handlers.test.d.ts +7 -0
  55. package/dist/__tests__/utils/error-handlers.test.d.ts.map +1 -0
  56. package/dist/__tests__/utils/error-handlers.test.js +237 -0
  57. package/dist/__tests__/utils/error-handlers.test.js.map +1 -0
  58. package/dist/__tests__/utils/phone-normalizer.test.d.ts +7 -0
  59. package/dist/__tests__/utils/phone-normalizer.test.d.ts.map +1 -0
  60. package/dist/__tests__/utils/phone-normalizer.test.js +224 -0
  61. package/dist/__tests__/utils/phone-normalizer.test.js.map +1 -0
  62. package/dist/__tests__/utils/truncation.test.d.ts +7 -0
  63. package/dist/__tests__/utils/truncation.test.d.ts.map +1 -0
  64. package/dist/__tests__/utils/truncation.test.js +208 -0
  65. package/dist/__tests__/utils/truncation.test.js.map +1 -0
  66. package/dist/constants.d.ts +128 -4
  67. package/dist/constants.d.ts.map +1 -1
  68. package/dist/constants.js +150 -24
  69. package/dist/constants.js.map +1 -1
  70. package/dist/index.d.ts +13 -2
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +27 -3
  73. package/dist/index.js.map +1 -1
  74. package/dist/schemas/agent-schemas.d.ts +23 -8
  75. package/dist/schemas/agent-schemas.d.ts.map +1 -1
  76. package/dist/schemas/agent-schemas.js +23 -8
  77. package/dist/schemas/agent-schemas.js.map +1 -1
  78. package/dist/schemas/batch-calling-schemas.d.ts +24 -9
  79. package/dist/schemas/batch-calling-schemas.d.ts.map +1 -1
  80. package/dist/schemas/batch-calling-schemas.js +24 -9
  81. package/dist/schemas/batch-calling-schemas.js.map +1 -1
  82. package/dist/schemas/common-schemas.d.ts +45 -13
  83. package/dist/schemas/common-schemas.d.ts.map +1 -1
  84. package/dist/schemas/common-schemas.js +45 -13
  85. package/dist/schemas/common-schemas.js.map +1 -1
  86. package/dist/schemas/conversation-schemas.d.ts +12 -5
  87. package/dist/schemas/conversation-schemas.d.ts.map +1 -1
  88. package/dist/schemas/conversation-schemas.js +12 -5
  89. package/dist/schemas/conversation-schemas.js.map +1 -1
  90. package/dist/schemas/outbound-schemas.d.ts +23 -8
  91. package/dist/schemas/outbound-schemas.d.ts.map +1 -1
  92. package/dist/schemas/outbound-schemas.js +23 -8
  93. package/dist/schemas/outbound-schemas.js.map +1 -1
  94. package/dist/schemas/phone-number-schemas.d.ts +37 -14
  95. package/dist/schemas/phone-number-schemas.d.ts.map +1 -1
  96. package/dist/schemas/phone-number-schemas.js +37 -14
  97. package/dist/schemas/phone-number-schemas.js.map +1 -1
  98. package/dist/schemas/tool-schemas.d.ts +27 -9
  99. package/dist/schemas/tool-schemas.d.ts.map +1 -1
  100. package/dist/schemas/tool-schemas.js +34 -11
  101. package/dist/schemas/tool-schemas.js.map +1 -1
  102. package/dist/services/elevenlabs-api.d.ts +108 -14
  103. package/dist/services/elevenlabs-api.d.ts.map +1 -1
  104. package/dist/services/elevenlabs-api.js +108 -14
  105. package/dist/services/elevenlabs-api.js.map +1 -1
  106. package/dist/services/formatters.d.ts +147 -21
  107. package/dist/services/formatters.d.ts.map +1 -1
  108. package/dist/services/formatters.js +147 -21
  109. package/dist/services/formatters.js.map +1 -1
  110. package/dist/tools/agent-tools.d.ts +5 -3
  111. package/dist/tools/agent-tools.d.ts.map +1 -1
  112. package/dist/tools/agent-tools.js +5 -3
  113. package/dist/tools/agent-tools.js.map +1 -1
  114. package/dist/tools/batch-calling-tools.d.ts +5 -3
  115. package/dist/tools/batch-calling-tools.d.ts.map +1 -1
  116. package/dist/tools/batch-calling-tools.js +5 -3
  117. package/dist/tools/batch-calling-tools.js.map +1 -1
  118. package/dist/tools/conversation-tools.d.ts +5 -3
  119. package/dist/tools/conversation-tools.d.ts.map +1 -1
  120. package/dist/tools/conversation-tools.js +5 -3
  121. package/dist/tools/conversation-tools.js.map +1 -1
  122. package/dist/tools/knowledge-tools.d.ts +5 -3
  123. package/dist/tools/knowledge-tools.d.ts.map +1 -1
  124. package/dist/tools/knowledge-tools.js +5 -3
  125. package/dist/tools/knowledge-tools.js.map +1 -1
  126. package/dist/tools/outbound-tools.d.ts +5 -3
  127. package/dist/tools/outbound-tools.d.ts.map +1 -1
  128. package/dist/tools/outbound-tools.js +5 -3
  129. package/dist/tools/outbound-tools.js.map +1 -1
  130. package/dist/tools/phone-number-tools.d.ts +5 -4
  131. package/dist/tools/phone-number-tools.d.ts.map +1 -1
  132. package/dist/tools/phone-number-tools.js +5 -4
  133. package/dist/tools/phone-number-tools.js.map +1 -1
  134. package/dist/tools/tool-tools.d.ts +5 -3
  135. package/dist/tools/tool-tools.d.ts.map +1 -1
  136. package/dist/tools/tool-tools.js +5 -3
  137. package/dist/tools/tool-tools.js.map +1 -1
  138. package/dist/tools/utility-tools.d.ts +5 -3
  139. package/dist/tools/utility-tools.d.ts.map +1 -1
  140. package/dist/tools/utility-tools.js +5 -3
  141. package/dist/tools/utility-tools.js.map +1 -1
  142. package/dist/types.d.ts +457 -10
  143. package/dist/types.d.ts.map +1 -1
  144. package/dist/types.js +15 -3
  145. package/dist/types.js.map +1 -1
  146. package/dist/utils/error-handlers.d.ts +47 -14
  147. package/dist/utils/error-handlers.d.ts.map +1 -1
  148. package/dist/utils/error-handlers.js +47 -14
  149. package/dist/utils/error-handlers.js.map +1 -1
  150. package/dist/utils/phone-normalizer.d.ts +43 -22
  151. package/dist/utils/phone-normalizer.d.ts.map +1 -1
  152. package/dist/utils/phone-normalizer.js +43 -22
  153. package/dist/utils/phone-normalizer.js.map +1 -1
  154. package/dist/utils/truncation.d.ts +46 -22
  155. package/dist/utils/truncation.d.ts.map +1 -1
  156. package/dist/utils/truncation.js +46 -22
  157. package/dist/utils/truncation.js.map +1 -1
  158. package/package.json +10 -4
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Tests for agent management tools
3
+ *
4
+ * Tests CRUD operations for voice agents.
5
+ */
6
+ import { describe, it, expect, vi, beforeEach } from "vitest";
7
+ import axios from "axios";
8
+ import { elevenlabs_create_agent, elevenlabs_get_agent, elevenlabs_update_agent, elevenlabs_delete_agent, elevenlabs_list_agents } from "../../tools/agent-tools.js";
9
+ import { mockAgent, mockAgentMinimal } from "../mocks/fixtures.js";
10
+ import { ResponseFormat } from "../../types.js";
11
+ // Mock axios
12
+ vi.mock("axios");
13
+ const mockedAxios = vi.mocked(axios);
14
+ describe("Agent Tools", () => {
15
+ beforeEach(() => {
16
+ vi.clearAllMocks();
17
+ process.env.ELEVENLABS_API_KEY = "test_api_key_12345";
18
+ });
19
+ describe("elevenlabs_create_agent", () => {
20
+ it("should have correct tool metadata", () => {
21
+ expect(elevenlabs_create_agent.name).toBe("elevenlabs_create_agent");
22
+ expect(elevenlabs_create_agent.description).toContain("Create a new ElevenLabs Voice Agent");
23
+ expect(elevenlabs_create_agent.annotations?.readOnlyHint).toBe(false);
24
+ expect(elevenlabs_create_agent.annotations?.destructiveHint).toBe(false);
25
+ });
26
+ it("should create an agent successfully with all parameters", async () => {
27
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
28
+ const result = await elevenlabs_create_agent.handler({
29
+ name: "Test Support Agent",
30
+ prompt: "You are a helpful customer support agent.",
31
+ llm: "claude-sonnet-4-5@20250929",
32
+ voice_id: "21m00Tcm4TlvDq8ikWAM",
33
+ voice_model: "eleven_turbo_v2_5",
34
+ first_message: "Hello! How can I help you today?",
35
+ language: "en",
36
+ temperature: 0.7,
37
+ max_tokens: 1024,
38
+ stability: 0.5,
39
+ similarity_boost: 0.75,
40
+ speed: 1.0,
41
+ turn_eagerness: "normal",
42
+ turn_timeout: 10,
43
+ silence_end_call_timeout: 15,
44
+ widget_color: "#FF5733",
45
+ widget_avatar_url: "https://example.com/avatar.png",
46
+ response_format: ResponseFormat.MARKDOWN
47
+ });
48
+ expect(result.content).toHaveLength(1);
49
+ expect(result.content[0].type).toBe("text");
50
+ expect(result.content[0].text).toContain("Test Support Agent");
51
+ // Verify the request was made with correct data
52
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
53
+ method: "POST",
54
+ data: expect.objectContaining({
55
+ name: "Test Support Agent",
56
+ conversation_config: expect.objectContaining({
57
+ agent: expect.objectContaining({
58
+ prompt: expect.objectContaining({
59
+ prompt: "You are a helpful customer support agent.",
60
+ llm: "claude-sonnet-4-5@20250929"
61
+ }),
62
+ language: "en"
63
+ }),
64
+ tts: expect.objectContaining({
65
+ voice_id: "21m00Tcm4TlvDq8ikWAM",
66
+ model_id: "eleven_turbo_v2_5"
67
+ })
68
+ })
69
+ })
70
+ }));
71
+ });
72
+ it("should create agent with minimal parameters using defaults", async () => {
73
+ mockedAxios.mockResolvedValueOnce({ data: mockAgentMinimal });
74
+ const result = await elevenlabs_create_agent.handler({
75
+ name: "Minimal Agent",
76
+ prompt: "A simple test agent prompt."
77
+ });
78
+ expect(result.content[0].text).toContain("Minimal Agent");
79
+ });
80
+ it("should return JSON format when specified", async () => {
81
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
82
+ const result = await elevenlabs_create_agent.handler({
83
+ name: "Test Agent",
84
+ prompt: "Test prompt for agent.",
85
+ response_format: ResponseFormat.JSON
86
+ });
87
+ const parsed = JSON.parse(result.content[0].text);
88
+ expect(parsed.agent_id).toBe("ag_test123");
89
+ });
90
+ it("should validate required fields", async () => {
91
+ await expect(elevenlabs_create_agent.handler({
92
+ name: "",
93
+ prompt: "Valid prompt"
94
+ })).rejects.toThrow();
95
+ });
96
+ it("should validate prompt minimum length", async () => {
97
+ await expect(elevenlabs_create_agent.handler({
98
+ name: "Valid Name",
99
+ prompt: "Short"
100
+ })).rejects.toThrow();
101
+ });
102
+ });
103
+ describe("elevenlabs_get_agent", () => {
104
+ it("should have correct tool metadata", () => {
105
+ expect(elevenlabs_get_agent.name).toBe("elevenlabs_get_agent");
106
+ expect(elevenlabs_get_agent.annotations?.readOnlyHint).toBe(true);
107
+ });
108
+ it("should retrieve agent by ID", async () => {
109
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
110
+ const result = await elevenlabs_get_agent.handler({
111
+ agent_id: "ag_test123",
112
+ response_format: ResponseFormat.MARKDOWN
113
+ });
114
+ expect(result.content[0].text).toContain("Test Support Agent");
115
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
116
+ method: "GET",
117
+ url: expect.stringContaining("/convai/agents/ag_test123")
118
+ }));
119
+ });
120
+ it("should return JSON when format specified", async () => {
121
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
122
+ const result = await elevenlabs_get_agent.handler({
123
+ agent_id: "ag_test123",
124
+ response_format: ResponseFormat.JSON
125
+ });
126
+ const parsed = JSON.parse(result.content[0].text);
127
+ expect(parsed.agent_id).toBe("ag_test123");
128
+ });
129
+ it("should handle API error for non-existent agent", async () => {
130
+ const error = {
131
+ response: { status: 404, data: { detail: "Agent not found" } },
132
+ isAxiosError: true
133
+ };
134
+ mockedAxios.mockRejectedValueOnce(error);
135
+ vi.mocked(axios.isAxiosError).mockReturnValue(true);
136
+ await expect(elevenlabs_get_agent.handler({
137
+ agent_id: "ag_nonexistent",
138
+ response_format: ResponseFormat.MARKDOWN
139
+ })).rejects.toThrow("not found");
140
+ });
141
+ it("should validate agent_id format", async () => {
142
+ await expect(elevenlabs_get_agent.handler({
143
+ agent_id: "",
144
+ response_format: ResponseFormat.MARKDOWN
145
+ })).rejects.toThrow();
146
+ });
147
+ });
148
+ describe("elevenlabs_update_agent", () => {
149
+ it("should have correct tool metadata", () => {
150
+ expect(elevenlabs_update_agent.name).toBe("elevenlabs_update_agent");
151
+ expect(elevenlabs_update_agent.annotations?.destructiveHint).toBe(false);
152
+ expect(elevenlabs_update_agent.annotations?.idempotentHint).toBe(true);
153
+ });
154
+ it("should update agent name", async () => {
155
+ // First call to get current agent
156
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
157
+ // Second call to update
158
+ mockedAxios.mockResolvedValueOnce({
159
+ data: { ...mockAgent, name: "Updated Name" }
160
+ });
161
+ const result = await elevenlabs_update_agent.handler({
162
+ agent_id: "ag_test123",
163
+ name: "Updated Name",
164
+ response_format: ResponseFormat.MARKDOWN
165
+ });
166
+ expect(result.content[0].text).toContain("Updated Name");
167
+ });
168
+ it("should update prompt and LLM", async () => {
169
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
170
+ mockedAxios.mockResolvedValueOnce({
171
+ data: {
172
+ ...mockAgent,
173
+ conversation_config: {
174
+ ...mockAgent.conversation_config,
175
+ agent: {
176
+ ...mockAgent.conversation_config.agent,
177
+ prompt: {
178
+ ...mockAgent.conversation_config.agent.prompt,
179
+ prompt: "New prompt",
180
+ llm: "gpt-4o"
181
+ }
182
+ }
183
+ }
184
+ }
185
+ });
186
+ const result = await elevenlabs_update_agent.handler({
187
+ agent_id: "ag_test123",
188
+ prompt: "New prompt",
189
+ llm: "gpt-4o",
190
+ response_format: ResponseFormat.MARKDOWN
191
+ });
192
+ expect(result.content[0].text).toContain("gpt-4o");
193
+ });
194
+ it("should update TTS settings", async () => {
195
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
196
+ mockedAxios.mockResolvedValueOnce({
197
+ data: {
198
+ ...mockAgent,
199
+ conversation_config: {
200
+ ...mockAgent.conversation_config,
201
+ tts: {
202
+ ...mockAgent.conversation_config.tts,
203
+ voice_id: "new_voice_id",
204
+ stability: 0.8
205
+ }
206
+ }
207
+ }
208
+ });
209
+ const result = await elevenlabs_update_agent.handler({
210
+ agent_id: "ag_test123",
211
+ voice_id: "new_voice_id",
212
+ stability: 0.8,
213
+ response_format: ResponseFormat.JSON
214
+ });
215
+ expect(result.content[0].text).toContain("new_voice_id");
216
+ });
217
+ it("should update turn configuration", async () => {
218
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
219
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
220
+ await elevenlabs_update_agent.handler({
221
+ agent_id: "ag_test123",
222
+ turn_eagerness: "eager",
223
+ turn_timeout: 5,
224
+ response_format: ResponseFormat.MARKDOWN
225
+ });
226
+ expect(mockedAxios).toHaveBeenCalledTimes(2);
227
+ });
228
+ it("should update widget settings", async () => {
229
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
230
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
231
+ await elevenlabs_update_agent.handler({
232
+ agent_id: "ag_test123",
233
+ widget_color: "#00FF00",
234
+ response_format: ResponseFormat.MARKDOWN
235
+ });
236
+ expect(mockedAxios).toHaveBeenNthCalledWith(2, expect.objectContaining({
237
+ method: "PATCH",
238
+ data: expect.objectContaining({
239
+ platform_settings: expect.objectContaining({
240
+ widget: expect.objectContaining({
241
+ color: "#00FF00"
242
+ })
243
+ })
244
+ })
245
+ }));
246
+ });
247
+ });
248
+ describe("elevenlabs_delete_agent", () => {
249
+ it("should have correct tool metadata", () => {
250
+ expect(elevenlabs_delete_agent.name).toBe("elevenlabs_delete_agent");
251
+ expect(elevenlabs_delete_agent.annotations?.destructiveHint).toBe(true);
252
+ });
253
+ it("should delete agent successfully", async () => {
254
+ mockedAxios.mockResolvedValueOnce({ data: {} });
255
+ const result = await elevenlabs_delete_agent.handler({
256
+ agent_id: "ag_test123"
257
+ });
258
+ expect(result.content[0].text).toContain("Successfully deleted");
259
+ expect(result.content[0].text).toContain("ag_test123");
260
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
261
+ method: "DELETE",
262
+ url: expect.stringContaining("/convai/agents/ag_test123")
263
+ }));
264
+ });
265
+ it("should handle deletion of non-existent agent", async () => {
266
+ const error = {
267
+ response: { status: 404, data: { detail: "Agent not found" } },
268
+ isAxiosError: true
269
+ };
270
+ mockedAxios.mockRejectedValueOnce(error);
271
+ vi.mocked(axios.isAxiosError).mockReturnValue(true);
272
+ await expect(elevenlabs_delete_agent.handler({ agent_id: "ag_nonexistent" })).rejects.toThrow("not found");
273
+ });
274
+ });
275
+ describe("elevenlabs_list_agents", () => {
276
+ it("should have correct tool metadata", () => {
277
+ expect(elevenlabs_list_agents.name).toBe("elevenlabs_list_agents");
278
+ expect(elevenlabs_list_agents.annotations?.readOnlyHint).toBe(true);
279
+ });
280
+ it("should list agents with default pagination", async () => {
281
+ mockedAxios.mockResolvedValueOnce({
282
+ data: { agents: [mockAgent, mockAgentMinimal] }
283
+ });
284
+ const result = await elevenlabs_list_agents.handler({
285
+ response_format: ResponseFormat.MARKDOWN
286
+ });
287
+ expect(result.content[0].text).toContain("Agents");
288
+ expect(result.content[0].text).toContain("Test Support Agent");
289
+ expect(result.content[0].text).toContain("Minimal Agent");
290
+ });
291
+ it("should list agents with custom pagination", async () => {
292
+ mockedAxios.mockResolvedValueOnce({
293
+ data: { agents: [mockAgent] }
294
+ });
295
+ await elevenlabs_list_agents.handler({
296
+ limit: 10,
297
+ offset: 5,
298
+ response_format: ResponseFormat.MARKDOWN
299
+ });
300
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
301
+ params: { limit: 10, offset: 5 }
302
+ }));
303
+ });
304
+ it("should return JSON format", async () => {
305
+ mockedAxios.mockResolvedValueOnce({
306
+ data: { agents: [mockAgent] }
307
+ });
308
+ const result = await elevenlabs_list_agents.handler({
309
+ limit: 20,
310
+ offset: 0,
311
+ response_format: ResponseFormat.JSON
312
+ });
313
+ const parsed = JSON.parse(result.content[0].text);
314
+ expect(parsed.items).toHaveLength(1);
315
+ expect(parsed.total).toBe(1);
316
+ });
317
+ it("should handle empty agent list", async () => {
318
+ mockedAxios.mockResolvedValueOnce({
319
+ data: { agents: [] }
320
+ });
321
+ const result = await elevenlabs_list_agents.handler({
322
+ response_format: ResponseFormat.MARKDOWN
323
+ });
324
+ expect(result.content[0].text).toContain("No agents found");
325
+ });
326
+ it("should indicate when more agents are available", async () => {
327
+ // Return exactly 20 agents to indicate there may be more
328
+ const manyAgents = Array(20).fill(mockAgent);
329
+ mockedAxios.mockResolvedValueOnce({
330
+ data: { agents: manyAgents }
331
+ });
332
+ const result = await elevenlabs_list_agents.handler({
333
+ limit: 20,
334
+ offset: 0,
335
+ response_format: ResponseFormat.JSON
336
+ });
337
+ const parsed = JSON.parse(result.content[0].text);
338
+ expect(parsed.has_more).toBe(true);
339
+ expect(parsed.next_offset).toBe(20);
340
+ });
341
+ });
342
+ });
343
+ //# sourceMappingURL=agent-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-tools.test.js","sourceRoot":"","sources":["../../../src/__tests__/tools/agent-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tests for batch calling tools
3
+ *
4
+ * Tests batch call submission, listing, and detail retrieval.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=batch-calling-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-calling-tools.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/tools/batch-calling-tools.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Tests for batch calling tools
3
+ *
4
+ * Tests batch call submission, listing, and detail retrieval.
5
+ */
6
+ import { describe, it, expect, vi, beforeEach } from "vitest";
7
+ import axios from "axios";
8
+ import { elevenlabs_submit_batch_call, elevenlabs_list_batch_calls, elevenlabs_get_batch_call } from "../../tools/batch-calling-tools.js";
9
+ import { mockBatchCall, mockBatchCallDetailed, mockBatchCallsList } from "../mocks/fixtures.js";
10
+ import { ResponseFormat } from "../../types.js";
11
+ // Mock axios
12
+ vi.mock("axios");
13
+ const mockedAxios = vi.mocked(axios);
14
+ describe("Batch Calling Tools", () => {
15
+ beforeEach(() => {
16
+ vi.clearAllMocks();
17
+ process.env.ELEVENLABS_API_KEY = "test_api_key_12345";
18
+ });
19
+ describe("elevenlabs_submit_batch_call", () => {
20
+ it("should have correct tool metadata", () => {
21
+ expect(elevenlabs_submit_batch_call.name).toBe("elevenlabs_submit_batch_call");
22
+ expect(elevenlabs_submit_batch_call.description).toContain("batch calling job");
23
+ expect(elevenlabs_submit_batch_call.annotations?.readOnlyHint).toBe(false);
24
+ expect(elevenlabs_submit_batch_call.annotations?.idempotentHint).toBe(false);
25
+ });
26
+ it("should submit a batch call successfully", async () => {
27
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCall });
28
+ const result = await elevenlabs_submit_batch_call.handler({
29
+ call_name: "Q4 Customer Survey",
30
+ agent_id: "ag_test123",
31
+ recipients: [
32
+ { phone_number: "+14155551234" },
33
+ { phone_number: "+14155555678" }
34
+ ],
35
+ response_format: ResponseFormat.MARKDOWN
36
+ });
37
+ expect(result.content[0].text).toContain("Q4 Customer Survey");
38
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
39
+ method: "POST",
40
+ url: expect.stringContaining("/convai/batch-calling/submit"),
41
+ data: expect.objectContaining({
42
+ call_name: "Q4 Customer Survey",
43
+ agent_id: "ag_test123",
44
+ recipients: expect.arrayContaining([
45
+ expect.objectContaining({ phone_number: "+14155551234" })
46
+ ])
47
+ })
48
+ }));
49
+ });
50
+ it("should submit batch call with dynamic variables", async () => {
51
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCall });
52
+ await elevenlabs_submit_batch_call.handler({
53
+ call_name: "Personalized Survey",
54
+ agent_id: "ag_test123",
55
+ recipients: [
56
+ {
57
+ phone_number: "+14155551234",
58
+ conversation_initiation_client_data: {
59
+ dynamic_variables: { name: "John", account_id: "123" }
60
+ }
61
+ }
62
+ ],
63
+ response_format: ResponseFormat.MARKDOWN
64
+ });
65
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
66
+ data: expect.objectContaining({
67
+ recipients: expect.arrayContaining([
68
+ expect.objectContaining({
69
+ conversation_initiation_client_data: expect.objectContaining({
70
+ dynamic_variables: { name: "John", account_id: "123" }
71
+ })
72
+ })
73
+ ])
74
+ })
75
+ }));
76
+ });
77
+ it("should submit scheduled batch call", async () => {
78
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCall });
79
+ await elevenlabs_submit_batch_call.handler({
80
+ call_name: "Scheduled Survey",
81
+ agent_id: "ag_test123",
82
+ recipients: [{ phone_number: "+14155551234" }],
83
+ scheduled_time_unix: 1705400000,
84
+ response_format: ResponseFormat.MARKDOWN
85
+ });
86
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
87
+ data: expect.objectContaining({
88
+ scheduled_time_unix: 1705400000
89
+ })
90
+ }));
91
+ });
92
+ it("should submit batch call with specific phone number ID", async () => {
93
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCall });
94
+ await elevenlabs_submit_batch_call.handler({
95
+ call_name: "Test Batch",
96
+ agent_id: "ag_test123",
97
+ recipients: [{ phone_number: "+14155551234" }],
98
+ agent_phone_number_id: "pn_specific123",
99
+ response_format: ResponseFormat.MARKDOWN
100
+ });
101
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
102
+ data: expect.objectContaining({
103
+ agent_phone_number_id: "pn_specific123"
104
+ })
105
+ }));
106
+ });
107
+ it("should return JSON format", async () => {
108
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCall });
109
+ const result = await elevenlabs_submit_batch_call.handler({
110
+ call_name: "Test Batch",
111
+ agent_id: "ag_test123",
112
+ recipients: [{ phone_number: "+14155551234" }],
113
+ response_format: ResponseFormat.JSON
114
+ });
115
+ const parsed = JSON.parse(result.content[0].text);
116
+ expect(parsed.id).toBe("batch_test123");
117
+ });
118
+ it("should validate empty recipients array", async () => {
119
+ await expect(elevenlabs_submit_batch_call.handler({
120
+ call_name: "Test Batch",
121
+ agent_id: "ag_test123",
122
+ recipients: [],
123
+ response_format: ResponseFormat.MARKDOWN
124
+ })).rejects.toThrow();
125
+ });
126
+ it("should validate phone number format", async () => {
127
+ await expect(elevenlabs_submit_batch_call.handler({
128
+ call_name: "Test Batch",
129
+ agent_id: "ag_test123",
130
+ recipients: [{ phone_number: "invalid-phone" }],
131
+ response_format: ResponseFormat.MARKDOWN
132
+ })).rejects.toThrow();
133
+ });
134
+ });
135
+ describe("elevenlabs_list_batch_calls", () => {
136
+ it("should have correct tool metadata", () => {
137
+ expect(elevenlabs_list_batch_calls.name).toBe("elevenlabs_list_batch_calls");
138
+ expect(elevenlabs_list_batch_calls.annotations?.readOnlyHint).toBe(true);
139
+ });
140
+ it("should list batch calls with default pagination", async () => {
141
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCallsList });
142
+ const result = await elevenlabs_list_batch_calls.handler({
143
+ response_format: ResponseFormat.MARKDOWN
144
+ });
145
+ expect(result.content[0].text).toContain("Batch Calls");
146
+ expect(result.content[0].text).toContain("Q4 Customer Survey");
147
+ });
148
+ it("should list batch calls with custom limit", async () => {
149
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCallsList });
150
+ await elevenlabs_list_batch_calls.handler({
151
+ limit: 50,
152
+ response_format: ResponseFormat.MARKDOWN
153
+ });
154
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
155
+ params: expect.objectContaining({ limit: 50 })
156
+ }));
157
+ });
158
+ it("should support cursor-based pagination", async () => {
159
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCallsList });
160
+ await elevenlabs_list_batch_calls.handler({
161
+ limit: 20,
162
+ last_doc: "cursor_abc123",
163
+ response_format: ResponseFormat.MARKDOWN
164
+ });
165
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
166
+ params: expect.objectContaining({ last_doc: "cursor_abc123" })
167
+ }));
168
+ });
169
+ it("should return JSON format", async () => {
170
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCallsList });
171
+ const result = await elevenlabs_list_batch_calls.handler({
172
+ response_format: ResponseFormat.JSON
173
+ });
174
+ const parsed = JSON.parse(result.content[0].text);
175
+ expect(parsed.batch_calls).toHaveLength(1);
176
+ expect(parsed.has_more).toBe(true);
177
+ });
178
+ it("should handle empty batch list", async () => {
179
+ mockedAxios.mockResolvedValueOnce({
180
+ data: { batch_calls: [], next_doc: null, has_more: false }
181
+ });
182
+ const result = await elevenlabs_list_batch_calls.handler({
183
+ response_format: ResponseFormat.MARKDOWN
184
+ });
185
+ expect(result.content[0].text).toContain("No batch calling jobs found");
186
+ });
187
+ });
188
+ describe("elevenlabs_get_batch_call", () => {
189
+ it("should have correct tool metadata", () => {
190
+ expect(elevenlabs_get_batch_call.name).toBe("elevenlabs_get_batch_call");
191
+ expect(elevenlabs_get_batch_call.annotations?.readOnlyHint).toBe(true);
192
+ });
193
+ it("should get batch call details", async () => {
194
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCallDetailed });
195
+ const result = await elevenlabs_get_batch_call.handler({
196
+ batch_id: "batch_test123",
197
+ response_format: ResponseFormat.MARKDOWN
198
+ });
199
+ expect(result.content[0].text).toContain("Q4 Customer Survey");
200
+ expect(result.content[0].text).toContain("Recipients");
201
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
202
+ method: "GET",
203
+ url: expect.stringContaining("/convai/batch-calling/batch_test123")
204
+ }));
205
+ });
206
+ it("should return JSON format with recipient details", async () => {
207
+ mockedAxios.mockResolvedValueOnce({ data: mockBatchCallDetailed });
208
+ const result = await elevenlabs_get_batch_call.handler({
209
+ batch_id: "batch_test123",
210
+ response_format: ResponseFormat.JSON
211
+ });
212
+ const parsed = JSON.parse(result.content[0].text);
213
+ expect(parsed.recipients).toHaveLength(3);
214
+ expect(parsed.recipients[0].status).toBe("completed");
215
+ });
216
+ it("should handle API error for non-existent batch", async () => {
217
+ const error = {
218
+ response: { status: 404, data: { detail: "Batch not found" } },
219
+ isAxiosError: true
220
+ };
221
+ mockedAxios.mockRejectedValueOnce(error);
222
+ vi.mocked(axios.isAxiosError).mockReturnValue(true);
223
+ await expect(elevenlabs_get_batch_call.handler({
224
+ batch_id: "batch_nonexistent",
225
+ response_format: ResponseFormat.MARKDOWN
226
+ })).rejects.toThrow("not found");
227
+ });
228
+ it("should validate batch_id format", async () => {
229
+ await expect(elevenlabs_get_batch_call.handler({
230
+ batch_id: "",
231
+ response_format: ResponseFormat.MARKDOWN
232
+ })).rejects.toThrow();
233
+ });
234
+ });
235
+ });
236
+ //# sourceMappingURL=batch-calling-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-calling-tools.test.js","sourceRoot":"","sources":["../../../src/__tests__/tools/batch-calling-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tests for conversation retrieval tools
3
+ *
4
+ * Tests conversation listing and transcript retrieval.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=conversation-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-tools.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/tools/conversation-tools.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}