@payloadcms/plugin-mcp 4.0.0-internal.011fd46 → 4.0.0-internal.0731f09

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 (502) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/defaultAccess.d.ts +3 -0
  3. package/dist/defaultAccess.d.ts.map +1 -0
  4. package/dist/defaultAccess.js +3 -0
  5. package/dist/defaultAccess.js.map +1 -0
  6. package/dist/defineTool.d.ts +8 -8
  7. package/dist/defineTool.d.ts.map +1 -1
  8. package/dist/endpoint/access.d.ts +12 -5
  9. package/dist/endpoint/access.d.ts.map +1 -1
  10. package/dist/endpoint/access.js +86 -103
  11. package/dist/endpoint/access.js.map +1 -1
  12. package/dist/endpoint/index.d.ts +1 -1
  13. package/dist/endpoint/index.d.ts.map +1 -1
  14. package/dist/endpoint/index.js +109 -16
  15. package/dist/endpoint/index.js.map +1 -1
  16. package/dist/endpoint/oauth.d.ts +39 -0
  17. package/dist/endpoint/oauth.d.ts.map +1 -0
  18. package/dist/endpoint/oauth.js +92 -0
  19. package/dist/endpoint/oauth.js.map +1 -0
  20. package/dist/endpoint/oauthServer.d.ts +11 -0
  21. package/dist/endpoint/oauthServer.d.ts.map +1 -0
  22. package/dist/endpoint/oauthServer.js +351 -0
  23. package/dist/endpoint/oauthServer.js.map +1 -0
  24. package/dist/exports/client.d.ts +1 -4
  25. package/dist/exports/client.d.ts.map +1 -1
  26. package/dist/exports/client.js +1 -4
  27. package/dist/exports/client.js.map +1 -1
  28. package/dist/exports/internal.d.ts +2 -0
  29. package/dist/exports/internal.d.ts.map +1 -0
  30. package/dist/exports/internal.js +3 -0
  31. package/dist/exports/internal.js.map +1 -0
  32. package/dist/index.d.ts +12 -4
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +18 -58
  35. package/dist/index.js.map +1 -1
  36. package/dist/mcp/buildMcpServer.d.ts +6 -6
  37. package/dist/mcp/buildMcpServer.d.ts.map +1 -1
  38. package/dist/mcp/buildMcpServer.js +68 -34
  39. package/dist/mcp/buildMcpServer.js.map +1 -1
  40. package/dist/mcp/builtin/collections/authTools.d.ts.map +1 -1
  41. package/dist/mcp/builtin/collections/authTools.js +80 -56
  42. package/dist/mcp/builtin/collections/authTools.js.map +1 -1
  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 +1 -1
  52. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
  53. package/dist/mcp/builtin/collections/createTool.js +105 -53
  54. package/dist/mcp/builtin/collections/createTool.js.map +1 -1
  55. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
  56. package/dist/mcp/builtin/collections/deleteTool.js +46 -44
  57. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
  58. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  59. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  60. package/dist/mcp/builtin/collections/duplicateTool.js +90 -0
  61. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  62. package/dist/mcp/builtin/collections/fileInput.d.ts +28 -0
  63. package/dist/mcp/builtin/collections/fileInput.d.ts.map +1 -0
  64. package/dist/mcp/builtin/collections/fileInput.js +88 -0
  65. package/dist/mcp/builtin/collections/fileInput.js.map +1 -0
  66. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  67. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  68. package/dist/mcp/builtin/collections/findDistinctTool.js +77 -0
  69. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  70. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
  71. package/dist/mcp/builtin/collections/findTool.js +31 -48
  72. package/dist/mcp/builtin/collections/findTool.js.map +1 -1
  73. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  74. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  75. package/dist/mcp/builtin/collections/findVersionByIDTool.js +74 -0
  76. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  77. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  78. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  79. package/dist/mcp/builtin/collections/findVersionsTool.js +84 -0
  80. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  81. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -1
  82. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +71 -10
  83. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -1
  84. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  85. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  86. package/dist/mcp/builtin/collections/restoreVersionTool.js +69 -0
  87. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  88. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
  89. package/dist/mcp/builtin/collections/updateTool.js +68 -86
  90. package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
  91. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts +2 -0
  92. package/dist/mcp/builtin/collections/uploadInstructionsTool.d.ts.map +1 -0
  93. package/dist/mcp/builtin/collections/uploadInstructionsTool.js +55 -0
  94. package/dist/mcp/builtin/collections/uploadInstructionsTool.js.map +1 -0
  95. package/dist/mcp/builtin/formatEntityError.d.ts +16 -0
  96. package/dist/mcp/builtin/formatEntityError.d.ts.map +1 -0
  97. package/dist/mcp/builtin/formatEntityError.js +55 -0
  98. package/dist/mcp/builtin/formatEntityError.js.map +1 -0
  99. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -1
  100. package/dist/mcp/builtin/getConfigInfoTool.js +23 -10
  101. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -1
  102. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  103. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  104. package/dist/mcp/builtin/globals/countVersionsTool.js +60 -0
  105. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  106. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -1
  107. package/dist/mcp/builtin/globals/findTool.js +13 -17
  108. package/dist/mcp/builtin/globals/findTool.js.map +1 -1
  109. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  110. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  111. package/dist/mcp/builtin/globals/findVersionByIDTool.js +68 -0
  112. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  113. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  114. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  115. package/dist/mcp/builtin/globals/findVersionsTool.js +78 -0
  116. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  117. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -1
  118. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +49 -10
  119. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -1
  120. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  121. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  122. package/dist/mcp/builtin/globals/restoreVersionTool.js +70 -0
  123. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  124. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -1
  125. package/dist/mcp/builtin/globals/updateTool.js +29 -36
  126. package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
  127. package/dist/mcp/builtinTools.d.ts +73 -2
  128. package/dist/mcp/builtinTools.d.ts.map +1 -1
  129. package/dist/mcp/builtinTools.js +73 -3
  130. package/dist/mcp/builtinTools.js.map +1 -1
  131. package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
  132. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
  133. package/dist/mcp/sanitizeMCPConfig.js +51 -17
  134. package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
  135. package/dist/stdio.d.ts +3 -3
  136. package/dist/stdio.d.ts.map +1 -1
  137. package/dist/stdio.js +86 -47
  138. package/dist/stdio.js.map +1 -1
  139. package/dist/types.d.ts +170 -92
  140. package/dist/types.d.ts.map +1 -1
  141. package/dist/types.js +2 -4
  142. package/dist/types.js.map +1 -1
  143. package/dist/utils/camelCase.d.ts.map +1 -1
  144. package/dist/utils/getPluginConfig.d.ts +1 -1
  145. package/dist/utils/getPluginConfig.js +1 -1
  146. package/dist/utils/getPluginConfig.js.map +1 -1
  147. package/dist/utils/resolveProjectRoot.d.ts.map +1 -1
  148. package/dist/utils/toStandardSchema.d.ts.map +1 -1
  149. package/dist/utils/toStandardSchema.js.map +1 -1
  150. package/package.json +27 -38
  151. package/src/defaultAccess.ts +3 -0
  152. package/src/endpoint/access.ts +88 -112
  153. package/src/endpoint/index.ts +95 -15
  154. package/src/endpoint/oauth.ts +91 -0
  155. package/src/endpoint/oauthServer.ts +386 -0
  156. package/src/exports/client.ts +2 -4
  157. package/src/exports/internal.ts +1 -0
  158. package/src/index.ts +43 -67
  159. package/src/mcp/buildMcpServer.ts +86 -51
  160. package/src/mcp/builtin/collections/authTools.ts +82 -71
  161. package/src/mcp/builtin/collections/countTool.ts +61 -0
  162. package/src/mcp/builtin/collections/countVersionsTool.ts +60 -0
  163. package/src/mcp/builtin/collections/createTool.ts +110 -76
  164. package/src/mcp/builtin/collections/deleteTool.ts +39 -65
  165. package/src/mcp/builtin/collections/duplicateTool.ts +84 -0
  166. package/src/mcp/builtin/collections/fileInput.spec.ts +93 -0
  167. package/src/mcp/builtin/collections/fileInput.ts +127 -0
  168. package/src/mcp/builtin/collections/findDistinctTool.ts +67 -0
  169. package/src/mcp/builtin/collections/findTool.ts +28 -108
  170. package/src/mcp/builtin/collections/findVersionByIDTool.ts +66 -0
  171. package/src/mcp/builtin/collections/findVersionsTool.ts +83 -0
  172. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +63 -7
  173. package/src/mcp/builtin/collections/restoreVersionTool.ts +65 -0
  174. package/src/mcp/builtin/collections/updateTool.ts +65 -100
  175. package/src/mcp/builtin/collections/uploadInstructionsTool.ts +64 -0
  176. package/src/mcp/builtin/formatEntityError.ts +77 -0
  177. package/src/mcp/builtin/getConfigInfoTool.ts +22 -5
  178. package/src/mcp/builtin/globals/countVersionsTool.ts +60 -0
  179. package/src/mcp/builtin/globals/findTool.ts +16 -52
  180. package/src/mcp/builtin/globals/findVersionByIDTool.ts +64 -0
  181. package/src/mcp/builtin/globals/findVersionsTool.ts +69 -0
  182. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +45 -7
  183. package/src/mcp/builtin/globals/restoreVersionTool.ts +68 -0
  184. package/src/mcp/builtin/globals/updateTool.ts +41 -61
  185. package/src/mcp/builtinTools.ts +72 -6
  186. package/src/mcp/sanitizeMCPConfig.ts +37 -19
  187. package/src/stdio.ts +80 -47
  188. package/src/types.ts +177 -95
  189. package/src/utils/getPluginConfig.ts +1 -1
  190. package/src/utils/toStandardSchema.ts +1 -1
  191. package/dist/collection/getAccessField.d.ts +0 -12
  192. package/dist/collection/getAccessField.d.ts.map +0 -1
  193. package/dist/collection/getAccessField.js +0 -72
  194. package/dist/collection/getAccessField.js.map +0 -1
  195. package/dist/collection/index.d.ts +0 -6
  196. package/dist/collection/index.d.ts.map +0 -1
  197. package/dist/collection/index.js +0 -105
  198. package/dist/collection/index.js.map +0 -1
  199. package/dist/components/APIKeyField/index.client.d.ts +0 -9
  200. package/dist/components/APIKeyField/index.client.d.ts.map +0 -1
  201. package/dist/components/APIKeyField/index.client.js +0 -85
  202. package/dist/components/APIKeyField/index.client.js.map +0 -1
  203. package/dist/components/APIKeyField/index.css +0 -105
  204. package/dist/components/APIKeysEmptyState/index.client.d.ts +0 -4
  205. package/dist/components/APIKeysEmptyState/index.client.d.ts.map +0 -1
  206. package/dist/components/APIKeysEmptyState/index.client.js +0 -21
  207. package/dist/components/APIKeysEmptyState/index.client.js.map +0 -1
  208. package/dist/components/AccessField/index.client.d.ts +0 -10
  209. package/dist/components/AccessField/index.client.d.ts.map +0 -1
  210. package/dist/components/AccessField/index.client.js +0 -247
  211. package/dist/components/AccessField/index.client.js.map +0 -1
  212. package/dist/components/AccessField/index.css +0 -99
  213. package/dist/components/SettingsMenu/index.client.d.ts +0 -8
  214. package/dist/components/SettingsMenu/index.client.d.ts.map +0 -1
  215. package/dist/components/SettingsMenu/index.client.js +0 -24
  216. package/dist/components/SettingsMenu/index.client.js.map +0 -1
  217. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +0 -9
  218. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +0 -1
  219. package/dist/mcp/builtin/collections/formatCollectionError.js +0 -60
  220. package/dist/mcp/builtin/collections/formatCollectionError.js.map +0 -1
  221. package/dist/mcp/builtin/validateEntityData.d.ts +0 -14
  222. package/dist/mcp/builtin/validateEntityData.d.ts.map +0 -1
  223. package/dist/mcp/builtin/validateEntityData.js +0 -82
  224. package/dist/mcp/builtin/validateEntityData.js.map +0 -1
  225. package/dist/translations/index.d.ts +0 -11
  226. package/dist/translations/index.d.ts.map +0 -1
  227. package/dist/translations/index.js +0 -92
  228. package/dist/translations/index.js.map +0 -1
  229. package/dist/translations/languages/ar.d.ts +0 -31
  230. package/dist/translations/languages/ar.d.ts.map +0 -1
  231. package/dist/translations/languages/ar.js +0 -34
  232. package/dist/translations/languages/ar.js.map +0 -1
  233. package/dist/translations/languages/az.d.ts +0 -31
  234. package/dist/translations/languages/az.d.ts.map +0 -1
  235. package/dist/translations/languages/az.js +0 -34
  236. package/dist/translations/languages/az.js.map +0 -1
  237. package/dist/translations/languages/bg.d.ts +0 -31
  238. package/dist/translations/languages/bg.d.ts.map +0 -1
  239. package/dist/translations/languages/bg.js +0 -34
  240. package/dist/translations/languages/bg.js.map +0 -1
  241. package/dist/translations/languages/bnBd.d.ts +0 -31
  242. package/dist/translations/languages/bnBd.d.ts.map +0 -1
  243. package/dist/translations/languages/bnBd.js +0 -34
  244. package/dist/translations/languages/bnBd.js.map +0 -1
  245. package/dist/translations/languages/bnIn.d.ts +0 -31
  246. package/dist/translations/languages/bnIn.d.ts.map +0 -1
  247. package/dist/translations/languages/bnIn.js +0 -34
  248. package/dist/translations/languages/bnIn.js.map +0 -1
  249. package/dist/translations/languages/ca.d.ts +0 -31
  250. package/dist/translations/languages/ca.d.ts.map +0 -1
  251. package/dist/translations/languages/ca.js +0 -34
  252. package/dist/translations/languages/ca.js.map +0 -1
  253. package/dist/translations/languages/cs.d.ts +0 -31
  254. package/dist/translations/languages/cs.d.ts.map +0 -1
  255. package/dist/translations/languages/cs.js +0 -34
  256. package/dist/translations/languages/cs.js.map +0 -1
  257. package/dist/translations/languages/da.d.ts +0 -31
  258. package/dist/translations/languages/da.d.ts.map +0 -1
  259. package/dist/translations/languages/da.js +0 -34
  260. package/dist/translations/languages/da.js.map +0 -1
  261. package/dist/translations/languages/de.d.ts +0 -31
  262. package/dist/translations/languages/de.d.ts.map +0 -1
  263. package/dist/translations/languages/de.js +0 -34
  264. package/dist/translations/languages/de.js.map +0 -1
  265. package/dist/translations/languages/en.d.ts +0 -31
  266. package/dist/translations/languages/en.d.ts.map +0 -1
  267. package/dist/translations/languages/en.js +0 -34
  268. package/dist/translations/languages/en.js.map +0 -1
  269. package/dist/translations/languages/es.d.ts +0 -31
  270. package/dist/translations/languages/es.d.ts.map +0 -1
  271. package/dist/translations/languages/es.js +0 -34
  272. package/dist/translations/languages/es.js.map +0 -1
  273. package/dist/translations/languages/et.d.ts +0 -31
  274. package/dist/translations/languages/et.d.ts.map +0 -1
  275. package/dist/translations/languages/et.js +0 -34
  276. package/dist/translations/languages/et.js.map +0 -1
  277. package/dist/translations/languages/fa.d.ts +0 -31
  278. package/dist/translations/languages/fa.d.ts.map +0 -1
  279. package/dist/translations/languages/fa.js +0 -34
  280. package/dist/translations/languages/fa.js.map +0 -1
  281. package/dist/translations/languages/fr.d.ts +0 -31
  282. package/dist/translations/languages/fr.d.ts.map +0 -1
  283. package/dist/translations/languages/fr.js +0 -34
  284. package/dist/translations/languages/fr.js.map +0 -1
  285. package/dist/translations/languages/he.d.ts +0 -31
  286. package/dist/translations/languages/he.d.ts.map +0 -1
  287. package/dist/translations/languages/he.js +0 -34
  288. package/dist/translations/languages/he.js.map +0 -1
  289. package/dist/translations/languages/hr.d.ts +0 -31
  290. package/dist/translations/languages/hr.d.ts.map +0 -1
  291. package/dist/translations/languages/hr.js +0 -34
  292. package/dist/translations/languages/hr.js.map +0 -1
  293. package/dist/translations/languages/hu.d.ts +0 -31
  294. package/dist/translations/languages/hu.d.ts.map +0 -1
  295. package/dist/translations/languages/hu.js +0 -34
  296. package/dist/translations/languages/hu.js.map +0 -1
  297. package/dist/translations/languages/hy.d.ts +0 -31
  298. package/dist/translations/languages/hy.d.ts.map +0 -1
  299. package/dist/translations/languages/hy.js +0 -34
  300. package/dist/translations/languages/hy.js.map +0 -1
  301. package/dist/translations/languages/id.d.ts +0 -31
  302. package/dist/translations/languages/id.d.ts.map +0 -1
  303. package/dist/translations/languages/id.js +0 -34
  304. package/dist/translations/languages/id.js.map +0 -1
  305. package/dist/translations/languages/is.d.ts +0 -31
  306. package/dist/translations/languages/is.d.ts.map +0 -1
  307. package/dist/translations/languages/is.js +0 -34
  308. package/dist/translations/languages/is.js.map +0 -1
  309. package/dist/translations/languages/it.d.ts +0 -31
  310. package/dist/translations/languages/it.d.ts.map +0 -1
  311. package/dist/translations/languages/it.js +0 -34
  312. package/dist/translations/languages/it.js.map +0 -1
  313. package/dist/translations/languages/ja.d.ts +0 -31
  314. package/dist/translations/languages/ja.d.ts.map +0 -1
  315. package/dist/translations/languages/ja.js +0 -34
  316. package/dist/translations/languages/ja.js.map +0 -1
  317. package/dist/translations/languages/ko.d.ts +0 -31
  318. package/dist/translations/languages/ko.d.ts.map +0 -1
  319. package/dist/translations/languages/ko.js +0 -34
  320. package/dist/translations/languages/ko.js.map +0 -1
  321. package/dist/translations/languages/lt.d.ts +0 -31
  322. package/dist/translations/languages/lt.d.ts.map +0 -1
  323. package/dist/translations/languages/lt.js +0 -34
  324. package/dist/translations/languages/lt.js.map +0 -1
  325. package/dist/translations/languages/lv.d.ts +0 -31
  326. package/dist/translations/languages/lv.d.ts.map +0 -1
  327. package/dist/translations/languages/lv.js +0 -34
  328. package/dist/translations/languages/lv.js.map +0 -1
  329. package/dist/translations/languages/my.d.ts +0 -31
  330. package/dist/translations/languages/my.d.ts.map +0 -1
  331. package/dist/translations/languages/my.js +0 -34
  332. package/dist/translations/languages/my.js.map +0 -1
  333. package/dist/translations/languages/nb.d.ts +0 -31
  334. package/dist/translations/languages/nb.d.ts.map +0 -1
  335. package/dist/translations/languages/nb.js +0 -34
  336. package/dist/translations/languages/nb.js.map +0 -1
  337. package/dist/translations/languages/nl.d.ts +0 -31
  338. package/dist/translations/languages/nl.d.ts.map +0 -1
  339. package/dist/translations/languages/nl.js +0 -34
  340. package/dist/translations/languages/nl.js.map +0 -1
  341. package/dist/translations/languages/pl.d.ts +0 -31
  342. package/dist/translations/languages/pl.d.ts.map +0 -1
  343. package/dist/translations/languages/pl.js +0 -34
  344. package/dist/translations/languages/pl.js.map +0 -1
  345. package/dist/translations/languages/pt.d.ts +0 -31
  346. package/dist/translations/languages/pt.d.ts.map +0 -1
  347. package/dist/translations/languages/pt.js +0 -34
  348. package/dist/translations/languages/pt.js.map +0 -1
  349. package/dist/translations/languages/ro.d.ts +0 -31
  350. package/dist/translations/languages/ro.d.ts.map +0 -1
  351. package/dist/translations/languages/ro.js +0 -34
  352. package/dist/translations/languages/ro.js.map +0 -1
  353. package/dist/translations/languages/rs.d.ts +0 -31
  354. package/dist/translations/languages/rs.d.ts.map +0 -1
  355. package/dist/translations/languages/rs.js +0 -34
  356. package/dist/translations/languages/rs.js.map +0 -1
  357. package/dist/translations/languages/rsLatin.d.ts +0 -31
  358. package/dist/translations/languages/rsLatin.d.ts.map +0 -1
  359. package/dist/translations/languages/rsLatin.js +0 -34
  360. package/dist/translations/languages/rsLatin.js.map +0 -1
  361. package/dist/translations/languages/ru.d.ts +0 -31
  362. package/dist/translations/languages/ru.d.ts.map +0 -1
  363. package/dist/translations/languages/ru.js +0 -34
  364. package/dist/translations/languages/ru.js.map +0 -1
  365. package/dist/translations/languages/sk.d.ts +0 -31
  366. package/dist/translations/languages/sk.d.ts.map +0 -1
  367. package/dist/translations/languages/sk.js +0 -34
  368. package/dist/translations/languages/sk.js.map +0 -1
  369. package/dist/translations/languages/sl.d.ts +0 -31
  370. package/dist/translations/languages/sl.d.ts.map +0 -1
  371. package/dist/translations/languages/sl.js +0 -34
  372. package/dist/translations/languages/sl.js.map +0 -1
  373. package/dist/translations/languages/sv.d.ts +0 -31
  374. package/dist/translations/languages/sv.d.ts.map +0 -1
  375. package/dist/translations/languages/sv.js +0 -34
  376. package/dist/translations/languages/sv.js.map +0 -1
  377. package/dist/translations/languages/ta.d.ts +0 -31
  378. package/dist/translations/languages/ta.d.ts.map +0 -1
  379. package/dist/translations/languages/ta.js +0 -34
  380. package/dist/translations/languages/ta.js.map +0 -1
  381. package/dist/translations/languages/th.d.ts +0 -31
  382. package/dist/translations/languages/th.d.ts.map +0 -1
  383. package/dist/translations/languages/th.js +0 -34
  384. package/dist/translations/languages/th.js.map +0 -1
  385. package/dist/translations/languages/tr.d.ts +0 -31
  386. package/dist/translations/languages/tr.d.ts.map +0 -1
  387. package/dist/translations/languages/tr.js +0 -34
  388. package/dist/translations/languages/tr.js.map +0 -1
  389. package/dist/translations/languages/uk.d.ts +0 -31
  390. package/dist/translations/languages/uk.d.ts.map +0 -1
  391. package/dist/translations/languages/uk.js +0 -34
  392. package/dist/translations/languages/uk.js.map +0 -1
  393. package/dist/translations/languages/vi.d.ts +0 -31
  394. package/dist/translations/languages/vi.d.ts.map +0 -1
  395. package/dist/translations/languages/vi.js +0 -34
  396. package/dist/translations/languages/vi.js.map +0 -1
  397. package/dist/translations/languages/zh.d.ts +0 -31
  398. package/dist/translations/languages/zh.d.ts.map +0 -1
  399. package/dist/translations/languages/zh.js +0 -34
  400. package/dist/translations/languages/zh.js.map +0 -1
  401. package/dist/translations/languages/zhTw.d.ts +0 -31
  402. package/dist/translations/languages/zhTw.d.ts.map +0 -1
  403. package/dist/translations/languages/zhTw.js +0 -34
  404. package/dist/translations/languages/zhTw.js.map +0 -1
  405. package/dist/translations/types.d.ts +0 -32
  406. package/dist/translations/types.d.ts.map +0 -1
  407. package/dist/translations/types.js +0 -3
  408. package/dist/translations/types.js.map +0 -1
  409. package/dist/utils/getVirtualFieldNames.d.ts +0 -14
  410. package/dist/utils/getVirtualFieldNames.d.ts.map +0 -1
  411. package/dist/utils/getVirtualFieldNames.js +0 -35
  412. package/dist/utils/getVirtualFieldNames.js.map +0 -1
  413. package/dist/utils/localAPIDefaults.d.ts +0 -20
  414. package/dist/utils/localAPIDefaults.d.ts.map +0 -1
  415. package/dist/utils/localAPIDefaults.js +0 -19
  416. package/dist/utils/localAPIDefaults.js.map +0 -1
  417. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts +0 -11
  418. package/dist/utils/schemaConversion/getEntityInputSchema.d.ts.map +0 -1
  419. package/dist/utils/schemaConversion/getEntityInputSchema.js +0 -34
  420. package/dist/utils/schemaConversion/getEntityInputSchema.js.map +0 -1
  421. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts +0 -7
  422. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.d.ts.map +0 -1
  423. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js +0 -20
  424. package/dist/utils/schemaConversion/removeVirtualFieldsFromSchema.js.map +0 -1
  425. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts +0 -15
  426. package/dist/utils/schemaConversion/sanitizeEntitySchema.d.ts.map +0 -1
  427. package/dist/utils/schemaConversion/sanitizeEntitySchema.js +0 -464
  428. package/dist/utils/schemaConversion/sanitizeEntitySchema.js.map +0 -1
  429. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js +0 -158
  430. package/dist/utils/schemaConversion/sanitizeEntitySchema.spec.js.map +0 -1
  431. package/dist/utils/transformPointDataToPayload.d.ts +0 -7
  432. package/dist/utils/transformPointDataToPayload.d.ts.map +0 -1
  433. package/dist/utils/transformPointDataToPayload.js +0 -28
  434. package/dist/utils/transformPointDataToPayload.js.map +0 -1
  435. package/dist/utils/whereSchema.d.ts +0 -9
  436. package/dist/utils/whereSchema.d.ts.map +0 -1
  437. package/dist/utils/whereSchema.js +0 -13
  438. package/dist/utils/whereSchema.js.map +0 -1
  439. package/src/collection/getAccessField.ts +0 -84
  440. package/src/collection/index.ts +0 -105
  441. package/src/components/APIKeyField/index.client.tsx +0 -68
  442. package/src/components/APIKeyField/index.css +0 -105
  443. package/src/components/APIKeysEmptyState/index.client.tsx +0 -33
  444. package/src/components/AccessField/index.client.tsx +0 -296
  445. package/src/components/AccessField/index.css +0 -99
  446. package/src/components/SettingsMenu/index.client.tsx +0 -30
  447. package/src/mcp/builtin/collections/formatCollectionError.ts +0 -84
  448. package/src/mcp/builtin/validateEntityData.ts +0 -132
  449. package/src/translations/index.ts +0 -105
  450. package/src/translations/languages/ar.ts +0 -38
  451. package/src/translations/languages/az.ts +0 -38
  452. package/src/translations/languages/bg.ts +0 -39
  453. package/src/translations/languages/bnBd.ts +0 -39
  454. package/src/translations/languages/bnIn.ts +0 -39
  455. package/src/translations/languages/ca.ts +0 -39
  456. package/src/translations/languages/cs.ts +0 -39
  457. package/src/translations/languages/da.ts +0 -38
  458. package/src/translations/languages/de.ts +0 -39
  459. package/src/translations/languages/en.ts +0 -39
  460. package/src/translations/languages/es.ts +0 -39
  461. package/src/translations/languages/et.ts +0 -38
  462. package/src/translations/languages/fa.ts +0 -39
  463. package/src/translations/languages/fr.ts +0 -39
  464. package/src/translations/languages/he.ts +0 -37
  465. package/src/translations/languages/hr.ts +0 -39
  466. package/src/translations/languages/hu.ts +0 -39
  467. package/src/translations/languages/hy.ts +0 -39
  468. package/src/translations/languages/id.ts +0 -39
  469. package/src/translations/languages/is.ts +0 -39
  470. package/src/translations/languages/it.ts +0 -39
  471. package/src/translations/languages/ja.ts +0 -39
  472. package/src/translations/languages/ko.ts +0 -39
  473. package/src/translations/languages/lt.ts +0 -39
  474. package/src/translations/languages/lv.ts +0 -38
  475. package/src/translations/languages/my.ts +0 -39
  476. package/src/translations/languages/nb.ts +0 -39
  477. package/src/translations/languages/nl.ts +0 -39
  478. package/src/translations/languages/pl.ts +0 -38
  479. package/src/translations/languages/pt.ts +0 -39
  480. package/src/translations/languages/ro.ts +0 -39
  481. package/src/translations/languages/rs.ts +0 -38
  482. package/src/translations/languages/rsLatin.ts +0 -38
  483. package/src/translations/languages/ru.ts +0 -39
  484. package/src/translations/languages/sk.ts +0 -39
  485. package/src/translations/languages/sl.ts +0 -38
  486. package/src/translations/languages/sv.ts +0 -39
  487. package/src/translations/languages/ta.ts +0 -39
  488. package/src/translations/languages/th.ts +0 -38
  489. package/src/translations/languages/tr.ts +0 -38
  490. package/src/translations/languages/uk.ts +0 -39
  491. package/src/translations/languages/vi.ts +0 -39
  492. package/src/translations/languages/zh.ts +0 -36
  493. package/src/translations/languages/zhTw.ts +0 -36
  494. package/src/translations/types.ts +0 -34
  495. package/src/utils/getVirtualFieldNames.ts +0 -53
  496. package/src/utils/localAPIDefaults.ts +0 -22
  497. package/src/utils/schemaConversion/getEntityInputSchema.ts +0 -78
  498. package/src/utils/schemaConversion/removeVirtualFieldsFromSchema.ts +0 -27
  499. package/src/utils/schemaConversion/sanitizeEntitySchema.spec.ts +0 -103
  500. package/src/utils/schemaConversion/sanitizeEntitySchema.ts +0 -529
  501. package/src/utils/transformPointDataToPayload.ts +0 -40
  502. package/src/utils/whereSchema.ts +0 -24
@@ -0,0 +1,67 @@
1
+ import { findDistinctInputSchema } from 'payload'
2
+
3
+ import { defaultAccess } from '../../../defaultAccess.js'
4
+ import { defineCollectionTool } from '../../../defineTool.js'
5
+ import { getLogger } from '../../../utils/getLogger.js'
6
+
7
+ const DEFAULT_DESCRIPTION =
8
+ 'Find distinct values for a field in any collection by passing the collection slug and field path.'
9
+
10
+ export const findDistinctTool = defineCollectionTool({
11
+ access: (args) =>
12
+ defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.read),
13
+ annotations: {
14
+ destructiveHint: false,
15
+ idempotentHint: true,
16
+ openWorldHint: false,
17
+ readOnlyHint: true,
18
+ title: 'Find Distinct',
19
+ },
20
+ description: DEFAULT_DESCRIPTION,
21
+ input: findDistinctInputSchema,
22
+ }).handler(async ({ slug, authorizedMCP, input, req }) => {
23
+ const payload = req.payload
24
+ const logger = getLogger({ payload })
25
+ const { depth, field, limit, locale, page, populate, sort, trash, where } = input
26
+
27
+ logger.info(`Finding distinct values in collection: ${slug}, field: ${field}`)
28
+
29
+ try {
30
+ const result = await payload.findDistinct({
31
+ collection: slug,
32
+ depth,
33
+ field,
34
+ overrideAccess: authorizedMCP.overrideAccess,
35
+ req,
36
+ ...(limit ? { limit } : {}),
37
+ ...(locale ? { locale } : {}),
38
+ ...(page ? { page } : {}),
39
+ ...(populate ? { populate } : {}),
40
+ ...(sort ? { sort } : {}),
41
+ ...(trash !== undefined ? { trash } : {}),
42
+ ...(where ? { where } : {}),
43
+ })
44
+
45
+ return {
46
+ content: [
47
+ {
48
+ type: 'text',
49
+ text: `Distinct values for "${field}" in collection "${slug}":\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``,
50
+ },
51
+ ],
52
+ doc: result as unknown as Record<string, unknown>,
53
+ }
54
+ } catch (error) {
55
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error'
56
+ logger.error(`Error finding distinct values in ${slug}: ${errorMessage}`)
57
+ return {
58
+ content: [
59
+ {
60
+ type: 'text',
61
+ text: `❌ **Error finding distinct values in collection "${slug}":** ${errorMessage}`,
62
+ },
63
+ ],
64
+ isError: true,
65
+ }
66
+ }
67
+ })
@@ -1,16 +1,15 @@
1
- import type { JoinQuery, PopulateType, SelectType } from 'payload'
2
-
3
- import { z } from 'zod'
1
+ import { findDocumentsInputSchema, parseDocumentID } from 'payload'
4
2
 
3
+ import { defaultAccess } from '../../../defaultAccess.js'
5
4
  import { defineCollectionTool } from '../../../defineTool.js'
6
5
  import { getLogger } from '../../../utils/getLogger.js'
7
- import { localAPIDefaults } from '../../../utils/localAPIDefaults.js'
8
- import { whereSchema } from '../../../utils/whereSchema.js'
9
6
 
10
7
  const DEFAULT_DESCRIPTION =
11
8
  'Find documents in any collection by passing the collection slug and optional ID or where clause.'
12
9
 
13
10
  export const findDocumentsTool = defineCollectionTool({
11
+ access: (args) =>
12
+ defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.read),
14
13
  annotations: {
15
14
  destructiveHint: false,
16
15
  idempotentHint: true,
@@ -19,87 +18,8 @@ export const findDocumentsTool = defineCollectionTool({
19
18
  title: 'Find Documents',
20
19
  },
21
20
  description: DEFAULT_DESCRIPTION,
22
- input: z.object({
23
- id: z
24
- .union([z.string(), z.number()])
25
- .describe(
26
- 'Optional: specific document ID to retrieve. If not provided, returns all documents',
27
- )
28
- .optional(),
29
- depth: z
30
- .number()
31
- .int()
32
- .min(0)
33
- .max(10)
34
- .describe('How many levels deep to populate relationships (default: 0)')
35
- .optional()
36
- .default(0),
37
- draft: z
38
- .boolean()
39
- .describe(
40
- 'Optional: whether the document should be queried from the versions table/collection or not.',
41
- )
42
- .optional(),
43
- fallbackLocale: z
44
- .string()
45
- .describe('Optional: fallback locale code to use when requested locale is not available')
46
- .optional(),
47
- joins: z
48
- .union([z.record(z.string(), z.unknown()), z.literal(false)])
49
- .describe('Optional: configure join field queries, or pass false to disable all join fields.')
50
- .optional(),
51
- limit: z
52
- .number()
53
- .int()
54
- .min(1)
55
- .max(100)
56
- .describe('Maximum number of documents to return (default: 10, max: 100)')
57
- .optional()
58
- .default(10),
59
- locale: z
60
- .string()
61
- .describe(
62
- 'Optional: locale code to retrieve data in (e.g., "en", "es"). Use "all" to retrieve all locales for localized fields',
63
- )
64
- .optional(),
65
- page: z
66
- .number()
67
- .int()
68
- .min(1)
69
- .describe('Page number for pagination (default: 1)')
70
- .optional()
71
- .default(1),
72
- pagination: z
73
- .boolean()
74
- .describe('Optional: set to false to skip the count query overhead')
75
- .optional(),
76
- populate: z
77
- .record(z.string(), z.unknown())
78
- .describe(
79
- 'Optional: control which fields to include from populated relationship or upload documents.',
80
- )
81
- .optional(),
82
- select: z
83
- .record(z.string(), z.unknown())
84
- .describe(
85
- 'Optional: define exactly which fields you\'d like to return in the response, e.g., {"title": true}',
86
- )
87
- .optional(),
88
- sort: z
89
- .string()
90
- .describe('Field to sort by (e.g., "createdAt", "-updatedAt" for descending)')
91
- .optional(),
92
- trash: z
93
- .boolean()
94
- .describe('Optional: include soft-deleted documents when trash is enabled on the collection')
95
- .optional(),
96
- where: whereSchema
97
- .describe(
98
- 'Optional: where clause for filtering. Use field names with Payload operators, and/or arrays for grouping. Example: {"title":{"contains":"test"}}',
99
- )
100
- .optional(),
101
- }),
102
- }).handler(async ({ authorizedMCP, collectionSlug, input, req }) => {
21
+ input: findDocumentsInputSchema,
22
+ }).handler(async ({ slug, authorizedMCP, input, req }) => {
103
23
  const payload = req.payload
104
24
  const logger = getLogger({ payload })
105
25
 
@@ -121,23 +41,23 @@ export const findDocumentsTool = defineCollectionTool({
121
41
  } = input
122
42
 
123
43
  logger.info(
124
- `Reading document from collection: ${collectionSlug}${id ? ` with ID: ${id}` : ''}, limit: ${limit}, page: ${page}${locale ? `, locale: ${locale}` : ''}`,
44
+ `Reading document from collection: ${slug}${id ? ` with ID: ${id}` : ''}, limit: ${limit}, page: ${page}${locale ? `, locale: ${locale}` : ''}`,
125
45
  )
126
46
 
127
47
  try {
128
- if (id) {
48
+ if (id !== undefined) {
129
49
  try {
130
50
  const doc = await payload.findByID({
131
- id,
132
- collection: collectionSlug,
51
+ id: parseDocumentID({ id, collectionSlug: slug, payload }),
52
+ collection: slug,
133
53
  depth,
54
+ overrideAccess: authorizedMCP.overrideAccess,
134
55
  req,
135
- ...localAPIDefaults(authorizedMCP),
136
- ...(select && { select: select as SelectType }),
137
- ...(populate && { populate: populate as PopulateType }),
138
- ...(joins !== undefined && { joins: joins as JoinQuery }),
56
+ ...(select && { select }),
57
+ ...(populate && { populate }),
58
+ ...(joins !== undefined && { joins }),
139
59
  ...(locale && { locale }),
140
- ...(fallbackLocale && { fallbackLocale }),
60
+ ...(fallbackLocale !== undefined && { fallbackLocale }),
141
61
  ...(draft !== undefined && { draft }),
142
62
  ...(trash !== undefined && { trash }),
143
63
  })
@@ -146,18 +66,18 @@ export const findDocumentsTool = defineCollectionTool({
146
66
  content: [
147
67
  {
148
68
  type: 'text',
149
- text: `Document from collection "${collectionSlug}":\n${JSON.stringify(doc)}`,
69
+ text: `Document from collection "${slug}":\n${JSON.stringify(doc)}`,
150
70
  },
151
71
  ],
152
- doc: doc as Record<string, unknown>,
72
+ doc,
153
73
  }
154
74
  } catch {
155
- logger.warn(`Document not found with ID: ${id} in collection: ${collectionSlug}`)
75
+ logger.warn(`Document not found with ID: ${id} in collection: ${slug}`)
156
76
  return {
157
77
  content: [
158
78
  {
159
79
  type: 'text',
160
- text: `Error: Document with ID "${id}" not found in collection "${collectionSlug}"`,
80
+ text: `Error: Document with ID "${id}" not found in collection "${slug}"`,
161
81
  },
162
82
  ],
163
83
  }
@@ -165,17 +85,17 @@ export const findDocumentsTool = defineCollectionTool({
165
85
  }
166
86
 
167
87
  const findOptions: Parameters<typeof payload.find>[0] = {
168
- collection: collectionSlug,
88
+ collection: slug,
169
89
  depth,
170
90
  limit,
91
+ overrideAccess: authorizedMCP.overrideAccess,
171
92
  page,
172
93
  req,
173
- ...localAPIDefaults(authorizedMCP),
174
- ...(select && { select: select as SelectType }),
175
- ...(populate && { populate: populate as PopulateType }),
176
- ...(joins !== undefined && { joins: joins as JoinQuery }),
94
+ ...(select && { select }),
95
+ ...(populate && { populate }),
96
+ ...(joins !== undefined && { joins }),
177
97
  ...(locale && { locale }),
178
- ...(fallbackLocale && { fallbackLocale }),
98
+ ...(fallbackLocale !== undefined && { fallbackLocale }),
179
99
  ...(draft !== undefined && { draft }),
180
100
  ...(pagination !== undefined && { pagination }),
181
101
  ...(trash !== undefined && { trash }),
@@ -190,7 +110,7 @@ export const findDocumentsTool = defineCollectionTool({
190
110
 
191
111
  const result = await payload.find(findOptions)
192
112
 
193
- let responseText = `Collection: "${collectionSlug}"\nTotal: ${result.totalDocs} documents\nPage: ${result.page} of ${result.totalPages}\n`
113
+ let responseText = `Collection: "${slug}"\nTotal: ${result.totalDocs} documents\nPage: ${result.page} of ${result.totalPages}\n`
194
114
  for (const doc of result.docs) {
195
115
  responseText += `\n\`\`\`json\n${JSON.stringify(doc)}\n\`\`\``
196
116
  }
@@ -201,12 +121,12 @@ export const findDocumentsTool = defineCollectionTool({
201
121
  }
202
122
  } catch (error) {
203
123
  const errorMessage = error instanceof Error ? error.message : 'Unknown error'
204
- logger.error(`Error reading documents from collection ${collectionSlug}: ${errorMessage}`)
124
+ logger.error(`Error reading documents from collection ${slug}: ${errorMessage}`)
205
125
  return {
206
126
  content: [
207
127
  {
208
128
  type: 'text',
209
- text: `❌ **Error reading documents from collection "${collectionSlug}":** ${errorMessage}`,
129
+ text: `❌ **Error reading documents from collection "${slug}":** ${errorMessage}`,
210
130
  },
211
131
  ],
212
132
  }
@@ -0,0 +1,66 @@
1
+ import { findVersionByIDInputSchema } from 'payload'
2
+
3
+ import { defaultAccess } from '../../../defaultAccess.js'
4
+ import { defineCollectionTool } from '../../../defineTool.js'
5
+ import { getLogger } from '../../../utils/getLogger.js'
6
+
7
+ const DEFAULT_DESCRIPTION =
8
+ 'Find a specific document version in any version-enabled collection by passing the collection slug and version ID.'
9
+
10
+ export const findVersionByIDTool = defineCollectionTool({
11
+ access: (args) =>
12
+ defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.readVersions),
13
+ annotations: {
14
+ destructiveHint: false,
15
+ idempotentHint: true,
16
+ openWorldHint: false,
17
+ readOnlyHint: true,
18
+ title: 'Find Version By ID',
19
+ },
20
+ description: DEFAULT_DESCRIPTION,
21
+ input: findVersionByIDInputSchema,
22
+ }).handler(async ({ slug, authorizedMCP, input, req }) => {
23
+ const payload = req.payload
24
+ const logger = getLogger({ payload })
25
+ const { id, depth, draft, fallbackLocale, locale, populate, select, trash } = input
26
+
27
+ logger.info(`Finding version in collection: ${slug} with ID: ${id}`)
28
+
29
+ try {
30
+ const result = await payload.findVersionByID({
31
+ id: String(id),
32
+ collection: slug,
33
+ depth,
34
+ overrideAccess: authorizedMCP.overrideAccess,
35
+ req,
36
+ ...(draft !== undefined ? { draft } : {}),
37
+ ...(fallbackLocale !== undefined ? { fallbackLocale } : {}),
38
+ ...(locale ? { locale } : {}),
39
+ ...(populate ? { populate } : {}),
40
+ ...(select ? { select } : {}),
41
+ ...(trash !== undefined ? { trash } : {}),
42
+ })
43
+
44
+ return {
45
+ content: [
46
+ {
47
+ type: 'text',
48
+ text: `Version "${id}" from collection "${slug}":\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``,
49
+ },
50
+ ],
51
+ doc: result as unknown as Record<string, unknown>,
52
+ }
53
+ } catch (error) {
54
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error'
55
+ logger.error(`Error finding version ${id} in ${slug}: ${errorMessage}`)
56
+ return {
57
+ content: [
58
+ {
59
+ type: 'text',
60
+ text: `❌ **Error finding version "${id}" in collection "${slug}":** ${errorMessage}`,
61
+ },
62
+ ],
63
+ isError: true,
64
+ }
65
+ }
66
+ })
@@ -0,0 +1,83 @@
1
+ import { findVersionsInputSchema } from 'payload'
2
+
3
+ import { defaultAccess } from '../../../defaultAccess.js'
4
+ import { defineCollectionTool } from '../../../defineTool.js'
5
+ import { getLogger } from '../../../utils/getLogger.js'
6
+
7
+ const DEFAULT_DESCRIPTION =
8
+ 'Find document versions in any version-enabled collection by passing the collection slug and optional where clause.'
9
+
10
+ export const findVersionsTool = defineCollectionTool({
11
+ access: (args) =>
12
+ defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.readVersions),
13
+ annotations: {
14
+ destructiveHint: false,
15
+ idempotentHint: true,
16
+ openWorldHint: false,
17
+ readOnlyHint: true,
18
+ title: 'Find Versions',
19
+ },
20
+ description: DEFAULT_DESCRIPTION,
21
+ input: findVersionsInputSchema,
22
+ }).handler(async ({ slug, authorizedMCP, input, req }) => {
23
+ const payload = req.payload
24
+ const logger = getLogger({ payload })
25
+ const {
26
+ depth,
27
+ draft,
28
+ fallbackLocale,
29
+ limit,
30
+ locale,
31
+ page,
32
+ pagination,
33
+ populate,
34
+ select,
35
+ sort,
36
+ trash,
37
+ where,
38
+ } = input
39
+
40
+ logger.info(`Finding versions in collection: ${slug}, limit: ${limit}, page: ${page}`)
41
+
42
+ try {
43
+ const result = await payload.findVersions({
44
+ collection: slug,
45
+ depth,
46
+ limit,
47
+ overrideAccess: authorizedMCP.overrideAccess,
48
+ page,
49
+ req,
50
+ ...(draft !== undefined ? { draft } : {}),
51
+ ...(fallbackLocale !== undefined ? { fallbackLocale } : {}),
52
+ ...(locale ? { locale } : {}),
53
+ ...(pagination !== undefined ? { pagination } : {}),
54
+ ...(populate ? { populate } : {}),
55
+ ...(select ? { select } : {}),
56
+ ...(sort ? { sort } : {}),
57
+ ...(trash !== undefined ? { trash } : {}),
58
+ ...(where ? { where } : {}),
59
+ })
60
+
61
+ return {
62
+ content: [
63
+ {
64
+ type: 'text',
65
+ text: `Versions for collection "${slug}":\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``,
66
+ },
67
+ ],
68
+ doc: result as unknown as Record<string, unknown>,
69
+ }
70
+ } catch (error) {
71
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error'
72
+ logger.error(`Error finding versions in ${slug}: ${errorMessage}`)
73
+ return {
74
+ content: [
75
+ {
76
+ type: 'text',
77
+ text: `❌ **Error finding versions in collection "${slug}":** ${errorMessage}`,
78
+ },
79
+ ],
80
+ isError: true,
81
+ }
82
+ }
83
+ })
@@ -1,7 +1,15 @@
1
+ import { getAccessResults, getCollectionInputSchema, getCollectionSchemaInputSchema } from 'payload'
2
+ import { getLLMInstructions } from 'payload/internal'
3
+
4
+ import { defaultAccess } from '../../../defaultAccess.js'
1
5
  import { defineCollectionTool } from '../../../defineTool.js'
2
- import { getCollectionInputSchema } from '../../../utils/schemaConversion/getEntityInputSchema.js'
3
6
 
4
7
  export const getCollectionSchemaTool = defineCollectionTool({
8
+ access: (args) => {
9
+ const permissions = args.permissions?.collections?.[args.slug]
10
+
11
+ return defaultAccess(args) && Boolean(permissions?.create || permissions?.update)
12
+ },
5
13
  annotations: {
6
14
  destructiveHint: false,
7
15
  idempotentHint: true,
@@ -9,27 +17,75 @@ export const getCollectionSchemaTool = defineCollectionTool({
9
17
  readOnlyHint: true,
10
18
  title: 'Get Collection Schema',
11
19
  },
12
- description: 'Get the input schema for creating or updating documents in a collection.',
13
- }).handler(({ collectionSlug, req }) => {
14
- const inputSchema = getCollectionInputSchema({ collectionSlug, req })
20
+ description:
21
+ 'Get the input schema and LLM instructions before creating or updating documents in a collection.',
22
+ input: getCollectionSchemaInputSchema,
23
+ }).handler(async ({ slug, authorizedMCP, req }) => {
24
+ const permissions = authorizedMCP.overrideAccess
25
+ ? null
26
+ : (await getAccessResults({ req })).collections?.[slug]
27
+
28
+ if (!authorizedMCP.overrideAccess && !permissions?.create && !permissions?.update) {
29
+ return {
30
+ content: [
31
+ {
32
+ type: 'text',
33
+ text: `Error: MCP access to "getCollectionSchema" is not enabled for collection "${slug}"`,
34
+ },
35
+ ],
36
+ isError: true,
37
+ }
38
+ }
39
+
40
+ const inputSchema = getCollectionInputSchema({
41
+ collectionSlug: slug,
42
+ req,
43
+ ...(permissions ? { permissions } : {}),
44
+ })
15
45
 
16
46
  if (!inputSchema) {
17
47
  return {
18
- content: [{ type: 'text', text: `Error: Collection "${collectionSlug}" not found` }],
48
+ content: [{ type: 'text', text: `Error: Collection "${slug}" not found` }],
19
49
  isError: true,
20
50
  }
21
51
  }
22
52
 
53
+ const uploadConfig = req.payload.collections[slug]?.config.upload
54
+ const maxFileSize = req.payload.config.upload.limits?.fileSize
55
+ const upload = uploadConfig
56
+ ? {
57
+ enabled: true,
58
+ filesRequiredOnCreate: uploadConfig.filesRequiredOnCreate !== false,
59
+ mimeTypes: uploadConfig.mimeTypes ?? ['*/*'],
60
+ sources: [
61
+ ...(uploadConfig.pasteURL !== false ? ['externalURL'] : []),
62
+ 'base64',
63
+ 'uploadReference',
64
+ ],
65
+ ...(typeof maxFileSize === 'number' && Number.isFinite(maxFileSize) ? { maxFileSize } : {}),
66
+ }
67
+ : { enabled: false }
68
+
69
+ const instructions = await getLLMInstructions({
70
+ slug,
71
+ type: 'collection',
72
+ overrideAccess: authorizedMCP.overrideAccess,
73
+ req,
74
+ })
75
+
23
76
  return {
24
77
  content: [
25
78
  {
26
79
  type: 'text',
27
- text: `Schema for collection "${collectionSlug}":\n\`\`\`json\n${JSON.stringify(inputSchema)}\n\`\`\``,
80
+ text: `Schema for collection "${slug}":\n\`\`\`json\n${JSON.stringify(inputSchema)}\n\`\`\`\nUpload configuration:\n\`\`\`json\n${JSON.stringify(upload)}\n\`\`\``,
28
81
  },
82
+ ...(instructions ? [{ type: 'text' as const, text: instructions }] : []),
29
83
  ],
30
84
  structuredContent: {
31
- collectionSlug,
85
+ slug,
32
86
  schema: inputSchema,
87
+ upload,
88
+ ...(instructions ? { instructions } : {}),
33
89
  },
34
90
  }
35
91
  })
@@ -0,0 +1,65 @@
1
+ import { restoreVersionInputSchema } from 'payload'
2
+
3
+ import { defaultAccess } from '../../../defaultAccess.js'
4
+ import { defineCollectionTool } from '../../../defineTool.js'
5
+ import { getLogger } from '../../../utils/getLogger.js'
6
+
7
+ const DEFAULT_DESCRIPTION =
8
+ 'Restore a document from a previous version in any version-enabled collection.'
9
+
10
+ export const restoreVersionTool = defineCollectionTool({
11
+ access: (args) =>
12
+ defaultAccess(args) && Boolean(args.permissions?.collections?.[args.slug]?.update),
13
+ annotations: {
14
+ destructiveHint: true,
15
+ idempotentHint: false,
16
+ openWorldHint: false,
17
+ readOnlyHint: false,
18
+ title: 'Restore Version',
19
+ },
20
+ description: DEFAULT_DESCRIPTION,
21
+ input: restoreVersionInputSchema,
22
+ }).handler(async ({ slug, authorizedMCP, input, req }) => {
23
+ const payload = req.payload
24
+ const logger = getLogger({ payload })
25
+ const { id, depth, draft, fallbackLocale, locale, populate, select } = input
26
+
27
+ logger.info(`Restoring version in collection: ${slug} with ID: ${id}`)
28
+
29
+ try {
30
+ const result = await payload.restoreVersion({
31
+ id: String(id),
32
+ collection: slug,
33
+ depth,
34
+ draft,
35
+ overrideAccess: authorizedMCP.overrideAccess,
36
+ req,
37
+ ...(fallbackLocale !== undefined ? { fallbackLocale } : {}),
38
+ ...(locale ? { locale } : {}),
39
+ ...(populate ? { populate } : {}),
40
+ ...(select ? { select } : {}),
41
+ })
42
+
43
+ return {
44
+ content: [
45
+ {
46
+ type: 'text',
47
+ text: `Version "${id}" restored successfully in collection "${slug}"!\nRestored document:\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``,
48
+ },
49
+ ],
50
+ doc: result,
51
+ }
52
+ } catch (error) {
53
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error'
54
+ logger.error(`Error restoring version ${id} in ${slug}: ${errorMessage}`)
55
+ return {
56
+ content: [
57
+ {
58
+ type: 'text',
59
+ text: `❌ **Error restoring version "${id}" in collection "${slug}":** ${errorMessage}`,
60
+ },
61
+ ],
62
+ isError: true,
63
+ }
64
+ }
65
+ })