@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,289 @@
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 _server = require("@mcp-z/server");
14
+ var _microsoftgraphclient = require("@microsoft/microsoft-graph-client");
15
+ var _types = require("@modelcontextprotocol/sdk/types.js");
16
+ var _zod = require("zod");
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 inputSchema = _zod.z.object({
154
+ id: _zod.z.coerce.string().trim().min(1).describe('Outlook message ID to retrieve'),
155
+ fields: (0, _server.createFieldsSchema)({
156
+ availableFields: _email.EMAIL_FIELDS,
157
+ fieldDescriptions: _email.EMAIL_FIELD_DESCRIPTIONS,
158
+ commonPatterns: _email.EMAIL_COMMON_PATTERNS,
159
+ resourceName: 'email message'
160
+ }),
161
+ contentType: _email.EmailContentTypeSchema,
162
+ excludeThreadHistory: _email.ExcludeThreadHistorySchema
163
+ });
164
+ // Success branch schema - uses item: wrapper for consistency with standard vocabulary
165
+ var successBranchSchema = _zod.z.object({
166
+ type: _zod.z.literal('success'),
167
+ item: _email.EmailDetailSchema
168
+ });
169
+ // Output schema with auth_required support
170
+ var outputSchema = _zod.z.discriminatedUnion('type', [
171
+ successBranchSchema,
172
+ AuthRequiredBranchSchema
173
+ ]);
174
+ var config = {
175
+ description: 'Get an Outlook message by ID with flexible field selection',
176
+ inputSchema: inputSchema,
177
+ outputSchema: _zod.z.object({
178
+ result: outputSchema
179
+ })
180
+ };
181
+ function handler(_0, _1) {
182
+ return _async_to_generator(function(param, extra) {
183
+ var id, fields, contentType, excludeThreadHistory, logger, requestedFields, _ref, _message_body, _message_body_contentType, _message_body1, _message_from_emailAddress, _message_from, graph, message, bodyContent, isHtml, _ref1, _message_body2, payload, filteredPayload, result, error, message1;
184
+ return _ts_generator(this, function(_state) {
185
+ switch(_state.label){
186
+ case 0:
187
+ id = param.id, fields = param.fields, contentType = param.contentType, excludeThreadHistory = param.excludeThreadHistory;
188
+ logger = extra.logger;
189
+ requestedFields = (0, _server.parseFields)(fields, _email.EMAIL_FIELDS);
190
+ logger.info('outlook.message.get called', {
191
+ id: id,
192
+ fields: fields || 'all'
193
+ });
194
+ if (!id) {
195
+ logger.info('outlook.message.get missing id');
196
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, 'Missing id');
197
+ }
198
+ _state.label = 1;
199
+ case 1:
200
+ _state.trys.push([
201
+ 1,
202
+ 3,
203
+ ,
204
+ 4
205
+ ]);
206
+ graph = _microsoftgraphclient.Client.initWithMiddleware({
207
+ authProvider: extra.authContext.auth
208
+ });
209
+ return [
210
+ 4,
211
+ graph.api("/me/messages/".concat(encodeURIComponent(id))).get()
212
+ ];
213
+ case 2:
214
+ message = _state.sent();
215
+ // Process body based on contentType and excludeThreadHistory options
216
+ bodyContent = (_ref = (_message_body = message.body) === null || _message_body === void 0 ? void 0 : _message_body.content) !== null && _ref !== void 0 ? _ref : '';
217
+ isHtml = ((_message_body1 = message.body) === null || _message_body1 === void 0 ? void 0 : (_message_body_contentType = _message_body1.contentType) === null || _message_body_contentType === void 0 ? void 0 : _message_body_contentType.toLowerCase()) === 'html';
218
+ if (isHtml && excludeThreadHistory) {
219
+ // Remove thread history from HTML
220
+ bodyContent = (0, _email.extractCurrentMessageFromHtml)(bodyContent);
221
+ }
222
+ if (isHtml && contentType === 'text') {
223
+ ;
224
+ ;
225
+ // Convert HTML to plain text (thread extraction happens inside if excludeThreadHistory was true)
226
+ bodyContent = excludeThreadHistory ? (0, _email.extractCurrentMessageFromHtmlToText)(bodyContent) : (0, _email.extractCurrentMessageFromHtmlToText)((_ref1 = (_message_body2 = message.body) === null || _message_body2 === void 0 ? void 0 : _message_body2.content) !== null && _ref1 !== void 0 ? _ref1 : '');
227
+ }
228
+ // Build full message data
229
+ payload = {
230
+ id: message.id,
231
+ subject: message.subject,
232
+ from: (_message_from = message.from) === null || _message_from === void 0 ? void 0 : (_message_from_emailAddress = _message_from.emailAddress) === null || _message_from_emailAddress === void 0 ? void 0 : _message_from_emailAddress.address,
233
+ date: (0, _email.normalizeDateToISO)(message.receivedDateTime) || message.receivedDateTime,
234
+ snippet: message.bodyPreview,
235
+ body: bodyContent,
236
+ bodyContentType: contentType
237
+ };
238
+ // Filter based on requested fields
239
+ filteredPayload = (0, _server.filterFields)(payload, requestedFields);
240
+ logger.info('outlook.message.get success', {
241
+ id: payload.id,
242
+ subject: payload.subject,
243
+ from: payload.from,
244
+ date: payload.date,
245
+ fields: fields || 'all'
246
+ });
247
+ result = {
248
+ type: 'success',
249
+ item: filteredPayload
250
+ };
251
+ return [
252
+ 2,
253
+ {
254
+ content: [
255
+ {
256
+ type: 'text',
257
+ text: JSON.stringify(result)
258
+ }
259
+ ],
260
+ structuredContent: {
261
+ result: result
262
+ }
263
+ }
264
+ ];
265
+ case 3:
266
+ error = _state.sent();
267
+ message1 = _instanceof(error, Error) ? error.message : String(error);
268
+ logger.error('outlook.message.get error', {
269
+ error: message1
270
+ });
271
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Error getting message: ".concat(message1), {
272
+ stack: _instanceof(error, Error) ? error.stack : undefined
273
+ });
274
+ case 4:
275
+ return [
276
+ 2
277
+ ];
278
+ }
279
+ });
280
+ }).apply(this, arguments);
281
+ }
282
+ function createTool() {
283
+ return {
284
+ name: 'message-get',
285
+ config: config,
286
+ handler: handler
287
+ };
288
+ }
289
+ /* 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-get.ts"],"sourcesContent":["import { EMAIL_COMMON_PATTERNS, EMAIL_FIELD_DESCRIPTIONS, EMAIL_FIELDS, EmailContentTypeSchema, EmailDetailSchema, ExcludeThreadHistorySchema, extractCurrentMessageFromHtml, extractCurrentMessageFromHtmlToText, normalizeDateToISO as toIsoUtc } 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 { createFieldsSchema, filterFields, parseFields, type ToolModule } from '@mcp-z/server';\nimport { Client } from '@microsoft/microsoft-graph-client';\nimport type * as MicrosoftGraph from '@microsoft/microsoft-graph-types';\nimport { type CallToolResult, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { z } from 'zod';\n\nconst inputSchema = z.object({\n id: z.coerce.string().trim().min(1).describe('Outlook message ID to retrieve'),\n fields: createFieldsSchema({\n availableFields: EMAIL_FIELDS,\n fieldDescriptions: EMAIL_FIELD_DESCRIPTIONS,\n commonPatterns: EMAIL_COMMON_PATTERNS,\n resourceName: 'email message',\n }),\n contentType: EmailContentTypeSchema,\n excludeThreadHistory: ExcludeThreadHistorySchema,\n});\n\n// Success branch schema - uses item: wrapper for consistency with standard vocabulary\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n item: EmailDetailSchema,\n});\n\n// Output schema with auth_required support\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Get an Outlook message by ID with flexible field selection',\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({ id, fields, contentType, excludeThreadHistory }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n\n const requestedFields = parseFields(fields, EMAIL_FIELDS);\n\n logger.info('outlook.message.get called', { id, fields: fields || 'all' });\n\n if (!id) {\n logger.info('outlook.message.get missing id');\n throw new McpError(ErrorCode.InvalidParams, 'Missing id');\n }\n\n try {\n const graph = Client.initWithMiddleware({ authProvider: extra.authContext.auth });\n const message = (await graph.api(`/me/messages/${encodeURIComponent(id)}`).get()) as MicrosoftGraph.Message;\n\n // Process body based on contentType and excludeThreadHistory options\n let bodyContent = message.body?.content ?? '';\n const isHtml = message.body?.contentType?.toLowerCase() === 'html';\n\n if (isHtml && excludeThreadHistory) {\n // Remove thread history from HTML\n bodyContent = extractCurrentMessageFromHtml(bodyContent);\n }\n\n if (isHtml && contentType === 'text') {\n // Convert HTML to plain text (thread extraction happens inside if excludeThreadHistory was true)\n bodyContent = excludeThreadHistory ? extractCurrentMessageFromHtmlToText(bodyContent) : extractCurrentMessageFromHtmlToText(message.body?.content ?? '');\n }\n\n // Build full message data\n const payload = {\n id: message.id,\n subject: message.subject,\n from: message.from?.emailAddress?.address,\n date: toIsoUtc(message.receivedDateTime) || message.receivedDateTime,\n snippet: message.bodyPreview,\n body: bodyContent,\n bodyContentType: contentType,\n };\n\n // Filter based on requested fields\n const filteredPayload = filterFields(payload, requestedFields);\n\n logger.info('outlook.message.get success', { id: payload.id, subject: payload.subject, from: payload.from, date: payload.date, fields: fields || 'all' });\n\n const result: Output = {\n type: 'success' as const,\n item: filteredPayload as z.infer<typeof EmailDetailSchema>,\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.get error', { error: message });\n\n throw new McpError(ErrorCode.InternalError, `Error getting message: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'message-get',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","inputSchema","z","object","id","coerce","string","trim","min","describe","fields","createFieldsSchema","availableFields","EMAIL_FIELDS","fieldDescriptions","EMAIL_FIELD_DESCRIPTIONS","commonPatterns","EMAIL_COMMON_PATTERNS","resourceName","contentType","EmailContentTypeSchema","excludeThreadHistory","ExcludeThreadHistorySchema","successBranchSchema","type","literal","item","EmailDetailSchema","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","requestedFields","message","graph","bodyContent","isHtml","payload","filteredPayload","error","parseFields","info","McpError","ErrorCode","InvalidParams","Client","initWithMiddleware","authProvider","authContext","auth","api","encodeURIComponent","get","body","content","toLowerCase","extractCurrentMessageFromHtml","extractCurrentMessageFromHtmlToText","subject","from","emailAddress","address","date","toIsoUtc","receivedDateTime","snippet","bodyPreview","bodyContentType","filterFields","text","JSON","stringify","structuredContent","Error","String","InternalError","stack","undefined","name"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { EnrichedExtra } from '@mcp-z/oauth-microsoft';
2
+ import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import { z } from 'zod';
4
+ declare const inputSchema: z.ZodObject<{
5
+ id: z.ZodCoercedString<unknown>;
6
+ }, z.core.$strip>;
7
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
8
+ success: z.ZodBoolean;
9
+ id: z.ZodOptional<z.ZodString>;
10
+ type: z.ZodLiteral<"success">;
11
+ }, z.core.$strip>, z.ZodObject<{
12
+ type: z.ZodLiteral<"auth_required">;
13
+ provider: z.ZodString;
14
+ message: z.ZodString;
15
+ url: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>], "type">;
17
+ export type Input = z.infer<typeof inputSchema>;
18
+ export type Output = z.infer<typeof outputSchema>;
19
+ declare function handler({ id }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
20
+ export default function createTool(): {
21
+ name: string;
22
+ config: {
23
+ readonly description: "Mark an Outlook message as read";
24
+ readonly inputSchema: z.ZodObject<{
25
+ id: z.ZodCoercedString<unknown>;
26
+ }, z.core.$strip>;
27
+ readonly outputSchema: z.ZodObject<{
28
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
29
+ success: z.ZodBoolean;
30
+ id: z.ZodOptional<z.ZodString>;
31
+ type: z.ZodLiteral<"success">;
32
+ }, z.core.$strip>, z.ZodObject<{
33
+ type: z.ZodLiteral<"auth_required">;
34
+ provider: z.ZodString;
35
+ message: z.ZodString;
36
+ url: z.ZodOptional<z.ZodString>;
37
+ }, z.core.$strip>], "type">;
38
+ }, z.core.$strip>;
39
+ };
40
+ handler: typeof handler;
41
+ };
42
+ export {};
@@ -0,0 +1,42 @@
1
+ import type { EnrichedExtra } from '@mcp-z/oauth-microsoft';
2
+ import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import { z } from 'zod';
4
+ declare const inputSchema: z.ZodObject<{
5
+ id: z.ZodCoercedString<unknown>;
6
+ }, z.core.$strip>;
7
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
8
+ success: z.ZodBoolean;
9
+ id: z.ZodOptional<z.ZodString>;
10
+ type: z.ZodLiteral<"success">;
11
+ }, z.core.$strip>, z.ZodObject<{
12
+ type: z.ZodLiteral<"auth_required">;
13
+ provider: z.ZodString;
14
+ message: z.ZodString;
15
+ url: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>], "type">;
17
+ export type Input = z.infer<typeof inputSchema>;
18
+ export type Output = z.infer<typeof outputSchema>;
19
+ declare function handler({ id }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
20
+ export default function createTool(): {
21
+ name: string;
22
+ config: {
23
+ readonly description: "Mark an Outlook message as read";
24
+ readonly inputSchema: z.ZodObject<{
25
+ id: z.ZodCoercedString<unknown>;
26
+ }, z.core.$strip>;
27
+ readonly outputSchema: z.ZodObject<{
28
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
29
+ success: z.ZodBoolean;
30
+ id: z.ZodOptional<z.ZodString>;
31
+ type: z.ZodLiteral<"success">;
32
+ }, z.core.$strip>, z.ZodObject<{
33
+ type: z.ZodLiteral<"auth_required">;
34
+ provider: z.ZodString;
35
+ message: z.ZodString;
36
+ url: z.ZodOptional<z.ZodString>;
37
+ }, z.core.$strip>], "type">;
38
+ }, z.core.$strip>;
39
+ };
40
+ handler: typeof handler;
41
+ };
42
+ export {};
@@ -0,0 +1,254 @@
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 _oauthmicrosoft = require("@mcp-z/oauth-microsoft");
12
+ var _microsoftgraphclient = require("@microsoft/microsoft-graph-client");
13
+ var _types = require("@modelcontextprotocol/sdk/types.js");
14
+ var _zod = require("zod");
15
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
16
+ try {
17
+ var info = gen[key](arg);
18
+ var value = info.value;
19
+ } catch (error) {
20
+ reject(error);
21
+ return;
22
+ }
23
+ if (info.done) {
24
+ resolve(value);
25
+ } else {
26
+ Promise.resolve(value).then(_next, _throw);
27
+ }
28
+ }
29
+ function _async_to_generator(fn) {
30
+ return function() {
31
+ var self = this, args = arguments;
32
+ return new Promise(function(resolve, reject) {
33
+ var gen = fn.apply(self, args);
34
+ function _next(value) {
35
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
36
+ }
37
+ function _throw(err) {
38
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
39
+ }
40
+ _next(undefined);
41
+ });
42
+ };
43
+ }
44
+ function _instanceof(left, right) {
45
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
46
+ return !!right[Symbol.hasInstance](left);
47
+ } else {
48
+ return left instanceof right;
49
+ }
50
+ }
51
+ function _ts_generator(thisArg, body) {
52
+ var f, y, t, _ = {
53
+ label: 0,
54
+ sent: function() {
55
+ if (t[0] & 1) throw t[1];
56
+ return t[1];
57
+ },
58
+ trys: [],
59
+ ops: []
60
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
61
+ return d(g, "next", {
62
+ value: verb(0)
63
+ }), d(g, "throw", {
64
+ value: verb(1)
65
+ }), d(g, "return", {
66
+ value: verb(2)
67
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
68
+ value: function() {
69
+ return this;
70
+ }
71
+ }), g;
72
+ function verb(n) {
73
+ return function(v) {
74
+ return step([
75
+ n,
76
+ v
77
+ ]);
78
+ };
79
+ }
80
+ function step(op) {
81
+ if (f) throw new TypeError("Generator is already executing.");
82
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
83
+ 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;
84
+ if (y = 0, t) op = [
85
+ op[0] & 2,
86
+ t.value
87
+ ];
88
+ switch(op[0]){
89
+ case 0:
90
+ case 1:
91
+ t = op;
92
+ break;
93
+ case 4:
94
+ _.label++;
95
+ return {
96
+ value: op[1],
97
+ done: false
98
+ };
99
+ case 5:
100
+ _.label++;
101
+ y = op[1];
102
+ op = [
103
+ 0
104
+ ];
105
+ continue;
106
+ case 7:
107
+ op = _.ops.pop();
108
+ _.trys.pop();
109
+ continue;
110
+ default:
111
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
112
+ _ = 0;
113
+ continue;
114
+ }
115
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
116
+ _.label = op[1];
117
+ break;
118
+ }
119
+ if (op[0] === 6 && _.label < t[1]) {
120
+ _.label = t[1];
121
+ t = op;
122
+ break;
123
+ }
124
+ if (t && _.label < t[2]) {
125
+ _.label = t[2];
126
+ _.ops.push(op);
127
+ break;
128
+ }
129
+ if (t[2]) _.ops.pop();
130
+ _.trys.pop();
131
+ continue;
132
+ }
133
+ op = body.call(thisArg, _);
134
+ } catch (e) {
135
+ op = [
136
+ 6,
137
+ e
138
+ ];
139
+ y = 0;
140
+ } finally{
141
+ f = t = 0;
142
+ }
143
+ if (op[0] & 5) throw op[1];
144
+ return {
145
+ value: op[0] ? op[1] : void 0,
146
+ done: true
147
+ };
148
+ }
149
+ }
150
+ var AuthRequiredBranchSchema = _oauthmicrosoft.schemas.AuthRequiredBranchSchema;
151
+ var SuccessSchema = _zod.z.object({
152
+ success: _zod.z.boolean().describe('Whether the operation completed successfully'),
153
+ id: _zod.z.string().optional().describe('Message ID that was marked as read')
154
+ });
155
+ var inputSchema = _zod.z.object({
156
+ id: _zod.z.coerce.string().trim().min(1).describe('Outlook message ID to mark as read')
157
+ });
158
+ // Success branch schema
159
+ var successBranchSchema = SuccessSchema.extend({
160
+ type: _zod.z.literal('success')
161
+ });
162
+ // Output schema with auth_required support
163
+ var outputSchema = _zod.z.discriminatedUnion('type', [
164
+ successBranchSchema,
165
+ AuthRequiredBranchSchema
166
+ ]);
167
+ var config = {
168
+ description: 'Mark an Outlook message as read',
169
+ inputSchema: inputSchema,
170
+ outputSchema: _zod.z.object({
171
+ result: outputSchema
172
+ })
173
+ };
174
+ function handler(_0, _1) {
175
+ return _async_to_generator(function(param, extra) {
176
+ var id, logger, graph, result, error, message;
177
+ return _ts_generator(this, function(_state) {
178
+ switch(_state.label){
179
+ case 0:
180
+ id = param.id;
181
+ logger = extra.logger;
182
+ logger.info('outlook-message-mark-read called', {
183
+ id: id
184
+ });
185
+ if (!id) {
186
+ logger.info('outlook-message-mark-read missing id');
187
+ throw new _types.McpError(_types.ErrorCode.InvalidParams, 'Missing id');
188
+ }
189
+ _state.label = 1;
190
+ case 1:
191
+ _state.trys.push([
192
+ 1,
193
+ 3,
194
+ ,
195
+ 4
196
+ ]);
197
+ graph = _microsoftgraphclient.Client.initWithMiddleware({
198
+ authProvider: extra.authContext.auth
199
+ });
200
+ return [
201
+ 4,
202
+ graph.api("/me/messages/".concat(encodeURIComponent(id))).update({
203
+ isRead: true
204
+ })
205
+ ];
206
+ case 2:
207
+ _state.sent();
208
+ logger.info('outlook-message-mark-read success', {
209
+ id: id
210
+ });
211
+ result = {
212
+ type: 'success',
213
+ success: true,
214
+ id: id
215
+ };
216
+ return [
217
+ 2,
218
+ {
219
+ content: [
220
+ {
221
+ type: 'text',
222
+ text: JSON.stringify(result)
223
+ }
224
+ ],
225
+ structuredContent: {
226
+ result: result
227
+ }
228
+ }
229
+ ];
230
+ case 3:
231
+ error = _state.sent();
232
+ message = _instanceof(error, Error) ? error.message : String(error);
233
+ logger.error('outlook-message-mark-read error', {
234
+ error: message
235
+ });
236
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Error marking message as read: ".concat(message), {
237
+ stack: _instanceof(error, Error) ? error.stack : undefined
238
+ });
239
+ case 4:
240
+ return [
241
+ 2
242
+ ];
243
+ }
244
+ });
245
+ }).apply(this, arguments);
246
+ }
247
+ function createTool() {
248
+ return {
249
+ name: 'message-mark-read',
250
+ config: config,
251
+ handler: handler
252
+ };
253
+ }
254
+ /* 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-mark-read.ts"],"sourcesContent":["import 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';\n\nconst SuccessSchema = z.object({\n success: z.boolean().describe('Whether the operation completed successfully'),\n id: z.string().optional().describe('Message ID that was marked as read'),\n});\n\nconst inputSchema = z.object({\n id: z.coerce.string().trim().min(1).describe('Outlook message ID to mark as read'),\n});\n\n// Success branch schema\nconst successBranchSchema = SuccessSchema.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: 'Mark an Outlook message as read',\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({ id }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('outlook-message-mark-read called', { id });\n\n if (!id) {\n logger.info('outlook-message-mark-read missing id');\n throw new McpError(ErrorCode.InvalidParams, 'Missing id');\n }\n\n try {\n const graph = Client.initWithMiddleware({ authProvider: extra.authContext.auth });\n await graph.api(`/me/messages/${encodeURIComponent(id)}`).update({ isRead: true });\n\n logger.info('outlook-message-mark-read success', { id });\n\n const result: Output = {\n type: 'success' as const,\n success: true,\n id,\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-mark-read error', { error: message });\n\n throw new McpError(ErrorCode.InternalError, `Error marking message as read: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'message-mark-read',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","SuccessSchema","z","object","success","boolean","describe","id","string","optional","inputSchema","coerce","trim","min","successBranchSchema","extend","type","literal","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","graph","error","message","info","McpError","ErrorCode","InvalidParams","Client","initWithMiddleware","authProvider","authContext","auth","api","encodeURIComponent","update","isRead","content","text","JSON","stringify","structuredContent","Error","String","InternalError","stack","undefined","name"],"mappings":";;;;+BA8EA;;;eAAwBA;;;8BA7EA;oCAKD;qBACkC;mBACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AALlB,IAAM,AAAEC,2BAA6BC,uBAAO,CAApCD;AAOR,IAAME,gBAAgBC,MAAC,CAACC,MAAM,CAAC;IAC7BC,SAASF,MAAC,CAACG,OAAO,GAAGC,QAAQ,CAAC;IAC9BC,IAAIL,MAAC,CAACM,MAAM,GAAGC,QAAQ,GAAGH,QAAQ,CAAC;AACrC;AAEA,IAAMI,cAAcR,MAAC,CAACC,MAAM,CAAC;IAC3BI,IAAIL,MAAC,CAACS,MAAM,CAACH,MAAM,GAAGI,IAAI,GAAGC,GAAG,CAAC,GAAGP,QAAQ,CAAC;AAC/C;AAEA,wBAAwB;AACxB,IAAMQ,sBAAsBb,cAAcc,MAAM,CAAC;IAC/CC,MAAMd,MAAC,CAACe,OAAO,CAAC;AAClB;AAEA,2CAA2C;AAC3C,IAAMC,eAAehB,MAAC,CAACiB,kBAAkB,CAAC,QAAQ;IAACL;IAAqBf;CAAyB;AAEjG,IAAMqB,SAAS;IACbC,aAAa;IACbX,aAAaA;IACbQ,cAAchB,MAAC,CAACC,MAAM,CAAC;QACrBmB,QAAQJ;IACV;AACF;AAKA,SAAeK;wCAAQ,KAAa,EAAEC,KAAoB;YAAjCjB,IACjBkB,QASEC,OAKAJ,QAeCK,OACDC;;;;oBA/BerB,KAAF,MAAEA;oBACjBkB,SAASD,MAAMC,MAAM;oBAC3BA,OAAOI,IAAI,CAAC,oCAAoC;wBAAEtB,IAAAA;oBAAG;oBAErD,IAAI,CAACA,IAAI;wBACPkB,OAAOI,IAAI,CAAC;wBACZ,MAAM,IAAIC,eAAQ,CAACC,gBAAS,CAACC,aAAa,EAAE;oBAC9C;;;;;;;;;oBAGQN,QAAQO,4BAAM,CAACC,kBAAkB,CAAC;wBAAEC,cAAcX,MAAMY,WAAW,CAACC,IAAI;oBAAC;oBAC/E;;wBAAMX,MAAMY,GAAG,CAAC,AAAC,gBAAsC,OAAvBC,mBAAmBhC,MAAOiC,MAAM,CAAC;4BAAEC,QAAQ;wBAAK;;;oBAAhF;oBAEAhB,OAAOI,IAAI,CAAC,qCAAqC;wBAAEtB,IAAAA;oBAAG;oBAEhDe,SAAiB;wBACrBN,MAAM;wBACNZ,SAAS;wBACTG,IAAAA;oBACF;oBAEA;;wBAAO;4BACLmC,OAAO;gCACL;oCACE1B,MAAM;oCACN2B,MAAMC,KAAKC,SAAS,CAACvB;gCACvB;;4BAEFwB,mBAAmB;gCAAExB,QAAAA;4BAAO;wBAC9B;;;oBACOK;oBACDC,UAAUD,AAAK,YAALA,OAAiBoB,SAAQpB,MAAMC,OAAO,GAAGoB,OAAOrB;oBAChEF,OAAOE,KAAK,CAAC,mCAAmC;wBAAEA,OAAOC;oBAAQ;oBAEjE,MAAM,IAAIE,eAAQ,CAACC,gBAAS,CAACkB,aAAa,EAAE,AAAC,kCAAyC,OAARrB,UAAW;wBACvFsB,OAAOvB,AAAK,YAALA,OAAiBoB,SAAQpB,MAAMuB,KAAK,GAAGC;oBAChD;;;;;;;IAEJ;;AAEe,SAASrD;IACtB,OAAO;QACLsD,MAAM;QACNhC,QAAAA;QACAG,SAAAA;IACF;AACF"}