@cloudinary/environment-config-mcp 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/README.md +98 -119
  2. package/bin/mcp-server.js +23408 -19261
  3. package/bin/mcp-server.js.map +175 -163
  4. package/esm/funcs/streamingProfilesCreateStreamingProfile.d.ts +1 -2
  5. package/esm/funcs/streamingProfilesCreateStreamingProfile.d.ts.map +1 -1
  6. package/esm/funcs/streamingProfilesCreateStreamingProfile.js +5 -10
  7. package/esm/funcs/streamingProfilesCreateStreamingProfile.js.map +1 -1
  8. package/esm/funcs/streamingProfilesDeleteStreamingProfile.d.ts +1 -2
  9. package/esm/funcs/streamingProfilesDeleteStreamingProfile.d.ts.map +1 -1
  10. package/esm/funcs/streamingProfilesDeleteStreamingProfile.js +6 -10
  11. package/esm/funcs/streamingProfilesDeleteStreamingProfile.js.map +1 -1
  12. package/esm/funcs/streamingProfilesGetStreamingProfile.d.ts +1 -2
  13. package/esm/funcs/streamingProfilesGetStreamingProfile.d.ts.map +1 -1
  14. package/esm/funcs/streamingProfilesGetStreamingProfile.js +6 -10
  15. package/esm/funcs/streamingProfilesGetStreamingProfile.js.map +1 -1
  16. package/esm/funcs/streamingProfilesGetStreamingProfiles.d.ts +2 -2
  17. package/esm/funcs/streamingProfilesGetStreamingProfiles.d.ts.map +1 -1
  18. package/esm/funcs/streamingProfilesGetStreamingProfiles.js +5 -8
  19. package/esm/funcs/streamingProfilesGetStreamingProfiles.js.map +1 -1
  20. package/esm/funcs/streamingProfilesUpdateStreamingProfile.d.ts +1 -2
  21. package/esm/funcs/streamingProfilesUpdateStreamingProfile.d.ts.map +1 -1
  22. package/esm/funcs/streamingProfilesUpdateStreamingProfile.js +6 -10
  23. package/esm/funcs/streamingProfilesUpdateStreamingProfile.js.map +1 -1
  24. package/esm/funcs/transformationsCreateTransformation.d.ts +1 -2
  25. package/esm/funcs/transformationsCreateTransformation.d.ts.map +1 -1
  26. package/esm/funcs/transformationsCreateTransformation.js +6 -10
  27. package/esm/funcs/transformationsCreateTransformation.js.map +1 -1
  28. package/esm/funcs/transformationsDeleteTransformation.d.ts +1 -2
  29. package/esm/funcs/transformationsDeleteTransformation.d.ts.map +1 -1
  30. package/esm/funcs/transformationsDeleteTransformation.js +6 -10
  31. package/esm/funcs/transformationsDeleteTransformation.js.map +1 -1
  32. package/esm/funcs/transformationsGetTransformation.d.ts +1 -2
  33. package/esm/funcs/transformationsGetTransformation.d.ts.map +1 -1
  34. package/esm/funcs/transformationsGetTransformation.js +6 -12
  35. package/esm/funcs/transformationsGetTransformation.js.map +1 -1
  36. package/esm/funcs/transformationsListTransformations.d.ts +1 -2
  37. package/esm/funcs/transformationsListTransformations.d.ts.map +1 -1
  38. package/esm/funcs/transformationsListTransformations.js +6 -12
  39. package/esm/funcs/transformationsListTransformations.js.map +1 -1
  40. package/esm/funcs/transformationsUpdateTransformation.d.ts +1 -2
  41. package/esm/funcs/transformationsUpdateTransformation.d.ts.map +1 -1
  42. package/esm/funcs/transformationsUpdateTransformation.js +6 -10
  43. package/esm/funcs/transformationsUpdateTransformation.js.map +1 -1
  44. package/esm/funcs/triggersCreateTrigger.d.ts +2 -2
  45. package/esm/funcs/triggersCreateTrigger.d.ts.map +1 -1
  46. package/esm/funcs/triggersCreateTrigger.js +6 -10
  47. package/esm/funcs/triggersCreateTrigger.js.map +1 -1
  48. package/esm/funcs/triggersDeleteTrigger.d.ts +1 -2
  49. package/esm/funcs/triggersDeleteTrigger.d.ts.map +1 -1
  50. package/esm/funcs/triggersDeleteTrigger.js +6 -10
  51. package/esm/funcs/triggersDeleteTrigger.js.map +1 -1
  52. package/esm/funcs/triggersListTrigger.d.ts +1 -2
  53. package/esm/funcs/triggersListTrigger.d.ts.map +1 -1
  54. package/esm/funcs/triggersListTrigger.js +6 -8
  55. package/esm/funcs/triggersListTrigger.js.map +1 -1
  56. package/esm/funcs/triggersTestTrigger.d.ts +17 -0
  57. package/esm/funcs/triggersTestTrigger.d.ts.map +1 -0
  58. package/esm/funcs/triggersTestTrigger.js +97 -0
  59. package/esm/funcs/triggersTestTrigger.js.map +1 -0
  60. package/esm/funcs/triggersUpdateTrigger.d.ts +2 -2
  61. package/esm/funcs/triggersUpdateTrigger.d.ts.map +1 -1
  62. package/esm/funcs/triggersUpdateTrigger.js +6 -10
  63. package/esm/funcs/triggersUpdateTrigger.js.map +1 -1
  64. package/esm/funcs/uploadMappingsCreateUploadMapping.d.ts +2 -2
  65. package/esm/funcs/uploadMappingsCreateUploadMapping.d.ts.map +1 -1
  66. package/esm/funcs/uploadMappingsCreateUploadMapping.js +6 -10
  67. package/esm/funcs/uploadMappingsCreateUploadMapping.js.map +1 -1
  68. package/esm/funcs/uploadMappingsDeleteUploadMapping.d.ts +1 -2
  69. package/esm/funcs/uploadMappingsDeleteUploadMapping.d.ts.map +1 -1
  70. package/esm/funcs/uploadMappingsDeleteUploadMapping.js +6 -10
  71. package/esm/funcs/uploadMappingsDeleteUploadMapping.js.map +1 -1
  72. package/esm/funcs/uploadMappingsListUploadMappings.d.ts +1 -2
  73. package/esm/funcs/uploadMappingsListUploadMappings.d.ts.map +1 -1
  74. package/esm/funcs/uploadMappingsListUploadMappings.js +6 -10
  75. package/esm/funcs/uploadMappingsListUploadMappings.js.map +1 -1
  76. package/esm/funcs/uploadMappingsReplaceUploadMappings.d.ts +2 -2
  77. package/esm/funcs/uploadMappingsReplaceUploadMappings.d.ts.map +1 -1
  78. package/esm/funcs/uploadMappingsReplaceUploadMappings.js +6 -10
  79. package/esm/funcs/uploadMappingsReplaceUploadMappings.js.map +1 -1
  80. package/esm/funcs/uploadMappingsUpdateUploadMapping.d.ts +2 -2
  81. package/esm/funcs/uploadMappingsUpdateUploadMapping.d.ts.map +1 -1
  82. package/esm/funcs/uploadMappingsUpdateUploadMapping.js +6 -10
  83. package/esm/funcs/uploadMappingsUpdateUploadMapping.js.map +1 -1
  84. package/esm/funcs/uploadPresetsCreateUploadPreset.d.ts +1 -2
  85. package/esm/funcs/uploadPresetsCreateUploadPreset.d.ts.map +1 -1
  86. package/esm/funcs/uploadPresetsCreateUploadPreset.js +5 -10
  87. package/esm/funcs/uploadPresetsCreateUploadPreset.js.map +1 -1
  88. package/esm/funcs/uploadPresetsDeleteUploadPreset.d.ts +1 -2
  89. package/esm/funcs/uploadPresetsDeleteUploadPreset.d.ts.map +1 -1
  90. package/esm/funcs/uploadPresetsDeleteUploadPreset.js +6 -10
  91. package/esm/funcs/uploadPresetsDeleteUploadPreset.js.map +1 -1
  92. package/esm/funcs/uploadPresetsGetUploadPreset.d.ts +1 -2
  93. package/esm/funcs/uploadPresetsGetUploadPreset.d.ts.map +1 -1
  94. package/esm/funcs/uploadPresetsGetUploadPreset.js +6 -10
  95. package/esm/funcs/uploadPresetsGetUploadPreset.js.map +1 -1
  96. package/esm/funcs/uploadPresetsListUploadPresets.d.ts +2 -2
  97. package/esm/funcs/uploadPresetsListUploadPresets.d.ts.map +1 -1
  98. package/esm/funcs/uploadPresetsListUploadPresets.js +6 -10
  99. package/esm/funcs/uploadPresetsListUploadPresets.js.map +1 -1
  100. package/esm/funcs/uploadPresetsUpdateUploadPreset.d.ts +1 -2
  101. package/esm/funcs/uploadPresetsUpdateUploadPreset.d.ts.map +1 -1
  102. package/esm/funcs/uploadPresetsUpdateUploadPreset.js +6 -10
  103. package/esm/funcs/uploadPresetsUpdateUploadPreset.js.map +1 -1
  104. package/esm/hooks/oauth2scopes.d.ts +1 -1
  105. package/esm/landing-page.d.ts +5 -0
  106. package/esm/landing-page.d.ts.map +1 -0
  107. package/esm/landing-page.js +1061 -0
  108. package/esm/landing-page.js.map +1 -0
  109. package/esm/lib/base64.d.ts +2 -2
  110. package/esm/lib/base64.d.ts.map +1 -1
  111. package/esm/lib/base64.js +2 -2
  112. package/esm/lib/base64.js.map +1 -1
  113. package/esm/lib/config.d.ts +10 -4
  114. package/esm/lib/config.d.ts.map +1 -1
  115. package/esm/lib/config.js +10 -4
  116. package/esm/lib/config.js.map +1 -1
  117. package/esm/lib/encodings.d.ts.map +1 -1
  118. package/esm/lib/encodings.js +7 -0
  119. package/esm/lib/encodings.js.map +1 -1
  120. package/esm/lib/env.d.ts +1 -1
  121. package/esm/lib/env.d.ts.map +1 -1
  122. package/esm/lib/env.js.map +1 -1
  123. package/esm/lib/schemas.d.ts +4 -4
  124. package/esm/lib/schemas.d.ts.map +1 -1
  125. package/esm/lib/schemas.js +2 -2
  126. package/esm/lib/schemas.js.map +1 -1
  127. package/esm/lib/sdks.js +2 -2
  128. package/esm/lib/sdks.js.map +1 -1
  129. package/esm/lib/security.d.ts.map +1 -1
  130. package/esm/lib/security.js +3 -3
  131. package/esm/lib/security.js.map +1 -1
  132. package/esm/mcp-server/cli/serve/command.d.ts +2 -0
  133. package/esm/mcp-server/cli/serve/command.d.ts.map +1 -0
  134. package/esm/mcp-server/cli/serve/command.js +140 -0
  135. package/esm/mcp-server/cli/serve/command.js.map +1 -0
  136. package/esm/mcp-server/cli/serve/impl.d.ts +12 -0
  137. package/esm/mcp-server/cli/serve/impl.d.ts.map +1 -0
  138. package/esm/mcp-server/cli/serve/impl.js +85 -0
  139. package/esm/mcp-server/cli/serve/impl.js.map +1 -0
  140. package/esm/mcp-server/cli/start/command.d.ts.map +1 -1
  141. package/esm/mcp-server/cli/start/command.js +6 -0
  142. package/esm/mcp-server/cli/start/command.js.map +1 -1
  143. package/esm/mcp-server/cli/start/impl.d.ts +2 -13
  144. package/esm/mcp-server/cli/start/impl.d.ts.map +1 -1
  145. package/esm/mcp-server/cli/start/impl.js +94 -32
  146. package/esm/mcp-server/cli/start/impl.js.map +1 -1
  147. package/esm/mcp-server/extensions.d.ts +4 -4
  148. package/esm/mcp-server/extensions.d.ts.map +1 -1
  149. package/esm/mcp-server/flags.d.ts +20 -0
  150. package/esm/mcp-server/flags.d.ts.map +1 -0
  151. package/esm/mcp-server/flags.js +5 -0
  152. package/esm/mcp-server/flags.js.map +1 -0
  153. package/esm/mcp-server/mcp-server.d.ts.map +1 -1
  154. package/esm/mcp-server/mcp-server.js +3 -1
  155. package/esm/mcp-server/mcp-server.js.map +1 -1
  156. package/esm/mcp-server/prompts.d.ts +4 -7
  157. package/esm/mcp-server/prompts.d.ts.map +1 -1
  158. package/esm/mcp-server/prompts.js.map +1 -1
  159. package/esm/mcp-server/resources.d.ts +1 -2
  160. package/esm/mcp-server/resources.d.ts.map +1 -1
  161. package/esm/mcp-server/resources.js +8 -35
  162. package/esm/mcp-server/resources.js.map +1 -1
  163. package/esm/mcp-server/server.d.ts +8 -1
  164. package/esm/mcp-server/server.d.ts.map +1 -1
  165. package/esm/mcp-server/server.js +9 -4
  166. package/esm/mcp-server/server.js.map +1 -1
  167. package/esm/mcp-server/tools/streamingProfilesCreateStreamingProfile.d.ts +1 -1
  168. package/esm/mcp-server/tools/streamingProfilesCreateStreamingProfile.d.ts.map +1 -1
  169. package/esm/mcp-server/tools/streamingProfilesCreateStreamingProfile.js +2 -3
  170. package/esm/mcp-server/tools/streamingProfilesCreateStreamingProfile.js.map +1 -1
  171. package/esm/mcp-server/tools/streamingProfilesDeleteStreamingProfile.d.ts.map +1 -1
  172. package/esm/mcp-server/tools/streamingProfilesDeleteStreamingProfile.js +2 -3
  173. package/esm/mcp-server/tools/streamingProfilesDeleteStreamingProfile.js.map +1 -1
  174. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfile.d.ts.map +1 -1
  175. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfile.js +2 -3
  176. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfile.js.map +1 -1
  177. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfiles.d.ts +1 -1
  178. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfiles.d.ts.map +1 -1
  179. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfiles.js +2 -3
  180. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfiles.js.map +1 -1
  181. package/esm/mcp-server/tools/streamingProfilesUpdateStreamingProfile.d.ts +1 -1
  182. package/esm/mcp-server/tools/streamingProfilesUpdateStreamingProfile.d.ts.map +1 -1
  183. package/esm/mcp-server/tools/streamingProfilesUpdateStreamingProfile.js +2 -3
  184. package/esm/mcp-server/tools/streamingProfilesUpdateStreamingProfile.js.map +1 -1
  185. package/esm/mcp-server/tools/transformationsCreateTransformation.d.ts +1 -1
  186. package/esm/mcp-server/tools/transformationsCreateTransformation.d.ts.map +1 -1
  187. package/esm/mcp-server/tools/transformationsCreateTransformation.js +3 -5
  188. package/esm/mcp-server/tools/transformationsCreateTransformation.js.map +1 -1
  189. package/esm/mcp-server/tools/transformationsDeleteTransformation.d.ts.map +1 -1
  190. package/esm/mcp-server/tools/transformationsDeleteTransformation.js +3 -5
  191. package/esm/mcp-server/tools/transformationsDeleteTransformation.js.map +1 -1
  192. package/esm/mcp-server/tools/transformationsGetTransformation.d.ts.map +1 -1
  193. package/esm/mcp-server/tools/transformationsGetTransformation.js +3 -5
  194. package/esm/mcp-server/tools/transformationsGetTransformation.js.map +1 -1
  195. package/esm/mcp-server/tools/transformationsListTransformations.d.ts +1 -1
  196. package/esm/mcp-server/tools/transformationsListTransformations.d.ts.map +1 -1
  197. package/esm/mcp-server/tools/transformationsListTransformations.js +3 -4
  198. package/esm/mcp-server/tools/transformationsListTransformations.js.map +1 -1
  199. package/esm/mcp-server/tools/transformationsUpdateTransformation.d.ts +1 -1
  200. package/esm/mcp-server/tools/transformationsUpdateTransformation.d.ts.map +1 -1
  201. package/esm/mcp-server/tools/transformationsUpdateTransformation.js +3 -5
  202. package/esm/mcp-server/tools/transformationsUpdateTransformation.js.map +1 -1
  203. package/esm/mcp-server/tools/triggersCreateTrigger.d.ts +1 -1
  204. package/esm/mcp-server/tools/triggersCreateTrigger.d.ts.map +1 -1
  205. package/esm/mcp-server/tools/triggersCreateTrigger.js +2 -3
  206. package/esm/mcp-server/tools/triggersCreateTrigger.js.map +1 -1
  207. package/esm/mcp-server/tools/triggersDeleteTrigger.d.ts.map +1 -1
  208. package/esm/mcp-server/tools/triggersDeleteTrigger.js +2 -3
  209. package/esm/mcp-server/tools/triggersDeleteTrigger.js.map +1 -1
  210. package/esm/mcp-server/tools/triggersListTrigger.d.ts.map +1 -1
  211. package/esm/mcp-server/tools/triggersListTrigger.js +2 -3
  212. package/esm/mcp-server/tools/triggersListTrigger.js.map +1 -1
  213. package/esm/mcp-server/tools/triggersTestTrigger.d.ts +9 -0
  214. package/esm/mcp-server/tools/triggersTestTrigger.d.ts.map +1 -0
  215. package/esm/mcp-server/tools/triggersTestTrigger.js +39 -0
  216. package/esm/mcp-server/tools/triggersTestTrigger.js.map +1 -0
  217. package/esm/mcp-server/tools/triggersUpdateTrigger.d.ts +1 -1
  218. package/esm/mcp-server/tools/triggersUpdateTrigger.d.ts.map +1 -1
  219. package/esm/mcp-server/tools/triggersUpdateTrigger.js +2 -3
  220. package/esm/mcp-server/tools/triggersUpdateTrigger.js.map +1 -1
  221. package/esm/mcp-server/tools/uploadMappingsCreateUploadMapping.d.ts +1 -1
  222. package/esm/mcp-server/tools/uploadMappingsCreateUploadMapping.d.ts.map +1 -1
  223. package/esm/mcp-server/tools/uploadMappingsCreateUploadMapping.js +2 -3
  224. package/esm/mcp-server/tools/uploadMappingsCreateUploadMapping.js.map +1 -1
  225. package/esm/mcp-server/tools/uploadMappingsDeleteUploadMapping.d.ts.map +1 -1
  226. package/esm/mcp-server/tools/uploadMappingsDeleteUploadMapping.js +2 -3
  227. package/esm/mcp-server/tools/uploadMappingsDeleteUploadMapping.js.map +1 -1
  228. package/esm/mcp-server/tools/uploadMappingsListUploadMappings.d.ts +1 -1
  229. package/esm/mcp-server/tools/uploadMappingsListUploadMappings.d.ts.map +1 -1
  230. package/esm/mcp-server/tools/uploadMappingsListUploadMappings.js +3 -4
  231. package/esm/mcp-server/tools/uploadMappingsListUploadMappings.js.map +1 -1
  232. package/esm/mcp-server/tools/uploadMappingsUpdateUploadMapping.d.ts +1 -1
  233. package/esm/mcp-server/tools/uploadMappingsUpdateUploadMapping.d.ts.map +1 -1
  234. package/esm/mcp-server/tools/uploadMappingsUpdateUploadMapping.js +2 -3
  235. package/esm/mcp-server/tools/uploadMappingsUpdateUploadMapping.js.map +1 -1
  236. package/esm/mcp-server/tools/uploadPresetsCreateUploadPreset.d.ts +1 -1
  237. package/esm/mcp-server/tools/uploadPresetsCreateUploadPreset.d.ts.map +1 -1
  238. package/esm/mcp-server/tools/uploadPresetsCreateUploadPreset.js +2 -3
  239. package/esm/mcp-server/tools/uploadPresetsCreateUploadPreset.js.map +1 -1
  240. package/esm/mcp-server/tools/uploadPresetsDeleteUploadPreset.d.ts.map +1 -1
  241. package/esm/mcp-server/tools/uploadPresetsDeleteUploadPreset.js +2 -3
  242. package/esm/mcp-server/tools/uploadPresetsDeleteUploadPreset.js.map +1 -1
  243. package/esm/mcp-server/tools/uploadPresetsGetUploadPreset.d.ts.map +1 -1
  244. package/esm/mcp-server/tools/uploadPresetsGetUploadPreset.js +2 -3
  245. package/esm/mcp-server/tools/uploadPresetsGetUploadPreset.js.map +1 -1
  246. package/esm/mcp-server/tools/uploadPresetsListUploadPresets.d.ts +9 -2
  247. package/esm/mcp-server/tools/uploadPresetsListUploadPresets.d.ts.map +1 -1
  248. package/esm/mcp-server/tools/uploadPresetsListUploadPresets.js +2 -3
  249. package/esm/mcp-server/tools/uploadPresetsListUploadPresets.js.map +1 -1
  250. package/esm/mcp-server/tools/uploadPresetsUpdateUploadPreset.d.ts +1 -1
  251. package/esm/mcp-server/tools/uploadPresetsUpdateUploadPreset.d.ts.map +1 -1
  252. package/esm/mcp-server/tools/uploadPresetsUpdateUploadPreset.js +2 -3
  253. package/esm/mcp-server/tools/uploadPresetsUpdateUploadPreset.js.map +1 -1
  254. package/esm/mcp-server/tools.d.ts +17 -7
  255. package/esm/mcp-server/tools.d.ts.map +1 -1
  256. package/esm/mcp-server/tools.js +255 -43
  257. package/esm/mcp-server/tools.js.map +1 -1
  258. package/esm/models/accesscontrolitem.d.ts +14 -3
  259. package/esm/models/accesscontrolitem.d.ts.map +1 -1
  260. package/esm/models/accesscontrolitem.js +6 -1
  261. package/esm/models/accesscontrolitem.js.map +1 -1
  262. package/esm/models/apierror.d.ts +2 -2
  263. package/esm/models/apierror.d.ts.map +1 -1
  264. package/esm/models/apierror.js +2 -4
  265. package/esm/models/apierror.js.map +1 -1
  266. package/esm/models/createrequest.d.ts +1 -1
  267. package/esm/models/createrequest.d.ts.map +1 -1
  268. package/esm/models/createrequest.js.map +1 -1
  269. package/esm/models/createstreamingprofileop.d.ts +3 -3
  270. package/esm/models/createstreamingprofileop.d.ts.map +1 -1
  271. package/esm/models/createstreamingprofileop.js.map +1 -1
  272. package/esm/models/createtransformationop.d.ts +4 -4
  273. package/esm/models/createtransformationop.d.ts.map +1 -1
  274. package/esm/models/createtransformationop.js +1 -2
  275. package/esm/models/createtransformationop.js.map +1 -1
  276. package/esm/models/createtriggerop.d.ts +3 -3
  277. package/esm/models/createtriggerop.d.ts.map +1 -1
  278. package/esm/models/createtriggerop.js +5 -4
  279. package/esm/models/createtriggerop.js.map +1 -1
  280. package/esm/models/createuploadmappingop.d.ts +4 -4
  281. package/esm/models/createuploadmappingop.d.ts.map +1 -1
  282. package/esm/models/createuploadmappingop.js.map +1 -1
  283. package/esm/models/createuploadpresetop.d.ts +3 -3
  284. package/esm/models/createuploadpresetop.d.ts.map +1 -1
  285. package/esm/models/createuploadpresetop.js.map +1 -1
  286. package/esm/models/deletestreamingprofileop.d.ts +4 -4
  287. package/esm/models/deletestreamingprofileop.d.ts.map +1 -1
  288. package/esm/models/deletestreamingprofileop.js.map +1 -1
  289. package/esm/models/deletetransformationop.d.ts +4 -4
  290. package/esm/models/deletetransformationop.d.ts.map +1 -1
  291. package/esm/models/deletetransformationop.js +1 -2
  292. package/esm/models/deletetransformationop.js.map +1 -1
  293. package/esm/models/deletetriggerop.d.ts +4 -4
  294. package/esm/models/deletetriggerop.d.ts.map +1 -1
  295. package/esm/models/deletetriggerop.js +5 -4
  296. package/esm/models/deletetriggerop.js.map +1 -1
  297. package/esm/models/deleteuploadmappingop.d.ts +4 -4
  298. package/esm/models/deleteuploadmappingop.d.ts.map +1 -1
  299. package/esm/models/deleteuploadmappingop.js.map +1 -1
  300. package/esm/models/deleteuploadpresetop.d.ts +4 -4
  301. package/esm/models/deleteuploadpresetop.d.ts.map +1 -1
  302. package/esm/models/deleteuploadpresetop.js.map +1 -1
  303. package/esm/models/errors/sdkvalidationerror.d.ts +1 -1
  304. package/esm/models/errors/sdkvalidationerror.d.ts.map +1 -1
  305. package/esm/models/errors/sdkvalidationerror.js +2 -49
  306. package/esm/models/errors/sdkvalidationerror.js.map +1 -1
  307. package/esm/models/getstreamingprofileop.d.ts +4 -4
  308. package/esm/models/getstreamingprofileop.d.ts.map +1 -1
  309. package/esm/models/getstreamingprofileop.js.map +1 -1
  310. package/esm/models/getstreamingprofilesop.d.ts +4 -4
  311. package/esm/models/getstreamingprofilesop.d.ts.map +1 -1
  312. package/esm/models/getstreamingprofilesop.js.map +1 -1
  313. package/esm/models/gettransformationop.d.ts +3 -3
  314. package/esm/models/gettransformationop.d.ts.map +1 -1
  315. package/esm/models/gettransformationop.js +1 -2
  316. package/esm/models/gettransformationop.js.map +1 -1
  317. package/esm/models/getuploadpresetop.d.ts +3 -3
  318. package/esm/models/getuploadpresetop.d.ts.map +1 -1
  319. package/esm/models/getuploadpresetop.js.map +1 -1
  320. package/esm/models/listresponse.d.ts +1 -1
  321. package/esm/models/listresponse.d.ts.map +1 -1
  322. package/esm/models/listresponse.js.map +1 -1
  323. package/esm/models/listtransformationsop.d.ts +3 -3
  324. package/esm/models/listtransformationsop.d.ts.map +1 -1
  325. package/esm/models/listtransformationsop.js +1 -1
  326. package/esm/models/listtransformationsop.js.map +1 -1
  327. package/esm/models/listtriggerop.d.ts +4 -4
  328. package/esm/models/listtriggerop.d.ts.map +1 -1
  329. package/esm/models/listtriggerop.js +8 -6
  330. package/esm/models/listtriggerop.js.map +1 -1
  331. package/esm/models/listuploadmappingsop.d.ts +5 -5
  332. package/esm/models/listuploadmappingsop.d.ts.map +1 -1
  333. package/esm/models/listuploadmappingsop.js +2 -2
  334. package/esm/models/listuploadmappingsop.js.map +1 -1
  335. package/esm/models/listuploadpresetsop.d.ts +25 -8
  336. package/esm/models/listuploadpresetsop.d.ts.map +1 -1
  337. package/esm/models/listuploadpresetsop.js +9 -0
  338. package/esm/models/listuploadpresetsop.js.map +1 -1
  339. package/esm/models/replaceuploadmappingsop.d.ts +5 -5
  340. package/esm/models/replaceuploadmappingsop.d.ts.map +1 -1
  341. package/esm/models/replaceuploadmappingsop.js +1 -2
  342. package/esm/models/replaceuploadmappingsop.js.map +1 -1
  343. package/esm/models/schemecloudinaryauth.d.ts +1 -1
  344. package/esm/models/schemecloudinaryauth.d.ts.map +1 -1
  345. package/esm/models/schemecloudinaryauth.js +2 -1
  346. package/esm/models/schemecloudinaryauth.js.map +1 -1
  347. package/esm/models/security.d.ts +1 -1
  348. package/esm/models/security.d.ts.map +1 -1
  349. package/esm/models/security.js +1 -2
  350. package/esm/models/security.js.map +1 -1
  351. package/esm/models/streamingprofile.d.ts +2 -2
  352. package/esm/models/streamingprofile.d.ts.map +1 -1
  353. package/esm/models/streamingprofile.js +1 -1
  354. package/esm/models/streamingprofile.js.map +1 -1
  355. package/esm/models/streamingprofilecreate.d.ts +1 -1
  356. package/esm/models/streamingprofilecreate.d.ts.map +1 -1
  357. package/esm/models/streamingprofilecreate.js.map +1 -1
  358. package/esm/models/streamingprofileupdate.d.ts +1 -1
  359. package/esm/models/streamingprofileupdate.d.ts.map +1 -1
  360. package/esm/models/streamingprofileupdate.js.map +1 -1
  361. package/esm/models/testtriggerop.d.ts +32 -0
  362. package/esm/models/testtriggerop.d.ts.map +1 -0
  363. package/esm/models/testtriggerop.js +30 -0
  364. package/esm/models/testtriggerop.js.map +1 -0
  365. package/esm/models/transformationinfo.d.ts +15 -5
  366. package/esm/models/transformationinfo.d.ts.map +1 -1
  367. package/esm/models/transformationinfo.js +20 -6
  368. package/esm/models/transformationinfo.js.map +1 -1
  369. package/esm/models/transformationsummary.d.ts +1 -1
  370. package/esm/models/transformationsummary.d.ts.map +1 -1
  371. package/esm/models/transformationsummary.js.map +1 -1
  372. package/esm/models/triggerinfo.d.ts +1 -1
  373. package/esm/models/triggerinfo.d.ts.map +1 -1
  374. package/esm/models/triggerinfo.js +2 -2
  375. package/esm/models/triggerinfo.js.map +1 -1
  376. package/esm/models/updaterequest.d.ts +1 -1
  377. package/esm/models/updaterequest.d.ts.map +1 -1
  378. package/esm/models/updaterequest.js.map +1 -1
  379. package/esm/models/updatestreamingprofileop.d.ts +4 -4
  380. package/esm/models/updatestreamingprofileop.d.ts.map +1 -1
  381. package/esm/models/updatestreamingprofileop.js.map +1 -1
  382. package/esm/models/updatetransformationop.d.ts +4 -4
  383. package/esm/models/updatetransformationop.d.ts.map +1 -1
  384. package/esm/models/updatetransformationop.js +1 -2
  385. package/esm/models/updatetransformationop.js.map +1 -1
  386. package/esm/models/updatetriggerop.d.ts +5 -5
  387. package/esm/models/updatetriggerop.d.ts.map +1 -1
  388. package/esm/models/updatetriggerop.js +5 -4
  389. package/esm/models/updatetriggerop.js.map +1 -1
  390. package/esm/models/updateuploadmappingop.d.ts +4 -4
  391. package/esm/models/updateuploadmappingop.d.ts.map +1 -1
  392. package/esm/models/updateuploadmappingop.js.map +1 -1
  393. package/esm/models/updateuploadpresetop.d.ts +4 -4
  394. package/esm/models/updateuploadpresetop.d.ts.map +1 -1
  395. package/esm/models/updateuploadpresetop.js.map +1 -1
  396. package/esm/models/uploadmapping.d.ts +1 -1
  397. package/esm/models/uploadmapping.d.ts.map +1 -1
  398. package/esm/models/uploadmapping.js.map +1 -1
  399. package/esm/models/uploadpreset.d.ts +45 -55
  400. package/esm/models/uploadpreset.d.ts.map +1 -1
  401. package/esm/models/uploadpreset.js +29 -101
  402. package/esm/models/uploadpreset.js.map +1 -1
  403. package/esm/models/uritype.d.ts +10 -2
  404. package/esm/models/uritype.d.ts.map +1 -1
  405. package/esm/models/uritype.js +4 -0
  406. package/esm/models/uritype.js.map +1 -1
  407. package/esm/tool-names.d.ts +5 -0
  408. package/esm/tool-names.d.ts.map +1 -0
  409. package/{manifest.json → esm/tool-names.js} +54 -124
  410. package/esm/tool-names.js.map +1 -0
  411. package/esm/types/bigint.d.ts +6 -0
  412. package/esm/types/bigint.d.ts.map +1 -0
  413. package/esm/types/bigint.js +87 -0
  414. package/esm/types/bigint.js.map +1 -0
  415. package/package.json +12 -4
  416. package/src/funcs/streamingProfilesCreateStreamingProfile.ts +7 -29
  417. package/src/funcs/streamingProfilesDeleteStreamingProfile.ts +7 -27
  418. package/src/funcs/streamingProfilesGetStreamingProfile.ts +7 -27
  419. package/src/funcs/streamingProfilesGetStreamingProfiles.ts +8 -28
  420. package/src/funcs/streamingProfilesUpdateStreamingProfile.ts +7 -27
  421. package/src/funcs/transformationsCreateTransformation.ts +7 -27
  422. package/src/funcs/transformationsDeleteTransformation.ts +7 -27
  423. package/src/funcs/transformationsGetTransformation.ts +7 -29
  424. package/src/funcs/transformationsListTransformations.ts +7 -29
  425. package/src/funcs/transformationsUpdateTransformation.ts +7 -27
  426. package/src/funcs/triggersCreateTrigger.ts +7 -27
  427. package/src/funcs/triggersDeleteTrigger.ts +7 -27
  428. package/src/funcs/triggersListTrigger.ts +7 -25
  429. package/src/funcs/triggersTestTrigger.ts +167 -0
  430. package/src/funcs/triggersUpdateTrigger.ts +7 -27
  431. package/src/funcs/uploadMappingsCreateUploadMapping.ts +7 -27
  432. package/src/funcs/uploadMappingsDeleteUploadMapping.ts +7 -27
  433. package/src/funcs/uploadMappingsListUploadMappings.ts +7 -27
  434. package/src/funcs/uploadMappingsReplaceUploadMappings.ts +7 -27
  435. package/src/funcs/uploadMappingsUpdateUploadMapping.ts +7 -27
  436. package/src/funcs/uploadPresetsCreateUploadPreset.ts +7 -29
  437. package/src/funcs/uploadPresetsDeleteUploadPreset.ts +7 -27
  438. package/src/funcs/uploadPresetsGetUploadPreset.ts +7 -27
  439. package/src/funcs/uploadPresetsListUploadPresets.ts +7 -27
  440. package/src/funcs/uploadPresetsUpdateUploadPreset.ts +7 -27
  441. package/src/hooks/oauth2scopes.ts +1 -1
  442. package/src/landing-page.ts +1075 -0
  443. package/src/lib/base64.ts +2 -2
  444. package/src/lib/config.ts +11 -4
  445. package/src/lib/encodings.ts +8 -0
  446. package/src/lib/env.ts +1 -1
  447. package/src/lib/schemas.ts +10 -22
  448. package/src/lib/sdks.ts +2 -2
  449. package/src/lib/security.ts +7 -4
  450. package/src/mcp-server/cli/serve/command.ts +147 -0
  451. package/src/mcp-server/cli/serve/impl.ts +114 -0
  452. package/src/mcp-server/cli/start/command.ts +7 -0
  453. package/src/mcp-server/cli/start/impl.ts +113 -47
  454. package/src/mcp-server/extensions.ts +6 -4
  455. package/src/mcp-server/flags.ts +24 -0
  456. package/src/mcp-server/mcp-server.ts +3 -1
  457. package/src/mcp-server/prompts.ts +9 -19
  458. package/src/mcp-server/resources.ts +9 -44
  459. package/src/mcp-server/server.ts +12 -4
  460. package/src/mcp-server/tools/streamingProfilesCreateStreamingProfile.ts +2 -4
  461. package/src/mcp-server/tools/streamingProfilesDeleteStreamingProfile.ts +2 -4
  462. package/src/mcp-server/tools/streamingProfilesGetStreamingProfile.ts +2 -4
  463. package/src/mcp-server/tools/streamingProfilesGetStreamingProfiles.ts +2 -4
  464. package/src/mcp-server/tools/streamingProfilesUpdateStreamingProfile.ts +2 -4
  465. package/src/mcp-server/tools/transformationsCreateTransformation.ts +3 -6
  466. package/src/mcp-server/tools/transformationsDeleteTransformation.ts +3 -6
  467. package/src/mcp-server/tools/transformationsGetTransformation.ts +3 -6
  468. package/src/mcp-server/tools/transformationsListTransformations.ts +3 -5
  469. package/src/mcp-server/tools/transformationsUpdateTransformation.ts +3 -6
  470. package/src/mcp-server/tools/triggersCreateTrigger.ts +2 -4
  471. package/src/mcp-server/tools/triggersDeleteTrigger.ts +2 -4
  472. package/src/mcp-server/tools/triggersListTrigger.ts +2 -4
  473. package/src/mcp-server/tools/triggersTestTrigger.ts +48 -0
  474. package/src/mcp-server/tools/triggersUpdateTrigger.ts +2 -4
  475. package/src/mcp-server/tools/uploadMappingsCreateUploadMapping.ts +2 -4
  476. package/src/mcp-server/tools/uploadMappingsDeleteUploadMapping.ts +2 -4
  477. package/src/mcp-server/tools/uploadMappingsListUploadMappings.ts +3 -5
  478. package/src/mcp-server/tools/uploadMappingsUpdateUploadMapping.ts +2 -4
  479. package/src/mcp-server/tools/uploadPresetsCreateUploadPreset.ts +2 -4
  480. package/src/mcp-server/tools/uploadPresetsDeleteUploadPreset.ts +2 -4
  481. package/src/mcp-server/tools/uploadPresetsGetUploadPreset.ts +2 -4
  482. package/src/mcp-server/tools/uploadPresetsListUploadPresets.ts +2 -4
  483. package/src/mcp-server/tools/uploadPresetsUpdateUploadPreset.ts +2 -4
  484. package/src/mcp-server/tools.ts +401 -92
  485. package/src/models/accesscontrolitem.ts +19 -14
  486. package/src/models/apierror.ts +6 -8
  487. package/src/models/createrequest.ts +1 -5
  488. package/src/models/createstreamingprofileop.ts +3 -9
  489. package/src/models/createtransformationop.ts +5 -14
  490. package/src/models/createtriggerop.ts +16 -24
  491. package/src/models/createuploadmappingop.ts +4 -12
  492. package/src/models/createuploadpresetop.ts +3 -9
  493. package/src/models/deletestreamingprofileop.ts +4 -12
  494. package/src/models/deletetransformationop.ts +5 -14
  495. package/src/models/deletetriggerop.ts +16 -26
  496. package/src/models/deleteuploadmappingop.ts +4 -12
  497. package/src/models/deleteuploadpresetop.ts +4 -12
  498. package/src/models/errors/sdkvalidationerror.ts +2 -57
  499. package/src/models/getstreamingprofileop.ts +4 -12
  500. package/src/models/getstreamingprofilesop.ts +4 -12
  501. package/src/models/gettransformationop.ts +4 -11
  502. package/src/models/getuploadpresetop.ts +3 -9
  503. package/src/models/listresponse.ts +1 -5
  504. package/src/models/listtransformationsop.ts +4 -10
  505. package/src/models/listtriggerop.ts +19 -29
  506. package/src/models/listuploadmappingsop.ts +7 -19
  507. package/src/models/listuploadpresetsop.ts +17 -15
  508. package/src/models/replaceuploadmappingsop.ts +8 -17
  509. package/src/models/schemecloudinaryauth.ts +5 -8
  510. package/src/models/security.ts +6 -7
  511. package/src/models/streamingprofile.ts +11 -17
  512. package/src/models/streamingprofilecreate.ts +1 -3
  513. package/src/models/streamingprofileupdate.ts +1 -3
  514. package/src/models/testtriggerop.ts +67 -0
  515. package/src/models/transformationinfo.ts +55 -29
  516. package/src/models/transformationsummary.ts +7 -10
  517. package/src/models/triggerinfo.ts +3 -7
  518. package/src/models/updaterequest.ts +1 -5
  519. package/src/models/updatestreamingprofileop.ts +4 -12
  520. package/src/models/updatetransformationop.ts +5 -14
  521. package/src/models/updatetriggerop.ts +18 -30
  522. package/src/models/updateuploadmappingop.ts +4 -12
  523. package/src/models/updateuploadpresetop.ts +4 -12
  524. package/src/models/uploadmapping.ts +1 -5
  525. package/src/models/uploadpreset.ts +61 -162
  526. package/src/models/uritype.ts +7 -2
  527. package/src/tool-names.ts +99 -0
  528. package/src/types/bigint.ts +87 -0
  529. package/esm/lib/matchers.d.ts +0 -66
  530. package/esm/lib/matchers.d.ts.map +0 -1
  531. package/esm/lib/matchers.js +0 -212
  532. package/esm/lib/matchers.js.map +0 -1
  533. package/src/lib/matchers.ts +0 -354
  534. package/tsconfig.json +0 -35
@@ -3,109 +3,85 @@
3
3
  */
4
4
 
5
5
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import {
7
+ ShapeOutput,
8
+ ZodRawShapeCompat,
9
+ } from "@modelcontextprotocol/sdk/server/zod-compat.js";
6
10
  import { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js";
7
11
  import {
8
12
  CallToolResult,
9
13
  ServerNotification,
10
14
  ServerRequest,
11
15
  } from "@modelcontextprotocol/sdk/types.js";
12
- import { objectOutputType, ZodRawShape, ZodTypeAny } from "zod";
16
+ import * as z from "zod";
13
17
  import { CloudinaryEnvConfigCore } from "../core.js";
18
+ import { ServerRegion$zodSchema } from "../lib/config.js";
14
19
  import { ConsoleLogger } from "./console-logger.js";
15
- import { MCPScope } from "./scopes.js";
16
- import { isAsyncIterable, isBinaryData, valueToBase64 } from "./shared.js";
17
-
18
- export type ToolDefinition<Args extends undefined | ZodRawShape = undefined> =
19
- Args extends ZodRawShape ? {
20
- name: string;
21
- description: string;
22
- scopes?: MCPScope[];
23
- args: Args;
24
- annotations: {
25
- title: string;
26
- destructiveHint: boolean;
27
- idempotentHint: boolean;
28
- openWorldHint: boolean;
29
- readOnlyHint: boolean;
30
- };
31
- tool: (
32
- client: CloudinaryEnvConfigCore,
33
- args: objectOutputType<Args, ZodTypeAny>,
34
- extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
35
- ) => CallToolResult | Promise<CallToolResult>;
36
- }
37
- : {
38
- name: string;
39
- description: string;
40
- scopes?: MCPScope[];
41
- args?: undefined;
42
- annotations: {
43
- title: string;
44
- destructiveHint: boolean;
45
- idempotentHint: boolean;
46
- openWorldHint: boolean;
47
- readOnlyHint: boolean;
48
- };
49
- tool: (
50
- client: CloudinaryEnvConfigCore,
51
- extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
52
- ) => CallToolResult | Promise<CallToolResult>;
20
+ import { MCPServerFlags } from "./flags.js";
21
+ import { MCPScope, mcpScopes } from "./scopes.js";
22
+ import { valueToBase64 } from "./shared.js";
23
+
24
+ export type ToolDefinition<
25
+ Args extends undefined | ZodRawShapeCompat = undefined,
26
+ > = Args extends ZodRawShapeCompat ? {
27
+ name: string;
28
+ description: string;
29
+ scopes?: MCPScope[];
30
+ args: Args;
31
+ annotations: {
32
+ title: string;
33
+ destructiveHint: boolean;
34
+ idempotentHint: boolean;
35
+ openWorldHint: boolean;
36
+ readOnlyHint: boolean;
53
37
  };
38
+ tool: (
39
+ client: CloudinaryEnvConfigCore,
40
+ args: ShapeOutput<Args>,
41
+ extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
42
+ ) => CallToolResult | Promise<CallToolResult>;
43
+ }
44
+ : {
45
+ name: string;
46
+ description: string;
47
+ scopes?: MCPScope[];
48
+ args?: undefined;
49
+ annotations: {
50
+ title: string;
51
+ destructiveHint: boolean;
52
+ idempotentHint: boolean;
53
+ openWorldHint: boolean;
54
+ readOnlyHint: boolean;
55
+ };
56
+ tool: (
57
+ client: CloudinaryEnvConfigCore,
58
+ extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
59
+ ) => CallToolResult | Promise<CallToolResult>;
60
+ };
54
61
 
55
62
  // Optional function to assist with formatting tool results
56
63
  export async function formatResult(
57
- value: unknown,
58
- init: { response?: Response | undefined },
64
+ response: Response,
59
65
  ): Promise<CallToolResult> {
60
- if (typeof value === "undefined") {
61
- return { content: [] };
62
- }
63
-
64
- const { response } = init;
65
- const contentType = response?.headers.get("content-type") ?? "";
66
66
  let content: CallToolResult["content"] = [];
67
+ const contentType = response?.headers.get("content-type") ?? "";
67
68
 
68
- if (contentType.search(/\bjson\b/g)) {
69
- content = [{ type: "text", text: JSON.stringify(value) }];
70
- } else if (
71
- contentType.startsWith("text/event-stream")
72
- && isAsyncIterable(value)
73
- ) {
74
- content = await consumeSSE(value);
75
- } else if (contentType.startsWith("text/") && typeof value === "string") {
76
- content = [{ type: "text", text: value }];
77
- } else if (isBinaryData(value) && contentType.startsWith("image/")) {
78
- const data = await valueToBase64(value);
69
+ if (contentType.startsWith("image/")) {
70
+ const data = await valueToBase64(await response.arrayBuffer());
79
71
  content = data == null
80
72
  ? []
81
73
  : [{ type: "image", data, mimeType: contentType }];
74
+ } else if (contentType.startsWith("audio/")) {
75
+ const data = await valueToBase64(await response.arrayBuffer());
76
+ content = data == null
77
+ ? []
78
+ : [{ type: "audio", data, mimeType: contentType }];
82
79
  } else {
83
- return {
84
- content: [{
85
- type: "text",
86
- text: `Unsupported content type: "${contentType}"`,
87
- }],
88
- isError: true,
89
- };
90
- }
91
-
92
- return { content };
93
- }
94
-
95
- async function consumeSSE(
96
- value: AsyncIterable<unknown>,
97
- ): Promise<CallToolResult["content"]> {
98
- const content: CallToolResult["content"] = [];
99
-
100
- for await (const chunk of value) {
101
- if (typeof chunk === "string") {
102
- content.push({ type: "text", text: chunk });
103
- } else {
104
- content.push({ type: "text", text: JSON.stringify(chunk) });
105
- }
80
+ const text = await response.text();
81
+ content = [{ type: "text", text }];
106
82
  }
107
83
 
108
- return content;
84
+ return response.ok ? { content } : { content, isError: true };
109
85
  }
110
86
 
111
87
  export function createRegisterTool(
@@ -114,8 +90,20 @@ export function createRegisterTool(
114
90
  getSDK: () => CloudinaryEnvConfigCore,
115
91
  allowedScopes: Set<MCPScope>,
116
92
  allowedTools?: Set<string>,
117
- ): <A extends ZodRawShape | undefined>(tool: ToolDefinition<A>) => void {
118
- return <A extends ZodRawShape | undefined>(tool: ToolDefinition<A>): void => {
93
+ dynamic?: boolean,
94
+ ): [
95
+ <A extends ZodRawShapeCompat | undefined>(tool: ToolDefinition<A>) => void,
96
+ Array<{ name: string; description: string }>,
97
+ Map<string, ToolDefinition<ZodRawShapeCompat | undefined>>,
98
+ ] {
99
+ const tools: Array<{ name: string; description: string }> = [];
100
+ const toolMap = new Map<
101
+ string,
102
+ ToolDefinition<ZodRawShapeCompat | undefined>
103
+ >();
104
+ const registerTool = <A extends ZodRawShapeCompat | undefined>(
105
+ tool: ToolDefinition<A>,
106
+ ): void => {
119
107
  if (allowedTools && !allowedTools.has(tool.name)) {
120
108
  return;
121
109
  }
@@ -132,27 +120,348 @@ export function createRegisterTool(
132
120
  return;
133
121
  }
134
122
 
123
+ toolMap.set(
124
+ tool.name,
125
+ tool as ToolDefinition<ZodRawShapeCompat | undefined>,
126
+ );
127
+
128
+ if (dynamic) {
129
+ logger.debug("Collected tool for dynamic mode", { name: tool.name });
130
+ tools.push({ name: tool.name, description: tool.description });
131
+ return;
132
+ }
133
+
135
134
  if (tool.args) {
136
- server.tool(
135
+ server.registerTool(
137
136
  tool.name,
138
- tool.description,
139
- tool.args,
140
- tool.annotations,
137
+ {
138
+ description: tool.description,
139
+ inputSchema: tool.args,
140
+ annotations: tool.annotations,
141
+ },
141
142
  async (args, ctx) => {
142
143
  return tool.tool(getSDK(), args, ctx);
143
144
  },
144
145
  );
145
146
  } else {
146
- server.tool(
147
+ server.registerTool(
147
148
  tool.name,
148
- tool.description,
149
- tool.annotations,
150
- async (_, ctx) => {
149
+ {
150
+ description: tool.description,
151
+ annotations: tool.annotations,
152
+ },
153
+ async (ctx) => {
151
154
  return tool.tool(getSDK(), ctx);
152
155
  },
153
156
  );
154
157
  }
155
158
 
156
159
  logger.debug("Registered tool", { name: tool.name });
160
+ tools.push({ name: tool.name, description: tool.description });
161
+ };
162
+
163
+ return [registerTool, tools, toolMap];
164
+ }
165
+
166
+ function matchesSearchTerms(
167
+ terms: string[],
168
+ name: string,
169
+ def: ToolDefinition<ZodRawShapeCompat | undefined>,
170
+ ): boolean {
171
+ if (terms.length === 0) {
172
+ return true;
173
+ }
174
+
175
+ const nameLower = name.toLowerCase();
176
+ const descLower = def.description.toLowerCase();
177
+ const scopesLower = def.scopes?.flatMap((s: unknown) => {
178
+ return typeof s === "string" ? [s.toLowerCase()] : [];
179
+ }) || [];
180
+
181
+ return terms.some((term) =>
182
+ nameLower.includes(term)
183
+ || descLower.includes(term)
184
+ || scopesLower.some((s) => s.includes(term))
185
+ );
186
+ }
187
+
188
+ export function registerDynamicTools(
189
+ logger: ConsoleLogger,
190
+ server: McpServer,
191
+ getSDK: () => CloudinaryEnvConfigCore,
192
+ toolMap: Map<string, ToolDefinition<ZodRawShapeCompat | undefined>>,
193
+ allowedScopes: Set<MCPScope>,
194
+ ): void {
195
+ // 1. list_tools
196
+ server.registerTool("list_tools", {
197
+ description:
198
+ "List available tools. Optionally filter by search terms that match against tool name, description, and scopes.",
199
+ inputSchema: {
200
+ search_terms: z.array(z.string()).optional().describe(
201
+ [
202
+ "Filter the list of tools.",
203
+ "Each term is matched case-insensitively as a substring against tool name, description, and scopes.",
204
+ "Multiple terms are combined with a logical OR: a tool is included if ANY term matches ANY field.",
205
+ "If not provided, all tools are returned.",
206
+ ].join("\n"),
207
+ ),
208
+ },
209
+ annotations: {
210
+ title: "List Tools",
211
+ readOnlyHint: true,
212
+ destructiveHint: false,
213
+ idempotentHint: true,
214
+ openWorldHint: false,
215
+ },
216
+ }, async (args) => {
217
+ const terms = (args.search_terms ?? []).map((t) => t.toLowerCase());
218
+
219
+ const tools: Array<
220
+ { name: string; description: string; scopes?: MCPScope[] | undefined }
221
+ > = [];
222
+ for (const [name, def] of toolMap) {
223
+ if (!matchesSearchTerms(terms, name, def)) {
224
+ continue;
225
+ }
226
+
227
+ tools.push({
228
+ name: name,
229
+ description: def.description,
230
+ scopes: def.scopes,
231
+ });
232
+ }
233
+ return {
234
+ content: [{ type: "text", text: JSON.stringify(tools, null, 2) }],
235
+ };
236
+ });
237
+ logger.debug("Registered dynamic meta-tool", { name: "list_tools" });
238
+
239
+ // 2. describe_tool
240
+ server.registerTool("describe_tool_input", {
241
+ description:
242
+ "Get the input schema for one or more tools. It is a good idea to call this tool first to understand how to successfully call execute_tool.",
243
+ inputSchema: {
244
+ tool_names: z.array(z.string()).describe(
245
+ "The names of the tools to describe",
246
+ ),
247
+ },
248
+ annotations: {
249
+ title: "Describe Tool",
250
+ readOnlyHint: true,
251
+ destructiveHint: false,
252
+ idempotentHint: true,
253
+ openWorldHint: false,
254
+ },
255
+ }, async (args) => {
256
+ const parts: string[] = [];
257
+ const unknown: string[] = [];
258
+
259
+ if (args.tool_names.length === 0) {
260
+ return { content: [{ type: "text", text: "No tool names provided." }] };
261
+ }
262
+
263
+ for (const toolName of args.tool_names) {
264
+ const def = toolMap.get(toolName);
265
+ if (!def) {
266
+ unknown.push(toolName);
267
+ continue;
268
+ }
269
+
270
+ let schemaText = `<input_schema tool="${toolName}">\n\n`;
271
+ if (def.args) {
272
+ const jsonSchema = z.toJSONSchema(z.object(def.args), {
273
+ target: "draft-2020-12",
274
+ });
275
+ schemaText += JSON.stringify(jsonSchema, null, 2);
276
+ } else {
277
+ schemaText += "This tool takes no input parameters.";
278
+ }
279
+ schemaText += `\n\n</input_schema>`;
280
+ parts.push(schemaText);
281
+ }
282
+
283
+ if (unknown.length > 0) {
284
+ parts.push(`Unknown tools: ${unknown.join(", ")}`);
285
+ }
286
+
287
+ return { content: [{ type: "text", text: parts.join("\n\n") }] };
288
+ });
289
+ logger.debug("Registered dynamic meta-tool", { name: "describe_tool" });
290
+
291
+ // 3. execute_tool
292
+ server.registerTool("execute_tool", {
293
+ description:
294
+ "Execute a tool by name with the provided input parameters. If executing a given tool for the first time, it is recommended to call describe_tool_input first to understand the expected input schema.",
295
+ inputSchema: {
296
+ tool_name: z.string().describe("The name of the tool to execute"),
297
+ input: z.record(z.string(), z.unknown()).optional().describe(
298
+ "Input parameters for the tool as a JSON object",
299
+ ),
300
+ },
301
+ annotations: {
302
+ title: "Execute Tool",
303
+ readOnlyHint: false,
304
+ destructiveHint: true,
305
+ idempotentHint: false,
306
+ openWorldHint: true,
307
+ },
308
+ }, async (args, ctx) => {
309
+ const def = toolMap.get(args.tool_name);
310
+ if (!def) {
311
+ return {
312
+ content: [{ type: "text", text: `Unknown tool: ${args.tool_name}` }],
313
+ isError: true,
314
+ };
315
+ }
316
+
317
+ let validatedInput: Record<string, unknown> = {};
318
+ if (def.args) {
319
+ const vres = z.object(def.args).safeParse(args.input ?? {});
320
+ if (vres.success) {
321
+ validatedInput = vres.data;
322
+ } else {
323
+ const issues = z.prettifyError(vres.error);
324
+
325
+ return {
326
+ content: [{
327
+ type: "text",
328
+ text:
329
+ `Invalid input for tool ${args.tool_name}:\n<issues>\n${issues}\n</issues>`,
330
+ }],
331
+ isError: true,
332
+ };
333
+ }
334
+ }
335
+
336
+ try {
337
+ if (def.args) {
338
+ return await def.tool(getSDK(), validatedInput, ctx);
339
+ } else {
340
+ return await def.tool(getSDK(), ctx);
341
+ }
342
+ } catch (error) {
343
+ const message = error instanceof Error ? error.message : String(error);
344
+ return {
345
+ content: [{
346
+ type: "text",
347
+ text: `Error executing tool ${args.tool_name}: ${message}`,
348
+ }],
349
+ isError: true,
350
+ };
351
+ }
352
+ });
353
+ logger.debug("Registered dynamic meta-tool", { name: "execute_tool" });
354
+
355
+ // 4. list_scopes (only when the server has scopes defined)
356
+ if (mcpScopes.length > 0) {
357
+ const scopes = allowedScopes.size > 0
358
+ ? [...allowedScopes].sort()
359
+ : [...mcpScopes];
360
+
361
+ server.registerTool("list_scopes", {
362
+ description: [
363
+ "List the scopes available on this server.",
364
+ "Scopes are categories that group related tools together.",
365
+ "They can be used as search terms when filtering the list of tools.",
366
+ ].join("\n"),
367
+ annotations: {
368
+ title: "List Scopes",
369
+ readOnlyHint: true,
370
+ destructiveHint: false,
371
+ idempotentHint: true,
372
+ openWorldHint: false,
373
+ },
374
+ }, async () => {
375
+ const lines = scopes.map((s) => `- ${s}`);
376
+ return { content: [{ type: "text", text: lines.join("\n") }] };
377
+ });
378
+ logger.debug("Registered dynamic meta-tool", { name: "list_scopes" });
379
+ }
380
+ }
381
+ function resolveHeader<T>(
382
+ headers: Headers,
383
+ headerName: string,
384
+ schema: z.ZodType<T>,
385
+ cliFlagValue: T | undefined,
386
+ disableStaticAuth: boolean,
387
+ ): T | undefined {
388
+ const val = headers.get(headerName);
389
+ if (val != null) {
390
+ return schema.parse(val);
391
+ }
392
+ return disableStaticAuth ? undefined : schema.parse(cliFlagValue);
393
+ }
394
+
395
+ export function buildSDK(
396
+ headers: Headers,
397
+ cliFlags: MCPServerFlags,
398
+ disableStaticAuth: boolean,
399
+ logger: { level: string },
400
+ ) {
401
+ const flags = {
402
+ ...cliFlags,
403
+ "api-key": resolveHeader(
404
+ headers,
405
+ "api-key",
406
+ z.string(),
407
+ cliFlags["api-key"],
408
+ disableStaticAuth,
409
+ ),
410
+ "api-secret": resolveHeader(
411
+ headers,
412
+ "api-secret",
413
+ z.string(),
414
+ cliFlags["api-secret"],
415
+ disableStaticAuth,
416
+ ),
417
+ "oauth2": resolveHeader(
418
+ headers,
419
+ "oauth2",
420
+ z.string(),
421
+ cliFlags["oauth2"],
422
+ disableStaticAuth,
423
+ ),
157
424
  };
425
+
426
+ return new CloudinaryEnvConfigCore({
427
+ security: {
428
+ cloudinaryAuth: flags["api-key"] != null && flags["api-secret"] != null
429
+ ? {
430
+ api_key: flags["api-key"] ?? "",
431
+ api_secret: flags["api-secret"] ?? "",
432
+ }
433
+ : void 0,
434
+ oauth2: flags.oauth2 ?? "",
435
+ },
436
+ serverURL: cliFlags["server-url"],
437
+ cloud_name: resolveHeader(
438
+ headers,
439
+ "cloud-name",
440
+ z.string(),
441
+ cliFlags["cloud-name"],
442
+ disableStaticAuth,
443
+ ),
444
+ serverIdx: cliFlags["server-index"],
445
+ region: resolveHeader(
446
+ headers,
447
+ "region",
448
+ ServerRegion$zodSchema,
449
+ cliFlags.region,
450
+ disableStaticAuth,
451
+ ),
452
+ host: resolveHeader(
453
+ headers,
454
+ "api-host",
455
+ z.string(),
456
+ cliFlags["api-host"],
457
+ disableStaticAuth,
458
+ ),
459
+ debugLogger: logger.level === "debug"
460
+ ? {
461
+ log: (...args) => console.log(...args),
462
+ group: (...args) => console.group(...args),
463
+ groupEnd: (...args) => console.groupEnd(...args),
464
+ }
465
+ : undefined,
466
+ });
158
467
  }
@@ -3,17 +3,25 @@
3
3
  */
4
4
 
5
5
  import * as z from "zod";
6
+ import { ClosedEnum } from "../types/enums.js";
6
7
 
7
8
  /**
8
9
  * The type of access control to apply to the asset.
9
10
  */
11
+ export const AccessType = {
12
+ Token: "token",
13
+ Anonymous: "anonymous",
14
+ } as const;
15
+ /**
16
+ * The type of access control to apply to the asset.
17
+ */
18
+ export type AccessType = ClosedEnum<typeof AccessType>;
19
+
10
20
  export const AccessType$zodSchema = z.enum([
11
21
  "token",
12
22
  "anonymous",
13
23
  ]).describe("The type of access control to apply to the asset.");
14
24
 
15
- export type AccessType = z.infer<typeof AccessType$zodSchema>;
16
-
17
25
  /**
18
26
  * Access control rule that defines when and how the asset can be accessed.
19
27
  */
@@ -24,15 +32,12 @@ export type AccessControlItem = {
24
32
  end?: string | undefined;
25
33
  };
26
34
 
27
- export const AccessControlItem$zodSchema: z.ZodType<
28
- AccessControlItem,
29
- z.ZodTypeDef,
30
- unknown
31
- > = z.object({
32
- access_type: AccessType$zodSchema,
33
- end: z.string().optional(),
34
- key: z.string().optional(),
35
- start: z.string().optional(),
36
- }).describe(
37
- "Access control rule that defines when and how the asset can be accessed.",
38
- );
35
+ export const AccessControlItem$zodSchema: z.ZodType<AccessControlItem> = z
36
+ .object({
37
+ access_type: AccessType$zodSchema,
38
+ end: z.string().optional(),
39
+ key: z.string().optional(),
40
+ start: z.string().optional(),
41
+ }).describe(
42
+ "Access control rule that defines when and how the asset can be accessed.",
43
+ );
@@ -6,14 +6,12 @@ import * as z from "zod";
6
6
 
7
7
  export type ErrorT = { message: string };
8
8
 
9
- export const ErrorT$zodSchema: z.ZodType<ErrorT, z.ZodTypeDef, unknown> = z
10
- .object({
11
- message: z.string(),
12
- });
9
+ export const ErrorT$zodSchema: z.ZodType<ErrorT> = z.object({
10
+ message: z.string(),
11
+ });
13
12
 
14
13
  export type ApiError = { error: ErrorT };
15
14
 
16
- export const ApiError$zodSchema: z.ZodType<ApiError, z.ZodTypeDef, unknown> = z
17
- .object({
18
- error: z.lazy(() => ErrorT$zodSchema),
19
- });
15
+ export const ApiError$zodSchema: z.ZodType<ApiError> = z.object({
16
+ error: z.lazy(() => ErrorT$zodSchema),
17
+ });
@@ -9,11 +9,7 @@ export type CreateRequest = {
9
9
  allowed_for_strict?: boolean | undefined;
10
10
  };
11
11
 
12
- export const CreateRequest$zodSchema: z.ZodType<
13
- CreateRequest,
14
- z.ZodTypeDef,
15
- unknown
16
- > = z.object({
12
+ export const CreateRequest$zodSchema: z.ZodType<CreateRequest> = z.object({
17
13
  allowed_for_strict: z.boolean().optional(),
18
14
  transformation: z.string(),
19
15
  });
@@ -12,9 +12,7 @@ import {
12
12
  export type CreateStreamingProfileGlobals = { cloud_name?: string | undefined };
13
13
 
14
14
  export const CreateStreamingProfileGlobals$zodSchema: z.ZodType<
15
- CreateStreamingProfileGlobals,
16
- z.ZodTypeDef,
17
- unknown
15
+ CreateStreamingProfileGlobals
18
16
  > = z.object({
19
17
  cloud_name: z.string().describe("The cloud name of your product environment.")
20
18
  .optional(),
@@ -26,9 +24,7 @@ export const CreateStreamingProfileGlobals$zodSchema: z.ZodType<
26
24
  export type CreateStreamingProfileResponseBody = { data: StreamingProfile };
27
25
 
28
26
  export const CreateStreamingProfileResponseBody$zodSchema: z.ZodType<
29
- CreateStreamingProfileResponseBody,
30
- z.ZodTypeDef,
31
- unknown
27
+ CreateStreamingProfileResponseBody
32
28
  > = z.object({
33
29
  data: StreamingProfile$zodSchema,
34
30
  }).describe("Streaming profile created");
@@ -38,9 +34,7 @@ export type CreateStreamingProfileResponse =
38
34
  | ApiError;
39
35
 
40
36
  export const CreateStreamingProfileResponse$zodSchema: z.ZodType<
41
- CreateStreamingProfileResponse,
42
- z.ZodTypeDef,
43
- unknown
37
+ CreateStreamingProfileResponse
44
38
  > = z.union([
45
39
  z.lazy(() => CreateStreamingProfileResponseBody$zodSchema),
46
40
  ApiError$zodSchema,