@jbctechsolutions/mcp-office365 2.5.1 → 4.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 (369) hide show
  1. package/README.md +66 -57
  2. package/dist/approval/hash.d.ts +8 -8
  3. package/dist/approval/token-manager.d.ts +37 -19
  4. package/dist/approval/token-manager.d.ts.map +1 -1
  5. package/dist/approval/token-manager.js +133 -37
  6. package/dist/approval/token-manager.js.map +1 -1
  7. package/dist/approval/types.d.ts +7 -3
  8. package/dist/approval/types.d.ts.map +1 -1
  9. package/dist/cli.d.ts +21 -0
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +100 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/database/repository.d.ts +48 -48
  14. package/dist/database/repository.d.ts.map +1 -1
  15. package/dist/database/repository.js.map +1 -1
  16. package/dist/delta/mirror.d.ts +67 -0
  17. package/dist/delta/mirror.d.ts.map +1 -0
  18. package/dist/delta/mirror.js +183 -0
  19. package/dist/delta/mirror.js.map +1 -0
  20. package/dist/graph/auth/account-id.d.ts +19 -0
  21. package/dist/graph/auth/account-id.d.ts.map +1 -0
  22. package/dist/graph/auth/account-id.js +55 -0
  23. package/dist/graph/auth/account-id.js.map +1 -0
  24. package/dist/graph/auth/config.d.ts +1 -1
  25. package/dist/graph/auth/config.d.ts.map +1 -1
  26. package/dist/graph/auth/config.js +13 -1
  27. package/dist/graph/auth/config.js.map +1 -1
  28. package/dist/graph/auth/device-code-flow.d.ts +3 -1
  29. package/dist/graph/auth/device-code-flow.d.ts.map +1 -1
  30. package/dist/graph/auth/device-code-flow.js +42 -14
  31. package/dist/graph/auth/device-code-flow.js.map +1 -1
  32. package/dist/graph/auth/index.d.ts +1 -0
  33. package/dist/graph/auth/index.d.ts.map +1 -1
  34. package/dist/graph/auth/index.js +1 -0
  35. package/dist/graph/auth/index.js.map +1 -1
  36. package/dist/graph/auth/token-cache.js +2 -2
  37. package/dist/graph/auth/token-cache.js.map +1 -1
  38. package/dist/graph/client/graph-client.d.ts +141 -8
  39. package/dist/graph/client/graph-client.d.ts.map +1 -1
  40. package/dist/graph/client/graph-client.js +536 -48
  41. package/dist/graph/client/graph-client.js.map +1 -1
  42. package/dist/graph/client/immutable-id-middleware.d.ts +50 -0
  43. package/dist/graph/client/immutable-id-middleware.d.ts.map +1 -0
  44. package/dist/graph/client/immutable-id-middleware.js +137 -0
  45. package/dist/graph/client/immutable-id-middleware.js.map +1 -0
  46. package/dist/graph/content-readers.d.ts +0 -12
  47. package/dist/graph/content-readers.d.ts.map +1 -1
  48. package/dist/graph/content-readers.js +0 -21
  49. package/dist/graph/content-readers.js.map +1 -1
  50. package/dist/graph/index.d.ts +5 -6
  51. package/dist/graph/index.d.ts.map +1 -1
  52. package/dist/graph/index.js +5 -6
  53. package/dist/graph/index.js.map +1 -1
  54. package/dist/graph/mailbox-adapter.d.ts +15 -15
  55. package/dist/graph/mappers/contact-mapper.d.ts +4 -1
  56. package/dist/graph/mappers/contact-mapper.d.ts.map +1 -1
  57. package/dist/graph/mappers/contact-mapper.js +7 -3
  58. package/dist/graph/mappers/contact-mapper.js.map +1 -1
  59. package/dist/graph/mappers/email-mapper.d.ts.map +1 -1
  60. package/dist/graph/mappers/email-mapper.js +7 -4
  61. package/dist/graph/mappers/email-mapper.js.map +1 -1
  62. package/dist/graph/mappers/event-mapper.d.ts.map +1 -1
  63. package/dist/graph/mappers/event-mapper.js +6 -3
  64. package/dist/graph/mappers/event-mapper.js.map +1 -1
  65. package/dist/graph/mappers/folder-mapper.d.ts +0 -4
  66. package/dist/graph/mappers/folder-mapper.d.ts.map +1 -1
  67. package/dist/graph/mappers/folder-mapper.js +9 -19
  68. package/dist/graph/mappers/folder-mapper.js.map +1 -1
  69. package/dist/graph/mappers/index.d.ts +2 -2
  70. package/dist/graph/mappers/index.d.ts.map +1 -1
  71. package/dist/graph/mappers/index.js +2 -2
  72. package/dist/graph/mappers/index.js.map +1 -1
  73. package/dist/graph/mappers/task-mapper.d.ts +4 -2
  74. package/dist/graph/mappers/task-mapper.d.ts.map +1 -1
  75. package/dist/graph/mappers/task-mapper.js +7 -5
  76. package/dist/graph/mappers/task-mapper.js.map +1 -1
  77. package/dist/graph/mappers/utils.d.ts +0 -10
  78. package/dist/graph/mappers/utils.d.ts.map +1 -1
  79. package/dist/graph/mappers/utils.js +0 -19
  80. package/dist/graph/mappers/utils.js.map +1 -1
  81. package/dist/graph/repository.d.ts +409 -276
  82. package/dist/graph/repository.d.ts.map +1 -1
  83. package/dist/graph/repository.js +772 -1082
  84. package/dist/graph/repository.js.map +1 -1
  85. package/dist/ids/mint.d.ts +31 -0
  86. package/dist/ids/mint.d.ts.map +1 -0
  87. package/dist/ids/mint.js +36 -0
  88. package/dist/ids/mint.js.map +1 -0
  89. package/dist/ids/next-action.d.ts +29 -0
  90. package/dist/ids/next-action.d.ts.map +1 -0
  91. package/dist/ids/next-action.js +58 -0
  92. package/dist/ids/next-action.js.map +1 -0
  93. package/dist/ids/resolver.d.ts +31 -0
  94. package/dist/ids/resolver.d.ts.map +1 -0
  95. package/dist/ids/resolver.js +52 -0
  96. package/dist/ids/resolver.js.map +1 -0
  97. package/dist/ids/schema.d.ts +91 -0
  98. package/dist/ids/schema.d.ts.map +1 -0
  99. package/dist/ids/schema.js +131 -0
  100. package/dist/ids/schema.js.map +1 -0
  101. package/dist/ids/token.d.ts +62 -0
  102. package/dist/ids/token.d.ts.map +1 -0
  103. package/dist/ids/token.js +225 -0
  104. package/dist/ids/token.js.map +1 -0
  105. package/dist/index.d.ts +10 -6
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +255 -5925
  108. package/dist/index.js.map +1 -1
  109. package/dist/parsers/index.d.ts +0 -1
  110. package/dist/parsers/index.d.ts.map +1 -1
  111. package/dist/parsers/index.js +0 -1
  112. package/dist/parsers/index.js.map +1 -1
  113. package/dist/registry/all-tools.d.ts +14 -0
  114. package/dist/registry/all-tools.d.ts.map +1 -0
  115. package/dist/registry/all-tools.js +68 -0
  116. package/dist/registry/all-tools.js.map +1 -0
  117. package/dist/registry/context.d.ts +19 -0
  118. package/dist/registry/context.d.ts.map +1 -0
  119. package/dist/registry/context.js +20 -0
  120. package/dist/registry/context.js.map +1 -0
  121. package/dist/registry/define-tool.d.ts +15 -0
  122. package/dist/registry/define-tool.d.ts.map +1 -0
  123. package/dist/registry/define-tool.js +8 -0
  124. package/dist/registry/define-tool.js.map +1 -0
  125. package/dist/registry/elicit-links.d.ts +35 -0
  126. package/dist/registry/elicit-links.d.ts.map +1 -0
  127. package/dist/registry/elicit-links.js +102 -0
  128. package/dist/registry/elicit-links.js.map +1 -0
  129. package/dist/registry/elicitor.d.ts +24 -0
  130. package/dist/registry/elicitor.d.ts.map +1 -0
  131. package/dist/registry/elicitor.js +51 -0
  132. package/dist/registry/elicitor.js.map +1 -0
  133. package/dist/registry/index.d.ts +13 -0
  134. package/dist/registry/index.d.ts.map +1 -0
  135. package/dist/registry/index.js +8 -0
  136. package/dist/registry/index.js.map +1 -0
  137. package/dist/registry/registry.d.ts +73 -0
  138. package/dist/registry/registry.d.ts.map +1 -0
  139. package/dist/registry/registry.js +221 -0
  140. package/dist/registry/registry.js.map +1 -0
  141. package/dist/registry/types.d.ts +146 -0
  142. package/dist/registry/types.d.ts.map +1 -0
  143. package/dist/registry/types.js +6 -0
  144. package/dist/registry/types.js.map +1 -0
  145. package/dist/search/compiler.d.ts +49 -0
  146. package/dist/search/compiler.d.ts.map +1 -0
  147. package/dist/search/compiler.js +168 -0
  148. package/dist/search/compiler.js.map +1 -0
  149. package/dist/signature.js +2 -2
  150. package/dist/signature.js.map +1 -1
  151. package/dist/state/delta-store.d.ts +85 -0
  152. package/dist/state/delta-store.d.ts.map +1 -0
  153. package/dist/state/delta-store.js +124 -0
  154. package/dist/state/delta-store.js.map +1 -0
  155. package/dist/state/migrate.d.ts +23 -0
  156. package/dist/state/migrate.d.ts.map +1 -0
  157. package/dist/state/migrate.js +81 -0
  158. package/dist/state/migrate.js.map +1 -0
  159. package/dist/state/schema.d.ts +26 -0
  160. package/dist/state/schema.d.ts.map +1 -0
  161. package/dist/state/schema.js +77 -0
  162. package/dist/state/schema.js.map +1 -0
  163. package/dist/state/store.d.ts +155 -0
  164. package/dist/state/store.d.ts.map +1 -0
  165. package/dist/state/store.js +321 -0
  166. package/dist/state/store.js.map +1 -0
  167. package/dist/tools/calendar-graph.d.ts +41 -0
  168. package/dist/tools/calendar-graph.d.ts.map +1 -0
  169. package/dist/tools/calendar-graph.js +299 -0
  170. package/dist/tools/calendar-graph.js.map +1 -0
  171. package/dist/tools/calendar-permissions.d.ts +17 -7
  172. package/dist/tools/calendar-permissions.d.ts.map +1 -1
  173. package/dist/tools/calendar-permissions.js +60 -4
  174. package/dist/tools/calendar-permissions.js.map +1 -1
  175. package/dist/tools/calendar.d.ts +133 -82
  176. package/dist/tools/calendar.d.ts.map +1 -1
  177. package/dist/tools/calendar.js +249 -136
  178. package/dist/tools/calendar.js.map +1 -1
  179. package/dist/tools/categories.d.ts +14 -4
  180. package/dist/tools/categories.d.ts.map +1 -1
  181. package/dist/tools/categories.js +59 -2
  182. package/dist/tools/categories.js.map +1 -1
  183. package/dist/tools/checklist-items.d.ts +19 -9
  184. package/dist/tools/checklist-items.d.ts.map +1 -1
  185. package/dist/tools/checklist-items.js +71 -5
  186. package/dist/tools/checklist-items.js.map +1 -1
  187. package/dist/tools/contact-folders.d.ts +50 -0
  188. package/dist/tools/contact-folders.d.ts.map +1 -0
  189. package/dist/tools/contact-folders.js +136 -0
  190. package/dist/tools/contact-folders.js.map +1 -0
  191. package/dist/tools/contacts-graph.d.ts +45 -0
  192. package/dist/tools/contacts-graph.d.ts.map +1 -0
  193. package/dist/tools/contacts-graph.js +174 -0
  194. package/dist/tools/contacts-graph.js.map +1 -0
  195. package/dist/tools/contacts.d.ts +61 -30
  196. package/dist/tools/contacts.d.ts.map +1 -1
  197. package/dist/tools/contacts.js +150 -93
  198. package/dist/tools/contacts.js.map +1 -1
  199. package/dist/tools/excel.d.ts +20 -10
  200. package/dist/tools/excel.d.ts.map +1 -1
  201. package/dist/tools/excel.js +82 -6
  202. package/dist/tools/excel.js.map +1 -1
  203. package/dist/tools/focused-overrides.d.ts +14 -4
  204. package/dist/tools/focused-overrides.d.ts.map +1 -1
  205. package/dist/tools/focused-overrides.js +59 -2
  206. package/dist/tools/focused-overrides.js.map +1 -1
  207. package/dist/tools/index.d.ts +4 -5
  208. package/dist/tools/index.d.ts.map +1 -1
  209. package/dist/tools/index.js +4 -6
  210. package/dist/tools/index.js.map +1 -1
  211. package/dist/tools/linked-resources.d.ts +17 -7
  212. package/dist/tools/linked-resources.d.ts.map +1 -1
  213. package/dist/tools/linked-resources.js +60 -4
  214. package/dist/tools/linked-resources.js.map +1 -1
  215. package/dist/tools/mail-graph.d.ts +38 -0
  216. package/dist/tools/mail-graph.d.ts.map +1 -0
  217. package/dist/tools/mail-graph.js +187 -0
  218. package/dist/tools/mail-graph.js.map +1 -0
  219. package/dist/tools/mail-rules.d.ts +20 -8
  220. package/dist/tools/mail-rules.d.ts.map +1 -1
  221. package/dist/tools/mail-rules.js +63 -7
  222. package/dist/tools/mail-rules.js.map +1 -1
  223. package/dist/tools/mail-send.d.ts +39 -27
  224. package/dist/tools/mail-send.d.ts.map +1 -1
  225. package/dist/tools/mail-send.js +249 -24
  226. package/dist/tools/mail-send.js.map +1 -1
  227. package/dist/tools/mail.d.ts +91 -68
  228. package/dist/tools/mail.d.ts.map +1 -1
  229. package/dist/tools/mail.js +232 -243
  230. package/dist/tools/mail.js.map +1 -1
  231. package/dist/tools/mailbox-organization.d.ts +51 -34
  232. package/dist/tools/mailbox-organization.d.ts.map +1 -1
  233. package/dist/tools/mailbox-organization.js +318 -35
  234. package/dist/tools/mailbox-organization.js.map +1 -1
  235. package/dist/tools/mailbox-settings.d.ts +59 -0
  236. package/dist/tools/mailbox-settings.d.ts.map +1 -0
  237. package/dist/tools/mailbox-settings.js +136 -0
  238. package/dist/tools/mailbox-settings.js.map +1 -0
  239. package/dist/tools/meetings.d.ts +24 -14
  240. package/dist/tools/meetings.d.ts.map +1 -1
  241. package/dist/tools/meetings.js +82 -6
  242. package/dist/tools/meetings.js.map +1 -1
  243. package/dist/tools/onedrive.d.ts +26 -16
  244. package/dist/tools/onedrive.d.ts.map +1 -1
  245. package/dist/tools/onedrive.js +140 -11
  246. package/dist/tools/onedrive.js.map +1 -1
  247. package/dist/tools/onenote.d.ts +63 -0
  248. package/dist/tools/onenote.d.ts.map +1 -0
  249. package/dist/tools/onenote.js +221 -0
  250. package/dist/tools/onenote.js.map +1 -0
  251. package/dist/tools/people.d.ts +10 -0
  252. package/dist/tools/people.d.ts.map +1 -1
  253. package/dist/tools/people.js +94 -0
  254. package/dist/tools/people.js.map +1 -1
  255. package/dist/tools/planner-visualization.d.ts +15 -5
  256. package/dist/tools/planner-visualization.d.ts.map +1 -1
  257. package/dist/tools/planner-visualization.js +58 -4
  258. package/dist/tools/planner-visualization.js.map +1 -1
  259. package/dist/tools/planner.d.ts +69 -39
  260. package/dist/tools/planner.d.ts.map +1 -1
  261. package/dist/tools/planner.js +231 -23
  262. package/dist/tools/planner.js.map +1 -1
  263. package/dist/tools/scheduling.d.ts +12 -0
  264. package/dist/tools/scheduling.d.ts.map +1 -1
  265. package/dist/tools/scheduling.js +38 -0
  266. package/dist/tools/scheduling.js.map +1 -1
  267. package/dist/tools/shared-mailbox.d.ts +164 -0
  268. package/dist/tools/shared-mailbox.d.ts.map +1 -0
  269. package/dist/tools/shared-mailbox.js +318 -0
  270. package/dist/tools/shared-mailbox.js.map +1 -0
  271. package/dist/tools/sharepoint-lists.d.ts +131 -0
  272. package/dist/tools/sharepoint-lists.d.ts.map +1 -0
  273. package/dist/tools/sharepoint-lists.js +246 -0
  274. package/dist/tools/sharepoint-lists.js.map +1 -0
  275. package/dist/tools/sharepoint.d.ts +24 -14
  276. package/dist/tools/sharepoint.d.ts.map +1 -1
  277. package/dist/tools/sharepoint.js +85 -9
  278. package/dist/tools/sharepoint.js.map +1 -1
  279. package/dist/tools/task-attachments.d.ts +17 -7
  280. package/dist/tools/task-attachments.d.ts.map +1 -1
  281. package/dist/tools/task-attachments.js +60 -4
  282. package/dist/tools/task-attachments.js.map +1 -1
  283. package/dist/tools/task-lists.d.ts +56 -0
  284. package/dist/tools/task-lists.d.ts.map +1 -0
  285. package/dist/tools/task-lists.js +155 -0
  286. package/dist/tools/task-lists.js.map +1 -0
  287. package/dist/tools/tasks-graph.d.ts +49 -0
  288. package/dist/tools/tasks-graph.d.ts.map +1 -0
  289. package/dist/tools/tasks-graph.js +193 -0
  290. package/dist/tools/tasks-graph.js.map +1 -0
  291. package/dist/tools/tasks.d.ts +121 -29
  292. package/dist/tools/tasks.d.ts.map +1 -1
  293. package/dist/tools/tasks.js +136 -84
  294. package/dist/tools/tasks.js.map +1 -1
  295. package/dist/tools/teams.d.ts +57 -46
  296. package/dist/tools/teams.d.ts.map +1 -1
  297. package/dist/tools/teams.js +288 -26
  298. package/dist/tools/teams.js.map +1 -1
  299. package/dist/tools/what-changed.d.ts +48 -0
  300. package/dist/tools/what-changed.d.ts.map +1 -0
  301. package/dist/tools/what-changed.js +149 -0
  302. package/dist/tools/what-changed.js.map +1 -0
  303. package/dist/types/calendar.d.ts +1 -1
  304. package/dist/types/calendar.d.ts.map +1 -1
  305. package/dist/types/calendar.js.map +1 -1
  306. package/dist/types/contacts.d.ts +1 -1
  307. package/dist/types/contacts.d.ts.map +1 -1
  308. package/dist/types/contacts.js.map +1 -1
  309. package/dist/types/mail.d.ts +1 -1
  310. package/dist/types/mail.d.ts.map +1 -1
  311. package/dist/types/mail.js.map +1 -1
  312. package/dist/utils/errors.d.ts +110 -38
  313. package/dist/utils/errors.d.ts.map +1 -1
  314. package/dist/utils/errors.js +239 -56
  315. package/dist/utils/errors.js.map +1 -1
  316. package/dist/visualization/types.d.ts +4 -4
  317. package/package.json +2 -3
  318. package/dist/applescript/account-repository.d.ts +0 -30
  319. package/dist/applescript/account-repository.d.ts.map +0 -1
  320. package/dist/applescript/account-repository.js +0 -38
  321. package/dist/applescript/account-repository.js.map +0 -1
  322. package/dist/applescript/account-scripts.d.ts +0 -21
  323. package/dist/applescript/account-scripts.d.ts.map +0 -1
  324. package/dist/applescript/account-scripts.js +0 -180
  325. package/dist/applescript/account-scripts.js.map +0 -1
  326. package/dist/applescript/calendar-manager.d.ts +0 -44
  327. package/dist/applescript/calendar-manager.d.ts.map +0 -1
  328. package/dist/applescript/calendar-manager.js +0 -92
  329. package/dist/applescript/calendar-manager.js.map +0 -1
  330. package/dist/applescript/calendar-writer.d.ts +0 -36
  331. package/dist/applescript/calendar-writer.d.ts.map +0 -1
  332. package/dist/applescript/calendar-writer.js +0 -94
  333. package/dist/applescript/calendar-writer.js.map +0 -1
  334. package/dist/applescript/content-readers.d.ts +0 -114
  335. package/dist/applescript/content-readers.d.ts.map +0 -1
  336. package/dist/applescript/content-readers.js +0 -328
  337. package/dist/applescript/content-readers.js.map +0 -1
  338. package/dist/applescript/executor.d.ts +0 -60
  339. package/dist/applescript/executor.d.ts.map +0 -1
  340. package/dist/applescript/executor.js +0 -173
  341. package/dist/applescript/executor.js.map +0 -1
  342. package/dist/applescript/index.d.ts +0 -20
  343. package/dist/applescript/index.d.ts.map +0 -1
  344. package/dist/applescript/index.js +0 -29
  345. package/dist/applescript/index.js.map +0 -1
  346. package/dist/applescript/mail-sender.d.ts +0 -38
  347. package/dist/applescript/mail-sender.d.ts.map +0 -1
  348. package/dist/applescript/mail-sender.js +0 -67
  349. package/dist/applescript/mail-sender.js.map +0 -1
  350. package/dist/applescript/parser.d.ts +0 -235
  351. package/dist/applescript/parser.d.ts.map +0 -1
  352. package/dist/applescript/parser.js +0 -496
  353. package/dist/applescript/parser.js.map +0 -1
  354. package/dist/applescript/repository.d.ts +0 -64
  355. package/dist/applescript/repository.d.ts.map +0 -1
  356. package/dist/applescript/repository.js +0 -444
  357. package/dist/applescript/repository.js.map +0 -1
  358. package/dist/applescript/scripts.d.ts +0 -265
  359. package/dist/applescript/scripts.d.ts.map +0 -1
  360. package/dist/applescript/scripts.js +0 -1483
  361. package/dist/applescript/scripts.js.map +0 -1
  362. package/dist/parsers/olk15.d.ts +0 -87
  363. package/dist/parsers/olk15.d.ts.map +0 -1
  364. package/dist/parsers/olk15.js +0 -368
  365. package/dist/parsers/olk15.js.map +0 -1
  366. package/dist/tools/notes.d.ts +0 -74
  367. package/dist/tools/notes.d.ts.map +0 -1
  368. package/dist/tools/notes.js +0 -136
  369. package/dist/tools/notes.js.map +0 -1
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * Shared-mailbox / delegate-access MCP tools (#40).
7
+ *
8
+ * Every other domain scopes its Graph calls to `/me/...`. These tools target
9
+ * another user's mailbox, calendar, or drive via `/users/{upn}/...`, relying on
10
+ * the signed-in user having delegate / shared access (or the delegated
11
+ * `Mail.Read.Shared` / `Calendars.Read.Shared` / `Files.Read.All` scopes). They
12
+ * are READ-ONLY (issue #40: start read-only mail + calendar + files, expand
13
+ * later) and self-contained: they hit Graph directly rather than the `/me`
14
+ * local mirror, and return RAW Graph ids.
15
+ *
16
+ * Why raw ids (not durable tokens): durable tokens are `/me`- and
17
+ * account-scoped (D7) — the same message in a shared mailbox has a different
18
+ * Graph id than it would under `/me`, so a token minted for `/me` cannot
19
+ * address another mailbox. Each `get_*` tool therefore takes the raw id echoed
20
+ * by its `list_*` / `search_*` counterpart plus the `mailbox` it came from.
21
+ * Passing a durable token here is rejected with a clear validation error.
22
+ */
23
+ import { z } from 'zod';
24
+ import type { ToolDefinition, ToolResult } from '../registry/types.js';
25
+ declare module '../registry/types.js' {
26
+ interface GraphToolsets {
27
+ sharedMailbox: SharedMailboxTools;
28
+ }
29
+ }
30
+ export declare const ListSharedMailboxFoldersInput: z.ZodObject<{
31
+ mailbox: z.ZodString;
32
+ }, z.core.$strict>;
33
+ export declare const ListSharedMailboxEmailsInput: z.ZodObject<{
34
+ mailbox: z.ZodString;
35
+ folder_id: z.ZodOptional<z.ZodString>;
36
+ limit: z.ZodOptional<z.ZodNumber>;
37
+ unread_only: z.ZodOptional<z.ZodBoolean>;
38
+ }, z.core.$strict>;
39
+ export declare const GetSharedMailboxEmailInput: z.ZodObject<{
40
+ mailbox: z.ZodString;
41
+ email_id: z.ZodString;
42
+ include_body: z.ZodOptional<z.ZodBoolean>;
43
+ strip_html: z.ZodOptional<z.ZodBoolean>;
44
+ }, z.core.$strict>;
45
+ export declare const SearchSharedMailboxEmailsInput: z.ZodObject<{
46
+ mailbox: z.ZodString;
47
+ query: z.ZodString;
48
+ limit: z.ZodOptional<z.ZodNumber>;
49
+ }, z.core.$strict>;
50
+ export declare const ListSharedCalendarEventsInput: z.ZodObject<{
51
+ mailbox: z.ZodString;
52
+ start: z.ZodOptional<z.ZodString>;
53
+ end: z.ZodOptional<z.ZodString>;
54
+ limit: z.ZodOptional<z.ZodNumber>;
55
+ }, z.core.$strict>;
56
+ export declare const GetSharedCalendarEventInput: z.ZodObject<{
57
+ mailbox: z.ZodString;
58
+ event_id: z.ZodString;
59
+ }, z.core.$strict>;
60
+ export declare const ListSharedUserDriveItemsInput: z.ZodObject<{
61
+ mailbox: z.ZodString;
62
+ item_id: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$strict>;
64
+ export declare const SearchSharedUserDriveItemsInput: z.ZodObject<{
65
+ mailbox: z.ZodString;
66
+ query: z.ZodString;
67
+ limit: z.ZodOptional<z.ZodNumber>;
68
+ }, z.core.$strict>;
69
+ export type ListSharedMailboxFoldersParams = z.infer<typeof ListSharedMailboxFoldersInput>;
70
+ export type ListSharedMailboxEmailsParams = z.infer<typeof ListSharedMailboxEmailsInput>;
71
+ export type GetSharedMailboxEmailParams = z.infer<typeof GetSharedMailboxEmailInput>;
72
+ export type SearchSharedMailboxEmailsParams = z.infer<typeof SearchSharedMailboxEmailsInput>;
73
+ export type ListSharedCalendarEventsParams = z.infer<typeof ListSharedCalendarEventsInput>;
74
+ export type GetSharedCalendarEventParams = z.infer<typeof GetSharedCalendarEventInput>;
75
+ export type ListSharedUserDriveItemsParams = z.infer<typeof ListSharedUserDriveItemsInput>;
76
+ export type SearchSharedUserDriveItemsParams = z.infer<typeof SearchSharedUserDriveItemsInput>;
77
+ interface GraphRecipient {
78
+ emailAddress?: {
79
+ name?: string | null;
80
+ address?: string | null;
81
+ } | null;
82
+ }
83
+ interface GraphMessage {
84
+ id?: string | null;
85
+ subject?: string | null;
86
+ from?: GraphRecipient | null;
87
+ toRecipients?: GraphRecipient[] | null;
88
+ ccRecipients?: GraphRecipient[] | null;
89
+ receivedDateTime?: string | null;
90
+ sentDateTime?: string | null;
91
+ isRead?: boolean | null;
92
+ hasAttachments?: boolean | null;
93
+ importance?: string | null;
94
+ bodyPreview?: string | null;
95
+ conversationId?: string | null;
96
+ parentFolderId?: string | null;
97
+ body?: {
98
+ contentType?: string | null;
99
+ content?: string | null;
100
+ } | null;
101
+ }
102
+ interface GraphMailFolder {
103
+ id?: string | null;
104
+ displayName?: string | null;
105
+ parentFolderId?: string | null;
106
+ totalItemCount?: number | null;
107
+ unreadItemCount?: number | null;
108
+ }
109
+ interface GraphEventLike {
110
+ id?: string | null;
111
+ subject?: string | null;
112
+ start?: {
113
+ dateTime?: string | null;
114
+ timeZone?: string | null;
115
+ } | null;
116
+ end?: {
117
+ dateTime?: string | null;
118
+ timeZone?: string | null;
119
+ } | null;
120
+ location?: {
121
+ displayName?: string | null;
122
+ } | null;
123
+ isAllDay?: boolean | null;
124
+ organizer?: GraphRecipient | null;
125
+ attendees?: Array<{
126
+ emailAddress?: {
127
+ name?: string | null;
128
+ address?: string | null;
129
+ } | null;
130
+ status?: {
131
+ response?: string | null;
132
+ } | null;
133
+ }> | null;
134
+ bodyPreview?: string | null;
135
+ body?: {
136
+ contentType?: string | null;
137
+ content?: string | null;
138
+ } | null;
139
+ }
140
+ export interface ISharedMailboxClient {
141
+ listSharedMailFolders(mailbox: string): Promise<GraphMailFolder[]>;
142
+ listSharedMessages(mailbox: string, folderId?: string, limit?: number, unreadOnly?: boolean): Promise<GraphMessage[]>;
143
+ getSharedMessage(mailbox: string, messageId: string, includeBody?: boolean): Promise<GraphMessage>;
144
+ searchSharedMessages(mailbox: string, query: string, limit?: number): Promise<GraphMessage[]>;
145
+ listSharedEvents(mailbox: string, limit?: number, startDate?: Date, endDate?: Date): Promise<GraphEventLike[]>;
146
+ getSharedEvent(mailbox: string, eventId: string): Promise<GraphEventLike>;
147
+ listSharedDriveItems(mailbox: string, itemId?: string): Promise<Array<Record<string, unknown>>>;
148
+ searchSharedDriveItems(mailbox: string, query: string, limit?: number): Promise<Array<Record<string, unknown>>>;
149
+ }
150
+ export declare class SharedMailboxTools {
151
+ private readonly client;
152
+ constructor(client: ISharedMailboxClient);
153
+ listFolders(params: ListSharedMailboxFoldersParams): Promise<ToolResult>;
154
+ listEmails(params: ListSharedMailboxEmailsParams): Promise<ToolResult>;
155
+ getEmail(params: GetSharedMailboxEmailParams): Promise<ToolResult>;
156
+ searchEmails(params: SearchSharedMailboxEmailsParams): Promise<ToolResult>;
157
+ listEvents(params: ListSharedCalendarEventsParams): Promise<ToolResult>;
158
+ getEvent(params: GetSharedCalendarEventParams): Promise<ToolResult>;
159
+ listDriveItems(params: ListSharedUserDriveItemsParams): Promise<ToolResult>;
160
+ searchDriveItems(params: SearchSharedUserDriveItemsParams): Promise<ToolResult>;
161
+ }
162
+ export declare function sharedMailboxToolDefinitions(): ToolDefinition[];
163
+ export {};
164
+ //# sourceMappingURL=shared-mailbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-mailbox.d.ts","sourceRoot":"","sources":["../../src/tools/shared-mailbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * Shared-mailbox / delegate-access MCP tools (#40).
7
+ *
8
+ * Every other domain scopes its Graph calls to `/me/...`. These tools target
9
+ * another user's mailbox, calendar, or drive via `/users/{upn}/...`, relying on
10
+ * the signed-in user having delegate / shared access (or the delegated
11
+ * `Mail.Read.Shared` / `Calendars.Read.Shared` / `Files.Read.All` scopes). They
12
+ * are READ-ONLY (issue #40: start read-only mail + calendar + files, expand
13
+ * later) and self-contained: they hit Graph directly rather than the `/me`
14
+ * local mirror, and return RAW Graph ids.
15
+ *
16
+ * Why raw ids (not durable tokens): durable tokens are `/me`- and
17
+ * account-scoped (D7) — the same message in a shared mailbox has a different
18
+ * Graph id than it would under `/me`, so a token minted for `/me` cannot
19
+ * address another mailbox. Each `get_*` tool therefore takes the raw id echoed
20
+ * by its `list_*` / `search_*` counterpart plus the `mailbox` it came from.
21
+ * Passing a durable token here is rejected with a clear validation error.
22
+ */
23
+ import { z } from 'zod';
24
+ import { defineTool } from '../registry/define-tool.js';
25
+ import { requireGraphToolset } from '../registry/context.js';
26
+ import { isToken } from '../ids/token.js';
27
+ import { ValidationError } from '../utils/errors.js';
28
+ // =============================================================================
29
+ // Input Schemas
30
+ // =============================================================================
31
+ const mailbox = z
32
+ .string()
33
+ .min(1)
34
+ .describe("Target mailbox: the other user's email address (UPN) or user ID you have shared/delegate access to");
35
+ export const ListSharedMailboxFoldersInput = z.strictObject({
36
+ mailbox,
37
+ });
38
+ export const ListSharedMailboxEmailsInput = z.strictObject({
39
+ mailbox,
40
+ folder_id: z.string().min(1).optional().describe('Raw Graph folder ID from list_shared_mailbox_folders (defaults to the whole mailbox)'),
41
+ limit: z.number().int().min(1).max(100).optional().describe('Max messages to return (default 25, max 100)'),
42
+ unread_only: z.boolean().optional().describe('Only return unread messages (default false)'),
43
+ });
44
+ export const GetSharedMailboxEmailInput = z.strictObject({
45
+ mailbox,
46
+ email_id: z.string().min(1).describe('Raw Graph message ID from list_shared_mailbox_emails / search_shared_mailbox_emails'),
47
+ include_body: z.boolean().optional().describe('Include the full message body (default false)'),
48
+ strip_html: z.boolean().optional().describe('Strip HTML from the body when include_body is true (default false)'),
49
+ });
50
+ export const SearchSharedMailboxEmailsInput = z.strictObject({
51
+ mailbox,
52
+ query: z.string().min(1).describe('Free-text search over the shared mailbox (Graph $search)'),
53
+ limit: z.number().int().min(1).max(100).optional().describe('Max messages to return (default 25, max 100)'),
54
+ });
55
+ export const ListSharedCalendarEventsInput = z.strictObject({
56
+ mailbox,
57
+ start: z.string().min(1).optional().describe('ISO 8601 start of the window (e.g. 2026-07-01T00:00:00Z); requires end'),
58
+ end: z.string().min(1).optional().describe('ISO 8601 end of the window; requires start'),
59
+ limit: z.number().int().min(1).max(100).optional().describe('Max events to return (default 25, max 100)'),
60
+ });
61
+ export const GetSharedCalendarEventInput = z.strictObject({
62
+ mailbox,
63
+ event_id: z.string().min(1).describe('Raw Graph event ID from list_shared_calendar_events'),
64
+ });
65
+ export const ListSharedUserDriveItemsInput = z.strictObject({
66
+ mailbox,
67
+ item_id: z.string().min(1).optional().describe('Raw Graph driveItem ID to list children of (defaults to the drive root)'),
68
+ });
69
+ export const SearchSharedUserDriveItemsInput = z.strictObject({
70
+ mailbox,
71
+ query: z.string().min(1).describe('Free-text search over the shared user drive'),
72
+ limit: z.number().int().min(1).max(100).optional().describe('Max items to return (default 25, max 100)'),
73
+ });
74
+ // =============================================================================
75
+ // Helpers
76
+ // =============================================================================
77
+ function jsonResult(data) {
78
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
79
+ }
80
+ /**
81
+ * Rejects a durable token where a raw Graph id is required. A durable token is
82
+ * `/me`- and account-scoped and cannot address another mailbox's item, so
83
+ * failing loudly here is clearer than a downstream Graph 404.
84
+ */
85
+ function requireRawGraphId(value, field) {
86
+ if (isToken(value)) {
87
+ throw new ValidationError(`${field} must be the raw Graph id returned by the shared-mailbox list/search tools, not a durable token. Durable tokens are scoped to your own (/me) mailbox and cannot address a shared mailbox.`);
88
+ }
89
+ }
90
+ function stripHtml(html) {
91
+ return html
92
+ .replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '')
93
+ .replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '')
94
+ .replace(/<[^>]+>/g, ' ')
95
+ .replace(/&nbsp;/g, ' ')
96
+ .replace(/&amp;/g, '&')
97
+ .replace(/&lt;/g, '<')
98
+ .replace(/&gt;/g, '>')
99
+ .replace(/&quot;/g, '"')
100
+ .replace(/&#39;/g, "'")
101
+ .replace(/\s+/g, ' ')
102
+ .trim();
103
+ }
104
+ function mapRecipient(r) {
105
+ return r?.emailAddress?.address ?? null;
106
+ }
107
+ function mapMessage(m) {
108
+ return {
109
+ id: m.id ?? null,
110
+ subject: m.subject ?? null,
111
+ from: mapRecipient(m.from),
112
+ to: (m.toRecipients ?? []).map(mapRecipient).filter((a) => a != null),
113
+ cc: (m.ccRecipients ?? []).map(mapRecipient).filter((a) => a != null),
114
+ receivedDateTime: m.receivedDateTime ?? null,
115
+ sentDateTime: m.sentDateTime ?? null,
116
+ isRead: m.isRead ?? false,
117
+ hasAttachments: m.hasAttachments ?? false,
118
+ importance: m.importance ?? null,
119
+ preview: m.bodyPreview ?? null,
120
+ conversationId: m.conversationId ?? null,
121
+ };
122
+ }
123
+ function mapEvent(e) {
124
+ return {
125
+ id: e.id ?? null,
126
+ subject: e.subject ?? null,
127
+ start: e.start?.dateTime ?? null,
128
+ end: e.end?.dateTime ?? null,
129
+ location: e.location?.displayName ?? null,
130
+ isAllDay: e.isAllDay ?? false,
131
+ organizer: e.organizer?.emailAddress?.address ?? null,
132
+ attendees: (e.attendees ?? [])
133
+ .map((a) => a.emailAddress?.address)
134
+ .filter((a) => a != null),
135
+ preview: e.bodyPreview ?? null,
136
+ };
137
+ }
138
+ function mapDriveItem(item) {
139
+ return {
140
+ id: item.id ?? null,
141
+ name: item.name ?? null,
142
+ size: item.size ?? null,
143
+ webUrl: item.webUrl ?? null,
144
+ lastModifiedDateTime: item.lastModifiedDateTime ?? null,
145
+ isFolder: item.folder != null,
146
+ };
147
+ }
148
+ // =============================================================================
149
+ // Shared Mailbox Tools
150
+ // =============================================================================
151
+ export class SharedMailboxTools {
152
+ client;
153
+ constructor(client) {
154
+ this.client = client;
155
+ }
156
+ async listFolders(params) {
157
+ const folders = await this.client.listSharedMailFolders(params.mailbox);
158
+ return jsonResult({
159
+ mailbox: params.mailbox,
160
+ folders: folders.map((f) => ({
161
+ id: f.id ?? null,
162
+ name: f.displayName ?? null,
163
+ parentFolderId: f.parentFolderId ?? null,
164
+ totalItemCount: f.totalItemCount ?? 0,
165
+ unreadItemCount: f.unreadItemCount ?? 0,
166
+ })),
167
+ });
168
+ }
169
+ async listEmails(params) {
170
+ if (params.folder_id != null)
171
+ requireRawGraphId(params.folder_id, 'folder_id');
172
+ const messages = await this.client.listSharedMessages(params.mailbox, params.folder_id, params.limit ?? 25, params.unread_only ?? false);
173
+ return jsonResult({ mailbox: params.mailbox, emails: messages.map(mapMessage) });
174
+ }
175
+ async getEmail(params) {
176
+ requireRawGraphId(params.email_id, 'email_id');
177
+ const message = await this.client.getSharedMessage(params.mailbox, params.email_id, params.include_body ?? false);
178
+ const base = mapMessage(message);
179
+ let body = null;
180
+ if (params.include_body === true) {
181
+ body = message.body?.content ?? null;
182
+ if (params.strip_html === true && body != null)
183
+ body = stripHtml(body);
184
+ }
185
+ return jsonResult({ mailbox: params.mailbox, ...base, body });
186
+ }
187
+ async searchEmails(params) {
188
+ const messages = await this.client.searchSharedMessages(params.mailbox, params.query, params.limit ?? 25);
189
+ return jsonResult({ mailbox: params.mailbox, emails: messages.map(mapMessage) });
190
+ }
191
+ async listEvents(params) {
192
+ const hasStart = params.start != null;
193
+ const hasEnd = params.end != null;
194
+ if (hasStart !== hasEnd) {
195
+ throw new ValidationError('start and end must be provided together to query a calendar window.');
196
+ }
197
+ let startDate;
198
+ let endDate;
199
+ if (hasStart && hasEnd) {
200
+ startDate = new Date(params.start);
201
+ endDate = new Date(params.end);
202
+ if (Number.isNaN(startDate.getTime()) || Number.isNaN(endDate.getTime())) {
203
+ throw new ValidationError('start and end must be valid ISO 8601 date-times.');
204
+ }
205
+ if (startDate.getTime() > endDate.getTime()) {
206
+ throw new ValidationError('start must be on or before end.');
207
+ }
208
+ }
209
+ const events = await this.client.listSharedEvents(params.mailbox, params.limit ?? 25, startDate, endDate);
210
+ return jsonResult({ mailbox: params.mailbox, events: events.map(mapEvent) });
211
+ }
212
+ async getEvent(params) {
213
+ requireRawGraphId(params.event_id, 'event_id');
214
+ const event = await this.client.getSharedEvent(params.mailbox, params.event_id);
215
+ const base = mapEvent(event);
216
+ const body = event.body?.content ?? null;
217
+ return jsonResult({ mailbox: params.mailbox, ...base, body });
218
+ }
219
+ async listDriveItems(params) {
220
+ if (params.item_id != null)
221
+ requireRawGraphId(params.item_id, 'item_id');
222
+ const items = await this.client.listSharedDriveItems(params.mailbox, params.item_id);
223
+ return jsonResult({ mailbox: params.mailbox, items: items.map(mapDriveItem) });
224
+ }
225
+ async searchDriveItems(params) {
226
+ const items = await this.client.searchSharedDriveItems(params.mailbox, params.query, params.limit ?? 25);
227
+ return jsonResult({ mailbox: params.mailbox, items: items.map(mapDriveItem) });
228
+ }
229
+ }
230
+ // =============================================================================
231
+ // Registry Definitions
232
+ // =============================================================================
233
+ export function sharedMailboxToolDefinitions() {
234
+ const tools = (ctx) => requireGraphToolset(ctx, 'sharedMailbox');
235
+ return [
236
+ defineTool({
237
+ name: 'list_shared_mailbox_folders',
238
+ description: 'List mail folders in a shared/delegated mailbox (Graph API, /users/{upn}/mailFolders). Read-only.',
239
+ input: ListSharedMailboxFoldersInput,
240
+ annotations: { readOnlyHint: true, openWorldHint: true },
241
+ destructive: false,
242
+ presets: ['shared', 'mail'],
243
+ backends: ['graph'],
244
+ handler: (ctx, params) => tools(ctx).listFolders(params),
245
+ }),
246
+ defineTool({
247
+ name: 'list_shared_mailbox_emails',
248
+ description: 'List emails in a shared/delegated mailbox, optionally within a folder (Graph API). Read-only. Returns raw Graph message ids.',
249
+ input: ListSharedMailboxEmailsInput,
250
+ annotations: { readOnlyHint: true, openWorldHint: true },
251
+ destructive: false,
252
+ presets: ['shared', 'mail'],
253
+ backends: ['graph'],
254
+ handler: (ctx, params) => tools(ctx).listEmails(params),
255
+ }),
256
+ defineTool({
257
+ name: 'get_shared_mailbox_email',
258
+ description: 'Get a single email from a shared/delegated mailbox by raw Graph message id (Graph API). Read-only.',
259
+ input: GetSharedMailboxEmailInput,
260
+ annotations: { readOnlyHint: true, openWorldHint: true },
261
+ destructive: false,
262
+ presets: ['shared', 'mail'],
263
+ backends: ['graph'],
264
+ handler: (ctx, params) => tools(ctx).getEmail(params),
265
+ }),
266
+ defineTool({
267
+ name: 'search_shared_mailbox_emails',
268
+ description: 'Full-text search a shared/delegated mailbox (Graph $search). Read-only. Returns raw Graph message ids.',
269
+ input: SearchSharedMailboxEmailsInput,
270
+ annotations: { readOnlyHint: true, openWorldHint: true },
271
+ destructive: false,
272
+ presets: ['shared', 'mail'],
273
+ backends: ['graph'],
274
+ handler: (ctx, params) => tools(ctx).searchEmails(params),
275
+ }),
276
+ defineTool({
277
+ name: 'list_shared_calendar_events',
278
+ description: "List events from another user's calendar, optionally within a start/end window (Graph API). Read-only. Returns raw Graph event ids.",
279
+ input: ListSharedCalendarEventsInput,
280
+ annotations: { readOnlyHint: true, openWorldHint: true },
281
+ destructive: false,
282
+ presets: ['shared', 'calendar'],
283
+ backends: ['graph'],
284
+ handler: (ctx, params) => tools(ctx).listEvents(params),
285
+ }),
286
+ defineTool({
287
+ name: 'get_shared_calendar_event',
288
+ description: "Get a single event from another user's calendar by raw Graph event id (Graph API). Read-only.",
289
+ input: GetSharedCalendarEventInput,
290
+ annotations: { readOnlyHint: true, openWorldHint: true },
291
+ destructive: false,
292
+ presets: ['shared', 'calendar'],
293
+ backends: ['graph'],
294
+ handler: (ctx, params) => tools(ctx).getEvent(params),
295
+ }),
296
+ defineTool({
297
+ name: 'list_shared_user_drive_items',
298
+ description: "List items in another user's OneDrive (root or a folder's children) (Graph API). Read-only. Returns raw Graph driveItem ids.",
299
+ input: ListSharedUserDriveItemsInput,
300
+ annotations: { readOnlyHint: true, openWorldHint: true },
301
+ destructive: false,
302
+ presets: ['shared', 'files'],
303
+ backends: ['graph'],
304
+ handler: (ctx, params) => tools(ctx).listDriveItems(params),
305
+ }),
306
+ defineTool({
307
+ name: 'search_shared_user_drive_items',
308
+ description: "Search another user's OneDrive (Graph API). Read-only. Returns raw Graph driveItem ids.",
309
+ input: SearchSharedUserDriveItemsInput,
310
+ annotations: { readOnlyHint: true, openWorldHint: true },
311
+ destructive: false,
312
+ presets: ['shared', 'files'],
313
+ backends: ['graph'],
314
+ handler: (ctx, params) => tools(ctx).searchDriveItems(params),
315
+ }),
316
+ ];
317
+ }
318
+ //# sourceMappingURL=shared-mailbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-mailbox.js","sourceRoot":"","sources":["../../src/tools/shared-mailbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Copyright (c) 2026 JBC Tech Solutions, LLC
3
+ * Licensed under the MIT License. See LICENSE file in the project root.
4
+ */
5
+ /**
6
+ * SharePoint Lists MCP tools (issue #38).
7
+ *
8
+ * Tools for browsing and editing SharePoint lists, their columns, and their
9
+ * items. Lists live under a site (durable sl_ token carries {siteId, listId});
10
+ * items live under a list (durable sn_ token carries {siteId, listId, itemId}).
11
+ * Item deletion uses the two-phase approval pattern.
12
+ */
13
+ import { z } from 'zod';
14
+ import type { ApprovalTokenManager } from '../approval/index.js';
15
+ import type { ToolDefinition, ToolResult } from '../registry/types.js';
16
+ declare module '../registry/types.js' {
17
+ interface GraphToolsets {
18
+ sharePointLists: SharePointListsTools;
19
+ }
20
+ }
21
+ export declare const ListListsInput: z.ZodObject<{
22
+ site_id: z.ZodString;
23
+ }, z.core.$strict>;
24
+ export declare const GetListInput: z.ZodObject<{
25
+ list_id: z.ZodString;
26
+ }, z.core.$strict>;
27
+ export declare const CreateListInput: z.ZodObject<{
28
+ site_id: z.ZodString;
29
+ display_name: z.ZodString;
30
+ description: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strict>;
32
+ export declare const ListListColumnsInput: z.ZodObject<{
33
+ list_id: z.ZodString;
34
+ }, z.core.$strict>;
35
+ export declare const ListListItemsInput: z.ZodObject<{
36
+ list_id: z.ZodString;
37
+ limit: z.ZodDefault<z.ZodNumber>;
38
+ }, z.core.$strict>;
39
+ export declare const GetListItemInput: z.ZodObject<{
40
+ item_id: z.ZodString;
41
+ }, z.core.$strict>;
42
+ export declare const CreateListItemInput: z.ZodObject<{
43
+ list_id: z.ZodString;
44
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
45
+ }, z.core.$strict>;
46
+ export declare const UpdateListItemInput: z.ZodObject<{
47
+ item_id: z.ZodString;
48
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
49
+ }, z.core.$strict>;
50
+ export declare const PrepareDeleteListItemInput: z.ZodObject<{
51
+ item_id: z.ZodString;
52
+ }, z.core.$strict>;
53
+ export declare const ConfirmDeleteListItemInput: z.ZodObject<{
54
+ token_id: z.ZodString;
55
+ item_id: z.ZodString;
56
+ }, z.core.$strict>;
57
+ export type ListListsParams = z.infer<typeof ListListsInput>;
58
+ export type GetListParams = z.infer<typeof GetListInput>;
59
+ export type CreateListParams = z.infer<typeof CreateListInput>;
60
+ export type ListListColumnsParams = z.infer<typeof ListListColumnsInput>;
61
+ export type ListListItemsParams = z.infer<typeof ListListItemsInput>;
62
+ export type GetListItemParams = z.infer<typeof GetListItemInput>;
63
+ export type CreateListItemParams = z.infer<typeof CreateListItemInput>;
64
+ export type UpdateListItemParams = z.infer<typeof UpdateListItemInput>;
65
+ export type PrepareDeleteListItemParams = z.infer<typeof PrepareDeleteListItemInput>;
66
+ export type ConfirmDeleteListItemParams = z.infer<typeof ConfirmDeleteListItemInput>;
67
+ export interface ISharePointListsRepository {
68
+ listSharePointListsAsync(siteId: string): Promise<Array<{
69
+ id: string;
70
+ name: string;
71
+ displayName: string;
72
+ description: string;
73
+ webUrl: string;
74
+ }>>;
75
+ getSharePointListAsync(listId: string): Promise<{
76
+ id: string;
77
+ name: string;
78
+ displayName: string;
79
+ description: string;
80
+ webUrl: string;
81
+ }>;
82
+ createSharePointListAsync(siteId: string, displayName: string, description?: string): Promise<string>;
83
+ listSharePointListColumnsAsync(listId: string): Promise<Array<{
84
+ id: string;
85
+ name: string;
86
+ displayName: string;
87
+ columnType: string;
88
+ required: boolean;
89
+ readOnly: boolean;
90
+ }>>;
91
+ listSharePointListItemsAsync(listId: string, limit?: number): Promise<Array<{
92
+ id: string;
93
+ fields: Record<string, unknown>;
94
+ webUrl: string;
95
+ createdDateTime: string;
96
+ lastModifiedDateTime: string;
97
+ }>>;
98
+ getSharePointListItemAsync(itemId: string): Promise<{
99
+ id: string;
100
+ fields: Record<string, unknown>;
101
+ webUrl: string;
102
+ createdDateTime: string;
103
+ lastModifiedDateTime: string;
104
+ }>;
105
+ createSharePointListItemAsync(listId: string, fields: Record<string, unknown>): Promise<string>;
106
+ updateSharePointListItemAsync(itemId: string, fields: Record<string, unknown>): Promise<void>;
107
+ deleteSharePointListItemAsync(itemId: string): Promise<void>;
108
+ }
109
+ /**
110
+ * SharePoint list tools with two-phase approval for item deletion.
111
+ */
112
+ export declare class SharePointListsTools {
113
+ private readonly repository;
114
+ private readonly tokenManager;
115
+ constructor(repository: ISharePointListsRepository, tokenManager: ApprovalTokenManager);
116
+ listLists(params: ListListsParams): Promise<ToolResult>;
117
+ getList(params: GetListParams): Promise<ToolResult>;
118
+ createList(params: CreateListParams): Promise<ToolResult>;
119
+ listListColumns(params: ListListColumnsParams): Promise<ToolResult>;
120
+ listListItems(params: ListListItemsParams): Promise<ToolResult>;
121
+ getListItem(params: GetListItemParams): Promise<ToolResult>;
122
+ createListItem(params: CreateListItemParams): Promise<ToolResult>;
123
+ updateListItem(params: UpdateListItemParams): Promise<ToolResult>;
124
+ prepareDeleteListItem(params: PrepareDeleteListItemParams): ToolResult;
125
+ confirmDeleteListItem(params: ConfirmDeleteListItemParams): Promise<ToolResult>;
126
+ }
127
+ /**
128
+ * Registry tool definitions for the sharepoint-lists domain.
129
+ */
130
+ export declare function sharePointListsToolDefinitions(): ToolDefinition[];
131
+ //# sourceMappingURL=sharepoint-lists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharepoint-lists.d.ts","sourceRoot":"","sources":["../../src/tools/sharepoint-lists.ts"],"names":[],"mappings":"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"}