@payloadcms/plugin-mcp 4.0.0-internal.d28e9fb → 4.0.0-internal.d7d662c

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 (414) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +39 -0
  3. package/dist/defaultAccess.d.ts +3 -0
  4. package/dist/defaultAccess.d.ts.map +1 -0
  5. package/dist/defaultAccess.js +3 -0
  6. package/dist/defaultAccess.js.map +1 -0
  7. package/dist/defineTool.d.ts +26 -0
  8. package/dist/defineTool.d.ts.map +1 -0
  9. package/dist/defineTool.js +37 -0
  10. package/dist/defineTool.js.map +1 -0
  11. package/dist/endpoint/access.d.ts +17 -0
  12. package/dist/endpoint/access.d.ts.map +1 -0
  13. package/dist/endpoint/access.js +105 -0
  14. package/dist/endpoint/access.js.map +1 -0
  15. package/dist/endpoint/index.d.ts +3 -0
  16. package/dist/endpoint/index.d.ts.map +1 -0
  17. package/dist/endpoint/index.js +129 -0
  18. package/dist/endpoint/index.js.map +1 -0
  19. package/dist/endpoint/oauth.d.ts +35 -0
  20. package/dist/endpoint/oauth.d.ts.map +1 -0
  21. package/dist/endpoint/oauth.js +87 -0
  22. package/dist/endpoint/oauth.js.map +1 -0
  23. package/dist/exports/client.d.ts +2 -0
  24. package/dist/exports/client.d.ts.map +1 -0
  25. package/dist/exports/client.js +4 -0
  26. package/dist/exports/client.js.map +1 -0
  27. package/dist/exports/internal.d.ts +2 -0
  28. package/dist/exports/internal.d.ts.map +1 -0
  29. package/dist/exports/internal.js +3 -0
  30. package/dist/exports/internal.js.map +1 -0
  31. package/dist/index.d.ts +14 -9
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +50 -67
  34. package/dist/index.js.map +1 -1
  35. package/dist/mcp/buildMcpServer.d.ts +19 -0
  36. package/dist/mcp/buildMcpServer.d.ts.map +1 -0
  37. package/dist/mcp/buildMcpServer.js +235 -0
  38. package/dist/mcp/buildMcpServer.js.map +1 -0
  39. package/dist/mcp/builtin/collections/authTools.d.ts +7 -0
  40. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -0
  41. package/dist/mcp/builtin/collections/authTools.js +312 -0
  42. package/dist/mcp/builtin/collections/authTools.js.map +1 -0
  43. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  44. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  45. package/dist/mcp/builtin/collections/countTool.js +63 -0
  46. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  47. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  48. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  49. package/dist/mcp/builtin/collections/countVersionsTool.js +60 -0
  50. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  51. package/dist/mcp/builtin/collections/createTool.d.ts +2 -0
  52. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -0
  53. package/dist/mcp/builtin/collections/createTool.js +137 -0
  54. package/dist/mcp/builtin/collections/createTool.js.map +1 -0
  55. package/dist/mcp/builtin/collections/deleteTool.d.ts +2 -0
  56. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -0
  57. package/dist/mcp/builtin/collections/deleteTool.js +111 -0
  58. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -0
  59. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  60. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  61. package/dist/mcp/builtin/collections/duplicateTool.js +90 -0
  62. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  63. package/dist/mcp/builtin/collections/fileInput.d.ts +28 -0
  64. package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
  65. package/dist/mcp/builtin/collections/fileInput.js +88 -0
  66. package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
  67. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  68. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  69. package/dist/mcp/builtin/collections/findDistinctTool.js +77 -0
  70. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  71. package/dist/mcp/builtin/collections/findTool.d.ts +2 -0
  72. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -0
  73. package/dist/mcp/builtin/collections/findTool.js +146 -0
  74. package/dist/mcp/builtin/collections/findTool.js.map +1 -0
  75. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  76. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  77. package/dist/mcp/builtin/collections/findVersionByIDTool.js +74 -0
  78. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  79. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  80. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  81. package/dist/mcp/builtin/collections/findVersionsTool.js +84 -0
  82. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  83. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts +2 -0
  84. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -0
  85. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +103 -0
  86. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -0
  87. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  88. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  89. package/dist/mcp/builtin/collections/restoreVersionTool.js +69 -0
  90. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  91. package/dist/mcp/builtin/collections/updateTool.d.ts +2 -0
  92. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -0
  93. package/dist/mcp/builtin/collections/updateTool.js +172 -0
  94. package/dist/mcp/builtin/collections/updateTool.js.map +1 -0
  95. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
  96. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
  97. package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
  98. package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
  99. package/dist/mcp/builtin/formatEntityError.d.ts +16 -0
  100. package/dist/mcp/builtin/formatEntityError.d.ts.map +1 -0
  101. package/dist/mcp/builtin/formatEntityError.js +55 -0
  102. package/dist/mcp/builtin/formatEntityError.js.map +1 -0
  103. package/dist/mcp/builtin/getConfigInfoTool.d.ts +2 -0
  104. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -0
  105. package/dist/mcp/builtin/getConfigInfoTool.js +69 -0
  106. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -0
  107. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  108. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  109. package/dist/mcp/builtin/globals/countVersionsTool.js +60 -0
  110. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  111. package/dist/mcp/builtin/globals/findTool.d.ts +2 -0
  112. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -0
  113. package/dist/mcp/builtin/globals/findTool.js +67 -0
  114. package/dist/mcp/builtin/globals/findTool.js.map +1 -0
  115. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  116. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  117. package/dist/mcp/builtin/globals/findVersionByIDTool.js +68 -0
  118. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  119. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  120. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  121. package/dist/mcp/builtin/globals/findVersionsTool.js +78 -0
  122. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  123. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts +2 -0
  124. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -0
  125. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +81 -0
  126. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -0
  127. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  128. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  129. package/dist/mcp/builtin/globals/restoreVersionTool.js +70 -0
  130. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  131. package/dist/mcp/builtin/globals/updateTool.d.ts +2 -0
  132. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -0
  133. package/dist/mcp/builtin/globals/updateTool.js +78 -0
  134. package/dist/mcp/builtin/globals/updateTool.js.map +1 -0
  135. package/dist/mcp/builtinTools.d.ts +168 -0
  136. package/dist/mcp/builtinTools.d.ts.map +1 -0
  137. package/dist/mcp/builtinTools.js +169 -0
  138. package/dist/mcp/builtinTools.js.map +1 -0
  139. package/dist/mcp/sanitizeMCPConfig.d.ts +16 -0
  140. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -0
  141. package/dist/mcp/sanitizeMCPConfig.js +234 -0
  142. package/dist/mcp/sanitizeMCPConfig.js.map +1 -0
  143. package/dist/stdio.d.ts +8 -0
  144. package/dist/stdio.d.ts.map +1 -0
  145. package/dist/stdio.js +128 -0
  146. package/dist/stdio.js.map +1 -0
  147. package/dist/types.d.ts +298 -446
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/types.js +4 -1
  150. package/dist/types.js.map +1 -1
  151. package/dist/utils/getLogger.d.ts +10 -0
  152. package/dist/utils/getLogger.d.ts.map +1 -0
  153. package/dist/utils/getLogger.js +22 -0
  154. package/dist/utils/getLogger.js.map +1 -0
  155. package/dist/utils/getPluginConfig.d.ts +12 -0
  156. package/dist/utils/getPluginConfig.d.ts.map +1 -0
  157. package/dist/utils/getPluginConfig.js +15 -0
  158. package/dist/utils/getPluginConfig.js.map +1 -0
  159. package/dist/utils/resolveProjectRoot.d.ts +7 -0
  160. package/dist/utils/resolveProjectRoot.d.ts.map +1 -0
  161. package/dist/utils/resolveProjectRoot.js +15 -0
  162. package/dist/utils/resolveProjectRoot.js.map +1 -0
  163. package/dist/utils/toStandardSchema.d.ts +5 -0
  164. package/dist/utils/toStandardSchema.d.ts.map +1 -0
  165. package/dist/utils/toStandardSchema.js +4 -0
  166. package/dist/utils/toStandardSchema.js.map +1 -0
  167. package/package.json +41 -26
  168. package/src/defaultAccess.ts +3 -0
  169. package/src/defineTool.ts +44 -0
  170. package/src/endpoint/access.ts +120 -0
  171. package/src/endpoint/index.ts +115 -0
  172. package/src/endpoint/oauth.ts +90 -0
  173. package/src/exports/client.ts +3 -0
  174. package/src/exports/internal.ts +1 -0
  175. package/src/index.ts +47 -88
  176. package/src/mcp/buildMcpServer.ts +294 -0
  177. package/src/mcp/builtin/collections/authTools.ts +280 -0
  178. package/src/mcp/builtin/collections/countTool.ts +61 -0
  179. package/src/mcp/builtin/collections/countVersionsTool.ts +60 -0
  180. package/src/mcp/builtin/collections/createTool.ts +143 -0
  181. package/src/mcp/builtin/collections/deleteTool.ts +97 -0
  182. package/src/mcp/builtin/collections/duplicateTool.ts +84 -0
  183. package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
  184. package/src/mcp/builtin/collections/fileInput.ts +127 -0
  185. package/src/mcp/builtin/collections/findDistinctTool.ts +67 -0
  186. package/src/mcp/builtin/collections/findTool.ts +134 -0
  187. package/src/mcp/builtin/collections/findVersionByIDTool.ts +66 -0
  188. package/src/mcp/builtin/collections/findVersionsTool.ts +83 -0
  189. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +91 -0
  190. package/src/mcp/builtin/collections/restoreVersionTool.ts +65 -0
  191. package/src/mcp/builtin/collections/updateTool.ts +173 -0
  192. package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
  193. package/src/mcp/builtin/formatEntityError.ts +77 -0
  194. package/src/mcp/builtin/getConfigInfoTool.ts +68 -0
  195. package/src/mcp/builtin/globals/countVersionsTool.ts +60 -0
  196. package/src/mcp/builtin/globals/findTool.ts +66 -0
  197. package/src/mcp/builtin/globals/findVersionByIDTool.ts +64 -0
  198. package/src/mcp/builtin/globals/findVersionsTool.ts +69 -0
  199. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +73 -0
  200. package/src/mcp/builtin/globals/restoreVersionTool.ts +68 -0
  201. package/src/mcp/builtin/globals/updateTool.ts +92 -0
  202. package/src/mcp/builtinTools.ts +161 -0
  203. package/src/mcp/sanitizeMCPConfig.ts +282 -0
  204. package/src/stdio.ts +131 -0
  205. package/src/types.ts +346 -486
  206. package/src/utils/getLogger.ts +22 -0
  207. package/src/utils/getPluginConfig.ts +24 -0
  208. package/src/utils/resolveProjectRoot.ts +17 -0
  209. package/src/utils/toStandardSchema.ts +9 -0
  210. package/dist/collections/createApiKeysCollection.d.ts +0 -7
  211. package/dist/collections/createApiKeysCollection.d.ts.map +0 -1
  212. package/dist/collections/createApiKeysCollection.js +0 -317
  213. package/dist/collections/createApiKeysCollection.js.map +0 -1
  214. package/dist/defaults.d.ts +0 -4
  215. package/dist/defaults.d.ts.map +0 -1
  216. package/dist/defaults.js +0 -5
  217. package/dist/defaults.js.map +0 -1
  218. package/dist/endpoints/mcp.d.ts +0 -4
  219. package/dist/endpoints/mcp.d.ts.map +0 -1
  220. package/dist/endpoints/mcp.js +0 -71
  221. package/dist/endpoints/mcp.js.map +0 -1
  222. package/dist/mcp/createRequest.d.ts +0 -3
  223. package/dist/mcp/createRequest.d.ts.map +0 -1
  224. package/dist/mcp/createRequest.js +0 -14
  225. package/dist/mcp/createRequest.js.map +0 -1
  226. package/dist/mcp/getMcpHandler.d.ts +0 -4
  227. package/dist/mcp/getMcpHandler.d.ts.map +0 -1
  228. package/dist/mcp/getMcpHandler.js +0 -231
  229. package/dist/mcp/getMcpHandler.js.map +0 -1
  230. package/dist/mcp/helpers/config.d.ts +0 -22
  231. package/dist/mcp/helpers/config.d.ts.map +0 -1
  232. package/dist/mcp/helpers/config.js +0 -153
  233. package/dist/mcp/helpers/config.js.map +0 -1
  234. package/dist/mcp/helpers/fields.d.ts +0 -19
  235. package/dist/mcp/helpers/fields.d.ts.map +0 -1
  236. package/dist/mcp/helpers/fields.js +0 -102
  237. package/dist/mcp/helpers/fields.js.map +0 -1
  238. package/dist/mcp/helpers/fileValidation.d.ts +0 -67
  239. package/dist/mcp/helpers/fileValidation.d.ts.map +0 -1
  240. package/dist/mcp/helpers/fileValidation.js +0 -267
  241. package/dist/mcp/helpers/fileValidation.js.map +0 -1
  242. package/dist/mcp/registerTool.d.ts +0 -6
  243. package/dist/mcp/registerTool.d.ts.map +0 -1
  244. package/dist/mcp/registerTool.js +0 -18
  245. package/dist/mcp/registerTool.js.map +0 -1
  246. package/dist/mcp/tools/auth/auth.d.ts +0 -4
  247. package/dist/mcp/tools/auth/auth.d.ts.map +0 -1
  248. package/dist/mcp/tools/auth/auth.js +0 -57
  249. package/dist/mcp/tools/auth/auth.js.map +0 -1
  250. package/dist/mcp/tools/auth/forgotPassword.d.ts +0 -4
  251. package/dist/mcp/tools/auth/forgotPassword.d.ts.map +0 -1
  252. package/dist/mcp/tools/auth/forgotPassword.js +0 -48
  253. package/dist/mcp/tools/auth/forgotPassword.js.map +0 -1
  254. package/dist/mcp/tools/auth/login.d.ts +0 -4
  255. package/dist/mcp/tools/auth/login.d.ts.map +0 -1
  256. package/dist/mcp/tools/auth/login.js +0 -51
  257. package/dist/mcp/tools/auth/login.js.map +0 -1
  258. package/dist/mcp/tools/auth/resetPassword.d.ts +0 -4
  259. package/dist/mcp/tools/auth/resetPassword.d.ts.map +0 -1
  260. package/dist/mcp/tools/auth/resetPassword.js +0 -49
  261. package/dist/mcp/tools/auth/resetPassword.js.map +0 -1
  262. package/dist/mcp/tools/auth/unlock.d.ts +0 -4
  263. package/dist/mcp/tools/auth/unlock.d.ts.map +0 -1
  264. package/dist/mcp/tools/auth/unlock.js +0 -48
  265. package/dist/mcp/tools/auth/unlock.js.map +0 -1
  266. package/dist/mcp/tools/auth/verify.d.ts +0 -4
  267. package/dist/mcp/tools/auth/verify.d.ts.map +0 -1
  268. package/dist/mcp/tools/auth/verify.js +0 -45
  269. package/dist/mcp/tools/auth/verify.js.map +0 -1
  270. package/dist/mcp/tools/collection/create.d.ts +0 -10
  271. package/dist/mcp/tools/collection/create.d.ts.map +0 -1
  272. package/dist/mcp/tools/collection/create.js +0 -139
  273. package/dist/mcp/tools/collection/create.js.map +0 -1
  274. package/dist/mcp/tools/collection/delete.d.ts +0 -10
  275. package/dist/mcp/tools/collection/delete.d.ts.map +0 -1
  276. package/dist/mcp/tools/collection/delete.js +0 -154
  277. package/dist/mcp/tools/collection/delete.js.map +0 -1
  278. package/dist/mcp/tools/collection/find.d.ts +0 -10
  279. package/dist/mcp/tools/collection/find.d.ts.map +0 -1
  280. package/dist/mcp/tools/collection/find.js +0 -165
  281. package/dist/mcp/tools/collection/find.js.map +0 -1
  282. package/dist/mcp/tools/collection/update.d.ts +0 -10
  283. package/dist/mcp/tools/collection/update.d.ts.map +0 -1
  284. package/dist/mcp/tools/collection/update.js +0 -209
  285. package/dist/mcp/tools/collection/update.js.map +0 -1
  286. package/dist/mcp/tools/config/find.d.ts +0 -10
  287. package/dist/mcp/tools/config/find.d.ts.map +0 -1
  288. package/dist/mcp/tools/config/find.js +0 -97
  289. package/dist/mcp/tools/config/find.js.map +0 -1
  290. package/dist/mcp/tools/config/update.d.ts +0 -10
  291. package/dist/mcp/tools/config/update.d.ts.map +0 -1
  292. package/dist/mcp/tools/config/update.js +0 -215
  293. package/dist/mcp/tools/config/update.js.map +0 -1
  294. package/dist/mcp/tools/global/find.d.ts +0 -5
  295. package/dist/mcp/tools/global/find.d.ts.map +0 -1
  296. package/dist/mcp/tools/global/find.js +0 -82
  297. package/dist/mcp/tools/global/find.js.map +0 -1
  298. package/dist/mcp/tools/global/update.d.ts +0 -6
  299. package/dist/mcp/tools/global/update.d.ts.map +0 -1
  300. package/dist/mcp/tools/global/update.js +0 -124
  301. package/dist/mcp/tools/global/update.js.map +0 -1
  302. package/dist/mcp/tools/job/create.d.ts +0 -10
  303. package/dist/mcp/tools/job/create.d.ts.map +0 -1
  304. package/dist/mcp/tools/job/create.js +0 -293
  305. package/dist/mcp/tools/job/create.js.map +0 -1
  306. package/dist/mcp/tools/job/run.d.ts +0 -10
  307. package/dist/mcp/tools/job/run.d.ts.map +0 -1
  308. package/dist/mcp/tools/job/run.js +0 -129
  309. package/dist/mcp/tools/job/run.js.map +0 -1
  310. package/dist/mcp/tools/job/update.d.ts +0 -11
  311. package/dist/mcp/tools/job/update.d.ts.map +0 -1
  312. package/dist/mcp/tools/job/update.js +0 -186
  313. package/dist/mcp/tools/job/update.js.map +0 -1
  314. package/dist/mcp/tools/resource/create.d.ts +0 -6
  315. package/dist/mcp/tools/resource/create.d.ts.map +0 -1
  316. package/dist/mcp/tools/resource/create.js +0 -124
  317. package/dist/mcp/tools/resource/create.js.map +0 -1
  318. package/dist/mcp/tools/resource/delete.d.ts +0 -5
  319. package/dist/mcp/tools/resource/delete.d.ts.map +0 -1
  320. package/dist/mcp/tools/resource/delete.js +0 -151
  321. package/dist/mcp/tools/resource/delete.js.map +0 -1
  322. package/dist/mcp/tools/resource/find.d.ts +0 -5
  323. package/dist/mcp/tools/resource/find.d.ts.map +0 -1
  324. package/dist/mcp/tools/resource/find.js +0 -170
  325. package/dist/mcp/tools/resource/find.js.map +0 -1
  326. package/dist/mcp/tools/resource/update.d.ts +0 -6
  327. package/dist/mcp/tools/resource/update.d.ts.map +0 -1
  328. package/dist/mcp/tools/resource/update.js +0 -256
  329. package/dist/mcp/tools/resource/update.js.map +0 -1
  330. package/dist/mcp/tools/schemas.d.ts +0 -457
  331. package/dist/mcp/tools/schemas.d.ts.map +0 -1
  332. package/dist/mcp/tools/schemas.js +0 -243
  333. package/dist/mcp/tools/schemas.js.map +0 -1
  334. package/dist/utils/adminEntitySettings.d.ts +0 -17
  335. package/dist/utils/adminEntitySettings.d.ts.map +0 -1
  336. package/dist/utils/adminEntitySettings.js +0 -41
  337. package/dist/utils/adminEntitySettings.js.map +0 -1
  338. package/dist/utils/createApiKeyFields.d.ts +0 -15
  339. package/dist/utils/createApiKeyFields.d.ts.map +0 -1
  340. package/dist/utils/createApiKeyFields.js +0 -57
  341. package/dist/utils/createApiKeyFields.js.map +0 -1
  342. package/dist/utils/getEnabledSlugs.d.ts +0 -13
  343. package/dist/utils/getEnabledSlugs.d.ts.map +0 -1
  344. package/dist/utils/getEnabledSlugs.js +0 -32
  345. package/dist/utils/getEnabledSlugs.js.map +0 -1
  346. package/dist/utils/getVirtualFieldNames.d.ts +0 -14
  347. package/dist/utils/getVirtualFieldNames.d.ts.map +0 -1
  348. package/dist/utils/getVirtualFieldNames.js +0 -35
  349. package/dist/utils/getVirtualFieldNames.js.map +0 -1
  350. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts +0 -3
  351. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.d.ts.map +0 -1
  352. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js +0 -43
  353. package/dist/utils/schemaConversion/convertCollectionSchemaToZod.js.map +0 -1
  354. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  355. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  356. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  357. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  358. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts +0 -13
  359. package/dist/utils/schemaConversion/sanitizeJsonSchema.d.ts.map +0 -1
  360. package/dist/utils/schemaConversion/sanitizeJsonSchema.js +0 -56
  361. package/dist/utils/schemaConversion/sanitizeJsonSchema.js.map +0 -1
  362. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts +0 -20
  363. package/dist/utils/schemaConversion/simplifyRelationshipFields.d.ts.map +0 -1
  364. package/dist/utils/schemaConversion/simplifyRelationshipFields.js +0 -53
  365. package/dist/utils/schemaConversion/simplifyRelationshipFields.js.map +0 -1
  366. package/dist/utils/schemaConversion/transformPointFields.d.ts +0 -3
  367. package/dist/utils/schemaConversion/transformPointFields.d.ts.map +0 -1
  368. package/dist/utils/schemaConversion/transformPointFields.js +0 -51
  369. package/dist/utils/schemaConversion/transformPointFields.js.map +0 -1
  370. package/dist/utils/transformPointDataToPayload.d.ts +0 -7
  371. package/dist/utils/transformPointDataToPayload.d.ts.map +0 -1
  372. package/dist/utils/transformPointDataToPayload.js +0 -28
  373. package/dist/utils/transformPointDataToPayload.js.map +0 -1
  374. package/src/collections/createApiKeysCollection.ts +0 -373
  375. package/src/defaults.ts +0 -3
  376. package/src/endpoints/mcp.ts +0 -91
  377. package/src/mcp/createRequest.ts +0 -13
  378. package/src/mcp/getMcpHandler.ts +0 -545
  379. package/src/mcp/helpers/config.ts +0 -213
  380. package/src/mcp/helpers/fields.ts +0 -154
  381. package/src/mcp/helpers/fileValidation.ts +0 -362
  382. package/src/mcp/registerTool.ts +0 -22
  383. package/src/mcp/tools/auth/auth.ts +0 -71
  384. package/src/mcp/tools/auth/forgotPassword.ts +0 -70
  385. package/src/mcp/tools/auth/login.ts +0 -72
  386. package/src/mcp/tools/auth/resetPassword.ts +0 -61
  387. package/src/mcp/tools/auth/unlock.ts +0 -64
  388. package/src/mcp/tools/auth/verify.ts +0 -57
  389. package/src/mcp/tools/collection/create.ts +0 -210
  390. package/src/mcp/tools/collection/delete.ts +0 -211
  391. package/src/mcp/tools/collection/find.ts +0 -224
  392. package/src/mcp/tools/collection/update.ts +0 -290
  393. package/src/mcp/tools/config/find.ts +0 -128
  394. package/src/mcp/tools/config/update.ts +0 -280
  395. package/src/mcp/tools/global/find.ts +0 -128
  396. package/src/mcp/tools/global/update.ts +0 -207
  397. package/src/mcp/tools/job/create.ts +0 -416
  398. package/src/mcp/tools/job/run.ts +0 -167
  399. package/src/mcp/tools/job/update.ts +0 -274
  400. package/src/mcp/tools/resource/create.ts +0 -211
  401. package/src/mcp/tools/resource/delete.ts +0 -218
  402. package/src/mcp/tools/resource/find.ts +0 -246
  403. package/src/mcp/tools/resource/update.ts +0 -383
  404. package/src/mcp/tools/schemas.ts +0 -520
  405. package/src/utils/adminEntitySettings.ts +0 -40
  406. package/src/utils/createApiKeyFields.ts +0 -72
  407. package/src/utils/getEnabledSlugs.ts +0 -42
  408. package/src/utils/getVirtualFieldNames.ts +0 -53
  409. package/src/utils/schemaConversion/convertCollectionSchemaToZod.ts +0 -52
  410. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
  411. package/src/utils/schemaConversion/sanitizeJsonSchema.ts +0 -62
  412. package/src/utils/schemaConversion/simplifyRelationshipFields.ts +0 -65
  413. package/src/utils/schemaConversion/transformPointFields.ts +0 -55
  414. package/src/utils/transformPointDataToPayload.ts +0 -40
@@ -0,0 +1,172 @@
1
+ import { getCollectionInputSchema, getCollectionVirtualFieldNames, parseDocumentID, stripVirtualFields, transformPointDataToPayload, updateDocumentInputSchema, validateCollectionData } from 'payload';
2
+ import { defaultAccess } from '../../../defaultAccess.js';
3
+ import { defineCollectionTool } from '../../../defineTool.js';
4
+ import { getLogger } from '../../../utils/getLogger.js';
5
+ import { formatEntityError } from '../formatEntityError.js';
6
+ import { fileInputSchema, resolveFile } from './fileInput.js';
7
+ const DEFAULT_DESCRIPTION = 'Update documents. Prefer uploadReference after upload, externalURL for URLs, or base64 for small local files.';
8
+ export const updateDocumentTool = defineCollectionTool({
9
+ access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.update),
10
+ annotations: {
11
+ destructiveHint: true,
12
+ idempotentHint: false,
13
+ openWorldHint: false,
14
+ readOnlyHint: false,
15
+ title: 'Update Document'
16
+ },
17
+ description: DEFAULT_DESCRIPTION,
18
+ input: updateDocumentInputSchema({
19
+ file: fileInputSchema
20
+ })
21
+ }).handler(async ({ slug, authorizedMCP, input, req })=>{
22
+ const payload = req.payload;
23
+ const logger = getLogger({
24
+ payload
25
+ });
26
+ const { id, data, depth, draft, fallbackLocale, file: fileInput, limit, locale, overrideLock, populate, publishAllLocales, returning, select, sort, trash, unpublishAllLocales, where } = input;
27
+ logger.info(`Updating document in collection: ${slug}${id ? ` with ID: ${id}` : ' with where clause'}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`);
28
+ try {
29
+ const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, slug);
30
+ const inputData = stripVirtualFields(data, virtualFieldNames);
31
+ validateCollectionData({
32
+ slug,
33
+ data: inputData,
34
+ partial: true,
35
+ req
36
+ });
37
+ const parsedData = transformPointDataToPayload(inputData);
38
+ const file = await resolveFile({
39
+ slug,
40
+ input: fileInput,
41
+ req
42
+ });
43
+ const whereClause = where ?? {};
44
+ if (id !== undefined) {
45
+ const result = await payload.update({
46
+ id: parseDocumentID({
47
+ id,
48
+ collectionSlug: slug,
49
+ payload
50
+ }),
51
+ collection: slug,
52
+ data: parsedData,
53
+ depth,
54
+ draft,
55
+ fallbackLocale,
56
+ locale,
57
+ overrideAccess: authorizedMCP.overrideAccess,
58
+ overrideLock,
59
+ populate,
60
+ publishAllLocales,
61
+ req,
62
+ select: returning ? select : {
63
+ id: true
64
+ },
65
+ trash,
66
+ unpublishAllLocales,
67
+ ...file ? {
68
+ file
69
+ } : {}
70
+ });
71
+ const responseResult = returning ? result : {
72
+ id: result.id
73
+ };
74
+ return {
75
+ content: [
76
+ {
77
+ type: 'text',
78
+ text: `Document updated successfully in collection "${slug}"!\nResult:\n\`\`\`json\n${JSON.stringify(responseResult)}\n\`\`\``
79
+ }
80
+ ],
81
+ doc: responseResult
82
+ };
83
+ }
84
+ const result = await payload.update({
85
+ collection: slug,
86
+ data: parsedData,
87
+ depth,
88
+ draft,
89
+ fallbackLocale,
90
+ limit,
91
+ locale,
92
+ overrideAccess: authorizedMCP.overrideAccess,
93
+ overrideLock,
94
+ populate,
95
+ publishAllLocales,
96
+ req,
97
+ select: returning ? select : {
98
+ id: true
99
+ },
100
+ sort,
101
+ trash,
102
+ unpublishAllLocales,
103
+ where: whereClause,
104
+ ...file ? {
105
+ file
106
+ } : {}
107
+ });
108
+ const docs = returning ? result.docs : result.docs.map(({ id })=>({
109
+ id
110
+ }));
111
+ const errors = result.errors || [];
112
+ let responseText = `Multiple documents updated in collection "${slug}"!\nUpdated: ${docs.length} documents\nErrors: ${errors.length}\n---`;
113
+ if (docs.length > 0) {
114
+ responseText += `\n\nUpdated documents:\n\`\`\`json\n${JSON.stringify(docs)}\n\`\`\``;
115
+ }
116
+ if (errors.length > 0) {
117
+ responseText += `\n\nErrors:\n\`\`\`json\n${JSON.stringify(errors)}\n\`\`\``;
118
+ const errorSchema = getCollectionInputSchema({
119
+ collectionSlug: slug,
120
+ req
121
+ });
122
+ if (errorSchema) {
123
+ responseText += `\n\nUse this schema for data:\n\`\`\`json\n${JSON.stringify(errorSchema)}\n\`\`\``;
124
+ }
125
+ return {
126
+ content: [
127
+ {
128
+ type: 'text',
129
+ text: responseText
130
+ }
131
+ ],
132
+ doc: {
133
+ docs,
134
+ errors
135
+ },
136
+ isError: true,
137
+ ...errorSchema ? {
138
+ structuredContent: {
139
+ slug,
140
+ docs,
141
+ errors,
142
+ schema: errorSchema
143
+ }
144
+ } : {}
145
+ };
146
+ }
147
+ return {
148
+ content: [
149
+ {
150
+ type: 'text',
151
+ text: responseText
152
+ }
153
+ ],
154
+ doc: {
155
+ docs,
156
+ errors
157
+ }
158
+ };
159
+ } catch (error) {
160
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
161
+ logger.error(`Error updating document in ${slug}: ${errorMessage}`);
162
+ return formatEntityError({
163
+ slug,
164
+ action: 'updating',
165
+ entity: 'collection',
166
+ error,
167
+ req
168
+ });
169
+ }
170
+ });
171
+
172
+ //# sourceMappingURL=updateTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/collections/updateTool.ts"],"sourcesContent":["import type { Where } from 'payload'\n\nimport {\n getCollectionInputSchema,\n getCollectionVirtualFieldNames,\n parseDocumentID,\n stripVirtualFields,\n transformPointDataToPayload,\n updateDocumentInputSchema,\n validateCollectionData,\n} from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\nimport { formatEntityError } from '../formatEntityError.js'\nimport { fileInputSchema, resolveFile } from './fileInput.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Update documents. Prefer uploadReference after upload, externalURL for URLs, or base64 for small local files.'\n\nexport const updateDocumentTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.update),\n annotations: {\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: false,\n readOnlyHint: false,\n title: 'Update Document',\n },\n description: DEFAULT_DESCRIPTION,\n input: updateDocumentInputSchema({ file: fileInputSchema }),\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n\n const {\n id,\n data,\n depth,\n draft,\n fallbackLocale,\n file: fileInput,\n limit,\n locale,\n overrideLock,\n populate,\n publishAllLocales,\n returning,\n select,\n sort,\n trash,\n unpublishAllLocales,\n where,\n } = input\n\n logger.info(\n `Updating document in collection: ${slug}${id ? ` with ID: ${id}` : ' with where clause'}, draft: ${draft}${locale ? `, locale: ${locale}` : ''}`,\n )\n\n try {\n const virtualFieldNames = getCollectionVirtualFieldNames(payload.config, slug)\n const inputData = stripVirtualFields(data, virtualFieldNames)\n validateCollectionData({\n slug,\n data: inputData,\n partial: true,\n req,\n })\n\n const parsedData = transformPointDataToPayload(inputData)\n const file = await resolveFile({ slug, input: fileInput, req })\n\n const whereClause: Where = where ?? {}\n\n if (id !== undefined) {\n const result = await payload.update({\n id: parseDocumentID({ id, collectionSlug: slug, payload }),\n collection: slug,\n data: parsedData,\n depth,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: authorizedMCP.overrideAccess,\n overrideLock,\n populate,\n publishAllLocales,\n req,\n select: returning ? select : { id: true },\n trash,\n unpublishAllLocales,\n ...(file ? { file } : {}),\n })\n\n const responseResult = returning ? result : { id: result.id }\n\n return {\n content: [\n {\n type: 'text',\n text: `Document updated successfully in collection \"${slug}\"!\\nResult:\\n\\`\\`\\`json\\n${JSON.stringify(responseResult)}\\n\\`\\`\\``,\n },\n ],\n doc: responseResult,\n }\n }\n\n const result = await payload.update({\n collection: slug,\n data: parsedData,\n depth,\n draft,\n fallbackLocale,\n limit,\n locale,\n overrideAccess: authorizedMCP.overrideAccess,\n overrideLock,\n populate,\n publishAllLocales,\n req,\n select: returning ? select : { id: true },\n sort,\n trash,\n unpublishAllLocales,\n where: whereClause,\n ...(file ? { file } : {}),\n })\n\n const docs = returning ? result.docs : result.docs.map(({ id }) => ({ id }))\n const errors = result.errors || []\n\n let responseText = `Multiple documents updated in collection \"${slug}\"!\\nUpdated: ${docs.length} documents\\nErrors: ${errors.length}\\n---`\n if (docs.length > 0) {\n responseText += `\\n\\nUpdated documents:\\n\\`\\`\\`json\\n${JSON.stringify(docs)}\\n\\`\\`\\``\n }\n if (errors.length > 0) {\n responseText += `\\n\\nErrors:\\n\\`\\`\\`json\\n${JSON.stringify(errors)}\\n\\`\\`\\``\n\n const errorSchema = getCollectionInputSchema({ collectionSlug: slug, req })\n\n if (errorSchema) {\n responseText += `\\n\\nUse this schema for data:\\n\\`\\`\\`json\\n${JSON.stringify(errorSchema)}\\n\\`\\`\\``\n }\n\n return {\n content: [{ type: 'text', text: responseText }],\n doc: { docs, errors } as unknown as Record<string, unknown>,\n isError: true,\n ...(errorSchema\n ? {\n structuredContent: {\n slug,\n docs,\n errors,\n schema: errorSchema,\n },\n }\n : {}),\n }\n }\n\n return {\n content: [{ type: 'text', text: responseText }],\n doc: { docs, errors } as unknown as Record<string, unknown>,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error updating document in ${slug}: ${errorMessage}`)\n return formatEntityError({ slug, action: 'updating', entity: 'collection', error, req })\n }\n})\n"],"names":["getCollectionInputSchema","getCollectionVirtualFieldNames","parseDocumentID","stripVirtualFields","transformPointDataToPayload","updateDocumentInputSchema","validateCollectionData","defaultAccess","defineCollectionTool","getLogger","formatEntityError","fileInputSchema","resolveFile","DEFAULT_DESCRIPTION","updateDocumentTool","access","args","Boolean","permissions","collections","slug","update","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","file","handler","authorizedMCP","req","payload","logger","id","data","depth","draft","fallbackLocale","fileInput","limit","locale","overrideLock","populate","publishAllLocales","returning","select","sort","trash","unpublishAllLocales","where","info","virtualFieldNames","config","inputData","partial","parsedData","whereClause","undefined","result","collectionSlug","collection","overrideAccess","responseResult","content","type","text","JSON","stringify","doc","docs","map","errors","responseText","length","errorSchema","isError","structuredContent","schema","error","errorMessage","Error","message","action","entity"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const getUploadInstructionsTool: import("../../../types.js").CollectionTool;
2
+ //# sourceMappingURL=uploadInstructionsTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadInstructionsTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/collections/uploadInstructionsTool.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,4CAyDpC,CAAA"}
@@ -0,0 +1,55 @@
1
+ import { strictObject, z } from 'payload';
2
+ import { getUploadInstructions as getPayloadUploadInstructions } from 'payload/internal';
3
+ import { defaultAccess } from '../../../defaultAccess.js';
4
+ import { defineCollectionTool } from '../../../defineTool.js';
5
+ export const getUploadInstructionsTool = defineCollectionTool({
6
+ access: (args)=>defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.create || args.permissions?.collections?.[args.slug]?.update),
7
+ annotations: {
8
+ destructiveHint: false,
9
+ idempotentHint: false,
10
+ openWorldHint: true,
11
+ readOnlyHint: false,
12
+ title: 'Get Upload Instructions'
13
+ },
14
+ description: 'Prepare uploads for createDocuments or updateDocument. This does not upload bytes; finish the returned action before use.',
15
+ input: strictObject({
16
+ docPrefix: z.optional(z.string()).check(z.describe('Document folder or prefix.')),
17
+ filename: z.string().check(z.describe('The original file name.')),
18
+ filesize: z.int().check(z.nonnegative(), z.describe('The file size in bytes.')),
19
+ mimeType: z.string().check(z.describe('The file MIME type.'))
20
+ })
21
+ }).handler(async ({ slug, authorizedMCP, input, req })=>{
22
+ try {
23
+ const instructions = await getPayloadUploadInstructions({
24
+ ...input,
25
+ collectionSlug: slug,
26
+ overrideAccess: authorizedMCP.overrideAccess,
27
+ req
28
+ });
29
+ const nextStep = instructions.type === 'http' ? 'Upload bytes with instructions.request. After success, pass { source: "uploadReference", file: instructions.file }.' : `Call "${instructions.name}" with file and data. After success, pass { source: "uploadReference", file: instructions.file }.`;
30
+ return {
31
+ content: [
32
+ {
33
+ type: 'text',
34
+ text: `Upload instructions for collection "${slug}":\n\`\`\`json\n${JSON.stringify(instructions)}\n\`\`\`\n${nextStep}`
35
+ }
36
+ ],
37
+ structuredContent: {
38
+ instructions
39
+ }
40
+ };
41
+ } catch (error) {
42
+ const message = error instanceof Error ? error.message : 'Unknown error';
43
+ return {
44
+ content: [
45
+ {
46
+ type: 'text',
47
+ text: `Error getting upload instructions for collection "${slug}": ${message}`
48
+ }
49
+ ],
50
+ isError: true
51
+ };
52
+ }
53
+ });
54
+
55
+ //# sourceMappingURL=uploadInstructionsTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/collections/uploadInstructionsTool.ts"],"sourcesContent":["import { strictObject, z } from 'payload'\nimport { getUploadInstructions as getPayloadUploadInstructions } from 'payload/internal'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineCollectionTool } from '../../../defineTool.js'\n\nexport const getUploadInstructionsTool = defineCollectionTool({\n access: (args) =>\n defaultAccess(args) &&\n Boolean(\n args.permissions?.collections?.[args.slug]?.create ||\n args.permissions?.collections?.[args.slug]?.update,\n ),\n annotations: {\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n readOnlyHint: false,\n title: 'Get Upload Instructions',\n },\n description:\n 'Prepare uploads for createDocuments or updateDocument. This does not upload bytes; finish the returned action before use.',\n input: strictObject({\n docPrefix: z.optional(z.string()).check(z.describe('Document folder or prefix.')),\n filename: z.string().check(z.describe('The original file name.')),\n filesize: z.int().check(z.nonnegative(), z.describe('The file size in bytes.')),\n mimeType: z.string().check(z.describe('The file MIME type.')),\n }),\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n try {\n const instructions = await getPayloadUploadInstructions({\n ...input,\n collectionSlug: slug,\n overrideAccess: authorizedMCP.overrideAccess,\n req,\n })\n\n const nextStep =\n instructions.type === 'http'\n ? 'Upload bytes with instructions.request. After success, pass { source: \"uploadReference\", file: instructions.file }.'\n : `Call \"${instructions.name}\" with file and data. After success, pass { source: \"uploadReference\", file: instructions.file }.`\n\n return {\n content: [\n {\n type: 'text',\n text: `Upload instructions for collection \"${slug}\":\\n\\`\\`\\`json\\n${JSON.stringify(instructions)}\\n\\`\\`\\`\\n${nextStep}`,\n },\n ],\n structuredContent: { instructions },\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error'\n return {\n content: [\n {\n type: 'text',\n text: `Error getting upload instructions for collection \"${slug}\": ${message}`,\n },\n ],\n isError: true,\n }\n }\n})\n"],"names":["strictObject","z","getUploadInstructions","getPayloadUploadInstructions","defaultAccess","defineCollectionTool","getUploadInstructionsTool","access","args","Boolean","permissions","collections","slug","create","update","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","docPrefix","optional","string","check","describe","filename","filesize","int","nonnegative","mimeType","handler","authorizedMCP","req","instructions","collectionSlug","overrideAccess","nextStep","type","name","content","text","JSON","stringify","structuredContent","error","message","Error","isError"],"mappings":"AAAA,SAASA,YAAY,EAAEC,CAAC,QAAQ,UAAS;AACzC,SAASC,yBAAyBC,4BAA4B,QAAQ,mBAAkB;AAExF,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,oBAAoB,QAAQ,yBAAwB;AAE7D,OAAO,MAAMC,4BAA4BD,qBAAqB;IAC5DE,QAAQ,CAACC,OACPJ,cAAcI,SACdC,QACED,KAAKE,WAAW,EAAEC,aAAa,CAACH,KAAKI,IAAI,CAAC,EAAEC,UAC5CL,KAAKE,WAAW,EAAEC,aAAa,CAACH,KAAKI,IAAI,CAAC,EAAEE;IAEhDC,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aACE;IACFC,OAAOtB,aAAa;QAClBuB,WAAWtB,EAAEuB,QAAQ,CAACvB,EAAEwB,MAAM,IAAIC,KAAK,CAACzB,EAAE0B,QAAQ,CAAC;QACnDC,UAAU3B,EAAEwB,MAAM,GAAGC,KAAK,CAACzB,EAAE0B,QAAQ,CAAC;QACtCE,UAAU5B,EAAE6B,GAAG,GAAGJ,KAAK,CAACzB,EAAE8B,WAAW,IAAI9B,EAAE0B,QAAQ,CAAC;QACpDK,UAAU/B,EAAEwB,MAAM,GAAGC,KAAK,CAACzB,EAAE0B,QAAQ,CAAC;IACxC;AACF,GAAGM,OAAO,CAAC,OAAO,EAAErB,IAAI,EAAEsB,aAAa,EAAEZ,KAAK,EAAEa,GAAG,EAAE;IACnD,IAAI;QACF,MAAMC,eAAe,MAAMjC,6BAA6B;YACtD,GAAGmB,KAAK;YACRe,gBAAgBzB;YAChB0B,gBAAgBJ,cAAcI,cAAc;YAC5CH;QACF;QAEA,MAAMI,WACJH,aAAaI,IAAI,KAAK,SAClB,wHACA,CAAC,MAAM,EAAEJ,aAAaK,IAAI,CAAC,iGAAiG,CAAC;QAEnI,OAAO;YACLC,SAAS;gBACP;oBACEF,MAAM;oBACNG,MAAM,CAAC,oCAAoC,EAAE/B,KAAK,gBAAgB,EAAEgC,KAAKC,SAAS,CAACT,cAAc,UAAU,EAAEG,UAAU;gBACzH;aACD;YACDO,mBAAmB;gBAAEV;YAAa;QACpC;IACF,EAAE,OAAOW,OAAO;QACd,MAAMC,UAAUD,iBAAiBE,QAAQF,MAAMC,OAAO,GAAG;QACzD,OAAO;YACLN,SAAS;gBACP;oBACEF,MAAM;oBACNG,MAAM,CAAC,kDAAkD,EAAE/B,KAAK,GAAG,EAAEoC,SAAS;gBAChF;aACD;YACDE,SAAS;QACX;IACF;AACF,GAAE"}
@@ -0,0 +1,16 @@
1
+ import type { CollectionSlug, GlobalSlug, PayloadRequest } from 'payload';
2
+ import type { MCPToolResponse } from '../../types.js';
3
+ export declare const formatEntityError: ({ slug, action, entity, error, req, }: {
4
+ action: 'creating' | 'duplicating' | 'updating';
5
+ entity: 'collection';
6
+ error: unknown;
7
+ req: PayloadRequest;
8
+ slug: CollectionSlug;
9
+ } | {
10
+ action: 'updating';
11
+ entity: 'global';
12
+ error: unknown;
13
+ req: PayloadRequest;
14
+ slug: GlobalSlug;
15
+ }) => MCPToolResponse;
16
+ //# sourceMappingURL=formatEntityError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatEntityError.d.ts","sourceRoot":"","sources":["../../../src/mcp/builtin/formatEntityError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAIzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,eAAO,MAAM,iBAAiB,0CAO1B;IACE,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,CAAA;IAC/C,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;IACnB,IAAI,EAAE,cAAc,CAAA;CACrB,GACD;IACE,MAAM,EAAE,UAAU,CAAA;IAClB,MAAM,EAAE,QAAQ,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;IACnB,IAAI,EAAE,UAAU,CAAA;CACjB,KAAG,eAsCP,CAAA"}
@@ -0,0 +1,55 @@
1
+ import { getCollectionInputSchema, getGlobalInputSchema, ValidationError } from 'payload';
2
+ export const formatEntityError = ({ slug, action, entity, error, req })=>{
3
+ const message = error instanceof Error ? error.message : 'Unknown error';
4
+ const target = entity === 'collection' ? `document in collection "${slug}"` : `global "${slug}"`;
5
+ if (!isValidationError(error, message)) {
6
+ return {
7
+ content: [
8
+ {
9
+ type: 'text',
10
+ text: `Error ${action} ${target}: ${message}`
11
+ }
12
+ ],
13
+ isError: true
14
+ };
15
+ }
16
+ const schema = entity === 'collection' ? getCollectionInputSchema({
17
+ collectionSlug: slug,
18
+ req
19
+ }) : getGlobalInputSchema({
20
+ globalSlug: slug,
21
+ req
22
+ });
23
+ const errors = error instanceof ValidationError ? error.data.errors : [
24
+ {
25
+ message
26
+ }
27
+ ];
28
+ const validationMessage = errors.map((issue)=>`${'path' in issue ? `${issue.path}: ` : ''}${issue.message}`).join('\n');
29
+ const schemaText = schema ? `\n\nUse this schema for data:\n\`\`\`json\n${JSON.stringify(schema)}\n\`\`\`` : '';
30
+ return {
31
+ content: [
32
+ {
33
+ type: 'text',
34
+ text: `Error ${action} ${target}: ${validationMessage}${schemaText}`
35
+ }
36
+ ],
37
+ isError: true,
38
+ ...schema ? {
39
+ structuredContent: {
40
+ slug,
41
+ errors,
42
+ schema
43
+ }
44
+ } : {}
45
+ };
46
+ };
47
+ const isValidationError = (error, message)=>{
48
+ if (error instanceof ValidationError) {
49
+ return true;
50
+ }
51
+ const name = error && typeof error === 'object' && 'name' in error ? error.name : undefined;
52
+ return name === 'CastError' || message.includes('Cast to ') || message.includes('validation failed');
53
+ };
54
+
55
+ //# sourceMappingURL=formatEntityError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/mcp/builtin/formatEntityError.ts"],"sourcesContent":["import type { CollectionSlug, GlobalSlug, PayloadRequest } from 'payload'\n\nimport { getCollectionInputSchema, getGlobalInputSchema, ValidationError } from 'payload'\n\nimport type { MCPToolResponse } from '../../types.js'\n\nexport const formatEntityError = ({\n slug,\n action,\n entity,\n error,\n req,\n}:\n | {\n action: 'creating' | 'duplicating' | 'updating'\n entity: 'collection'\n error: unknown\n req: PayloadRequest\n slug: CollectionSlug\n }\n | {\n action: 'updating'\n entity: 'global'\n error: unknown\n req: PayloadRequest\n slug: GlobalSlug\n }): MCPToolResponse => {\n const message = error instanceof Error ? error.message : 'Unknown error'\n const target = entity === 'collection' ? `document in collection \"${slug}\"` : `global \"${slug}\"`\n\n if (!isValidationError(error, message)) {\n return {\n content: [{ type: 'text', text: `Error ${action} ${target}: ${message}` }],\n isError: true,\n }\n }\n\n const schema =\n entity === 'collection'\n ? getCollectionInputSchema({ collectionSlug: slug, req })\n : getGlobalInputSchema({ globalSlug: slug, req })\n const errors = error instanceof ValidationError ? error.data.errors : [{ message }]\n const validationMessage = errors\n .map((issue) => `${'path' in issue ? `${issue.path}: ` : ''}${issue.message}`)\n .join('\\n')\n const schemaText = schema\n ? `\\n\\nUse this schema for data:\\n\\`\\`\\`json\\n${JSON.stringify(schema)}\\n\\`\\`\\``\n : ''\n\n return {\n content: [\n { type: 'text', text: `Error ${action} ${target}: ${validationMessage}${schemaText}` },\n ],\n isError: true,\n ...(schema\n ? {\n structuredContent: {\n slug,\n errors,\n schema,\n },\n }\n : {}),\n }\n}\n\nconst isValidationError = (error: unknown, message: string): boolean => {\n if (error instanceof ValidationError) {\n return true\n }\n\n const name = error && typeof error === 'object' && 'name' in error ? error.name : undefined\n\n return (\n name === 'CastError' || message.includes('Cast to ') || message.includes('validation failed')\n )\n}\n"],"names":["getCollectionInputSchema","getGlobalInputSchema","ValidationError","formatEntityError","slug","action","entity","error","req","message","Error","target","isValidationError","content","type","text","isError","schema","collectionSlug","globalSlug","errors","data","validationMessage","map","issue","path","join","schemaText","JSON","stringify","structuredContent","name","undefined","includes"],"mappings":"AAEA,SAASA,wBAAwB,EAAEC,oBAAoB,EAAEC,eAAe,QAAQ,UAAS;AAIzF,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,IAAI,EACJC,MAAM,EACNC,MAAM,EACNC,KAAK,EACLC,GAAG,EAeA;IACH,MAAMC,UAAUF,iBAAiBG,QAAQH,MAAME,OAAO,GAAG;IACzD,MAAME,SAASL,WAAW,eAAe,CAAC,wBAAwB,EAAEF,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAEA,KAAK,CAAC,CAAC;IAEhG,IAAI,CAACQ,kBAAkBL,OAAOE,UAAU;QACtC,OAAO;YACLI,SAAS;gBAAC;oBAAEC,MAAM;oBAAQC,MAAM,CAAC,MAAM,EAAEV,OAAO,CAAC,EAAEM,OAAO,EAAE,EAAEF,SAAS;gBAAC;aAAE;YAC1EO,SAAS;QACX;IACF;IAEA,MAAMC,SACJX,WAAW,eACPN,yBAAyB;QAAEkB,gBAAgBd;QAAMI;IAAI,KACrDP,qBAAqB;QAAEkB,YAAYf;QAAMI;IAAI;IACnD,MAAMY,SAASb,iBAAiBL,kBAAkBK,MAAMc,IAAI,CAACD,MAAM,GAAG;QAAC;YAAEX;QAAQ;KAAE;IACnF,MAAMa,oBAAoBF,OACvBG,GAAG,CAAC,CAACC,QAAU,GAAG,UAAUA,QAAQ,GAAGA,MAAMC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAKD,MAAMf,OAAO,EAAE,EAC5EiB,IAAI,CAAC;IACR,MAAMC,aAAaV,SACf,CAAC,2CAA2C,EAAEW,KAAKC,SAAS,CAACZ,QAAQ,QAAQ,CAAC,GAC9E;IAEJ,OAAO;QACLJ,SAAS;YACP;gBAAEC,MAAM;gBAAQC,MAAM,CAAC,MAAM,EAAEV,OAAO,CAAC,EAAEM,OAAO,EAAE,EAAEW,oBAAoBK,YAAY;YAAC;SACtF;QACDX,SAAS;QACT,GAAIC,SACA;YACEa,mBAAmB;gBACjB1B;gBACAgB;gBACAH;YACF;QACF,IACA,CAAC,CAAC;IACR;AACF,EAAC;AAED,MAAML,oBAAoB,CAACL,OAAgBE;IACzC,IAAIF,iBAAiBL,iBAAiB;QACpC,OAAO;IACT;IAEA,MAAM6B,OAAOxB,SAAS,OAAOA,UAAU,YAAY,UAAUA,QAAQA,MAAMwB,IAAI,GAAGC;IAElF,OACED,SAAS,eAAetB,QAAQwB,QAAQ,CAAC,eAAexB,QAAQwB,QAAQ,CAAC;AAE7E"}
@@ -0,0 +1,2 @@
1
+ export declare const getConfigInfoTool: import("../../types.js").Tool;
2
+ //# sourceMappingURL=getConfigInfoTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getConfigInfoTool.d.ts","sourceRoot":"","sources":["../../../src/mcp/builtin/getConfigInfoTool.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,+BA+D5B,CAAA"}
@@ -0,0 +1,69 @@
1
+ import { getAccessResults, getConfigInfoInputSchema, isEntityHidden } from 'payload';
2
+ import { defineTool } from '../../defineTool.js';
3
+ export const getConfigInfoTool = defineTool({
4
+ annotations: {
5
+ destructiveHint: false,
6
+ idempotentHint: true,
7
+ openWorldHint: false,
8
+ readOnlyHint: true,
9
+ title: 'Config Info'
10
+ },
11
+ description: 'List the Payload collection and global slugs visible to this MCP client.',
12
+ input: getConfigInfoInputSchema
13
+ }).handler(async ({ authorizedMCP, req })=>{
14
+ const user = req.user;
15
+ const permissions = authorizedMCP.overrideAccess ? null : await getAccessResults({
16
+ req
17
+ });
18
+ const authorizedCollectionSlugs = new Set();
19
+ const authorizedGlobalSlugs = new Set();
20
+ for (const item of authorizedMCP.items){
21
+ if (item.type === 'collectionTool') {
22
+ authorizedCollectionSlugs.add(item.collectionSlug);
23
+ } else if (item.type === 'globalTool') {
24
+ authorizedGlobalSlugs.add(item.globalSlug);
25
+ }
26
+ }
27
+ const collections = [];
28
+ const globals = [];
29
+ for (const collection of req.payload.config.collections){
30
+ if (!authorizedCollectionSlugs.has(collection.slug)) {
31
+ continue;
32
+ }
33
+ if (user && isEntityHidden({
34
+ hidden: collection.admin.hidden,
35
+ user
36
+ })) {
37
+ continue;
38
+ }
39
+ if (!authorizedMCP.overrideAccess && !permissions?.collections?.[collection.slug]?.read) {
40
+ continue;
41
+ }
42
+ collections.push(collection.slug);
43
+ }
44
+ for (const global of req.payload.config.globals){
45
+ if (!authorizedGlobalSlugs.has(global.slug)) {
46
+ continue;
47
+ }
48
+ if (user && isEntityHidden({
49
+ hidden: global.admin.hidden,
50
+ user
51
+ })) {
52
+ continue;
53
+ }
54
+ if (!authorizedMCP.overrideAccess && !permissions?.globals?.[global.slug]?.read) {
55
+ continue;
56
+ }
57
+ globals.push(global.slug);
58
+ }
59
+ return {
60
+ content: [
61
+ {
62
+ type: 'text',
63
+ text: `Collections: ${collections.join(', ') || 'none'}\nGlobals: ${globals.join(', ') || 'none'}`
64
+ }
65
+ ]
66
+ };
67
+ });
68
+
69
+ //# sourceMappingURL=getConfigInfoTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/mcp/builtin/getConfigInfoTool.ts"],"sourcesContent":["import { getAccessResults, getConfigInfoInputSchema, isEntityHidden } from 'payload'\n\nimport { defineTool } from '../../defineTool.js'\n\nexport const getConfigInfoTool = defineTool({\n annotations: {\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n readOnlyHint: true,\n title: 'Config Info',\n },\n description: 'List the Payload collection and global slugs visible to this MCP client.',\n input: getConfigInfoInputSchema,\n}).handler(async ({ authorizedMCP, req }) => {\n const user = req.user\n const permissions = authorizedMCP.overrideAccess ? null : await getAccessResults({ req })\n const authorizedCollectionSlugs = new Set<string>()\n const authorizedGlobalSlugs = new Set<string>()\n\n for (const item of authorizedMCP.items) {\n if (item.type === 'collectionTool') {\n authorizedCollectionSlugs.add(item.collectionSlug)\n } else if (item.type === 'globalTool') {\n authorizedGlobalSlugs.add(item.globalSlug)\n }\n }\n\n const collections: string[] = []\n const globals: string[] = []\n\n for (const collection of req.payload.config.collections) {\n if (!authorizedCollectionSlugs.has(collection.slug)) {\n continue\n }\n if (user && isEntityHidden({ hidden: collection.admin.hidden, user })) {\n continue\n }\n if (!authorizedMCP.overrideAccess && !permissions?.collections?.[collection.slug]?.read) {\n continue\n }\n\n collections.push(collection.slug)\n }\n\n for (const global of req.payload.config.globals) {\n if (!authorizedGlobalSlugs.has(global.slug)) {\n continue\n }\n if (user && isEntityHidden({ hidden: global.admin.hidden, user })) {\n continue\n }\n if (!authorizedMCP.overrideAccess && !permissions?.globals?.[global.slug]?.read) {\n continue\n }\n\n globals.push(global.slug)\n }\n\n return {\n content: [\n {\n type: 'text',\n text: `Collections: ${collections.join(', ') || 'none'}\\nGlobals: ${globals.join(', ') || 'none'}`,\n },\n ],\n }\n})\n"],"names":["getAccessResults","getConfigInfoInputSchema","isEntityHidden","defineTool","getConfigInfoTool","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","user","permissions","overrideAccess","authorizedCollectionSlugs","Set","authorizedGlobalSlugs","item","items","type","add","collectionSlug","globalSlug","collections","globals","collection","payload","config","has","slug","hidden","admin","read","push","global","content","text","join"],"mappings":"AAAA,SAASA,gBAAgB,EAAEC,wBAAwB,EAAEC,cAAc,QAAQ,UAAS;AAEpF,SAASC,UAAU,QAAQ,sBAAqB;AAEhD,OAAO,MAAMC,oBAAoBD,WAAW;IAC1CE,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAa;IACbC,OAAOX;AACT,GAAGY,OAAO,CAAC,OAAO,EAAEC,aAAa,EAAEC,GAAG,EAAE;IACtC,MAAMC,OAAOD,IAAIC,IAAI;IACrB,MAAMC,cAAcH,cAAcI,cAAc,GAAG,OAAO,MAAMlB,iBAAiB;QAAEe;IAAI;IACvF,MAAMI,4BAA4B,IAAIC;IACtC,MAAMC,wBAAwB,IAAID;IAElC,KAAK,MAAME,QAAQR,cAAcS,KAAK,CAAE;QACtC,IAAID,KAAKE,IAAI,KAAK,kBAAkB;YAClCL,0BAA0BM,GAAG,CAACH,KAAKI,cAAc;QACnD,OAAO,IAAIJ,KAAKE,IAAI,KAAK,cAAc;YACrCH,sBAAsBI,GAAG,CAACH,KAAKK,UAAU;QAC3C;IACF;IAEA,MAAMC,cAAwB,EAAE;IAChC,MAAMC,UAAoB,EAAE;IAE5B,KAAK,MAAMC,cAAcf,IAAIgB,OAAO,CAACC,MAAM,CAACJ,WAAW,CAAE;QACvD,IAAI,CAACT,0BAA0Bc,GAAG,CAACH,WAAWI,IAAI,GAAG;YACnD;QACF;QACA,IAAIlB,QAAQd,eAAe;YAAEiC,QAAQL,WAAWM,KAAK,CAACD,MAAM;YAAEnB;QAAK,IAAI;YACrE;QACF;QACA,IAAI,CAACF,cAAcI,cAAc,IAAI,CAACD,aAAaW,aAAa,CAACE,WAAWI,IAAI,CAAC,EAAEG,MAAM;YACvF;QACF;QAEAT,YAAYU,IAAI,CAACR,WAAWI,IAAI;IAClC;IAEA,KAAK,MAAMK,UAAUxB,IAAIgB,OAAO,CAACC,MAAM,CAACH,OAAO,CAAE;QAC/C,IAAI,CAACR,sBAAsBY,GAAG,CAACM,OAAOL,IAAI,GAAG;YAC3C;QACF;QACA,IAAIlB,QAAQd,eAAe;YAAEiC,QAAQI,OAAOH,KAAK,CAACD,MAAM;YAAEnB;QAAK,IAAI;YACjE;QACF;QACA,IAAI,CAACF,cAAcI,cAAc,IAAI,CAACD,aAAaY,SAAS,CAACU,OAAOL,IAAI,CAAC,EAAEG,MAAM;YAC/E;QACF;QAEAR,QAAQS,IAAI,CAACC,OAAOL,IAAI;IAC1B;IAEA,OAAO;QACLM,SAAS;YACP;gBACEhB,MAAM;gBACNiB,MAAM,CAAC,aAAa,EAAEb,YAAYc,IAAI,CAAC,SAAS,OAAO,WAAW,EAAEb,QAAQa,IAAI,CAAC,SAAS,QAAQ;YACpG;SACD;IACH;AACF,GAAE"}
@@ -0,0 +1,2 @@
1
+ export declare const countGlobalVersionsTool: import("../../../types.js").GlobalTool;
2
+ //# sourceMappingURL=countVersionsTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countVersionsTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/globals/countVersionsTool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,uBAAuB,wCAkDlC,CAAA"}
@@ -0,0 +1,60 @@
1
+ import { countGlobalVersionsInputSchema } from 'payload';
2
+ import { defaultAccess } from '../../../defaultAccess.js';
3
+ import { defineGlobalTool } from '../../../defineTool.js';
4
+ import { getLogger } from '../../../utils/getLogger.js';
5
+ const DEFAULT_DESCRIPTION = 'Count global versions in any version-enabled global by passing the global slug and optional where clause.';
6
+ export const countGlobalVersionsTool = defineGlobalTool({
7
+ access: (args)=>defaultAccess(args) && Boolean(args.permissions?.globals?.[args.slug]?.readVersions),
8
+ annotations: {
9
+ destructiveHint: false,
10
+ idempotentHint: true,
11
+ openWorldHint: false,
12
+ readOnlyHint: true,
13
+ title: 'Count Global Versions'
14
+ },
15
+ description: DEFAULT_DESCRIPTION,
16
+ input: countGlobalVersionsInputSchema
17
+ }).handler(async ({ slug, authorizedMCP, input, req })=>{
18
+ const payload = req.payload;
19
+ const logger = getLogger({
20
+ payload
21
+ });
22
+ const { locale, where } = input;
23
+ logger.info(`Counting versions for global: ${slug}`);
24
+ try {
25
+ const result = await payload.countGlobalVersions({
26
+ global: slug,
27
+ overrideAccess: authorizedMCP.overrideAccess,
28
+ req,
29
+ ...locale ? {
30
+ locale
31
+ } : {},
32
+ ...where ? {
33
+ where
34
+ } : {}
35
+ });
36
+ return {
37
+ content: [
38
+ {
39
+ type: 'text',
40
+ text: `Global "${slug}" contains ${result.totalDocs} matching versions.\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
41
+ }
42
+ ],
43
+ doc: result
44
+ };
45
+ } catch (error) {
46
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
47
+ logger.error(`Error counting versions for global ${slug}: ${errorMessage}`);
48
+ return {
49
+ content: [
50
+ {
51
+ type: 'text',
52
+ text: `❌ **Error counting versions for global "${slug}":** ${errorMessage}`
53
+ }
54
+ ],
55
+ isError: true
56
+ };
57
+ }
58
+ });
59
+
60
+ //# sourceMappingURL=countVersionsTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/globals/countVersionsTool.ts"],"sourcesContent":["import { countGlobalVersionsInputSchema } from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineGlobalTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\n\nconst DEFAULT_DESCRIPTION =\n 'Count global versions in any version-enabled global by passing the global slug and optional where clause.'\n\nexport const countGlobalVersionsTool = defineGlobalTool({\n access: (args) =>\n defaultAccess(args) && Boolean(args.permissions?.globals?.[args.slug]?.readVersions),\n annotations: {\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n readOnlyHint: true,\n title: 'Count Global Versions',\n },\n description: DEFAULT_DESCRIPTION,\n input: countGlobalVersionsInputSchema,\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n const { locale, where } = input\n\n logger.info(`Counting versions for global: ${slug}`)\n\n try {\n const result = await payload.countGlobalVersions({\n global: slug,\n overrideAccess: authorizedMCP.overrideAccess,\n req,\n ...(locale ? { locale } : {}),\n ...(where ? { where } : {}),\n })\n\n return {\n content: [\n {\n type: 'text',\n text: `Global \"${slug}\" contains ${result.totalDocs} matching versions.\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error counting versions for global ${slug}: ${errorMessage}`)\n return {\n content: [\n {\n type: 'text',\n text: `❌ **Error counting versions for global \"${slug}\":** ${errorMessage}`,\n },\n ],\n isError: true,\n }\n }\n})\n"],"names":["countGlobalVersionsInputSchema","defaultAccess","defineGlobalTool","getLogger","DEFAULT_DESCRIPTION","countGlobalVersionsTool","access","args","Boolean","permissions","globals","slug","readVersions","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","payload","logger","locale","where","info","result","countGlobalVersions","global","overrideAccess","content","type","text","totalDocs","JSON","stringify","doc","error","errorMessage","Error","message","isError"],"mappings":"AAAA,SAASA,8BAA8B,QAAQ,UAAS;AAExD,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,gBAAgB,QAAQ,yBAAwB;AACzD,SAASC,SAAS,QAAQ,8BAA6B;AAEvD,MAAMC,sBACJ;AAEF,OAAO,MAAMC,0BAA0BH,iBAAiB;IACtDI,QAAQ,CAACC,OACPN,cAAcM,SAASC,QAAQD,KAAKE,WAAW,EAAEC,SAAS,CAACH,KAAKI,IAAI,CAAC,EAAEC;IACzEC,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAaf;IACbgB,OAAOpB;AACT,GAAGqB,OAAO,CAAC,OAAO,EAAEV,IAAI,EAAEW,aAAa,EAAEF,KAAK,EAAEG,GAAG,EAAE;IACnD,MAAMC,UAAUD,IAAIC,OAAO;IAC3B,MAAMC,SAAStB,UAAU;QAAEqB;IAAQ;IACnC,MAAM,EAAEE,MAAM,EAAEC,KAAK,EAAE,GAAGP;IAE1BK,OAAOG,IAAI,CAAC,CAAC,8BAA8B,EAAEjB,MAAM;IAEnD,IAAI;QACF,MAAMkB,SAAS,MAAML,QAAQM,mBAAmB,CAAC;YAC/CC,QAAQpB;YACRqB,gBAAgBV,cAAcU,cAAc;YAC5CT;YACA,GAAIG,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;YAC5B,GAAIC,QAAQ;gBAAEA;YAAM,IAAI,CAAC,CAAC;QAC5B;QAEA,OAAO;YACLM,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,QAAQ,EAAExB,KAAK,WAAW,EAAEkB,OAAOO,SAAS,CAAC,iCAAiC,EAAEC,KAAKC,SAAS,CAACT,QAAQ,QAAQ,CAAC;gBACzH;aACD;YACDU,KAAKV;QACP;IACF,EAAE,OAAOW,OAAO;QACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;QAC9DlB,OAAOe,KAAK,CAAC,CAAC,mCAAmC,EAAE7B,KAAK,EAAE,EAAE8B,cAAc;QAC1E,OAAO;YACLR,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,wCAAwC,EAAExB,KAAK,KAAK,EAAE8B,cAAc;gBAC7E;aACD;YACDG,SAAS;QACX;IACF;AACF,GAAE"}
@@ -0,0 +1,2 @@
1
+ export declare const findGlobalTool: import("../../../types.js").GlobalTool;
2
+ //# sourceMappingURL=findTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/globals/findTool.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,cAAc,wCAyDzB,CAAA"}
@@ -0,0 +1,67 @@
1
+ import { findGlobalInputSchema } from 'payload';
2
+ import { defaultAccess } from '../../../defaultAccess.js';
3
+ import { defineGlobalTool } from '../../../defineTool.js';
4
+ import { getLogger } from '../../../utils/getLogger.js';
5
+ const DEFAULT_DESCRIPTION = 'Find any Payload global by passing the global slug.';
6
+ export const findGlobalTool = defineGlobalTool({
7
+ access: (args)=>defaultAccess(args) && Boolean(args.permissions?.globals?.[args.slug]?.read),
8
+ annotations: {
9
+ destructiveHint: false,
10
+ idempotentHint: true,
11
+ openWorldHint: false,
12
+ readOnlyHint: true,
13
+ title: 'Find Global'
14
+ },
15
+ description: DEFAULT_DESCRIPTION,
16
+ input: findGlobalInputSchema
17
+ }).handler(async ({ slug, authorizedMCP, input, req })=>{
18
+ const payload = req.payload;
19
+ const logger = getLogger({
20
+ payload
21
+ });
22
+ const { depth, fallbackLocale, locale, populate, select } = input;
23
+ logger.info(`Reading global: ${slug}, depth: ${depth}${locale ? `, locale: ${locale}` : ''}`);
24
+ try {
25
+ const findOptions = {
26
+ slug,
27
+ depth,
28
+ overrideAccess: authorizedMCP.overrideAccess,
29
+ req
30
+ };
31
+ if (locale) {
32
+ findOptions.locale = locale;
33
+ }
34
+ if (fallbackLocale !== undefined) {
35
+ findOptions.fallbackLocale = fallbackLocale;
36
+ }
37
+ if (select) {
38
+ findOptions.select = select;
39
+ }
40
+ if (populate) {
41
+ findOptions.populate = populate;
42
+ }
43
+ const result = await payload.findGlobal(findOptions);
44
+ return {
45
+ content: [
46
+ {
47
+ type: 'text',
48
+ text: `Global "${slug}":\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``
49
+ }
50
+ ],
51
+ doc: result
52
+ };
53
+ } catch (error) {
54
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
55
+ logger.error(`Error reading global ${slug}: ${errorMessage}`);
56
+ return {
57
+ content: [
58
+ {
59
+ type: 'text',
60
+ text: `❌ **Error reading global "${slug}":** ${errorMessage}`
61
+ }
62
+ ]
63
+ };
64
+ }
65
+ });
66
+
67
+ //# sourceMappingURL=findTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/mcp/builtin/globals/findTool.ts"],"sourcesContent":["import { findGlobalInputSchema } from 'payload'\n\nimport { defaultAccess } from '../../../defaultAccess.js'\nimport { defineGlobalTool } from '../../../defineTool.js'\nimport { getLogger } from '../../../utils/getLogger.js'\n\nconst DEFAULT_DESCRIPTION = 'Find any Payload global by passing the global slug.'\n\nexport const findGlobalTool = defineGlobalTool({\n access: (args) => defaultAccess(args) && Boolean(args.permissions?.globals?.[args.slug]?.read),\n annotations: {\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n readOnlyHint: true,\n title: 'Find Global',\n },\n description: DEFAULT_DESCRIPTION,\n input: findGlobalInputSchema,\n}).handler(async ({ slug, authorizedMCP, input, req }) => {\n const payload = req.payload\n const logger = getLogger({ payload })\n\n const { depth, fallbackLocale, locale, populate, select } = input\n\n logger.info(`Reading global: ${slug}, depth: ${depth}${locale ? `, locale: ${locale}` : ''}`)\n\n try {\n const findOptions: Parameters<typeof payload.findGlobal>[0] = {\n slug,\n depth,\n overrideAccess: authorizedMCP.overrideAccess,\n req,\n }\n\n if (locale) {\n findOptions.locale = locale\n }\n if (fallbackLocale !== undefined) {\n findOptions.fallbackLocale = fallbackLocale\n }\n if (select) {\n findOptions.select = select\n }\n if (populate) {\n findOptions.populate = populate\n }\n const result = await payload.findGlobal(findOptions)\n\n return {\n content: [\n {\n type: 'text',\n text: `Global \"${slug}\":\\n\\`\\`\\`json\\n${JSON.stringify(result)}\\n\\`\\`\\``,\n },\n ],\n doc: result,\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n logger.error(`Error reading global ${slug}: ${errorMessage}`)\n return {\n content: [{ type: 'text', text: `❌ **Error reading global \"${slug}\":** ${errorMessage}` }],\n }\n }\n})\n"],"names":["findGlobalInputSchema","defaultAccess","defineGlobalTool","getLogger","DEFAULT_DESCRIPTION","findGlobalTool","access","args","Boolean","permissions","globals","slug","read","annotations","destructiveHint","idempotentHint","openWorldHint","readOnlyHint","title","description","input","handler","authorizedMCP","req","payload","logger","depth","fallbackLocale","locale","populate","select","info","findOptions","overrideAccess","undefined","result","findGlobal","content","type","text","JSON","stringify","doc","error","errorMessage","Error","message"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,UAAS;AAE/C,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,gBAAgB,QAAQ,yBAAwB;AACzD,SAASC,SAAS,QAAQ,8BAA6B;AAEvD,MAAMC,sBAAsB;AAE5B,OAAO,MAAMC,iBAAiBH,iBAAiB;IAC7CI,QAAQ,CAACC,OAASN,cAAcM,SAASC,QAAQD,KAAKE,WAAW,EAAEC,SAAS,CAACH,KAAKI,IAAI,CAAC,EAAEC;IACzFC,aAAa;QACXC,iBAAiB;QACjBC,gBAAgB;QAChBC,eAAe;QACfC,cAAc;QACdC,OAAO;IACT;IACAC,aAAaf;IACbgB,OAAOpB;AACT,GAAGqB,OAAO,CAAC,OAAO,EAAEV,IAAI,EAAEW,aAAa,EAAEF,KAAK,EAAEG,GAAG,EAAE;IACnD,MAAMC,UAAUD,IAAIC,OAAO;IAC3B,MAAMC,SAAStB,UAAU;QAAEqB;IAAQ;IAEnC,MAAM,EAAEE,KAAK,EAAEC,cAAc,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGV;IAE5DK,OAAOM,IAAI,CAAC,CAAC,gBAAgB,EAAEpB,KAAK,SAAS,EAAEe,QAAQE,SAAS,CAAC,UAAU,EAAEA,QAAQ,GAAG,IAAI;IAE5F,IAAI;QACF,MAAMI,cAAwD;YAC5DrB;YACAe;YACAO,gBAAgBX,cAAcW,cAAc;YAC5CV;QACF;QAEA,IAAIK,QAAQ;YACVI,YAAYJ,MAAM,GAAGA;QACvB;QACA,IAAID,mBAAmBO,WAAW;YAChCF,YAAYL,cAAc,GAAGA;QAC/B;QACA,IAAIG,QAAQ;YACVE,YAAYF,MAAM,GAAGA;QACvB;QACA,IAAID,UAAU;YACZG,YAAYH,QAAQ,GAAGA;QACzB;QACA,MAAMM,SAAS,MAAMX,QAAQY,UAAU,CAACJ;QAExC,OAAO;YACLK,SAAS;gBACP;oBACEC,MAAM;oBACNC,MAAM,CAAC,QAAQ,EAAE5B,KAAK,gBAAgB,EAAE6B,KAAKC,SAAS,CAACN,QAAQ,QAAQ,CAAC;gBAC1E;aACD;YACDO,KAAKP;QACP;IACF,EAAE,OAAOQ,OAAO;QACd,MAAMC,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAG;QAC9DrB,OAAOkB,KAAK,CAAC,CAAC,qBAAqB,EAAEhC,KAAK,EAAE,EAAEiC,cAAc;QAC5D,OAAO;YACLP,SAAS;gBAAC;oBAAEC,MAAM;oBAAQC,MAAM,CAAC,0BAA0B,EAAE5B,KAAK,KAAK,EAAEiC,cAAc;gBAAC;aAAE;QAC5F;IACF;AACF,GAAE"}
@@ -0,0 +1,2 @@
1
+ export declare const findGlobalVersionByIDTool: import("../../../types.js").GlobalTool;
2
+ //# sourceMappingURL=findVersionByIDTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findVersionByIDTool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/builtin/globals/findVersionByIDTool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,yBAAyB,wCAsDpC,CAAA"}