mcp-twake-mail 0.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 (114) hide show
  1. package/LICENSE +663 -0
  2. package/README.md +332 -0
  3. package/build/auth/index.d.ts +3 -0
  4. package/build/auth/index.js +4 -0
  5. package/build/auth/index.js.map +1 -0
  6. package/build/auth/oidc-flow.d.ts +47 -0
  7. package/build/auth/oidc-flow.js +146 -0
  8. package/build/auth/oidc-flow.js.map +1 -0
  9. package/build/auth/token-refresh.d.ts +56 -0
  10. package/build/auth/token-refresh.js +132 -0
  11. package/build/auth/token-refresh.js.map +1 -0
  12. package/build/auth/token-store.d.ts +33 -0
  13. package/build/auth/token-store.js +63 -0
  14. package/build/auth/token-store.js.map +1 -0
  15. package/build/cli/commands/auth.d.ts +5 -0
  16. package/build/cli/commands/auth.js +49 -0
  17. package/build/cli/commands/auth.js.map +1 -0
  18. package/build/cli/commands/check.d.ts +4 -0
  19. package/build/cli/commands/check.js +125 -0
  20. package/build/cli/commands/check.js.map +1 -0
  21. package/build/cli/commands/setup.d.ts +4 -0
  22. package/build/cli/commands/setup.js +172 -0
  23. package/build/cli/commands/setup.js.map +1 -0
  24. package/build/cli/index.d.ts +15 -0
  25. package/build/cli/index.js +56 -0
  26. package/build/cli/index.js.map +1 -0
  27. package/build/cli/prompts/setup-wizard.d.ts +38 -0
  28. package/build/cli/prompts/setup-wizard.js +121 -0
  29. package/build/cli/prompts/setup-wizard.js.map +1 -0
  30. package/build/config/__tests__/logger.test.d.ts +1 -0
  31. package/build/config/__tests__/logger.test.js +28 -0
  32. package/build/config/__tests__/logger.test.js.map +1 -0
  33. package/build/config/__tests__/schema.test.d.ts +1 -0
  34. package/build/config/__tests__/schema.test.js +101 -0
  35. package/build/config/__tests__/schema.test.js.map +1 -0
  36. package/build/config/logger.d.ts +3 -0
  37. package/build/config/logger.js +9 -0
  38. package/build/config/logger.js.map +1 -0
  39. package/build/config/schema.d.ts +28 -0
  40. package/build/config/schema.js +81 -0
  41. package/build/config/schema.js.map +1 -0
  42. package/build/errors.d.ts +34 -0
  43. package/build/errors.js +154 -0
  44. package/build/errors.js.map +1 -0
  45. package/build/errors.test.d.ts +1 -0
  46. package/build/errors.test.js +234 -0
  47. package/build/errors.test.js.map +1 -0
  48. package/build/index.d.ts +2 -0
  49. package/build/index.js +12 -0
  50. package/build/index.js.map +1 -0
  51. package/build/jmap/client.d.ts +96 -0
  52. package/build/jmap/client.js +267 -0
  53. package/build/jmap/client.js.map +1 -0
  54. package/build/mcp/server.d.ts +24 -0
  55. package/build/mcp/server.js +68 -0
  56. package/build/mcp/server.js.map +1 -0
  57. package/build/mcp/tools/attachment.d.ts +30 -0
  58. package/build/mcp/tools/attachment.js +246 -0
  59. package/build/mcp/tools/attachment.js.map +1 -0
  60. package/build/mcp/tools/attachment.test.d.ts +1 -0
  61. package/build/mcp/tools/attachment.test.js +457 -0
  62. package/build/mcp/tools/attachment.test.js.map +1 -0
  63. package/build/mcp/tools/email-operations.d.ts +10 -0
  64. package/build/mcp/tools/email-operations.js +828 -0
  65. package/build/mcp/tools/email-operations.js.map +1 -0
  66. package/build/mcp/tools/email-operations.test.d.ts +1 -0
  67. package/build/mcp/tools/email-operations.test.js +453 -0
  68. package/build/mcp/tools/email-operations.test.js.map +1 -0
  69. package/build/mcp/tools/email-sending.d.ts +10 -0
  70. package/build/mcp/tools/email-sending.js +682 -0
  71. package/build/mcp/tools/email-sending.js.map +1 -0
  72. package/build/mcp/tools/email.d.ts +10 -0
  73. package/build/mcp/tools/email.js +365 -0
  74. package/build/mcp/tools/email.js.map +1 -0
  75. package/build/mcp/tools/email.test.d.ts +1 -0
  76. package/build/mcp/tools/email.test.js +332 -0
  77. package/build/mcp/tools/email.test.js.map +1 -0
  78. package/build/mcp/tools/index.d.ts +14 -0
  79. package/build/mcp/tools/index.js +29 -0
  80. package/build/mcp/tools/index.js.map +1 -0
  81. package/build/mcp/tools/mailbox.d.ts +10 -0
  82. package/build/mcp/tools/mailbox.js +195 -0
  83. package/build/mcp/tools/mailbox.js.map +1 -0
  84. package/build/mcp/tools/mailbox.test.d.ts +1 -0
  85. package/build/mcp/tools/mailbox.test.js +231 -0
  86. package/build/mcp/tools/mailbox.test.js.map +1 -0
  87. package/build/mcp/tools/thread.d.ts +10 -0
  88. package/build/mcp/tools/thread.js +282 -0
  89. package/build/mcp/tools/thread.js.map +1 -0
  90. package/build/mcp/tools/thread.test.d.ts +1 -0
  91. package/build/mcp/tools/thread.test.js +384 -0
  92. package/build/mcp/tools/thread.test.js.map +1 -0
  93. package/build/transformers/__tests__/email.test.d.ts +1 -0
  94. package/build/transformers/__tests__/email.test.js +438 -0
  95. package/build/transformers/__tests__/email.test.js.map +1 -0
  96. package/build/transformers/__tests__/mailbox.test.d.ts +1 -0
  97. package/build/transformers/__tests__/mailbox.test.js +222 -0
  98. package/build/transformers/__tests__/mailbox.test.js.map +1 -0
  99. package/build/transformers/email.d.ts +76 -0
  100. package/build/transformers/email.js +138 -0
  101. package/build/transformers/email.js.map +1 -0
  102. package/build/transformers/index.d.ts +5 -0
  103. package/build/transformers/index.js +6 -0
  104. package/build/transformers/index.js.map +1 -0
  105. package/build/transformers/mailbox.d.ts +43 -0
  106. package/build/transformers/mailbox.js +70 -0
  107. package/build/transformers/mailbox.js.map +1 -0
  108. package/build/types/dto.d.ts +91 -0
  109. package/build/types/dto.js +9 -0
  110. package/build/types/dto.js.map +1 -0
  111. package/build/types/jmap.d.ts +110 -0
  112. package/build/types/jmap.js +5 -0
  113. package/build/types/jmap.js.map +1 -0
  114. package/package.json +71 -0
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,457 @@
1
+ /**
2
+ * Tests for attachment MCP tool - get_attachments.
3
+ */
4
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
5
+ import { registerAttachmentTools, isInlineAttachment } from './attachment.js';
6
+ describe('isInlineAttachment', () => {
7
+ it('returns true when has cid and disposition is null', () => {
8
+ expect(isInlineAttachment({ cid: 'img123', disposition: null })).toBe(true);
9
+ });
10
+ it('returns true when has cid and disposition is undefined', () => {
11
+ expect(isInlineAttachment({ cid: 'img123' })).toBe(true);
12
+ });
13
+ it('returns true when has cid and disposition is inline', () => {
14
+ expect(isInlineAttachment({ cid: 'img123', disposition: 'inline' })).toBe(true);
15
+ });
16
+ it('returns false when has cid but disposition is attachment', () => {
17
+ expect(isInlineAttachment({ cid: 'img123', disposition: 'attachment' })).toBe(false);
18
+ });
19
+ it('returns false when no cid (even if disposition is inline)', () => {
20
+ expect(isInlineAttachment({ disposition: 'inline' })).toBe(false);
21
+ });
22
+ it('returns false when no cid and disposition is attachment', () => {
23
+ expect(isInlineAttachment({ disposition: 'attachment' })).toBe(false);
24
+ });
25
+ it('returns false when both cid and disposition are undefined', () => {
26
+ expect(isInlineAttachment({})).toBe(false);
27
+ });
28
+ it('returns false when cid is empty string', () => {
29
+ expect(isInlineAttachment({ cid: '', disposition: 'inline' })).toBe(false);
30
+ });
31
+ });
32
+ describe('registerAttachmentTools', () => {
33
+ let mockServer;
34
+ let mockJmapClient;
35
+ let mockLogger;
36
+ let registeredTools;
37
+ beforeEach(() => {
38
+ registeredTools = new Map();
39
+ // Mock MCP server
40
+ mockServer = {
41
+ registerTool: vi.fn((name, _options, handler) => {
42
+ registeredTools.set(name, handler);
43
+ }),
44
+ };
45
+ // Mock JMAP client
46
+ mockJmapClient = {
47
+ getSession: vi.fn(() => ({ accountId: 'account-1', apiUrl: 'https://jmap.example.com/api' })),
48
+ request: vi.fn(),
49
+ parseMethodResponse: vi.fn(),
50
+ };
51
+ // Mock logger (silent)
52
+ mockLogger = {
53
+ debug: vi.fn(),
54
+ info: vi.fn(),
55
+ warn: vi.fn(),
56
+ error: vi.fn(),
57
+ };
58
+ // Register all tools
59
+ registerAttachmentTools(mockServer, mockJmapClient, mockLogger);
60
+ });
61
+ describe('get_attachments', () => {
62
+ it('returns multiple attachments with mixed inline/regular types', async () => {
63
+ vi.mocked(mockJmapClient.request).mockResolvedValue({
64
+ methodResponses: [
65
+ [
66
+ 'Email/get',
67
+ {
68
+ accountId: 'account-1',
69
+ list: [
70
+ {
71
+ id: 'email-1',
72
+ attachments: [
73
+ {
74
+ blobId: 'blob-1',
75
+ name: 'document.pdf',
76
+ type: 'application/pdf',
77
+ size: 102400,
78
+ disposition: 'attachment',
79
+ cid: null,
80
+ },
81
+ {
82
+ blobId: 'blob-2',
83
+ name: 'logo.png',
84
+ type: 'image/png',
85
+ size: 5120,
86
+ disposition: 'inline',
87
+ cid: 'logo123',
88
+ },
89
+ {
90
+ blobId: 'blob-3',
91
+ name: 'photo.jpg',
92
+ type: 'image/jpeg',
93
+ size: 25600,
94
+ disposition: null,
95
+ cid: null,
96
+ },
97
+ ],
98
+ },
99
+ ],
100
+ },
101
+ 'getAttachments',
102
+ ],
103
+ ],
104
+ });
105
+ vi.mocked(mockJmapClient.parseMethodResponse).mockReturnValue({
106
+ success: true,
107
+ data: {
108
+ accountId: 'account-1',
109
+ list: [
110
+ {
111
+ id: 'email-1',
112
+ attachments: [
113
+ {
114
+ blobId: 'blob-1',
115
+ name: 'document.pdf',
116
+ type: 'application/pdf',
117
+ size: 102400,
118
+ disposition: 'attachment',
119
+ cid: null,
120
+ },
121
+ {
122
+ blobId: 'blob-2',
123
+ name: 'logo.png',
124
+ type: 'image/png',
125
+ size: 5120,
126
+ disposition: 'inline',
127
+ cid: 'logo123',
128
+ },
129
+ {
130
+ blobId: 'blob-3',
131
+ name: 'photo.jpg',
132
+ type: 'image/jpeg',
133
+ size: 25600,
134
+ disposition: null,
135
+ cid: null,
136
+ },
137
+ ],
138
+ },
139
+ ],
140
+ },
141
+ });
142
+ const handler = registeredTools.get('get_attachments');
143
+ const result = await handler({ emailId: 'email-1' });
144
+ expect(result.isError).toBeUndefined();
145
+ const parsed = JSON.parse(result.content[0].text);
146
+ expect(parsed.emailId).toBe('email-1');
147
+ expect(parsed.total).toBe(3);
148
+ expect(parsed.filtered).toBe(3);
149
+ expect(parsed.attachments).toHaveLength(3);
150
+ // Check isInline detection
151
+ expect(parsed.attachments[0].isInline).toBe(false); // PDF with disposition=attachment
152
+ expect(parsed.attachments[1].isInline).toBe(true); // PNG with cid and disposition=inline
153
+ expect(parsed.attachments[2].isInline).toBe(false); // JPG with no cid
154
+ });
155
+ it('returns empty array when email has no attachments', async () => {
156
+ vi.mocked(mockJmapClient.request).mockResolvedValue({
157
+ methodResponses: [
158
+ [
159
+ 'Email/get',
160
+ {
161
+ accountId: 'account-1',
162
+ list: [{ id: 'email-1', attachments: [] }],
163
+ },
164
+ 'getAttachments',
165
+ ],
166
+ ],
167
+ });
168
+ vi.mocked(mockJmapClient.parseMethodResponse).mockReturnValue({
169
+ success: true,
170
+ data: {
171
+ accountId: 'account-1',
172
+ list: [{ id: 'email-1', attachments: [] }],
173
+ },
174
+ });
175
+ const handler = registeredTools.get('get_attachments');
176
+ const result = await handler({ emailId: 'email-1' });
177
+ expect(result.isError).toBeUndefined();
178
+ const parsed = JSON.parse(result.content[0].text);
179
+ expect(parsed.attachments).toEqual([]);
180
+ expect(parsed.total).toBe(0);
181
+ expect(parsed.filtered).toBe(0);
182
+ });
183
+ it('returns empty array when attachments property is undefined', async () => {
184
+ vi.mocked(mockJmapClient.request).mockResolvedValue({
185
+ methodResponses: [
186
+ [
187
+ 'Email/get',
188
+ {
189
+ accountId: 'account-1',
190
+ list: [{ id: 'email-1' }], // No attachments property
191
+ },
192
+ 'getAttachments',
193
+ ],
194
+ ],
195
+ });
196
+ vi.mocked(mockJmapClient.parseMethodResponse).mockReturnValue({
197
+ success: true,
198
+ data: {
199
+ accountId: 'account-1',
200
+ list: [{ id: 'email-1' }],
201
+ },
202
+ });
203
+ const handler = registeredTools.get('get_attachments');
204
+ const result = await handler({ emailId: 'email-1' });
205
+ expect(result.isError).toBeUndefined();
206
+ const parsed = JSON.parse(result.content[0].text);
207
+ expect(parsed.attachments).toEqual([]);
208
+ expect(parsed.total).toBe(0);
209
+ });
210
+ it('returns error when email is not found', async () => {
211
+ vi.mocked(mockJmapClient.request).mockResolvedValue({
212
+ methodResponses: [
213
+ [
214
+ 'Email/get',
215
+ {
216
+ accountId: 'account-1',
217
+ list: [],
218
+ notFound: ['email-999'],
219
+ },
220
+ 'getAttachments',
221
+ ],
222
+ ],
223
+ });
224
+ vi.mocked(mockJmapClient.parseMethodResponse).mockReturnValue({
225
+ success: true,
226
+ data: {
227
+ accountId: 'account-1',
228
+ list: [],
229
+ notFound: ['email-999'],
230
+ },
231
+ });
232
+ const handler = registeredTools.get('get_attachments');
233
+ const result = await handler({ emailId: 'email-999' });
234
+ expect(result.isError).toBe(true);
235
+ expect(result.content[0].text).toBe('Email not found: email-999');
236
+ });
237
+ it('returns error on JMAP method error', async () => {
238
+ vi.mocked(mockJmapClient.request).mockResolvedValue({
239
+ methodResponses: [['error', { type: 'serverError', description: 'Internal error' }, 'getAttachments']],
240
+ });
241
+ vi.mocked(mockJmapClient.parseMethodResponse).mockReturnValue({
242
+ success: false,
243
+ error: { type: 'serverError', description: 'Internal error' },
244
+ });
245
+ const handler = registeredTools.get('get_attachments');
246
+ const result = await handler({ emailId: 'email-1' });
247
+ expect(result.isError).toBe(true);
248
+ expect(result.content[0].text).toContain('Failed to retrieve attachments');
249
+ expect(result.content[0].text).toContain('Internal error');
250
+ });
251
+ });
252
+ describe('excludeInline filter', () => {
253
+ beforeEach(() => {
254
+ vi.mocked(mockJmapClient.request).mockResolvedValue({
255
+ methodResponses: [
256
+ [
257
+ 'Email/get',
258
+ {
259
+ accountId: 'account-1',
260
+ list: [
261
+ {
262
+ id: 'email-1',
263
+ attachments: [
264
+ {
265
+ blobId: 'blob-1',
266
+ name: 'document.pdf',
267
+ type: 'application/pdf',
268
+ size: 102400,
269
+ disposition: 'attachment',
270
+ cid: null,
271
+ },
272
+ {
273
+ blobId: 'blob-2',
274
+ name: 'inline-image.png',
275
+ type: 'image/png',
276
+ size: 5120,
277
+ disposition: 'inline',
278
+ cid: 'img123',
279
+ },
280
+ ],
281
+ },
282
+ ],
283
+ },
284
+ 'getAttachments',
285
+ ],
286
+ ],
287
+ });
288
+ vi.mocked(mockJmapClient.parseMethodResponse).mockReturnValue({
289
+ success: true,
290
+ data: {
291
+ accountId: 'account-1',
292
+ list: [
293
+ {
294
+ id: 'email-1',
295
+ attachments: [
296
+ {
297
+ blobId: 'blob-1',
298
+ name: 'document.pdf',
299
+ type: 'application/pdf',
300
+ size: 102400,
301
+ disposition: 'attachment',
302
+ cid: null,
303
+ },
304
+ {
305
+ blobId: 'blob-2',
306
+ name: 'inline-image.png',
307
+ type: 'image/png',
308
+ size: 5120,
309
+ disposition: 'inline',
310
+ cid: 'img123',
311
+ },
312
+ ],
313
+ },
314
+ ],
315
+ },
316
+ });
317
+ });
318
+ it('excludes inline attachments when excludeInline is true', async () => {
319
+ const handler = registeredTools.get('get_attachments');
320
+ const result = await handler({ emailId: 'email-1', excludeInline: true });
321
+ const parsed = JSON.parse(result.content[0].text);
322
+ expect(parsed.total).toBe(2);
323
+ expect(parsed.filtered).toBe(1);
324
+ expect(parsed.attachments).toHaveLength(1);
325
+ expect(parsed.attachments[0].name).toBe('document.pdf');
326
+ });
327
+ it('includes all attachments when excludeInline is false', async () => {
328
+ const handler = registeredTools.get('get_attachments');
329
+ const result = await handler({ emailId: 'email-1', excludeInline: false });
330
+ const parsed = JSON.parse(result.content[0].text);
331
+ expect(parsed.total).toBe(2);
332
+ expect(parsed.filtered).toBe(2);
333
+ expect(parsed.attachments).toHaveLength(2);
334
+ });
335
+ });
336
+ describe('mimeTypeFilter', () => {
337
+ beforeEach(() => {
338
+ vi.mocked(mockJmapClient.request).mockResolvedValue({
339
+ methodResponses: [
340
+ [
341
+ 'Email/get',
342
+ {
343
+ accountId: 'account-1',
344
+ list: [
345
+ {
346
+ id: 'email-1',
347
+ attachments: [
348
+ { blobId: 'blob-1', name: 'doc.pdf', type: 'application/pdf', size: 1000 },
349
+ { blobId: 'blob-2', name: 'photo.jpg', type: 'image/jpeg', size: 2000 },
350
+ { blobId: 'blob-3', name: 'logo.png', type: 'image/png', size: 3000 },
351
+ { blobId: 'blob-4', name: 'data.xlsx', type: 'application/vnd.ms-excel', size: 4000 },
352
+ ],
353
+ },
354
+ ],
355
+ },
356
+ 'getAttachments',
357
+ ],
358
+ ],
359
+ });
360
+ vi.mocked(mockJmapClient.parseMethodResponse).mockReturnValue({
361
+ success: true,
362
+ data: {
363
+ accountId: 'account-1',
364
+ list: [
365
+ {
366
+ id: 'email-1',
367
+ attachments: [
368
+ { blobId: 'blob-1', name: 'doc.pdf', type: 'application/pdf', size: 1000 },
369
+ { blobId: 'blob-2', name: 'photo.jpg', type: 'image/jpeg', size: 2000 },
370
+ { blobId: 'blob-3', name: 'logo.png', type: 'image/png', size: 3000 },
371
+ { blobId: 'blob-4', name: 'data.xlsx', type: 'application/vnd.ms-excel', size: 4000 },
372
+ ],
373
+ },
374
+ ],
375
+ },
376
+ });
377
+ });
378
+ it('filters by MIME type prefix (image/)', async () => {
379
+ const handler = registeredTools.get('get_attachments');
380
+ const result = await handler({ emailId: 'email-1', mimeTypeFilter: 'image/' });
381
+ const parsed = JSON.parse(result.content[0].text);
382
+ expect(parsed.total).toBe(4);
383
+ expect(parsed.filtered).toBe(2);
384
+ expect(parsed.attachments.map((a) => a.name)).toEqual(['photo.jpg', 'logo.png']);
385
+ });
386
+ it('filters by exact MIME type (application/pdf)', async () => {
387
+ const handler = registeredTools.get('get_attachments');
388
+ const result = await handler({ emailId: 'email-1', mimeTypeFilter: 'application/pdf' });
389
+ const parsed = JSON.parse(result.content[0].text);
390
+ expect(parsed.total).toBe(4);
391
+ expect(parsed.filtered).toBe(1);
392
+ expect(parsed.attachments[0].name).toBe('doc.pdf');
393
+ });
394
+ it('returns all attachments when no filter provided', async () => {
395
+ const handler = registeredTools.get('get_attachments');
396
+ const result = await handler({ emailId: 'email-1' });
397
+ const parsed = JSON.parse(result.content[0].text);
398
+ expect(parsed.total).toBe(4);
399
+ expect(parsed.filtered).toBe(4);
400
+ });
401
+ });
402
+ describe('combined filters', () => {
403
+ it('applies both excludeInline and mimeTypeFilter together', async () => {
404
+ vi.mocked(mockJmapClient.request).mockResolvedValue({
405
+ methodResponses: [
406
+ [
407
+ 'Email/get',
408
+ {
409
+ accountId: 'account-1',
410
+ list: [
411
+ {
412
+ id: 'email-1',
413
+ attachments: [
414
+ { blobId: 'blob-1', name: 'doc.pdf', type: 'application/pdf', size: 1000 },
415
+ { blobId: 'blob-2', name: 'inline-logo.png', type: 'image/png', size: 2000, cid: 'logo', disposition: 'inline' },
416
+ { blobId: 'blob-3', name: 'attached-photo.jpg', type: 'image/jpeg', size: 3000 },
417
+ ],
418
+ },
419
+ ],
420
+ },
421
+ 'getAttachments',
422
+ ],
423
+ ],
424
+ });
425
+ vi.mocked(mockJmapClient.parseMethodResponse).mockReturnValue({
426
+ success: true,
427
+ data: {
428
+ accountId: 'account-1',
429
+ list: [
430
+ {
431
+ id: 'email-1',
432
+ attachments: [
433
+ { blobId: 'blob-1', name: 'doc.pdf', type: 'application/pdf', size: 1000 },
434
+ { blobId: 'blob-2', name: 'inline-logo.png', type: 'image/png', size: 2000, cid: 'logo', disposition: 'inline' },
435
+ { blobId: 'blob-3', name: 'attached-photo.jpg', type: 'image/jpeg', size: 3000 },
436
+ ],
437
+ },
438
+ ],
439
+ },
440
+ });
441
+ const handler = registeredTools.get('get_attachments');
442
+ const result = await handler({ emailId: 'email-1', excludeInline: true, mimeTypeFilter: 'image/' });
443
+ const parsed = JSON.parse(result.content[0].text);
444
+ expect(parsed.total).toBe(3);
445
+ expect(parsed.filtered).toBe(1); // Only non-inline image
446
+ expect(parsed.attachments[0].name).toBe('attached-photo.jpg');
447
+ });
448
+ });
449
+ describe('tool registration', () => {
450
+ it('registers get_attachments tool', () => {
451
+ expect(registeredTools.has('get_attachments')).toBe(true);
452
+ expect(registeredTools.has('download_attachment')).toBe(true);
453
+ expect(registeredTools.size).toBe(2);
454
+ });
455
+ });
456
+ });
457
+ //# sourceMappingURL=attachment.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment.test.js","sourceRoot":"","sources":["../../../src/mcp/tools/attachment.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { JMAPClient } from '../../jmap/client.js';
3
+ import type { Logger } from '../../config/logger.js';
4
+ /**
5
+ * Register email operation MCP tools with the server.
6
+ * @param server MCP server instance
7
+ * @param jmapClient JMAP client for API calls
8
+ * @param logger Pino logger
9
+ */
10
+ export declare function registerEmailOperationTools(server: McpServer, jmapClient: JMAPClient, logger: Logger): void;