@mcp-z/mcp-outlook 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 (300) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/bin/server.js +5 -0
  4. package/dist/cjs/constants.d.cts +10 -0
  5. package/dist/cjs/constants.d.ts +10 -0
  6. package/dist/cjs/constants.js +35 -0
  7. package/dist/cjs/constants.js.map +1 -0
  8. package/dist/cjs/email/composition/outlook-message-builder.d.cts +36 -0
  9. package/dist/cjs/email/composition/outlook-message-builder.d.ts +36 -0
  10. package/dist/cjs/email/composition/outlook-message-builder.js +56 -0
  11. package/dist/cjs/email/composition/outlook-message-builder.js.map +1 -0
  12. package/dist/cjs/email/messages/messages.d.cts +7 -0
  13. package/dist/cjs/email/messages/messages.d.ts +7 -0
  14. package/dist/cjs/email/messages/messages.js +61 -0
  15. package/dist/cjs/email/messages/messages.js.map +1 -0
  16. package/dist/cjs/email/parsing/header-parsing.d.cts +18 -0
  17. package/dist/cjs/email/parsing/header-parsing.d.ts +18 -0
  18. package/dist/cjs/email/parsing/header-parsing.js +42 -0
  19. package/dist/cjs/email/parsing/header-parsing.js.map +1 -0
  20. package/dist/cjs/email/parsing/message-extraction.d.cts +4 -0
  21. package/dist/cjs/email/parsing/message-extraction.d.ts +4 -0
  22. package/dist/cjs/email/parsing/message-extraction.js +192 -0
  23. package/dist/cjs/email/parsing/message-extraction.js.map +1 -0
  24. package/dist/cjs/email/parsing/message-mapping.d.cts +21 -0
  25. package/dist/cjs/email/parsing/message-mapping.d.ts +21 -0
  26. package/dist/cjs/email/parsing/message-mapping.js +47 -0
  27. package/dist/cjs/email/parsing/message-mapping.js.map +1 -0
  28. package/dist/cjs/email/querying/execute-query.d.cts +20 -0
  29. package/dist/cjs/email/querying/execute-query.d.ts +20 -0
  30. package/dist/cjs/email/querying/execute-query.js +268 -0
  31. package/dist/cjs/email/querying/execute-query.js.map +1 -0
  32. package/dist/cjs/email/querying/query-builder.d.cts +32 -0
  33. package/dist/cjs/email/querying/query-builder.d.ts +32 -0
  34. package/dist/cjs/email/querying/query-builder.js +528 -0
  35. package/dist/cjs/email/querying/query-builder.js.map +1 -0
  36. package/dist/cjs/email/querying/search-execution.d.cts +24 -0
  37. package/dist/cjs/email/querying/search-execution.d.ts +24 -0
  38. package/dist/cjs/email/querying/search-execution.js +261 -0
  39. package/dist/cjs/email/querying/search-execution.js.map +1 -0
  40. package/dist/cjs/index.d.cts +8 -0
  41. package/dist/cjs/index.d.ts +8 -0
  42. package/dist/cjs/index.js +314 -0
  43. package/dist/cjs/index.js.map +1 -0
  44. package/dist/cjs/lib/create-store.d.cts +2 -0
  45. package/dist/cjs/lib/create-store.d.ts +2 -0
  46. package/dist/cjs/lib/create-store.js +166 -0
  47. package/dist/cjs/lib/create-store.js.map +1 -0
  48. package/dist/cjs/lib/messages-to-row.d.cts +39 -0
  49. package/dist/cjs/lib/messages-to-row.d.ts +39 -0
  50. package/dist/cjs/lib/messages-to-row.js +177 -0
  51. package/dist/cjs/lib/messages-to-row.js.map +1 -0
  52. package/dist/cjs/lib/outlook/index.d.cts +7 -0
  53. package/dist/cjs/lib/outlook/index.d.ts +7 -0
  54. package/dist/cjs/lib/outlook/index.js +56 -0
  55. package/dist/cjs/lib/outlook/index.js.map +1 -0
  56. package/dist/cjs/lib/outlook/types.d.cts +22 -0
  57. package/dist/cjs/lib/outlook/types.d.ts +22 -0
  58. package/dist/cjs/lib/outlook/types.js +6 -0
  59. package/dist/cjs/lib/outlook/types.js.map +1 -0
  60. package/dist/cjs/mcp/index.d.cts +3 -0
  61. package/dist/cjs/mcp/index.d.ts +3 -0
  62. package/dist/cjs/mcp/index.js +66 -0
  63. package/dist/cjs/mcp/index.js.map +1 -0
  64. package/dist/cjs/mcp/prompts/draft-email.d.cts +30 -0
  65. package/dist/cjs/mcp/prompts/draft-email.d.ts +30 -0
  66. package/dist/cjs/mcp/prompts/draft-email.js +184 -0
  67. package/dist/cjs/mcp/prompts/draft-email.js.map +1 -0
  68. package/dist/cjs/mcp/prompts/index.d.cts +2 -0
  69. package/dist/cjs/mcp/prompts/index.d.ts +2 -0
  70. package/dist/cjs/mcp/prompts/index.js +26 -0
  71. package/dist/cjs/mcp/prompts/index.js.map +1 -0
  72. package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
  73. package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
  74. package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
  75. package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
  76. package/dist/cjs/mcp/resources/email.d.cts +11 -0
  77. package/dist/cjs/mcp/resources/email.d.ts +11 -0
  78. package/dist/cjs/mcp/resources/email.js +233 -0
  79. package/dist/cjs/mcp/resources/email.js.map +1 -0
  80. package/dist/cjs/mcp/resources/index.d.cts +1 -0
  81. package/dist/cjs/mcp/resources/index.d.ts +1 -0
  82. package/dist/cjs/mcp/resources/index.js +17 -0
  83. package/dist/cjs/mcp/resources/index.js.map +1 -0
  84. package/dist/cjs/mcp/tools/categories-list.d.cts +96 -0
  85. package/dist/cjs/mcp/tools/categories-list.d.ts +96 -0
  86. package/dist/cjs/mcp/tools/categories-list.js +252 -0
  87. package/dist/cjs/mcp/tools/categories-list.js.map +1 -0
  88. package/dist/cjs/mcp/tools/index.d.cts +11 -0
  89. package/dist/cjs/mcp/tools/index.d.ts +11 -0
  90. package/dist/cjs/mcp/tools/index.js +62 -0
  91. package/dist/cjs/mcp/tools/index.js.map +1 -0
  92. package/dist/cjs/mcp/tools/label-add.d.cts +44 -0
  93. package/dist/cjs/mcp/tools/label-add.d.ts +44 -0
  94. package/dist/cjs/mcp/tools/label-add.js +249 -0
  95. package/dist/cjs/mcp/tools/label-add.js.map +1 -0
  96. package/dist/cjs/mcp/tools/label-delete.d.cts +54 -0
  97. package/dist/cjs/mcp/tools/label-delete.d.ts +54 -0
  98. package/dist/cjs/mcp/tools/label-delete.js +497 -0
  99. package/dist/cjs/mcp/tools/label-delete.js.map +1 -0
  100. package/dist/cjs/mcp/tools/labels-list.d.cts +96 -0
  101. package/dist/cjs/mcp/tools/labels-list.d.ts +96 -0
  102. package/dist/cjs/mcp/tools/labels-list.js +252 -0
  103. package/dist/cjs/mcp/tools/labels-list.js.map +1 -0
  104. package/dist/cjs/mcp/tools/message-get.d.cts +110 -0
  105. package/dist/cjs/mcp/tools/message-get.d.ts +110 -0
  106. package/dist/cjs/mcp/tools/message-get.js +289 -0
  107. package/dist/cjs/mcp/tools/message-get.js.map +1 -0
  108. package/dist/cjs/mcp/tools/message-mark-read.d.cts +42 -0
  109. package/dist/cjs/mcp/tools/message-mark-read.d.ts +42 -0
  110. package/dist/cjs/mcp/tools/message-mark-read.js +254 -0
  111. package/dist/cjs/mcp/tools/message-mark-read.js.map +1 -0
  112. package/dist/cjs/mcp/tools/message-move-to-trash.d.cts +54 -0
  113. package/dist/cjs/mcp/tools/message-move-to-trash.d.ts +54 -0
  114. package/dist/cjs/mcp/tools/message-move-to-trash.js +460 -0
  115. package/dist/cjs/mcp/tools/message-move-to-trash.js.map +1 -0
  116. package/dist/cjs/mcp/tools/message-respond.d.cts +52 -0
  117. package/dist/cjs/mcp/tools/message-respond.d.ts +52 -0
  118. package/dist/cjs/mcp/tools/message-respond.js +263 -0
  119. package/dist/cjs/mcp/tools/message-respond.js.map +1 -0
  120. package/dist/cjs/mcp/tools/message-search.d.cts +138 -0
  121. package/dist/cjs/mcp/tools/message-search.d.ts +138 -0
  122. package/dist/cjs/mcp/tools/message-search.js +408 -0
  123. package/dist/cjs/mcp/tools/message-search.js.map +1 -0
  124. package/dist/cjs/mcp/tools/message-send.d.cts +66 -0
  125. package/dist/cjs/mcp/tools/message-send.d.ts +66 -0
  126. package/dist/cjs/mcp/tools/message-send.js +298 -0
  127. package/dist/cjs/mcp/tools/message-send.js.map +1 -0
  128. package/dist/cjs/mcp/tools/messages-export-csv.d.cts +72 -0
  129. package/dist/cjs/mcp/tools/messages-export-csv.d.ts +72 -0
  130. package/dist/cjs/mcp/tools/messages-export-csv.js +540 -0
  131. package/dist/cjs/mcp/tools/messages-export-csv.js.map +1 -0
  132. package/dist/cjs/package.json +1 -0
  133. package/dist/cjs/schemas/index.d.cts +2 -0
  134. package/dist/cjs/schemas/index.d.ts +2 -0
  135. package/dist/cjs/schemas/index.js +20 -0
  136. package/dist/cjs/schemas/index.js.map +1 -0
  137. package/dist/cjs/schemas/outlook-query-schema.d.cts +53 -0
  138. package/dist/cjs/schemas/outlook-query-schema.d.ts +53 -0
  139. package/dist/cjs/schemas/outlook-query-schema.js +115 -0
  140. package/dist/cjs/schemas/outlook-query-schema.js.map +1 -0
  141. package/dist/cjs/schemas/outlook-validation.d.cts +428 -0
  142. package/dist/cjs/schemas/outlook-validation.d.ts +428 -0
  143. package/dist/cjs/schemas/outlook-validation.js +420 -0
  144. package/dist/cjs/schemas/outlook-validation.js.map +1 -0
  145. package/dist/cjs/setup/config.d.cts +50 -0
  146. package/dist/cjs/setup/config.d.ts +50 -0
  147. package/dist/cjs/setup/config.js +217 -0
  148. package/dist/cjs/setup/config.js.map +1 -0
  149. package/dist/cjs/setup/http.d.cts +8 -0
  150. package/dist/cjs/setup/http.d.ts +8 -0
  151. package/dist/cjs/setup/http.js +267 -0
  152. package/dist/cjs/setup/http.js.map +1 -0
  153. package/dist/cjs/setup/index.d.cts +5 -0
  154. package/dist/cjs/setup/index.d.ts +5 -0
  155. package/dist/cjs/setup/index.js +46 -0
  156. package/dist/cjs/setup/index.js.map +1 -0
  157. package/dist/cjs/setup/oauth-microsoft.d.cts +43 -0
  158. package/dist/cjs/setup/oauth-microsoft.d.ts +43 -0
  159. package/dist/cjs/setup/oauth-microsoft.js +366 -0
  160. package/dist/cjs/setup/oauth-microsoft.js.map +1 -0
  161. package/dist/cjs/setup/runtime.d.cts +11 -0
  162. package/dist/cjs/setup/runtime.d.ts +11 -0
  163. package/dist/cjs/setup/runtime.js +489 -0
  164. package/dist/cjs/setup/runtime.js.map +1 -0
  165. package/dist/cjs/setup/stdio.d.cts +7 -0
  166. package/dist/cjs/setup/stdio.d.ts +7 -0
  167. package/dist/cjs/setup/stdio.js +239 -0
  168. package/dist/cjs/setup/stdio.js.map +1 -0
  169. package/dist/cjs/types.d.cts +54 -0
  170. package/dist/cjs/types.d.ts +54 -0
  171. package/dist/cjs/types.js +5 -0
  172. package/dist/cjs/types.js.map +1 -0
  173. package/dist/esm/constants.d.ts +10 -0
  174. package/dist/esm/constants.js +13 -0
  175. package/dist/esm/constants.js.map +1 -0
  176. package/dist/esm/email/composition/outlook-message-builder.d.ts +36 -0
  177. package/dist/esm/email/composition/outlook-message-builder.js +46 -0
  178. package/dist/esm/email/composition/outlook-message-builder.js.map +1 -0
  179. package/dist/esm/email/messages/messages.d.ts +7 -0
  180. package/dist/esm/email/messages/messages.js +42 -0
  181. package/dist/esm/email/messages/messages.js.map +1 -0
  182. package/dist/esm/email/parsing/header-parsing.d.ts +18 -0
  183. package/dist/esm/email/parsing/header-parsing.js +18 -0
  184. package/dist/esm/email/parsing/header-parsing.js.map +1 -0
  185. package/dist/esm/email/parsing/message-extraction.d.ts +4 -0
  186. package/dist/esm/email/parsing/message-extraction.js +26 -0
  187. package/dist/esm/email/parsing/message-extraction.js.map +1 -0
  188. package/dist/esm/email/parsing/message-mapping.d.ts +21 -0
  189. package/dist/esm/email/parsing/message-mapping.js +35 -0
  190. package/dist/esm/email/parsing/message-mapping.js.map +1 -0
  191. package/dist/esm/email/querying/execute-query.d.ts +20 -0
  192. package/dist/esm/email/querying/execute-query.js +48 -0
  193. package/dist/esm/email/querying/execute-query.js.map +1 -0
  194. package/dist/esm/email/querying/query-builder.d.ts +32 -0
  195. package/dist/esm/email/querying/query-builder.js +424 -0
  196. package/dist/esm/email/querying/query-builder.js.map +1 -0
  197. package/dist/esm/email/querying/search-execution.d.ts +24 -0
  198. package/dist/esm/email/querying/search-execution.js +96 -0
  199. package/dist/esm/email/querying/search-execution.js.map +1 -0
  200. package/dist/esm/index.d.ts +8 -0
  201. package/dist/esm/index.js +34 -0
  202. package/dist/esm/index.js.map +1 -0
  203. package/dist/esm/lib/create-store.d.ts +2 -0
  204. package/dist/esm/lib/create-store.js +6 -0
  205. package/dist/esm/lib/create-store.js.map +1 -0
  206. package/dist/esm/lib/messages-to-row.d.ts +39 -0
  207. package/dist/esm/lib/messages-to-row.js +141 -0
  208. package/dist/esm/lib/messages-to-row.js.map +1 -0
  209. package/dist/esm/lib/outlook/index.d.ts +7 -0
  210. package/dist/esm/lib/outlook/index.js +7 -0
  211. package/dist/esm/lib/outlook/index.js.map +1 -0
  212. package/dist/esm/lib/outlook/types.d.ts +22 -0
  213. package/dist/esm/lib/outlook/types.js +2 -0
  214. package/dist/esm/lib/outlook/types.js.map +1 -0
  215. package/dist/esm/mcp/index.d.ts +3 -0
  216. package/dist/esm/mcp/index.js +6 -0
  217. package/dist/esm/mcp/index.js.map +1 -0
  218. package/dist/esm/mcp/prompts/draft-email.d.ts +30 -0
  219. package/dist/esm/mcp/prompts/draft-email.js +37 -0
  220. package/dist/esm/mcp/prompts/draft-email.js.map +1 -0
  221. package/dist/esm/mcp/prompts/index.d.ts +2 -0
  222. package/dist/esm/mcp/prompts/index.js +2 -0
  223. package/dist/esm/mcp/prompts/index.js.map +1 -0
  224. package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
  225. package/dist/esm/mcp/prompts/query-syntax.js +75 -0
  226. package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
  227. package/dist/esm/mcp/resources/email.d.ts +11 -0
  228. package/dist/esm/mcp/resources/email.js +69 -0
  229. package/dist/esm/mcp/resources/email.js.map +1 -0
  230. package/dist/esm/mcp/resources/index.d.ts +1 -0
  231. package/dist/esm/mcp/resources/index.js +1 -0
  232. package/dist/esm/mcp/resources/index.js.map +1 -0
  233. package/dist/esm/mcp/tools/categories-list.d.ts +96 -0
  234. package/dist/esm/mcp/tools/categories-list.js +78 -0
  235. package/dist/esm/mcp/tools/categories-list.js.map +1 -0
  236. package/dist/esm/mcp/tools/index.d.ts +11 -0
  237. package/dist/esm/mcp/tools/index.js +11 -0
  238. package/dist/esm/mcp/tools/index.js.map +1 -0
  239. package/dist/esm/mcp/tools/label-add.d.ts +44 -0
  240. package/dist/esm/mcp/tools/label-add.js +75 -0
  241. package/dist/esm/mcp/tools/label-add.js.map +1 -0
  242. package/dist/esm/mcp/tools/label-delete.d.ts +54 -0
  243. package/dist/esm/mcp/tools/label-delete.js +166 -0
  244. package/dist/esm/mcp/tools/label-delete.js.map +1 -0
  245. package/dist/esm/mcp/tools/labels-list.d.ts +96 -0
  246. package/dist/esm/mcp/tools/labels-list.js +78 -0
  247. package/dist/esm/mcp/tools/labels-list.js.map +1 -0
  248. package/dist/esm/mcp/tools/message-get.d.ts +110 -0
  249. package/dist/esm/mcp/tools/message-get.js +117 -0
  250. package/dist/esm/mcp/tools/message-get.js.map +1 -0
  251. package/dist/esm/mcp/tools/message-mark-read.d.ts +42 -0
  252. package/dist/esm/mcp/tools/message-mark-read.js +80 -0
  253. package/dist/esm/mcp/tools/message-mark-read.js.map +1 -0
  254. package/dist/esm/mcp/tools/message-move-to-trash.d.ts +54 -0
  255. package/dist/esm/mcp/tools/message-move-to-trash.js +177 -0
  256. package/dist/esm/mcp/tools/message-move-to-trash.js.map +1 -0
  257. package/dist/esm/mcp/tools/message-respond.d.ts +52 -0
  258. package/dist/esm/mcp/tools/message-respond.js +89 -0
  259. package/dist/esm/mcp/tools/message-respond.js.map +1 -0
  260. package/dist/esm/mcp/tools/message-search.d.ts +138 -0
  261. package/dist/esm/mcp/tools/message-search.js +184 -0
  262. package/dist/esm/mcp/tools/message-search.js.map +1 -0
  263. package/dist/esm/mcp/tools/message-send.d.ts +66 -0
  264. package/dist/esm/mcp/tools/message-send.js +111 -0
  265. package/dist/esm/mcp/tools/message-send.js.map +1 -0
  266. package/dist/esm/mcp/tools/messages-export-csv.d.ts +72 -0
  267. package/dist/esm/mcp/tools/messages-export-csv.js +273 -0
  268. package/dist/esm/mcp/tools/messages-export-csv.js.map +1 -0
  269. package/dist/esm/package.json +1 -0
  270. package/dist/esm/schemas/index.d.ts +2 -0
  271. package/dist/esm/schemas/index.js +2 -0
  272. package/dist/esm/schemas/index.js.map +1 -0
  273. package/dist/esm/schemas/outlook-query-schema.d.ts +53 -0
  274. package/dist/esm/schemas/outlook-query-schema.js +63 -0
  275. package/dist/esm/schemas/outlook-query-schema.js.map +1 -0
  276. package/dist/esm/schemas/outlook-validation.d.ts +428 -0
  277. package/dist/esm/schemas/outlook-validation.js +388 -0
  278. package/dist/esm/schemas/outlook-validation.js.map +1 -0
  279. package/dist/esm/setup/config.d.ts +50 -0
  280. package/dist/esm/setup/config.js +180 -0
  281. package/dist/esm/setup/config.js.map +1 -0
  282. package/dist/esm/setup/http.d.ts +8 -0
  283. package/dist/esm/setup/http.js +61 -0
  284. package/dist/esm/setup/http.js.map +1 -0
  285. package/dist/esm/setup/index.d.ts +5 -0
  286. package/dist/esm/setup/index.js +5 -0
  287. package/dist/esm/setup/index.js.map +1 -0
  288. package/dist/esm/setup/oauth-microsoft.d.ts +43 -0
  289. package/dist/esm/setup/oauth-microsoft.js +169 -0
  290. package/dist/esm/setup/oauth-microsoft.js.map +1 -0
  291. package/dist/esm/setup/runtime.d.ts +11 -0
  292. package/dist/esm/setup/runtime.js +115 -0
  293. package/dist/esm/setup/runtime.js.map +1 -0
  294. package/dist/esm/setup/stdio.d.ts +7 -0
  295. package/dist/esm/setup/stdio.js +38 -0
  296. package/dist/esm/setup/stdio.js.map +1 -0
  297. package/dist/esm/types.d.ts +54 -0
  298. package/dist/esm/types.js +1 -0
  299. package/dist/esm/types.js.map +1 -0
  300. package/package.json +111 -0
@@ -0,0 +1,298 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createTool;
9
+ }
10
+ });
11
+ var _email = require("@mcp-z/email");
12
+ var _oauthmicrosoft = require("@mcp-z/oauth-microsoft");
13
+ var _microsoftgraphclient = require("@microsoft/microsoft-graph-client");
14
+ var _types = require("@modelcontextprotocol/sdk/types.js");
15
+ var _zod = require("zod");
16
+ var _outlookmessagebuilder = require("../../email/composition/outlook-message-builder.js");
17
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
18
+ try {
19
+ var info = gen[key](arg);
20
+ var value = info.value;
21
+ } catch (error) {
22
+ reject(error);
23
+ return;
24
+ }
25
+ if (info.done) {
26
+ resolve(value);
27
+ } else {
28
+ Promise.resolve(value).then(_next, _throw);
29
+ }
30
+ }
31
+ function _async_to_generator(fn) {
32
+ return function() {
33
+ var self = this, args = arguments;
34
+ return new Promise(function(resolve, reject) {
35
+ var gen = fn.apply(self, args);
36
+ function _next(value) {
37
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
38
+ }
39
+ function _throw(err) {
40
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
41
+ }
42
+ _next(undefined);
43
+ });
44
+ };
45
+ }
46
+ function _instanceof(left, right) {
47
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
48
+ return !!right[Symbol.hasInstance](left);
49
+ } else {
50
+ return left instanceof right;
51
+ }
52
+ }
53
+ function _ts_generator(thisArg, body) {
54
+ var f, y, t, _ = {
55
+ label: 0,
56
+ sent: function() {
57
+ if (t[0] & 1) throw t[1];
58
+ return t[1];
59
+ },
60
+ trys: [],
61
+ ops: []
62
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
63
+ return d(g, "next", {
64
+ value: verb(0)
65
+ }), d(g, "throw", {
66
+ value: verb(1)
67
+ }), d(g, "return", {
68
+ value: verb(2)
69
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
70
+ value: function() {
71
+ return this;
72
+ }
73
+ }), g;
74
+ function verb(n) {
75
+ return function(v) {
76
+ return step([
77
+ n,
78
+ v
79
+ ]);
80
+ };
81
+ }
82
+ function step(op) {
83
+ if (f) throw new TypeError("Generator is already executing.");
84
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
85
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
86
+ if (y = 0, t) op = [
87
+ op[0] & 2,
88
+ t.value
89
+ ];
90
+ switch(op[0]){
91
+ case 0:
92
+ case 1:
93
+ t = op;
94
+ break;
95
+ case 4:
96
+ _.label++;
97
+ return {
98
+ value: op[1],
99
+ done: false
100
+ };
101
+ case 5:
102
+ _.label++;
103
+ y = op[1];
104
+ op = [
105
+ 0
106
+ ];
107
+ continue;
108
+ case 7:
109
+ op = _.ops.pop();
110
+ _.trys.pop();
111
+ continue;
112
+ default:
113
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
114
+ _ = 0;
115
+ continue;
116
+ }
117
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
118
+ _.label = op[1];
119
+ break;
120
+ }
121
+ if (op[0] === 6 && _.label < t[1]) {
122
+ _.label = t[1];
123
+ t = op;
124
+ break;
125
+ }
126
+ if (t && _.label < t[2]) {
127
+ _.label = t[2];
128
+ _.ops.push(op);
129
+ break;
130
+ }
131
+ if (t[2]) _.ops.pop();
132
+ _.trys.pop();
133
+ continue;
134
+ }
135
+ op = body.call(thisArg, _);
136
+ } catch (e) {
137
+ op = [
138
+ 6,
139
+ e
140
+ ];
141
+ y = 0;
142
+ } finally{
143
+ f = t = 0;
144
+ }
145
+ if (op[0] & 5) throw op[1];
146
+ return {
147
+ value: op[0] ? op[1] : void 0,
148
+ done: true
149
+ };
150
+ }
151
+ }
152
+ var AuthRequiredBranchSchema = _oauthmicrosoft.schemas.AuthRequiredBranchSchema;
153
+ var MessageResultSchema = (0, _email.createMessageResultSchema)('outlook');
154
+ var inputSchema = _zod.z.object({
155
+ to: (0, _email.createEmailRecipientsSchema)('to', true),
156
+ cc: (0, _email.createEmailRecipientsSchema)('cc', false),
157
+ bcc: (0, _email.createEmailRecipientsSchema)('bcc', false),
158
+ subject: _zod.z.string().describe('Email subject line').default(''),
159
+ body: _zod.z.string().trim().min(1).describe('Email body content (plain text or HTML)'),
160
+ contentType: _email.ComposeContentTypeSchema
161
+ });
162
+ // Success branch schema
163
+ var successBranchSchema = MessageResultSchema.extend({
164
+ type: _zod.z.literal('success')
165
+ });
166
+ // Output schema with auth_required support
167
+ var outputSchema = _zod.z.discriminatedUnion('type', [
168
+ successBranchSchema,
169
+ AuthRequiredBranchSchema
170
+ ]);
171
+ var config = {
172
+ description: 'Send an email message through Outlook',
173
+ inputSchema: inputSchema,
174
+ outputSchema: _zod.z.object({
175
+ result: outputSchema
176
+ })
177
+ };
178
+ function handler(_0, _1) {
179
+ return _async_to_generator(function(param, extra) {
180
+ var to, cc, bcc, subject, body, contentType, logger, _ref, _ref1, _ref2, _message_toRecipients, _message_ccRecipients, _message_bccRecipients, graph, toArray, ccArray, bccArray, message, draft, messageId, toCount, ccCount, bccCount, totalRecipients, result, error, message1;
181
+ return _ts_generator(this, function(_state) {
182
+ switch(_state.label){
183
+ case 0:
184
+ to = param.to, cc = param.cc, bcc = param.bcc, subject = param.subject, body = param.body, contentType = param.contentType;
185
+ logger = extra.logger;
186
+ _state.label = 1;
187
+ case 1:
188
+ _state.trys.push([
189
+ 1,
190
+ 4,
191
+ ,
192
+ 5
193
+ ]);
194
+ graph = _microsoftgraphclient.Client.initWithMiddleware({
195
+ authProvider: extra.authContext.auth
196
+ });
197
+ // Use composition module to build the message
198
+ toArray = to === null || to === void 0 ? void 0 : to.split(',').map(function(addr) {
199
+ return addr.trim();
200
+ }).filter(function(addr) {
201
+ return addr;
202
+ });
203
+ ccArray = cc === null || cc === void 0 ? void 0 : cc.split(',').map(function(addr) {
204
+ return addr.trim();
205
+ }).filter(function(addr) {
206
+ return addr;
207
+ });
208
+ bccArray = bcc === null || bcc === void 0 ? void 0 : bcc.split(',').map(function(addr) {
209
+ return addr.trim();
210
+ }).filter(function(addr) {
211
+ return addr;
212
+ });
213
+ message = (0, _outlookmessagebuilder.buildOutlookMessage)({
214
+ to: toArray,
215
+ cc: ccArray && ccArray.length > 0 ? ccArray : undefined,
216
+ bcc: bccArray && bccArray.length > 0 ? bccArray : undefined,
217
+ subject: subject !== null && subject !== void 0 ? subject : '',
218
+ body: body,
219
+ contentType: contentType === 'html' ? 'HTML' : 'Text'
220
+ });
221
+ return [
222
+ 4,
223
+ graph.api('/me/messages').post(message)
224
+ ];
225
+ case 2:
226
+ draft = _state.sent();
227
+ messageId = draft.id;
228
+ if (!messageId) {
229
+ logger.error('outlook.message.send draft creation failed - no ID returned');
230
+ throw new _types.McpError(_types.ErrorCode.InternalError, 'Failed to create draft message');
231
+ }
232
+ // 2. Send the draft
233
+ return [
234
+ 4,
235
+ graph.api("/me/messages/".concat(messageId, "/send")).post({})
236
+ ];
237
+ case 3:
238
+ _state.sent();
239
+ logger.info('Outlook: sent mail successfully', {
240
+ messageId: messageId
241
+ });
242
+ toCount = (_ref = (_message_toRecipients = message.toRecipients) === null || _message_toRecipients === void 0 ? void 0 : _message_toRecipients.length) !== null && _ref !== void 0 ? _ref : 0;
243
+ ccCount = (_ref1 = (_message_ccRecipients = message.ccRecipients) === null || _message_ccRecipients === void 0 ? void 0 : _message_ccRecipients.length) !== null && _ref1 !== void 0 ? _ref1 : 0;
244
+ bccCount = (_ref2 = (_message_bccRecipients = message.bccRecipients) === null || _message_bccRecipients === void 0 ? void 0 : _message_bccRecipients.length) !== null && _ref2 !== void 0 ? _ref2 : 0;
245
+ logger.info('outlook.message.send success', {
246
+ toCount: toCount,
247
+ ccCount: ccCount,
248
+ bccCount: bccCount,
249
+ subject: subject !== null && subject !== void 0 ? subject : '',
250
+ messageId: messageId
251
+ });
252
+ totalRecipients = toCount + ccCount + bccCount;
253
+ result = {
254
+ type: 'success',
255
+ id: messageId,
256
+ sentAt: new Date().toISOString(),
257
+ recipientCount: totalRecipients,
258
+ webLink: 'https://outlook.live.com/mail/0/sentitems'
259
+ };
260
+ return [
261
+ 2,
262
+ {
263
+ content: [
264
+ {
265
+ type: 'text',
266
+ text: JSON.stringify(result)
267
+ }
268
+ ],
269
+ structuredContent: {
270
+ result: result
271
+ }
272
+ }
273
+ ];
274
+ case 4:
275
+ error = _state.sent();
276
+ message1 = _instanceof(error, Error) ? error.message : String(error);
277
+ logger.error('outlook.message.send error', {
278
+ error: message1
279
+ });
280
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Error sending message: ".concat(message1), {
281
+ stack: _instanceof(error, Error) ? error.stack : undefined
282
+ });
283
+ case 5:
284
+ return [
285
+ 2
286
+ ];
287
+ }
288
+ });
289
+ }).apply(this, arguments);
290
+ }
291
+ function createTool() {
292
+ return {
293
+ name: 'message-send',
294
+ config: config,
295
+ handler: handler
296
+ };
297
+ }
298
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/mcp/tools/message-send.ts"],"sourcesContent":["import { ComposeContentTypeSchema, createEmailRecipientsSchema, createMessageResultSchema } from '@mcp-z/email';\nimport type { EnrichedExtra } from '@mcp-z/oauth-microsoft';\nimport { schemas } from '@mcp-z/oauth-microsoft';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport type { ToolModule } from '@mcp-z/server';\nimport { Client } from '@microsoft/microsoft-graph-client';\nimport { type CallToolResult, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { z } from 'zod';\nimport { buildOutlookMessage } from '../../email/composition/outlook-message-builder.js';\n\nconst MessageResultSchema = createMessageResultSchema('outlook');\n\nconst inputSchema = z.object({\n to: createEmailRecipientsSchema('to', true),\n cc: createEmailRecipientsSchema('cc', false),\n bcc: createEmailRecipientsSchema('bcc', false),\n subject: z.string().describe('Email subject line').default(''),\n body: z.string().trim().min(1).describe('Email body content (plain text or HTML)'),\n contentType: ComposeContentTypeSchema,\n});\n\n// Success branch schema\nconst successBranchSchema = MessageResultSchema.extend({\n type: z.literal('success'),\n});\n\n// Output schema with auth_required support\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Send an email message through Outlook',\n inputSchema: inputSchema,\n outputSchema: z.object({\n result: outputSchema,\n }),\n} as const;\n\nexport type Input = z.infer<typeof inputSchema>;\nexport type Output = z.infer<typeof outputSchema>;\n\nasync function handler({ to, cc, bcc, subject, body, contentType }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n\n try {\n const graph = Client.initWithMiddleware({ authProvider: extra.authContext.auth });\n\n // Use composition module to build the message\n const toArray = to\n ?.split(',')\n .map((addr) => addr.trim())\n .filter((addr) => addr);\n const ccArray = cc\n ?.split(',')\n .map((addr) => addr.trim())\n .filter((addr) => addr);\n const bccArray = bcc\n ?.split(',')\n .map((addr) => addr.trim())\n .filter((addr) => addr);\n\n const message = buildOutlookMessage({\n to: toArray,\n cc: ccArray && ccArray.length > 0 ? ccArray : undefined,\n bcc: bccArray && bccArray.length > 0 ? bccArray : undefined,\n subject: subject ?? '',\n body,\n contentType: contentType === 'html' ? 'HTML' : 'Text',\n });\n\n // Use draft-send pattern to get message ID\n // 1. Create draft message\n const draft = await graph.api('/me/messages').post(message);\n const messageId = draft.id;\n\n if (!messageId) {\n logger.error('outlook.message.send draft creation failed - no ID returned');\n throw new McpError(ErrorCode.InternalError, 'Failed to create draft message');\n }\n\n // 2. Send the draft\n await graph.api(`/me/messages/${messageId}/send`).post({});\n logger.info('Outlook: sent mail successfully', { messageId });\n\n const toCount = message.toRecipients?.length ?? 0;\n const ccCount = message.ccRecipients?.length ?? 0;\n const bccCount = message.bccRecipients?.length ?? 0;\n\n logger.info('outlook.message.send success', { toCount, ccCount, bccCount, subject: subject ?? '', messageId });\n\n const totalRecipients = toCount + ccCount + bccCount;\n const result: Output = {\n type: 'success' as const,\n id: messageId,\n sentAt: new Date().toISOString(),\n recipientCount: totalRecipients,\n webLink: 'https://outlook.live.com/mail/0/sentitems',\n };\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result),\n },\n ],\n structuredContent: { result },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error('outlook.message.send error', { error: message });\n\n throw new McpError(ErrorCode.InternalError, `Error sending message: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'message-send',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","MessageResultSchema","createMessageResultSchema","inputSchema","z","object","to","createEmailRecipientsSchema","cc","bcc","subject","string","describe","default","body","trim","min","contentType","ComposeContentTypeSchema","successBranchSchema","extend","type","literal","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","message","graph","toArray","ccArray","bccArray","draft","messageId","toCount","ccCount","bccCount","totalRecipients","error","Client","initWithMiddleware","authProvider","authContext","auth","split","map","addr","filter","buildOutlookMessage","length","undefined","api","post","id","McpError","ErrorCode","InternalError","info","toRecipients","ccRecipients","bccRecipients","sentAt","Date","toISOString","recipientCount","webLink","content","text","JSON","stringify","structuredContent","Error","String","stack","name"],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /** Outlook message CSV export tool - streams results to file without loading all data into context */
2
+ import type { EnrichedExtra } from '@mcp-z/oauth-microsoft';
3
+ import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
4
+ import { z } from 'zod';
5
+ import type { StorageExtra } from '../../types.js';
6
+ declare const inputSchema: z.ZodObject<{
7
+ query: z.ZodOptional<z.ZodType<import("../../types.js").OutlookQuery, unknown, z.core.$ZodTypeInternals<import("../../types.js").OutlookQuery, unknown>>>;
8
+ maxItems: z.ZodDefault<z.ZodNumber>;
9
+ filename: z.ZodDefault<z.ZodString>;
10
+ contentType: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
11
+ text: "text";
12
+ html: "html";
13
+ }>>>;
14
+ excludeThreadHistory: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
15
+ }, z.core.$strip>;
16
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
17
+ uri: z.ZodString;
18
+ filename: z.ZodString;
19
+ rowCount: z.ZodNumber;
20
+ truncated: z.ZodBoolean;
21
+ type: z.ZodLiteral<"success">;
22
+ }, z.core.$strip>, z.ZodObject<{
23
+ type: z.ZodLiteral<"auth_required">;
24
+ provider: z.ZodString;
25
+ message: z.ZodString;
26
+ url: z.ZodOptional<z.ZodString>;
27
+ }, z.core.$strip>], "type">;
28
+ export type Input = z.infer<typeof inputSchema>;
29
+ export type Output = z.infer<typeof outputSchema>;
30
+ /**
31
+ * Handler for outlook-messages-export-csv tool
32
+ *
33
+ * CRITICAL: Streaming implementation per user requirements
34
+ * - Generate UUID upfront
35
+ * - Write CSV header immediately
36
+ * - Append rows as batches arrive
37
+ * - Delete partial file on error
38
+ * - NO RETRIES (fail fast on error)
39
+ */
40
+ declare function handler({ query, maxItems, filename, contentType, excludeThreadHistory }: Input, extra: EnrichedExtra & StorageExtra): Promise<CallToolResult>;
41
+ export default function createTool(): {
42
+ name: string;
43
+ config: {
44
+ readonly description: "Export Outlook messages to CSV with streaming pagination. Returns file URI. Use query-syntax prompt for query reference.";
45
+ readonly inputSchema: z.ZodObject<{
46
+ query: z.ZodOptional<z.ZodType<import("../../types.js").OutlookQuery, unknown, z.core.$ZodTypeInternals<import("../../types.js").OutlookQuery, unknown>>>;
47
+ maxItems: z.ZodDefault<z.ZodNumber>;
48
+ filename: z.ZodDefault<z.ZodString>;
49
+ contentType: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
50
+ text: "text";
51
+ html: "html";
52
+ }>>>;
53
+ excludeThreadHistory: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
54
+ }, z.core.$strip>;
55
+ readonly outputSchema: z.ZodObject<{
56
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
57
+ uri: z.ZodString;
58
+ filename: z.ZodString;
59
+ rowCount: z.ZodNumber;
60
+ truncated: z.ZodBoolean;
61
+ type: z.ZodLiteral<"success">;
62
+ }, z.core.$strip>, z.ZodObject<{
63
+ type: z.ZodLiteral<"auth_required">;
64
+ provider: z.ZodString;
65
+ message: z.ZodString;
66
+ url: z.ZodOptional<z.ZodString>;
67
+ }, z.core.$strip>], "type">;
68
+ }, z.core.$strip>;
69
+ };
70
+ handler: typeof handler;
71
+ };
72
+ export {};
@@ -0,0 +1,72 @@
1
+ /** Outlook message CSV export tool - streams results to file without loading all data into context */
2
+ import type { EnrichedExtra } from '@mcp-z/oauth-microsoft';
3
+ import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
4
+ import { z } from 'zod';
5
+ import type { StorageExtra } from '../../types.js';
6
+ declare const inputSchema: z.ZodObject<{
7
+ query: z.ZodOptional<z.ZodType<import("../../types.js").OutlookQuery, unknown, z.core.$ZodTypeInternals<import("../../types.js").OutlookQuery, unknown>>>;
8
+ maxItems: z.ZodDefault<z.ZodNumber>;
9
+ filename: z.ZodDefault<z.ZodString>;
10
+ contentType: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
11
+ text: "text";
12
+ html: "html";
13
+ }>>>;
14
+ excludeThreadHistory: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
15
+ }, z.core.$strip>;
16
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
17
+ uri: z.ZodString;
18
+ filename: z.ZodString;
19
+ rowCount: z.ZodNumber;
20
+ truncated: z.ZodBoolean;
21
+ type: z.ZodLiteral<"success">;
22
+ }, z.core.$strip>, z.ZodObject<{
23
+ type: z.ZodLiteral<"auth_required">;
24
+ provider: z.ZodString;
25
+ message: z.ZodString;
26
+ url: z.ZodOptional<z.ZodString>;
27
+ }, z.core.$strip>], "type">;
28
+ export type Input = z.infer<typeof inputSchema>;
29
+ export type Output = z.infer<typeof outputSchema>;
30
+ /**
31
+ * Handler for outlook-messages-export-csv tool
32
+ *
33
+ * CRITICAL: Streaming implementation per user requirements
34
+ * - Generate UUID upfront
35
+ * - Write CSV header immediately
36
+ * - Append rows as batches arrive
37
+ * - Delete partial file on error
38
+ * - NO RETRIES (fail fast on error)
39
+ */
40
+ declare function handler({ query, maxItems, filename, contentType, excludeThreadHistory }: Input, extra: EnrichedExtra & StorageExtra): Promise<CallToolResult>;
41
+ export default function createTool(): {
42
+ name: string;
43
+ config: {
44
+ readonly description: "Export Outlook messages to CSV with streaming pagination. Returns file URI. Use query-syntax prompt for query reference.";
45
+ readonly inputSchema: z.ZodObject<{
46
+ query: z.ZodOptional<z.ZodType<import("../../types.js").OutlookQuery, unknown, z.core.$ZodTypeInternals<import("../../types.js").OutlookQuery, unknown>>>;
47
+ maxItems: z.ZodDefault<z.ZodNumber>;
48
+ filename: z.ZodDefault<z.ZodString>;
49
+ contentType: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
50
+ text: "text";
51
+ html: "html";
52
+ }>>>;
53
+ excludeThreadHistory: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
54
+ }, z.core.$strip>;
55
+ readonly outputSchema: z.ZodObject<{
56
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
57
+ uri: z.ZodString;
58
+ filename: z.ZodString;
59
+ rowCount: z.ZodNumber;
60
+ truncated: z.ZodBoolean;
61
+ type: z.ZodLiteral<"success">;
62
+ }, z.core.$strip>, z.ZodObject<{
63
+ type: z.ZodLiteral<"auth_required">;
64
+ provider: z.ZodString;
65
+ message: z.ZodString;
66
+ url: z.ZodOptional<z.ZodString>;
67
+ }, z.core.$strip>], "type">;
68
+ }, z.core.$strip>;
69
+ };
70
+ handler: typeof handler;
71
+ };
72
+ export {};