@payloadcms/plugin-mcp 4.0.0-canary.3 → 4.0.0-internal.17c142b

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 (418) hide show
  1. package/dist/@types/assets.d.js +2 -0
  2. package/dist/@types/assets.d.js.map +1 -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/endpoint/access.d.ts +17 -5
  8. package/dist/endpoint/access.d.ts.map +1 -1
  9. package/dist/endpoint/access.js +81 -103
  10. package/dist/endpoint/access.js.map +1 -1
  11. package/dist/endpoint/index.d.ts.map +1 -1
  12. package/dist/endpoint/index.js +11 -0
  13. package/dist/endpoint/index.js.map +1 -1
  14. package/dist/exports/client.d.ts +1 -4
  15. package/dist/exports/client.d.ts.map +1 -1
  16. package/dist/exports/client.js +1 -4
  17. package/dist/exports/client.js.map +1 -1
  18. package/dist/exports/internal.d.ts +2 -0
  19. package/dist/exports/internal.d.ts.map +1 -0
  20. package/dist/exports/internal.js +3 -0
  21. package/dist/exports/internal.js.map +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -54
  24. package/dist/index.js.map +1 -1
  25. package/dist/mcp/buildMcpServer.d.ts.map +1 -1
  26. package/dist/mcp/buildMcpServer.js.map +1 -1
  27. package/dist/mcp/builtin/collections/countTool.d.ts +2 -0
  28. package/dist/mcp/builtin/collections/countTool.d.ts.map +1 -0
  29. package/dist/mcp/builtin/collections/countTool.js +69 -0
  30. package/dist/mcp/builtin/collections/countTool.js.map +1 -0
  31. package/dist/mcp/builtin/collections/countVersionsTool.d.ts +2 -0
  32. package/dist/mcp/builtin/collections/countVersionsTool.d.ts.map +1 -0
  33. package/dist/mcp/builtin/collections/countVersionsTool.js +65 -0
  34. package/dist/mcp/builtin/collections/countVersionsTool.js.map +1 -0
  35. package/dist/mcp/builtin/collections/createTool.d.ts.map +1 -1
  36. package/dist/mcp/builtin/collections/createTool.js +2 -0
  37. package/dist/mcp/builtin/collections/createTool.js.map +1 -1
  38. package/dist/mcp/builtin/collections/deleteTool.d.ts.map +1 -1
  39. package/dist/mcp/builtin/collections/deleteTool.js +2 -0
  40. package/dist/mcp/builtin/collections/deleteTool.js.map +1 -1
  41. package/dist/mcp/builtin/collections/duplicateTool.d.ts +2 -0
  42. package/dist/mcp/builtin/collections/duplicateTool.d.ts.map +1 -0
  43. package/dist/mcp/builtin/collections/duplicateTool.js +97 -0
  44. package/dist/mcp/builtin/collections/duplicateTool.js.map +1 -0
  45. package/dist/mcp/builtin/collections/findDistinctTool.d.ts +2 -0
  46. package/dist/mcp/builtin/collections/findDistinctTool.d.ts.map +1 -0
  47. package/dist/mcp/builtin/collections/findDistinctTool.js +93 -0
  48. package/dist/mcp/builtin/collections/findDistinctTool.js.map +1 -0
  49. package/dist/mcp/builtin/collections/findTool.d.ts.map +1 -1
  50. package/dist/mcp/builtin/collections/findTool.js +2 -0
  51. package/dist/mcp/builtin/collections/findTool.js.map +1 -1
  52. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts +2 -0
  53. package/dist/mcp/builtin/collections/findVersionByIDTool.d.ts.map +1 -0
  54. package/dist/mcp/builtin/collections/findVersionByIDTool.js +84 -0
  55. package/dist/mcp/builtin/collections/findVersionByIDTool.js.map +1 -0
  56. package/dist/mcp/builtin/collections/findVersionsTool.d.ts +2 -0
  57. package/dist/mcp/builtin/collections/findVersionsTool.d.ts.map +1 -0
  58. package/dist/mcp/builtin/collections/findVersionsTool.js +99 -0
  59. package/dist/mcp/builtin/collections/findVersionsTool.js.map +1 -0
  60. package/dist/mcp/builtin/collections/formatCollectionError.d.ts +1 -1
  61. package/dist/mcp/builtin/collections/formatCollectionError.d.ts.map +1 -1
  62. package/dist/mcp/builtin/collections/formatCollectionError.js.map +1 -1
  63. package/dist/mcp/builtin/collections/getCollectionSchemaTool.d.ts.map +1 -1
  64. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js +5 -0
  65. package/dist/mcp/builtin/collections/getCollectionSchemaTool.js.map +1 -1
  66. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts +2 -0
  67. package/dist/mcp/builtin/collections/restoreVersionTool.d.ts.map +1 -0
  68. package/dist/mcp/builtin/collections/restoreVersionTool.js +82 -0
  69. package/dist/mcp/builtin/collections/restoreVersionTool.js.map +1 -0
  70. package/dist/mcp/builtin/collections/updateTool.d.ts.map +1 -1
  71. package/dist/mcp/builtin/collections/updateTool.js +2 -0
  72. package/dist/mcp/builtin/collections/updateTool.js.map +1 -1
  73. package/dist/mcp/builtin/getConfigInfoTool.d.ts.map +1 -1
  74. package/dist/mcp/builtin/getConfigInfoTool.js +20 -5
  75. package/dist/mcp/builtin/getConfigInfoTool.js.map +1 -1
  76. package/dist/mcp/builtin/globals/countVersionsTool.d.ts +2 -0
  77. package/dist/mcp/builtin/globals/countVersionsTool.d.ts.map +1 -0
  78. package/dist/mcp/builtin/globals/countVersionsTool.js +65 -0
  79. package/dist/mcp/builtin/globals/countVersionsTool.js.map +1 -0
  80. package/dist/mcp/builtin/globals/findTool.d.ts.map +1 -1
  81. package/dist/mcp/builtin/globals/findTool.js +2 -0
  82. package/dist/mcp/builtin/globals/findTool.js.map +1 -1
  83. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts +2 -0
  84. package/dist/mcp/builtin/globals/findVersionByIDTool.d.ts.map +1 -0
  85. package/dist/mcp/builtin/globals/findVersionByIDTool.js +80 -0
  86. package/dist/mcp/builtin/globals/findVersionByIDTool.js.map +1 -0
  87. package/dist/mcp/builtin/globals/findVersionsTool.d.ts +2 -0
  88. package/dist/mcp/builtin/globals/findVersionsTool.d.ts.map +1 -0
  89. package/dist/mcp/builtin/globals/findVersionsTool.js +95 -0
  90. package/dist/mcp/builtin/globals/findVersionsTool.js.map +1 -0
  91. package/dist/mcp/builtin/globals/getGlobalSchemaTool.d.ts.map +1 -1
  92. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js +5 -0
  93. package/dist/mcp/builtin/globals/getGlobalSchemaTool.js.map +1 -1
  94. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts +2 -0
  95. package/dist/mcp/builtin/globals/restoreVersionTool.d.ts.map +1 -0
  96. package/dist/mcp/builtin/globals/restoreVersionTool.js +78 -0
  97. package/dist/mcp/builtin/globals/restoreVersionTool.js.map +1 -0
  98. package/dist/mcp/builtin/globals/updateTool.d.ts.map +1 -1
  99. package/dist/mcp/builtin/globals/updateTool.js +2 -0
  100. package/dist/mcp/builtin/globals/updateTool.js.map +1 -1
  101. package/dist/mcp/builtinTools.d.ts +67 -2
  102. package/dist/mcp/builtinTools.d.ts.map +1 -1
  103. package/dist/mcp/builtinTools.js +64 -0
  104. package/dist/mcp/builtinTools.js.map +1 -1
  105. package/dist/mcp/sanitizeMCPConfig.d.ts +0 -1
  106. package/dist/mcp/sanitizeMCPConfig.d.ts.map +1 -1
  107. package/dist/mcp/sanitizeMCPConfig.js +44 -17
  108. package/dist/mcp/sanitizeMCPConfig.js.map +1 -1
  109. package/dist/stdio.d.ts +3 -2
  110. package/dist/stdio.d.ts.map +1 -1
  111. package/dist/stdio.js +27 -8
  112. package/dist/stdio.js.map +1 -1
  113. package/dist/types.d.ts +43 -85
  114. package/dist/types.d.ts.map +1 -1
  115. package/dist/types.js +4 -4
  116. package/dist/types.js.map +1 -1
  117. package/dist/utils/getPluginConfig.d.ts +1 -1
  118. package/dist/utils/getPluginConfig.js +1 -1
  119. package/dist/utils/getPluginConfig.js.map +1 -1
  120. package/package.json +9 -13
  121. package/src/@types/assets.d.ts +3 -0
  122. package/src/defaultAccess.ts +3 -0
  123. package/src/endpoint/access.ts +87 -112
  124. package/src/endpoint/index.ts +14 -1
  125. package/src/exports/client.ts +2 -4
  126. package/src/exports/internal.ts +1 -0
  127. package/src/index.ts +1 -58
  128. package/src/mcp/buildMcpServer.ts +6 -1
  129. package/src/mcp/builtin/collections/countTool.ts +74 -0
  130. package/src/mcp/builtin/collections/countVersionsTool.ts +70 -0
  131. package/src/mcp/builtin/collections/createTool.ts +3 -0
  132. package/src/mcp/builtin/collections/deleteTool.ts +3 -0
  133. package/src/mcp/builtin/collections/duplicateTool.ts +135 -0
  134. package/src/mcp/builtin/collections/findDistinctTool.ts +120 -0
  135. package/src/mcp/builtin/collections/findTool.ts +3 -0
  136. package/src/mcp/builtin/collections/findVersionByIDTool.ts +110 -0
  137. package/src/mcp/builtin/collections/findVersionsTool.ts +155 -0
  138. package/src/mcp/builtin/collections/formatCollectionError.ts +1 -1
  139. package/src/mcp/builtin/collections/getCollectionSchemaTool.ts +11 -0
  140. package/src/mcp/builtin/collections/restoreVersionTool.ts +108 -0
  141. package/src/mcp/builtin/collections/updateTool.ts +3 -0
  142. package/src/mcp/builtin/getConfigInfoTool.ts +22 -4
  143. package/src/mcp/builtin/globals/countVersionsTool.ts +69 -0
  144. package/src/mcp/builtin/globals/findTool.ts +3 -0
  145. package/src/mcp/builtin/globals/findVersionByIDTool.ts +104 -0
  146. package/src/mcp/builtin/globals/findVersionsTool.ts +148 -0
  147. package/src/mcp/builtin/globals/getGlobalSchemaTool.ts +6 -0
  148. package/src/mcp/builtin/globals/restoreVersionTool.ts +100 -0
  149. package/src/mcp/builtin/globals/updateTool.ts +3 -0
  150. package/src/mcp/builtinTools.ts +63 -4
  151. package/src/mcp/sanitizeMCPConfig.ts +32 -19
  152. package/src/stdio.ts +23 -8
  153. package/src/types.ts +50 -88
  154. package/src/utils/getPluginConfig.ts +1 -1
  155. package/dist/collection/getAccessField.d.ts +0 -12
  156. package/dist/collection/getAccessField.d.ts.map +0 -1
  157. package/dist/collection/getAccessField.js +0 -72
  158. package/dist/collection/getAccessField.js.map +0 -1
  159. package/dist/collection/index.d.ts +0 -6
  160. package/dist/collection/index.d.ts.map +0 -1
  161. package/dist/collection/index.js +0 -105
  162. package/dist/collection/index.js.map +0 -1
  163. package/dist/components/APIKeyField/index.client.d.ts +0 -9
  164. package/dist/components/APIKeyField/index.client.d.ts.map +0 -1
  165. package/dist/components/APIKeyField/index.client.js +0 -85
  166. package/dist/components/APIKeyField/index.client.js.map +0 -1
  167. package/dist/components/APIKeyField/index.css +0 -105
  168. package/dist/components/APIKeysEmptyState/index.client.d.ts +0 -4
  169. package/dist/components/APIKeysEmptyState/index.client.d.ts.map +0 -1
  170. package/dist/components/APIKeysEmptyState/index.client.js +0 -21
  171. package/dist/components/APIKeysEmptyState/index.client.js.map +0 -1
  172. package/dist/components/AccessField/index.client.d.ts +0 -10
  173. package/dist/components/AccessField/index.client.d.ts.map +0 -1
  174. package/dist/components/AccessField/index.client.js +0 -247
  175. package/dist/components/AccessField/index.client.js.map +0 -1
  176. package/dist/components/AccessField/index.css +0 -99
  177. package/dist/components/SettingsMenu/index.client.d.ts +0 -8
  178. package/dist/components/SettingsMenu/index.client.d.ts.map +0 -1
  179. package/dist/components/SettingsMenu/index.client.js +0 -24
  180. package/dist/components/SettingsMenu/index.client.js.map +0 -1
  181. package/dist/translations/index.d.ts +0 -11
  182. package/dist/translations/index.d.ts.map +0 -1
  183. package/dist/translations/index.js +0 -92
  184. package/dist/translations/index.js.map +0 -1
  185. package/dist/translations/languages/ar.d.ts +0 -31
  186. package/dist/translations/languages/ar.d.ts.map +0 -1
  187. package/dist/translations/languages/ar.js +0 -34
  188. package/dist/translations/languages/ar.js.map +0 -1
  189. package/dist/translations/languages/az.d.ts +0 -31
  190. package/dist/translations/languages/az.d.ts.map +0 -1
  191. package/dist/translations/languages/az.js +0 -34
  192. package/dist/translations/languages/az.js.map +0 -1
  193. package/dist/translations/languages/bg.d.ts +0 -31
  194. package/dist/translations/languages/bg.d.ts.map +0 -1
  195. package/dist/translations/languages/bg.js +0 -34
  196. package/dist/translations/languages/bg.js.map +0 -1
  197. package/dist/translations/languages/bnBd.d.ts +0 -31
  198. package/dist/translations/languages/bnBd.d.ts.map +0 -1
  199. package/dist/translations/languages/bnBd.js +0 -34
  200. package/dist/translations/languages/bnBd.js.map +0 -1
  201. package/dist/translations/languages/bnIn.d.ts +0 -31
  202. package/dist/translations/languages/bnIn.d.ts.map +0 -1
  203. package/dist/translations/languages/bnIn.js +0 -34
  204. package/dist/translations/languages/bnIn.js.map +0 -1
  205. package/dist/translations/languages/ca.d.ts +0 -31
  206. package/dist/translations/languages/ca.d.ts.map +0 -1
  207. package/dist/translations/languages/ca.js +0 -34
  208. package/dist/translations/languages/ca.js.map +0 -1
  209. package/dist/translations/languages/cs.d.ts +0 -31
  210. package/dist/translations/languages/cs.d.ts.map +0 -1
  211. package/dist/translations/languages/cs.js +0 -34
  212. package/dist/translations/languages/cs.js.map +0 -1
  213. package/dist/translations/languages/da.d.ts +0 -31
  214. package/dist/translations/languages/da.d.ts.map +0 -1
  215. package/dist/translations/languages/da.js +0 -34
  216. package/dist/translations/languages/da.js.map +0 -1
  217. package/dist/translations/languages/de.d.ts +0 -31
  218. package/dist/translations/languages/de.d.ts.map +0 -1
  219. package/dist/translations/languages/de.js +0 -34
  220. package/dist/translations/languages/de.js.map +0 -1
  221. package/dist/translations/languages/en.d.ts +0 -31
  222. package/dist/translations/languages/en.d.ts.map +0 -1
  223. package/dist/translations/languages/en.js +0 -34
  224. package/dist/translations/languages/en.js.map +0 -1
  225. package/dist/translations/languages/es.d.ts +0 -31
  226. package/dist/translations/languages/es.d.ts.map +0 -1
  227. package/dist/translations/languages/es.js +0 -34
  228. package/dist/translations/languages/es.js.map +0 -1
  229. package/dist/translations/languages/et.d.ts +0 -31
  230. package/dist/translations/languages/et.d.ts.map +0 -1
  231. package/dist/translations/languages/et.js +0 -34
  232. package/dist/translations/languages/et.js.map +0 -1
  233. package/dist/translations/languages/fa.d.ts +0 -31
  234. package/dist/translations/languages/fa.d.ts.map +0 -1
  235. package/dist/translations/languages/fa.js +0 -34
  236. package/dist/translations/languages/fa.js.map +0 -1
  237. package/dist/translations/languages/fr.d.ts +0 -31
  238. package/dist/translations/languages/fr.d.ts.map +0 -1
  239. package/dist/translations/languages/fr.js +0 -34
  240. package/dist/translations/languages/fr.js.map +0 -1
  241. package/dist/translations/languages/he.d.ts +0 -31
  242. package/dist/translations/languages/he.d.ts.map +0 -1
  243. package/dist/translations/languages/he.js +0 -34
  244. package/dist/translations/languages/he.js.map +0 -1
  245. package/dist/translations/languages/hr.d.ts +0 -31
  246. package/dist/translations/languages/hr.d.ts.map +0 -1
  247. package/dist/translations/languages/hr.js +0 -34
  248. package/dist/translations/languages/hr.js.map +0 -1
  249. package/dist/translations/languages/hu.d.ts +0 -31
  250. package/dist/translations/languages/hu.d.ts.map +0 -1
  251. package/dist/translations/languages/hu.js +0 -34
  252. package/dist/translations/languages/hu.js.map +0 -1
  253. package/dist/translations/languages/hy.d.ts +0 -31
  254. package/dist/translations/languages/hy.d.ts.map +0 -1
  255. package/dist/translations/languages/hy.js +0 -34
  256. package/dist/translations/languages/hy.js.map +0 -1
  257. package/dist/translations/languages/id.d.ts +0 -31
  258. package/dist/translations/languages/id.d.ts.map +0 -1
  259. package/dist/translations/languages/id.js +0 -34
  260. package/dist/translations/languages/id.js.map +0 -1
  261. package/dist/translations/languages/is.d.ts +0 -31
  262. package/dist/translations/languages/is.d.ts.map +0 -1
  263. package/dist/translations/languages/is.js +0 -34
  264. package/dist/translations/languages/is.js.map +0 -1
  265. package/dist/translations/languages/it.d.ts +0 -31
  266. package/dist/translations/languages/it.d.ts.map +0 -1
  267. package/dist/translations/languages/it.js +0 -34
  268. package/dist/translations/languages/it.js.map +0 -1
  269. package/dist/translations/languages/ja.d.ts +0 -31
  270. package/dist/translations/languages/ja.d.ts.map +0 -1
  271. package/dist/translations/languages/ja.js +0 -34
  272. package/dist/translations/languages/ja.js.map +0 -1
  273. package/dist/translations/languages/ko.d.ts +0 -31
  274. package/dist/translations/languages/ko.d.ts.map +0 -1
  275. package/dist/translations/languages/ko.js +0 -34
  276. package/dist/translations/languages/ko.js.map +0 -1
  277. package/dist/translations/languages/lt.d.ts +0 -31
  278. package/dist/translations/languages/lt.d.ts.map +0 -1
  279. package/dist/translations/languages/lt.js +0 -34
  280. package/dist/translations/languages/lt.js.map +0 -1
  281. package/dist/translations/languages/lv.d.ts +0 -31
  282. package/dist/translations/languages/lv.d.ts.map +0 -1
  283. package/dist/translations/languages/lv.js +0 -34
  284. package/dist/translations/languages/lv.js.map +0 -1
  285. package/dist/translations/languages/my.d.ts +0 -31
  286. package/dist/translations/languages/my.d.ts.map +0 -1
  287. package/dist/translations/languages/my.js +0 -34
  288. package/dist/translations/languages/my.js.map +0 -1
  289. package/dist/translations/languages/nb.d.ts +0 -31
  290. package/dist/translations/languages/nb.d.ts.map +0 -1
  291. package/dist/translations/languages/nb.js +0 -34
  292. package/dist/translations/languages/nb.js.map +0 -1
  293. package/dist/translations/languages/nl.d.ts +0 -31
  294. package/dist/translations/languages/nl.d.ts.map +0 -1
  295. package/dist/translations/languages/nl.js +0 -34
  296. package/dist/translations/languages/nl.js.map +0 -1
  297. package/dist/translations/languages/pl.d.ts +0 -31
  298. package/dist/translations/languages/pl.d.ts.map +0 -1
  299. package/dist/translations/languages/pl.js +0 -34
  300. package/dist/translations/languages/pl.js.map +0 -1
  301. package/dist/translations/languages/pt.d.ts +0 -31
  302. package/dist/translations/languages/pt.d.ts.map +0 -1
  303. package/dist/translations/languages/pt.js +0 -34
  304. package/dist/translations/languages/pt.js.map +0 -1
  305. package/dist/translations/languages/ro.d.ts +0 -31
  306. package/dist/translations/languages/ro.d.ts.map +0 -1
  307. package/dist/translations/languages/ro.js +0 -34
  308. package/dist/translations/languages/ro.js.map +0 -1
  309. package/dist/translations/languages/rs.d.ts +0 -31
  310. package/dist/translations/languages/rs.d.ts.map +0 -1
  311. package/dist/translations/languages/rs.js +0 -34
  312. package/dist/translations/languages/rs.js.map +0 -1
  313. package/dist/translations/languages/rsLatin.d.ts +0 -31
  314. package/dist/translations/languages/rsLatin.d.ts.map +0 -1
  315. package/dist/translations/languages/rsLatin.js +0 -34
  316. package/dist/translations/languages/rsLatin.js.map +0 -1
  317. package/dist/translations/languages/ru.d.ts +0 -31
  318. package/dist/translations/languages/ru.d.ts.map +0 -1
  319. package/dist/translations/languages/ru.js +0 -34
  320. package/dist/translations/languages/ru.js.map +0 -1
  321. package/dist/translations/languages/sk.d.ts +0 -31
  322. package/dist/translations/languages/sk.d.ts.map +0 -1
  323. package/dist/translations/languages/sk.js +0 -34
  324. package/dist/translations/languages/sk.js.map +0 -1
  325. package/dist/translations/languages/sl.d.ts +0 -31
  326. package/dist/translations/languages/sl.d.ts.map +0 -1
  327. package/dist/translations/languages/sl.js +0 -34
  328. package/dist/translations/languages/sl.js.map +0 -1
  329. package/dist/translations/languages/sv.d.ts +0 -31
  330. package/dist/translations/languages/sv.d.ts.map +0 -1
  331. package/dist/translations/languages/sv.js +0 -34
  332. package/dist/translations/languages/sv.js.map +0 -1
  333. package/dist/translations/languages/ta.d.ts +0 -31
  334. package/dist/translations/languages/ta.d.ts.map +0 -1
  335. package/dist/translations/languages/ta.js +0 -34
  336. package/dist/translations/languages/ta.js.map +0 -1
  337. package/dist/translations/languages/th.d.ts +0 -31
  338. package/dist/translations/languages/th.d.ts.map +0 -1
  339. package/dist/translations/languages/th.js +0 -34
  340. package/dist/translations/languages/th.js.map +0 -1
  341. package/dist/translations/languages/tr.d.ts +0 -31
  342. package/dist/translations/languages/tr.d.ts.map +0 -1
  343. package/dist/translations/languages/tr.js +0 -34
  344. package/dist/translations/languages/tr.js.map +0 -1
  345. package/dist/translations/languages/uk.d.ts +0 -31
  346. package/dist/translations/languages/uk.d.ts.map +0 -1
  347. package/dist/translations/languages/uk.js +0 -34
  348. package/dist/translations/languages/uk.js.map +0 -1
  349. package/dist/translations/languages/vi.d.ts +0 -31
  350. package/dist/translations/languages/vi.d.ts.map +0 -1
  351. package/dist/translations/languages/vi.js +0 -34
  352. package/dist/translations/languages/vi.js.map +0 -1
  353. package/dist/translations/languages/zh.d.ts +0 -31
  354. package/dist/translations/languages/zh.d.ts.map +0 -1
  355. package/dist/translations/languages/zh.js +0 -34
  356. package/dist/translations/languages/zh.js.map +0 -1
  357. package/dist/translations/languages/zhTw.d.ts +0 -31
  358. package/dist/translations/languages/zhTw.d.ts.map +0 -1
  359. package/dist/translations/languages/zhTw.js +0 -34
  360. package/dist/translations/languages/zhTw.js.map +0 -1
  361. package/dist/translations/types.d.ts +0 -32
  362. package/dist/translations/types.d.ts.map +0 -1
  363. package/dist/translations/types.js +0 -3
  364. package/dist/translations/types.js.map +0 -1
  365. package/src/collection/getAccessField.ts +0 -84
  366. package/src/collection/index.ts +0 -105
  367. package/src/components/APIKeyField/index.client.tsx +0 -68
  368. package/src/components/APIKeyField/index.css +0 -105
  369. package/src/components/APIKeysEmptyState/index.client.tsx +0 -33
  370. package/src/components/AccessField/index.client.tsx +0 -296
  371. package/src/components/AccessField/index.css +0 -99
  372. package/src/components/SettingsMenu/index.client.tsx +0 -30
  373. package/src/translations/index.ts +0 -105
  374. package/src/translations/languages/ar.ts +0 -38
  375. package/src/translations/languages/az.ts +0 -38
  376. package/src/translations/languages/bg.ts +0 -39
  377. package/src/translations/languages/bnBd.ts +0 -39
  378. package/src/translations/languages/bnIn.ts +0 -39
  379. package/src/translations/languages/ca.ts +0 -39
  380. package/src/translations/languages/cs.ts +0 -39
  381. package/src/translations/languages/da.ts +0 -38
  382. package/src/translations/languages/de.ts +0 -39
  383. package/src/translations/languages/en.ts +0 -39
  384. package/src/translations/languages/es.ts +0 -39
  385. package/src/translations/languages/et.ts +0 -38
  386. package/src/translations/languages/fa.ts +0 -39
  387. package/src/translations/languages/fr.ts +0 -39
  388. package/src/translations/languages/he.ts +0 -37
  389. package/src/translations/languages/hr.ts +0 -39
  390. package/src/translations/languages/hu.ts +0 -39
  391. package/src/translations/languages/hy.ts +0 -39
  392. package/src/translations/languages/id.ts +0 -39
  393. package/src/translations/languages/is.ts +0 -39
  394. package/src/translations/languages/it.ts +0 -39
  395. package/src/translations/languages/ja.ts +0 -39
  396. package/src/translations/languages/ko.ts +0 -39
  397. package/src/translations/languages/lt.ts +0 -39
  398. package/src/translations/languages/lv.ts +0 -38
  399. package/src/translations/languages/my.ts +0 -39
  400. package/src/translations/languages/nb.ts +0 -39
  401. package/src/translations/languages/nl.ts +0 -39
  402. package/src/translations/languages/pl.ts +0 -38
  403. package/src/translations/languages/pt.ts +0 -39
  404. package/src/translations/languages/ro.ts +0 -39
  405. package/src/translations/languages/rs.ts +0 -38
  406. package/src/translations/languages/rsLatin.ts +0 -38
  407. package/src/translations/languages/ru.ts +0 -39
  408. package/src/translations/languages/sk.ts +0 -39
  409. package/src/translations/languages/sl.ts +0 -38
  410. package/src/translations/languages/sv.ts +0 -39
  411. package/src/translations/languages/ta.ts +0 -39
  412. package/src/translations/languages/th.ts +0 -38
  413. package/src/translations/languages/tr.ts +0 -38
  414. package/src/translations/languages/uk.ts +0 -39
  415. package/src/translations/languages/vi.ts +0 -39
  416. package/src/translations/languages/zh.ts +0 -36
  417. package/src/translations/languages/zhTw.ts +0 -36
  418. package/src/translations/types.ts +0 -34
@@ -2,6 +2,7 @@ import type { PopulateType, SelectType } from 'payload'
2
2
 
3
3
  import { z } from 'zod'
4
4
 
5
+ import { defaultAccess } from '../../../defaultAccess.js'
5
6
  import { defineGlobalTool } from '../../../defineTool.js'
6
7
  import { getLogger } from '../../../utils/getLogger.js'
7
8
  import { localAPIDefaults } from '../../../utils/localAPIDefaults.js'
@@ -9,6 +10,8 @@ import { localAPIDefaults } from '../../../utils/localAPIDefaults.js'
9
10
  const DEFAULT_DESCRIPTION = 'Find any Payload global by passing the global slug.'
10
11
 
11
12
  export const findGlobalTool = defineGlobalTool({
13
+ access: (args) =>
14
+ defaultAccess(args) && Boolean(args.permissions?.globals?.[args.globalSlug]?.read),
12
15
  annotations: {
13
16
  destructiveHint: false,
14
17
  idempotentHint: true,
@@ -0,0 +1,104 @@
1
+ import type { PopulateType, SelectType } from 'payload'
2
+
3
+ import { z } from 'zod'
4
+
5
+ import { defaultAccess } from '../../../defaultAccess.js'
6
+ import { defineGlobalTool } from '../../../defineTool.js'
7
+ import { getLogger } from '../../../utils/getLogger.js'
8
+ import { localAPIDefaults } from '../../../utils/localAPIDefaults.js'
9
+
10
+ const DEFAULT_DESCRIPTION =
11
+ 'Find a specific global version in any version-enabled global by passing the global slug and version ID.'
12
+
13
+ export const findGlobalVersionByIDTool = defineGlobalTool({
14
+ access: (args) =>
15
+ defaultAccess(args) && Boolean(args.permissions?.globals?.[args.globalSlug]?.readVersions),
16
+ annotations: {
17
+ destructiveHint: false,
18
+ idempotentHint: true,
19
+ openWorldHint: false,
20
+ readOnlyHint: true,
21
+ title: 'Find Global Version By ID',
22
+ },
23
+ description: DEFAULT_DESCRIPTION,
24
+ input: z.object({
25
+ id: z.string().describe('The ID of the global version to retrieve'),
26
+ depth: z
27
+ .number()
28
+ .int()
29
+ .min(0)
30
+ .max(10)
31
+ .describe('How many levels deep to populate relationships in the global version document')
32
+ .optional()
33
+ .default(0),
34
+ fallbackLocale: z
35
+ .string()
36
+ .describe('Optional: fallback locale code to use when requested locale is not available')
37
+ .optional(),
38
+ locale: z
39
+ .string()
40
+ .describe(
41
+ 'Optional: locale code to retrieve data in (e.g., "en", "es"). Use "all" to retrieve all locales for localized fields',
42
+ )
43
+ .optional(),
44
+ populate: z
45
+ .record(z.string(), z.unknown())
46
+ .describe(
47
+ 'Optional: control which fields to include from populated relationship or upload documents.',
48
+ )
49
+ .optional(),
50
+ select: z
51
+ .record(z.string(), z.unknown())
52
+ .describe(
53
+ 'Optional: define exactly which fields you\'d like to return in the response, e.g., {"version.siteName": true}',
54
+ )
55
+ .optional(),
56
+ showHiddenFields: z
57
+ .boolean()
58
+ .describe('Optional: include hidden fields in the returned global version document')
59
+ .optional(),
60
+ }),
61
+ }).handler(async ({ authorizedMCP, globalSlug, input, req }) => {
62
+ const payload = req.payload
63
+ const logger = getLogger({ payload })
64
+ const { id, depth, fallbackLocale, locale, populate, select, showHiddenFields } = input
65
+
66
+ logger.info(`Finding version for global: ${globalSlug} with ID: ${id}`)
67
+
68
+ try {
69
+ const result = await payload.findGlobalVersionByID({
70
+ id,
71
+ slug: globalSlug,
72
+ depth,
73
+ req,
74
+ ...localAPIDefaults(authorizedMCP),
75
+ ...(fallbackLocale ? { fallbackLocale } : {}),
76
+ ...(locale ? { locale } : {}),
77
+ ...(populate ? { populate: populate as PopulateType } : {}),
78
+ ...(select ? { select: select as SelectType } : {}),
79
+ ...(showHiddenFields !== undefined ? { showHiddenFields } : {}),
80
+ })
81
+
82
+ return {
83
+ content: [
84
+ {
85
+ type: 'text',
86
+ text: `Version "${id}" from global "${globalSlug}":\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``,
87
+ },
88
+ ],
89
+ doc: result as unknown as Record<string, unknown>,
90
+ }
91
+ } catch (error) {
92
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error'
93
+ logger.error(`Error finding version ${id} for global ${globalSlug}: ${errorMessage}`)
94
+ return {
95
+ content: [
96
+ {
97
+ type: 'text',
98
+ text: `❌ **Error finding version "${id}" for global "${globalSlug}":** ${errorMessage}`,
99
+ },
100
+ ],
101
+ isError: true,
102
+ }
103
+ }
104
+ })
@@ -0,0 +1,148 @@
1
+ import type { PopulateType, SelectType } from 'payload'
2
+
3
+ import { z } from 'zod'
4
+
5
+ import { defaultAccess } from '../../../defaultAccess.js'
6
+ import { defineGlobalTool } from '../../../defineTool.js'
7
+ import { getLogger } from '../../../utils/getLogger.js'
8
+ import { localAPIDefaults } from '../../../utils/localAPIDefaults.js'
9
+ import { whereSchema } from '../../../utils/whereSchema.js'
10
+
11
+ const DEFAULT_DESCRIPTION =
12
+ 'Find global versions in any version-enabled global by passing the global slug and optional where clause.'
13
+
14
+ export const findGlobalVersionsTool = defineGlobalTool({
15
+ access: (args) =>
16
+ defaultAccess(args) && Boolean(args.permissions?.globals?.[args.globalSlug]?.readVersions),
17
+ annotations: {
18
+ destructiveHint: false,
19
+ idempotentHint: true,
20
+ openWorldHint: false,
21
+ readOnlyHint: true,
22
+ title: 'Find Global Versions',
23
+ },
24
+ description: DEFAULT_DESCRIPTION,
25
+ input: z.object({
26
+ depth: z
27
+ .number()
28
+ .int()
29
+ .min(0)
30
+ .max(10)
31
+ .describe('How many levels deep to populate relationships in global version documents')
32
+ .optional()
33
+ .default(0),
34
+ fallbackLocale: z
35
+ .string()
36
+ .describe('Optional: fallback locale code to use when requested locale is not available')
37
+ .optional(),
38
+ limit: z
39
+ .number()
40
+ .int()
41
+ .min(1)
42
+ .max(100)
43
+ .describe('Maximum number of versions to return (default: 10, max: 100)')
44
+ .optional()
45
+ .default(10),
46
+ locale: z
47
+ .string()
48
+ .describe(
49
+ 'Optional: locale code to retrieve data in (e.g., "en", "es"). Use "all" to retrieve all locales for localized fields',
50
+ )
51
+ .optional(),
52
+ page: z
53
+ .number()
54
+ .int()
55
+ .min(1)
56
+ .describe('Page number for pagination (default: 1)')
57
+ .optional()
58
+ .default(1),
59
+ pagination: z
60
+ .boolean()
61
+ .describe('Optional: set to false to skip the count query overhead')
62
+ .optional(),
63
+ populate: z
64
+ .record(z.string(), z.unknown())
65
+ .describe(
66
+ 'Optional: control which fields to include from populated relationship or upload documents.',
67
+ )
68
+ .optional(),
69
+ select: z
70
+ .record(z.string(), z.unknown())
71
+ .describe(
72
+ 'Optional: define exactly which fields you\'d like to return in the response, e.g., {"version.siteName": true}',
73
+ )
74
+ .optional(),
75
+ showHiddenFields: z
76
+ .boolean()
77
+ .describe('Optional: include hidden fields in returned global version documents')
78
+ .optional(),
79
+ sort: z
80
+ .string()
81
+ .describe('Field to sort by (e.g., "-updatedAt", "-version.updatedAt" for descending)')
82
+ .optional(),
83
+ where: whereSchema
84
+ .describe(
85
+ 'Optional: where clause for filtering versions. Version document fields are usually under "version". Example: {"version.siteName":{"contains":"test"}}',
86
+ )
87
+ .optional(),
88
+ }),
89
+ }).handler(async ({ authorizedMCP, globalSlug, input, req }) => {
90
+ const payload = req.payload
91
+ const logger = getLogger({ payload })
92
+ const {
93
+ depth,
94
+ fallbackLocale,
95
+ limit,
96
+ locale,
97
+ page,
98
+ pagination,
99
+ populate,
100
+ select,
101
+ showHiddenFields,
102
+ sort,
103
+ where,
104
+ } = input
105
+
106
+ logger.info(`Finding versions for global: ${globalSlug}, limit: ${limit}, page: ${page}`)
107
+
108
+ try {
109
+ const result = await payload.findGlobalVersions({
110
+ slug: globalSlug,
111
+ depth,
112
+ limit,
113
+ page,
114
+ req,
115
+ ...localAPIDefaults(authorizedMCP),
116
+ ...(fallbackLocale ? { fallbackLocale } : {}),
117
+ ...(locale ? { locale } : {}),
118
+ ...(pagination !== undefined ? { pagination } : {}),
119
+ ...(populate ? { populate: populate as PopulateType } : {}),
120
+ ...(select ? { select: select as SelectType } : {}),
121
+ ...(showHiddenFields !== undefined ? { showHiddenFields } : {}),
122
+ ...(sort ? { sort } : {}),
123
+ ...(where ? { where } : {}),
124
+ })
125
+
126
+ return {
127
+ content: [
128
+ {
129
+ type: 'text',
130
+ text: `Versions for global "${globalSlug}":\n\`\`\`json\n${JSON.stringify(result)}\n\`\`\``,
131
+ },
132
+ ],
133
+ doc: result as unknown as Record<string, unknown>,
134
+ }
135
+ } catch (error) {
136
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error'
137
+ logger.error(`Error finding versions for global ${globalSlug}: ${errorMessage}`)
138
+ return {
139
+ content: [
140
+ {
141
+ type: 'text',
142
+ text: `❌ **Error finding versions for global "${globalSlug}":** ${errorMessage}`,
143
+ },
144
+ ],
145
+ isError: true,
146
+ }
147
+ }
148
+ })
@@ -1,7 +1,13 @@
1
+ import { defaultAccess } from '../../../defaultAccess.js'
1
2
  import { defineGlobalTool } from '../../../defineTool.js'
2
3
  import { getGlobalInputSchema } from '../../../utils/schemaConversion/getEntityInputSchema.js'
3
4
 
4
5
  export const getGlobalSchemaTool = defineGlobalTool({
6
+ access: (args) => {
7
+ const permissions = args.permissions?.globals?.[args.globalSlug]
8
+
9
+ return defaultAccess(args) && Boolean(permissions?.read || permissions?.update)
10
+ },
5
11
  annotations: {
6
12
  destructiveHint: false,
7
13
  idempotentHint: true,
@@ -0,0 +1,100 @@
1
+ import type { PopulateType } from 'payload'
2
+
3
+ import { z } from 'zod'
4
+
5
+ import { defaultAccess } from '../../../defaultAccess.js'
6
+ import { defineGlobalTool } from '../../../defineTool.js'
7
+ import { getLogger } from '../../../utils/getLogger.js'
8
+ import { localAPIDefaults } from '../../../utils/localAPIDefaults.js'
9
+
10
+ const DEFAULT_DESCRIPTION =
11
+ 'Restore a global from a previous version in any version-enabled global.'
12
+
13
+ export const restoreGlobalVersionTool = defineGlobalTool({
14
+ access: (args) =>
15
+ defaultAccess(args) && Boolean(args.permissions?.globals?.[args.globalSlug]?.update),
16
+ annotations: {
17
+ destructiveHint: true,
18
+ idempotentHint: false,
19
+ openWorldHint: false,
20
+ readOnlyHint: false,
21
+ title: 'Restore Global Version',
22
+ },
23
+ description: DEFAULT_DESCRIPTION,
24
+ input: z.object({
25
+ id: z.string().describe('The ID of the global version to restore'),
26
+ depth: z
27
+ .number()
28
+ .int()
29
+ .min(0)
30
+ .max(10)
31
+ .describe('How many levels deep to populate relationships in response')
32
+ .optional()
33
+ .default(0),
34
+ fallbackLocale: z
35
+ .string()
36
+ .describe('Optional: fallback locale code to use when requested locale is not available')
37
+ .optional(),
38
+ locale: z
39
+ .string()
40
+ .describe('Optional: locale code to restore in (e.g., "en", "es")')
41
+ .optional(),
42
+ populate: z
43
+ .record(z.string(), z.unknown())
44
+ .describe(
45
+ 'Optional: control which fields to include from populated relationship or upload documents.',
46
+ )
47
+ .optional(),
48
+ showHiddenFields: z
49
+ .boolean()
50
+ .describe('Optional: include hidden fields in the restored global response')
51
+ .optional(),
52
+ }),
53
+ }).handler(async ({ authorizedMCP, globalSlug, input, req }) => {
54
+ const payload = req.payload
55
+ const logger = getLogger({ payload })
56
+ const { id, depth, fallbackLocale, locale, populate, showHiddenFields } = input
57
+
58
+ logger.info(`Restoring version for global: ${globalSlug} with ID: ${id}`)
59
+
60
+ try {
61
+ const result = await payload.restoreGlobalVersion({
62
+ id,
63
+ slug: globalSlug,
64
+ depth,
65
+ req,
66
+ ...localAPIDefaults(authorizedMCP),
67
+ ...(fallbackLocale ? { fallbackLocale } : {}),
68
+ ...(locale ? { locale } : {}),
69
+ ...(populate ? { populate: populate as PopulateType } : {}),
70
+ ...(showHiddenFields !== undefined ? { showHiddenFields } : {}),
71
+ })
72
+ const resultObject = result as Record<string, unknown>
73
+ const restoredGlobal =
74
+ resultObject.version && typeof resultObject.version === 'object'
75
+ ? (resultObject.version as Record<string, unknown>)
76
+ : resultObject
77
+
78
+ return {
79
+ content: [
80
+ {
81
+ type: 'text',
82
+ text: `Version "${id}" restored successfully for global "${globalSlug}"!\nRestored global:\n\`\`\`json\n${JSON.stringify(restoredGlobal)}\n\`\`\``,
83
+ },
84
+ ],
85
+ doc: restoredGlobal,
86
+ }
87
+ } catch (error) {
88
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error'
89
+ logger.error(`Error restoring version ${id} for global ${globalSlug}: ${errorMessage}`)
90
+ return {
91
+ content: [
92
+ {
93
+ type: 'text',
94
+ text: `❌ **Error restoring version "${id}" for global "${globalSlug}":** ${errorMessage}`,
95
+ },
96
+ ],
97
+ isError: true,
98
+ }
99
+ }
100
+ })
@@ -2,6 +2,7 @@ import type { SelectType } from 'payload'
2
2
 
3
3
  import { z } from 'zod'
4
4
 
5
+ import { defaultAccess } from '../../../defaultAccess.js'
5
6
  import { defineGlobalTool } from '../../../defineTool.js'
6
7
  import { getLogger } from '../../../utils/getLogger.js'
7
8
  import {
@@ -15,6 +16,8 @@ import { validateGlobalData } from '../validateEntityData.js'
15
16
  const DEFAULT_DESCRIPTION = 'Update any Payload global by passing the global slug and data.'
16
17
 
17
18
  export const updateGlobalTool = defineGlobalTool({
19
+ access: (args) =>
20
+ defaultAccess(args) && Boolean(args.permissions?.globals?.[args.globalSlug]?.update),
18
21
  annotations: {
19
22
  destructiveHint: true,
20
23
  idempotentHint: false,
@@ -8,16 +8,40 @@ import {
8
8
  unlockCollectionTool,
9
9
  verifyCollectionTool,
10
10
  } from './builtin/collections/authTools.js'
11
+ import { countDocumentsTool } from './builtin/collections/countTool.js'
12
+ import { countVersionsTool } from './builtin/collections/countVersionsTool.js'
11
13
  import { createDocumentTool } from './builtin/collections/createTool.js'
12
14
  import { deleteDocumentsTool } from './builtin/collections/deleteTool.js'
15
+ import { duplicateDocumentTool } from './builtin/collections/duplicateTool.js'
16
+ import { findDistinctTool } from './builtin/collections/findDistinctTool.js'
13
17
  import { findDocumentsTool } from './builtin/collections/findTool.js'
18
+ import { findVersionByIDTool } from './builtin/collections/findVersionByIDTool.js'
19
+ import { findVersionsTool } from './builtin/collections/findVersionsTool.js'
14
20
  import { getCollectionSchemaTool } from './builtin/collections/getCollectionSchemaTool.js'
21
+ import { restoreVersionTool } from './builtin/collections/restoreVersionTool.js'
15
22
  import { updateDocumentTool } from './builtin/collections/updateTool.js'
16
23
  import { getConfigInfoTool } from './builtin/getConfigInfoTool.js'
24
+ import { countGlobalVersionsTool } from './builtin/globals/countVersionsTool.js'
17
25
  import { findGlobalTool } from './builtin/globals/findTool.js'
26
+ import { findGlobalVersionByIDTool } from './builtin/globals/findVersionByIDTool.js'
27
+ import { findGlobalVersionsTool } from './builtin/globals/findVersionsTool.js'
18
28
  import { getGlobalSchemaTool } from './builtin/globals/getGlobalSchemaTool.js'
29
+ import { restoreGlobalVersionTool } from './builtin/globals/restoreVersionTool.js'
19
30
  import { updateGlobalTool } from './builtin/globals/updateTool.js'
20
31
 
32
+ type CollectionBuiltin = {
33
+ mcpName: string
34
+ requiresDuplicateEnabled?: boolean
35
+ requiresVersions?: boolean
36
+ tool: CollectionTool
37
+ }
38
+
39
+ type GlobalBuiltin = {
40
+ mcpName: string
41
+ requiresVersions?: boolean
42
+ tool: GlobalTool
43
+ }
44
+
21
45
  export const TOOL_BUILTINS = {
22
46
  getConfigInfo: { mcpName: 'getConfigInfo', tool: getConfigInfoTool },
23
47
  } satisfies Record<string, { mcpName: string; tool: Tool }>
@@ -28,12 +52,27 @@ export const TOOL_BUILTINS = {
28
52
  * automatically.
29
53
  */
30
54
  export const COLLECTION_BUILTINS = {
55
+ count: { mcpName: 'countDocuments', tool: countDocumentsTool },
56
+ countVersions: { mcpName: 'countVersions', requiresVersions: true, tool: countVersionsTool },
31
57
  create: { mcpName: 'createDocument', tool: createDocumentTool },
32
58
  delete: { mcpName: 'deleteDocuments', tool: deleteDocumentsTool },
59
+ duplicate: {
60
+ mcpName: 'duplicateDocument',
61
+ requiresDuplicateEnabled: true,
62
+ tool: duplicateDocumentTool,
63
+ },
33
64
  find: { mcpName: 'findDocuments', tool: findDocumentsTool },
65
+ findDistinct: { mcpName: 'findDistinct', tool: findDistinctTool },
66
+ findVersionByID: {
67
+ mcpName: 'findVersionByID',
68
+ requiresVersions: true,
69
+ tool: findVersionByIDTool,
70
+ },
71
+ findVersions: { mcpName: 'findVersions', requiresVersions: true, tool: findVersionsTool },
34
72
  getCollectionSchema: { mcpName: 'getCollectionSchema', tool: getCollectionSchemaTool },
73
+ restoreVersion: { mcpName: 'restoreVersion', requiresVersions: true, tool: restoreVersionTool },
35
74
  update: { mcpName: 'updateDocument', tool: updateDocumentTool },
36
- } satisfies Record<string, { mcpName: string; tool: CollectionTool }>
75
+ } satisfies Record<string, CollectionBuiltin>
37
76
 
38
77
  /**
39
78
  * The static auth tools surfaced under auth-enabled collections. Keys are the
@@ -59,10 +98,30 @@ export const COLLECTION_AUTH_BUILTINS = {
59
98
  * `MCPGlobalBuiltinName`.
60
99
  */
61
100
  export const GLOBAL_BUILTINS = {
101
+ countGlobalVersions: {
102
+ mcpName: 'countGlobalVersions',
103
+ requiresVersions: true,
104
+ tool: countGlobalVersionsTool,
105
+ },
62
106
  find: { mcpName: 'findGlobal', tool: findGlobalTool },
107
+ findGlobalVersionByID: {
108
+ mcpName: 'findGlobalVersionByID',
109
+ requiresVersions: true,
110
+ tool: findGlobalVersionByIDTool,
111
+ },
112
+ findGlobalVersions: {
113
+ mcpName: 'findGlobalVersions',
114
+ requiresVersions: true,
115
+ tool: findGlobalVersionsTool,
116
+ },
63
117
  getGlobalSchema: { mcpName: 'getGlobalSchema', tool: getGlobalSchemaTool },
118
+ restoreGlobalVersion: {
119
+ mcpName: 'restoreGlobalVersion',
120
+ requiresVersions: true,
121
+ tool: restoreGlobalVersionTool,
122
+ },
64
123
  update: { mcpName: 'updateGlobal', tool: updateGlobalTool },
65
- } satisfies Record<string, { mcpName: string; tool: GlobalTool }>
124
+ } satisfies Record<string, GlobalBuiltin>
66
125
 
67
126
  export type MCPCollectionBuiltinName = keyof typeof COLLECTION_BUILTINS
68
127
 
@@ -83,7 +142,7 @@ export const TOOL_BUILTIN_ENTRIES = Object.entries(TOOL_BUILTINS) as Array<
83
142
  >
84
143
 
85
144
  export const COLLECTION_BUILTIN_ENTRIES = Object.entries(COLLECTION_BUILTINS) as Array<
86
- [MCPCollectionBuiltinName, (typeof COLLECTION_BUILTINS)[MCPCollectionBuiltinName]]
145
+ [MCPCollectionBuiltinName, CollectionBuiltin]
87
146
  >
88
147
 
89
148
  export const COLLECTION_AUTH_BUILTIN_ENTRIES = Object.entries(COLLECTION_AUTH_BUILTINS) as Array<
@@ -91,5 +150,5 @@ export const COLLECTION_AUTH_BUILTIN_ENTRIES = Object.entries(COLLECTION_AUTH_BU
91
150
  >
92
151
 
93
152
  export const GLOBAL_BUILTIN_ENTRIES = Object.entries(GLOBAL_BUILTINS) as Array<
94
- [MCPGlobalBuiltinName, (typeof GLOBAL_BUILTINS)[MCPGlobalBuiltinName]]
153
+ [MCPGlobalBuiltinName, GlobalBuiltin]
95
154
  >
@@ -17,6 +17,7 @@ import type {
17
17
  SanitizedMCPPluginConfig,
18
18
  } from '../types.js'
19
19
 
20
+ import { defaultAccess } from '../defaultAccess.js'
20
21
  import {
21
22
  COLLECTION_AUTH_BUILTIN_ENTRIES,
22
23
  COLLECTION_AUTH_BUILTINS,
@@ -33,7 +34,6 @@ import {
33
34
  * - Flattens `tools` / `prompts` / `resources` / per-collection / per-global
34
35
  * tool maps into a single `items` array.
35
36
  * - Applies built-in tools for collections and globals, respecting opt-out user overrides.
36
- * - Applies the `userCollection` default
37
37
  *
38
38
  * Called once during plugin init. After that, `plugins['@payloadcms/plugin-mcp']
39
39
  * ?.options` holds the sanitized result
@@ -61,7 +61,7 @@ export const sanitizeMCPConfig = ({
61
61
  configKey,
62
62
  label: tool.annotations?.title ?? configKey,
63
63
  mcpName,
64
- tool,
64
+ tool: { ...tool, access: tool.access ?? defaultAccess },
65
65
  })
66
66
  }
67
67
 
@@ -74,7 +74,7 @@ export const sanitizeMCPConfig = ({
74
74
  configKey,
75
75
  label: tool.annotations?.title ?? configKey,
76
76
  mcpName: configKey,
77
- tool,
77
+ tool: { ...tool, access: tool.access ?? defaultAccess },
78
78
  })
79
79
  }
80
80
 
@@ -84,7 +84,7 @@ export const sanitizeMCPConfig = ({
84
84
  configKey,
85
85
  label: prompt.title ?? configKey,
86
86
  mcpName: configKey,
87
- prompt,
87
+ prompt: { ...prompt, access: prompt.access ?? defaultAccess },
88
88
  })
89
89
  }
90
90
 
@@ -94,21 +94,15 @@ export const sanitizeMCPConfig = ({
94
94
  configKey,
95
95
  label: resource.title ?? configKey,
96
96
  mcpName: configKey,
97
- resource,
97
+ resource: { ...resource, access: resource.access ?? defaultAccess },
98
98
  })
99
99
  }
100
100
 
101
- // Mirror Payload's own admin.user detection (sanitize.ts) since plugins run first.
102
- const firstCollectionWithAuth = config.collections!.find(({ auth }) => Boolean(auth))
103
-
104
101
  return {
105
102
  disabled: pluginConfig.disabled,
106
103
  items,
107
104
  mcp: pluginConfig.mcp,
108
- overrideApiKeyCollection: pluginConfig.overrideApiKeyCollection,
109
- overrideAuth: pluginConfig.overrideAuth,
110
- userCollection:
111
- pluginConfig.userCollection ?? config.admin?.user ?? firstCollectionWithAuth?.slug ?? 'users',
105
+ overrideGetAuthorizedMCP: pluginConfig.overrideGetAuthorizedMCP,
112
106
  }
113
107
  }
114
108
 
@@ -119,14 +113,27 @@ const sanitizeCollectionConfig = ({
119
113
  collection: CollectionConfig | SanitizedCollectionConfig
120
114
  pluginConfig: MCPPluginConfig
121
115
  }): CollectionMCPItem[] => {
122
- if (collection.slug === 'payload-mcp-api-keys') {
123
- return []
124
- }
125
116
  const slug = collection.slug
126
117
  const collectionPluginConfig = pluginConfig.collections?.[slug]
127
118
  const items: CollectionMCPItem[] = []
119
+ /**
120
+ * Payload disables duplicate for auth collections by default unless the
121
+ * collection explicitly opts back in with `disableDuplicate: false`.
122
+ */
123
+ const isDuplicateDisabled =
124
+ collection.disableDuplicate === true ||
125
+ (Boolean(collection.auth) && collection.disableDuplicate !== false)
128
126
 
129
- for (const [toolKey, { mcpName, tool }] of COLLECTION_BUILTIN_ENTRIES) {
127
+ for (const [
128
+ toolKey,
129
+ { mcpName, requiresDuplicateEnabled, requiresVersions, tool },
130
+ ] of COLLECTION_BUILTIN_ENTRIES) {
131
+ if (requiresVersions && !collection.versions) {
132
+ continue
133
+ }
134
+ if (requiresDuplicateEnabled && isDuplicateDisabled) {
135
+ continue
136
+ }
130
137
  const matchedConfigEntry = collectionPluginConfig?.tools?.[toolKey]
131
138
  if (matchedConfigEntry === false) {
132
139
  continue
@@ -141,6 +148,7 @@ const sanitizeCollectionConfig = ({
141
148
  mcpName,
142
149
  tool: {
143
150
  ...tool,
151
+ access: override?.access ?? tool.access ?? defaultAccess,
144
152
  annotations,
145
153
  description: override?.description ?? tool.description,
146
154
  overrideResponse:
@@ -168,6 +176,7 @@ const sanitizeCollectionConfig = ({
168
176
  mcpName,
169
177
  tool: {
170
178
  ...tool,
179
+ access: override?.access ?? tool.access ?? defaultAccess,
171
180
  annotations,
172
181
  description: override?.description ?? tool.description,
173
182
  overrideResponse:
@@ -197,7 +206,7 @@ const sanitizeCollectionConfig = ({
197
206
  configKey,
198
207
  label: customTool.annotations?.title ?? configKey,
199
208
  mcpName: configKey,
200
- tool: customTool,
209
+ tool: { ...customTool, access: customTool.access ?? defaultAccess },
201
210
  })
202
211
  }
203
212
 
@@ -215,7 +224,10 @@ const sanitizeGlobalConfig = ({
215
224
  const globalPluginConfig = pluginConfig.globals?.[slug]
216
225
  const items: GlobalMCPItem[] = []
217
226
 
218
- for (const [toolKey, { mcpName, tool }] of GLOBAL_BUILTIN_ENTRIES) {
227
+ for (const [toolKey, { mcpName, requiresVersions, tool }] of GLOBAL_BUILTIN_ENTRIES) {
228
+ if (requiresVersions && !global.versions) {
229
+ continue
230
+ }
219
231
  const matchedConfigEntry = globalPluginConfig?.tools?.[toolKey]
220
232
  if (matchedConfigEntry === false) {
221
233
  continue
@@ -230,6 +242,7 @@ const sanitizeGlobalConfig = ({
230
242
  mcpName,
231
243
  tool: {
232
244
  ...tool,
245
+ access: override?.access ?? tool.access ?? defaultAccess,
233
246
  annotations,
234
247
  description: override?.description ?? tool.description,
235
248
  overrideResponse:
@@ -256,7 +269,7 @@ const sanitizeGlobalConfig = ({
256
269
  globalSlug: slug,
257
270
  label: customTool.annotations?.title ?? configKey,
258
271
  mcpName: configKey,
259
- tool: customTool,
272
+ tool: { ...customTool, access: customTool.access ?? defaultAccess },
260
273
  })
261
274
  }
262
275