mcp-creatio 0.4.1 → 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 (310) hide show
  1. package/README.md +265 -212
  2. package/dist/cli.js +3 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config-builder.d.ts.map +1 -1
  5. package/dist/config-builder.js +13 -1
  6. package/dist/config-builder.js.map +1 -1
  7. package/dist/creatio/auth/auth.d.ts +16 -2
  8. package/dist/creatio/auth/auth.d.ts.map +1 -1
  9. package/dist/creatio/auth/auth.js +9 -0
  10. package/dist/creatio/auth/auth.js.map +1 -1
  11. package/dist/creatio/auth/index.d.ts +2 -1
  12. package/dist/creatio/auth/index.d.ts.map +1 -1
  13. package/dist/creatio/auth/index.js +4 -1
  14. package/dist/creatio/auth/index.js.map +1 -1
  15. package/dist/creatio/auth/providers/base-provider.d.ts +2 -5
  16. package/dist/creatio/auth/providers/base-provider.d.ts.map +1 -1
  17. package/dist/creatio/auth/providers/base-provider.js +0 -15
  18. package/dist/creatio/auth/providers/base-provider.js.map +1 -1
  19. package/dist/creatio/auth/providers/oauth2-code-provider.js +3 -3
  20. package/dist/creatio/client-config.d.ts +8 -0
  21. package/dist/creatio/client-config.d.ts.map +1 -1
  22. package/dist/creatio/{providers → contracts}/admin-operation-provider.d.ts.map +1 -1
  23. package/dist/creatio/contracts/admin-operation-provider.js.map +1 -0
  24. package/dist/creatio/{providers → contracts}/configuration-provider.d.ts +3 -2
  25. package/dist/creatio/contracts/configuration-provider.d.ts.map +1 -0
  26. package/dist/creatio/contracts/configuration-provider.js.map +1 -0
  27. package/dist/creatio/contracts/crud-provider.d.ts +52 -0
  28. package/dist/creatio/contracts/crud-provider.d.ts.map +1 -0
  29. package/dist/creatio/contracts/crud-provider.js.map +1 -0
  30. package/dist/creatio/{providers → contracts}/feature-provider.d.ts.map +1 -1
  31. package/dist/creatio/contracts/feature-provider.js.map +1 -0
  32. package/dist/creatio/{providers → contracts}/index.d.ts +1 -0
  33. package/dist/creatio/contracts/index.d.ts.map +1 -0
  34. package/dist/creatio/{providers → contracts}/index.js +1 -0
  35. package/dist/creatio/{providers → contracts}/index.js.map +1 -1
  36. package/dist/creatio/{providers → contracts}/process-provider.d.ts.map +1 -1
  37. package/dist/creatio/contracts/process-provider.js.map +1 -0
  38. package/dist/creatio/contracts/query.d.ts +69 -0
  39. package/dist/creatio/contracts/query.d.ts.map +1 -0
  40. package/dist/creatio/contracts/query.js +10 -0
  41. package/dist/creatio/contracts/query.js.map +1 -0
  42. package/dist/creatio/{providers → contracts}/sys-settings-provider.d.ts.map +1 -1
  43. package/dist/creatio/contracts/sys-settings-provider.js.map +1 -0
  44. package/dist/creatio/{providers → contracts}/user-provider.d.ts.map +1 -1
  45. package/dist/creatio/contracts/user-provider.js.map +1 -0
  46. package/dist/creatio/engines/{admin-operation/admin-operation-engine.d.ts → admin-operation-engine.d.ts} +4 -4
  47. package/dist/creatio/engines/admin-operation-engine.d.ts.map +1 -0
  48. package/dist/creatio/engines/admin-operation-engine.js +29 -0
  49. package/dist/creatio/engines/admin-operation-engine.js.map +1 -0
  50. package/dist/creatio/engines/configuration-engine.d.ts +10 -0
  51. package/dist/creatio/engines/configuration-engine.d.ts.map +1 -0
  52. package/dist/creatio/engines/configuration-engine.js +23 -0
  53. package/dist/creatio/engines/configuration-engine.js.map +1 -0
  54. package/dist/creatio/engines/crud-engine.d.ts +17 -0
  55. package/dist/creatio/engines/crud-engine.d.ts.map +1 -0
  56. package/dist/creatio/engines/crud-engine.js +39 -0
  57. package/dist/creatio/engines/crud-engine.js.map +1 -0
  58. package/dist/creatio/engines/engine-manager.d.ts +15 -8
  59. package/dist/creatio/engines/engine-manager.d.ts.map +1 -1
  60. package/dist/creatio/engines/engine-manager.js +26 -14
  61. package/dist/creatio/engines/engine-manager.js.map +1 -1
  62. package/dist/creatio/engines/engine.d.ts +36 -0
  63. package/dist/creatio/engines/engine.d.ts.map +1 -1
  64. package/dist/creatio/engines/engine.js +43 -0
  65. package/dist/creatio/engines/engine.js.map +1 -1
  66. package/dist/creatio/engines/feature-engine.d.ts +10 -0
  67. package/dist/creatio/engines/feature-engine.d.ts.map +1 -0
  68. package/dist/creatio/engines/{feature/feature-engine.js → feature-engine.js} +5 -3
  69. package/dist/creatio/engines/feature-engine.js.map +1 -0
  70. package/dist/creatio/engines/index.d.ts +7 -7
  71. package/dist/creatio/engines/index.d.ts.map +1 -1
  72. package/dist/creatio/engines/index.js +7 -7
  73. package/dist/creatio/engines/index.js.map +1 -1
  74. package/dist/creatio/engines/process-engine.d.ts +10 -0
  75. package/dist/creatio/engines/process-engine.d.ts.map +1 -0
  76. package/dist/creatio/engines/{process/process-engine.js → process-engine.js} +5 -3
  77. package/dist/creatio/engines/process-engine.js.map +1 -0
  78. package/dist/creatio/engines/{sys-settings/sys-settings-engine.d.ts → sys-settings-engine.d.ts} +4 -4
  79. package/dist/creatio/engines/sys-settings-engine.d.ts.map +1 -0
  80. package/dist/creatio/engines/sys-settings-engine.js +29 -0
  81. package/dist/creatio/engines/sys-settings-engine.js.map +1 -0
  82. package/dist/creatio/engines/user-engine.d.ts +10 -0
  83. package/dist/creatio/engines/user-engine.d.ts.map +1 -0
  84. package/dist/creatio/engines/{user/user-engine.js → user-engine.js} +4 -2
  85. package/dist/creatio/engines/user-engine.js.map +1 -0
  86. package/dist/creatio/index.d.ts +1 -1
  87. package/dist/creatio/index.js +1 -1
  88. package/dist/creatio/provider-context.d.ts +1 -1
  89. package/dist/creatio/services/admin-operation-service-provider.d.ts +1 -1
  90. package/dist/creatio/services/admin-operation-service-provider.d.ts.map +1 -1
  91. package/dist/creatio/services/admin-operation-service-provider.js +2 -2
  92. package/dist/creatio/services/admin-operation-service-provider.js.map +1 -1
  93. package/dist/creatio/services/configuration-service-provider.d.ts +1 -1
  94. package/dist/creatio/services/configuration-service-provider.d.ts.map +1 -1
  95. package/dist/creatio/services/configuration-service-provider.js +16 -5
  96. package/dist/creatio/services/configuration-service-provider.js.map +1 -1
  97. package/dist/creatio/services/creatio-service-context.d.ts +1 -1
  98. package/dist/creatio/services/creatio-service-context.d.ts.map +1 -1
  99. package/dist/creatio/services/creatio-service-context.js +6 -3
  100. package/dist/creatio/services/creatio-service-context.js.map +1 -1
  101. package/dist/creatio/services/crud-provider-factory.d.ts +16 -0
  102. package/dist/creatio/services/crud-provider-factory.d.ts.map +1 -0
  103. package/dist/creatio/services/crud-provider-factory.js +22 -0
  104. package/dist/creatio/services/crud-provider-factory.js.map +1 -0
  105. package/dist/creatio/services/dataservice/data-service-column-values.d.ts +12 -0
  106. package/dist/creatio/services/dataservice/data-service-column-values.d.ts.map +1 -0
  107. package/dist/creatio/services/dataservice/data-service-column-values.js +39 -0
  108. package/dist/creatio/services/dataservice/data-service-column-values.js.map +1 -0
  109. package/dist/creatio/services/dataservice/data-service-crud-provider.d.ts +49 -0
  110. package/dist/creatio/services/dataservice/data-service-crud-provider.d.ts.map +1 -0
  111. package/dist/creatio/services/dataservice/data-service-crud-provider.js +157 -0
  112. package/dist/creatio/services/dataservice/data-service-crud-provider.js.map +1 -0
  113. package/dist/creatio/services/dataservice/data-service-filter-translator.d.ts +32 -0
  114. package/dist/creatio/services/dataservice/data-service-filter-translator.d.ts.map +1 -0
  115. package/dist/creatio/services/dataservice/data-service-filter-translator.js +114 -0
  116. package/dist/creatio/services/dataservice/data-service-filter-translator.js.map +1 -0
  117. package/dist/creatio/services/dataservice/data-service-query-builder.d.ts +21 -0
  118. package/dist/creatio/services/dataservice/data-service-query-builder.d.ts.map +1 -0
  119. package/dist/creatio/services/dataservice/data-service-query-builder.js +97 -0
  120. package/dist/creatio/services/dataservice/data-service-query-builder.js.map +1 -0
  121. package/dist/creatio/services/dataservice/data-service-schema.d.ts +31 -0
  122. package/dist/creatio/services/dataservice/data-service-schema.d.ts.map +1 -0
  123. package/dist/creatio/services/dataservice/data-service-schema.js +95 -0
  124. package/dist/creatio/services/dataservice/data-service-schema.js.map +1 -0
  125. package/dist/creatio/services/dataservice/data-service-transport.d.ts +21 -0
  126. package/dist/creatio/services/dataservice/data-service-transport.d.ts.map +1 -0
  127. package/dist/creatio/services/dataservice/data-service-transport.js +49 -0
  128. package/dist/creatio/services/dataservice/data-service-transport.js.map +1 -0
  129. package/dist/creatio/services/dataservice/data-service-types.d.ts +180 -0
  130. package/dist/creatio/services/dataservice/data-service-types.d.ts.map +1 -0
  131. package/dist/creatio/services/dataservice/data-service-types.js +110 -0
  132. package/dist/creatio/services/dataservice/data-service-types.js.map +1 -0
  133. package/dist/creatio/services/dataservice/data-service-value-type.d.ts +27 -0
  134. package/dist/creatio/services/dataservice/data-service-value-type.d.ts.map +1 -0
  135. package/dist/creatio/services/dataservice/data-service-value-type.js +99 -0
  136. package/dist/creatio/services/dataservice/data-service-value-type.js.map +1 -0
  137. package/dist/creatio/services/entity-name.d.ts +8 -0
  138. package/dist/creatio/services/entity-name.d.ts.map +1 -0
  139. package/dist/creatio/services/entity-name.js +17 -0
  140. package/dist/creatio/services/entity-name.js.map +1 -0
  141. package/dist/creatio/services/feature-service-provider.d.ts +1 -1
  142. package/dist/creatio/services/feature-service-provider.d.ts.map +1 -1
  143. package/dist/creatio/services/feature-service-provider.js +5 -5
  144. package/dist/creatio/services/feature-service-provider.js.map +1 -1
  145. package/dist/creatio/services/http-client.d.ts +10 -1
  146. package/dist/creatio/services/http-client.d.ts.map +1 -1
  147. package/dist/creatio/services/http-client.js +15 -3
  148. package/dist/creatio/services/http-client.js.map +1 -1
  149. package/dist/creatio/services/index.d.ts +14 -2
  150. package/dist/creatio/services/index.d.ts.map +1 -1
  151. package/dist/creatio/services/index.js +14 -2
  152. package/dist/creatio/services/index.js.map +1 -1
  153. package/dist/creatio/services/lookup-path.d.ts +18 -0
  154. package/dist/creatio/services/lookup-path.d.ts.map +1 -0
  155. package/dist/creatio/services/lookup-path.js +33 -0
  156. package/dist/creatio/services/lookup-path.js.map +1 -0
  157. package/dist/creatio/services/{metadata-store.d.ts → odata/metadata-store.d.ts} +2 -2
  158. package/dist/creatio/services/odata/metadata-store.d.ts.map +1 -0
  159. package/dist/creatio/services/{metadata-store.js → odata/metadata-store.js} +5 -4
  160. package/dist/creatio/services/odata/metadata-store.js.map +1 -0
  161. package/dist/creatio/services/{odata-crud-provider.d.ts → odata/odata-crud-provider.d.ts} +7 -7
  162. package/dist/creatio/services/odata/odata-crud-provider.d.ts.map +1 -0
  163. package/dist/creatio/services/{odata-crud-provider.js → odata/odata-crud-provider.js} +35 -59
  164. package/dist/creatio/services/odata/odata-crud-provider.js.map +1 -0
  165. package/dist/creatio/services/odata/odata-query-translator.d.ts +37 -0
  166. package/dist/creatio/services/odata/odata-query-translator.d.ts.map +1 -0
  167. package/dist/creatio/services/odata/odata-query-translator.js +160 -0
  168. package/dist/creatio/services/odata/odata-query-translator.js.map +1 -0
  169. package/dist/creatio/services/odata/odata-routes.d.ts +4 -0
  170. package/dist/creatio/services/odata/odata-routes.d.ts.map +1 -0
  171. package/dist/creatio/services/odata/odata-routes.js +9 -0
  172. package/dist/creatio/services/odata/odata-routes.js.map +1 -0
  173. package/dist/creatio/services/process-service-provider.d.ts +1 -1
  174. package/dist/creatio/services/process-service-provider.d.ts.map +1 -1
  175. package/dist/creatio/services/process-service-provider.js +2 -5
  176. package/dist/creatio/services/process-service-provider.js.map +1 -1
  177. package/dist/creatio/services/sys-settings-service-provider.d.ts +1 -1
  178. package/dist/creatio/services/sys-settings-service-provider.d.ts.map +1 -1
  179. package/dist/creatio/services/sys-settings-service-provider.js +12 -16
  180. package/dist/creatio/services/sys-settings-service-provider.js.map +1 -1
  181. package/dist/creatio/services/user-info-provider.d.ts +1 -1
  182. package/dist/index.js +3 -2
  183. package/dist/index.js.map +1 -1
  184. package/dist/log.d.ts +5 -0
  185. package/dist/log.d.ts.map +1 -1
  186. package/dist/log.js +8 -0
  187. package/dist/log.js.map +1 -1
  188. package/dist/server/http/creatio-oauth-handlers.d.ts.map +1 -1
  189. package/dist/server/http/creatio-oauth-handlers.js +21 -5
  190. package/dist/server/http/creatio-oauth-handlers.js.map +1 -1
  191. package/dist/server/http/httpServer.d.ts.map +1 -1
  192. package/dist/server/http/httpServer.js +6 -4
  193. package/dist/server/http/httpServer.js.map +1 -1
  194. package/dist/server/http/mcp-handlers.js +2 -2
  195. package/dist/server/mcp/creatio-rest.d.ts +44 -0
  196. package/dist/server/mcp/creatio-rest.d.ts.map +1 -0
  197. package/dist/server/mcp/creatio-rest.js +26 -0
  198. package/dist/server/mcp/creatio-rest.js.map +1 -0
  199. package/dist/server/mcp/crtmcp/crt-mcp-client.d.ts +52 -0
  200. package/dist/server/mcp/crtmcp/crt-mcp-client.d.ts.map +1 -0
  201. package/dist/server/mcp/crtmcp/crt-mcp-client.js +67 -0
  202. package/dist/server/mcp/crtmcp/crt-mcp-client.js.map +1 -0
  203. package/dist/server/mcp/crtmcp/crt-mcp-tool-preparer.d.ts +20 -0
  204. package/dist/server/mcp/crtmcp/crt-mcp-tool-preparer.d.ts.map +1 -0
  205. package/dist/server/mcp/crtmcp/crt-mcp-tool-preparer.js +74 -0
  206. package/dist/server/mcp/crtmcp/crt-mcp-tool-preparer.js.map +1 -0
  207. package/dist/server/mcp/dataforge/dataforge-client.d.ts +64 -0
  208. package/dist/server/mcp/dataforge/dataforge-client.d.ts.map +1 -0
  209. package/dist/server/mcp/dataforge/dataforge-client.js +130 -0
  210. package/dist/server/mcp/dataforge/dataforge-client.js.map +1 -0
  211. package/dist/server/mcp/dataforge/dataforge-tool-preparer.d.ts +17 -0
  212. package/dist/server/mcp/dataforge/dataforge-tool-preparer.d.ts.map +1 -0
  213. package/dist/server/mcp/dataforge/dataforge-tool-preparer.js +42 -0
  214. package/dist/server/mcp/dataforge/dataforge-tool-preparer.js.map +1 -0
  215. package/dist/server/mcp/filters.d.ts +7 -1
  216. package/dist/server/mcp/filters.d.ts.map +1 -1
  217. package/dist/server/mcp/filters.js +48 -74
  218. package/dist/server/mcp/filters.js.map +1 -1
  219. package/dist/server/mcp/globalsearch/globalsearch-client.d.ts +50 -0
  220. package/dist/server/mcp/globalsearch/globalsearch-client.d.ts.map +1 -0
  221. package/dist/server/mcp/globalsearch/globalsearch-client.js +118 -0
  222. package/dist/server/mcp/globalsearch/globalsearch-client.js.map +1 -0
  223. package/dist/server/mcp/globalsearch/globalsearch-tool-preparer.d.ts +16 -0
  224. package/dist/server/mcp/globalsearch/globalsearch-tool-preparer.d.ts.map +1 -0
  225. package/dist/server/mcp/globalsearch/globalsearch-tool-preparer.js +34 -0
  226. package/dist/server/mcp/globalsearch/globalsearch-tool-preparer.js.map +1 -0
  227. package/dist/server/mcp/json-schema-to-zod.d.ts +3 -0
  228. package/dist/server/mcp/json-schema-to-zod.d.ts.map +1 -0
  229. package/dist/server/mcp/json-schema-to-zod.js +54 -0
  230. package/dist/server/mcp/json-schema-to-zod.js.map +1 -0
  231. package/dist/server/mcp/server.d.ts +33 -0
  232. package/dist/server/mcp/server.d.ts.map +1 -1
  233. package/dist/server/mcp/server.js +243 -163
  234. package/dist/server/mcp/server.js.map +1 -1
  235. package/dist/server/mcp/tool-preparer.d.ts +26 -0
  236. package/dist/server/mcp/tool-preparer.d.ts.map +1 -0
  237. package/dist/server/mcp/tool-preparer.js +11 -0
  238. package/dist/server/mcp/tool-preparer.js.map +1 -0
  239. package/dist/server/mcp/tools-data.d.ts +119 -7
  240. package/dist/server/mcp/tools-data.d.ts.map +1 -1
  241. package/dist/server/mcp/tools-data.js +258 -43
  242. package/dist/server/mcp/tools-data.js.map +1 -1
  243. package/dist/sessions/index.d.ts.map +1 -0
  244. package/dist/sessions/index.js.map +1 -0
  245. package/dist/{services → sessions}/session-context.d.ts +16 -0
  246. package/dist/sessions/session-context.d.ts.map +1 -0
  247. package/dist/{services → sessions}/session-context.js +36 -1
  248. package/dist/sessions/session-context.js.map +1 -0
  249. package/dist/{services → sessions}/token-refresh-scheduler.d.ts.map +1 -1
  250. package/dist/{services → sessions}/token-refresh-scheduler.js +2 -2
  251. package/dist/{services → sessions}/token-refresh-scheduler.js.map +1 -1
  252. package/dist/utils/context.js +2 -2
  253. package/package.json +8 -8
  254. package/dist/creatio/engines/admin-operation/admin-operation-engine.d.ts.map +0 -1
  255. package/dist/creatio/engines/admin-operation/admin-operation-engine.js +0 -27
  256. package/dist/creatio/engines/admin-operation/admin-operation-engine.js.map +0 -1
  257. package/dist/creatio/engines/configuration/configuration-engine.d.ts +0 -10
  258. package/dist/creatio/engines/configuration/configuration-engine.d.ts.map +0 -1
  259. package/dist/creatio/engines/configuration/configuration-engine.js +0 -18
  260. package/dist/creatio/engines/configuration/configuration-engine.js.map +0 -1
  261. package/dist/creatio/engines/crud/crud-engine.d.ts +0 -15
  262. package/dist/creatio/engines/crud/crud-engine.d.ts.map +0 -1
  263. package/dist/creatio/engines/crud/crud-engine.js +0 -33
  264. package/dist/creatio/engines/crud/crud-engine.js.map +0 -1
  265. package/dist/creatio/engines/feature/feature-engine.d.ts +0 -10
  266. package/dist/creatio/engines/feature/feature-engine.d.ts.map +0 -1
  267. package/dist/creatio/engines/feature/feature-engine.js.map +0 -1
  268. package/dist/creatio/engines/process/process-engine.d.ts +0 -10
  269. package/dist/creatio/engines/process/process-engine.d.ts.map +0 -1
  270. package/dist/creatio/engines/process/process-engine.js.map +0 -1
  271. package/dist/creatio/engines/sys-settings/sys-settings-engine.d.ts.map +0 -1
  272. package/dist/creatio/engines/sys-settings/sys-settings-engine.js +0 -27
  273. package/dist/creatio/engines/sys-settings/sys-settings-engine.js.map +0 -1
  274. package/dist/creatio/engines/user/user-engine.d.ts +0 -10
  275. package/dist/creatio/engines/user/user-engine.d.ts.map +0 -1
  276. package/dist/creatio/engines/user/user-engine.js.map +0 -1
  277. package/dist/creatio/providers/admin-operation-provider.js.map +0 -1
  278. package/dist/creatio/providers/configuration-provider.d.ts.map +0 -1
  279. package/dist/creatio/providers/configuration-provider.js.map +0 -1
  280. package/dist/creatio/providers/crud-provider.d.ts +0 -40
  281. package/dist/creatio/providers/crud-provider.d.ts.map +0 -1
  282. package/dist/creatio/providers/crud-provider.js.map +0 -1
  283. package/dist/creatio/providers/feature-provider.js.map +0 -1
  284. package/dist/creatio/providers/index.d.ts.map +0 -1
  285. package/dist/creatio/providers/process-provider.js.map +0 -1
  286. package/dist/creatio/providers/sys-settings-provider.js.map +0 -1
  287. package/dist/creatio/providers/user-provider.js.map +0 -1
  288. package/dist/creatio/services/metadata-store.d.ts.map +0 -1
  289. package/dist/creatio/services/metadata-store.js.map +0 -1
  290. package/dist/creatio/services/odata-crud-provider.d.ts.map +0 -1
  291. package/dist/creatio/services/odata-crud-provider.js.map +0 -1
  292. package/dist/services/index.d.ts.map +0 -1
  293. package/dist/services/index.js.map +0 -1
  294. package/dist/services/session-context.d.ts.map +0 -1
  295. package/dist/services/session-context.js.map +0 -1
  296. /package/dist/creatio/{providers → contracts}/admin-operation-provider.d.ts +0 -0
  297. /package/dist/creatio/{providers → contracts}/admin-operation-provider.js +0 -0
  298. /package/dist/creatio/{providers → contracts}/configuration-provider.js +0 -0
  299. /package/dist/creatio/{providers → contracts}/crud-provider.js +0 -0
  300. /package/dist/creatio/{providers → contracts}/feature-provider.d.ts +0 -0
  301. /package/dist/creatio/{providers → contracts}/feature-provider.js +0 -0
  302. /package/dist/creatio/{providers → contracts}/process-provider.d.ts +0 -0
  303. /package/dist/creatio/{providers → contracts}/process-provider.js +0 -0
  304. /package/dist/creatio/{providers → contracts}/sys-settings-provider.d.ts +0 -0
  305. /package/dist/creatio/{providers → contracts}/sys-settings-provider.js +0 -0
  306. /package/dist/creatio/{providers → contracts}/user-provider.d.ts +0 -0
  307. /package/dist/creatio/{providers → contracts}/user-provider.js +0 -0
  308. /package/dist/{services → sessions}/index.d.ts +0 -0
  309. /package/dist/{services → sessions}/index.js +0 -0
  310. /package/dist/{services → sessions}/token-refresh-scheduler.d.ts +0 -0
@@ -5,40 +5,94 @@ export declare const getCurrentUserInfoDescriptor: {
5
5
  description: string;
6
6
  inputSchema: Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
7
7
  };
8
- export declare const readInput: z.ZodObject<{
8
+ /** Which optional read params the active CRUD backend supports (mirrors CrudCapabilities). */
9
+ export interface ReadCapabilities {
10
+ rawFilter: boolean;
11
+ expand: boolean;
12
+ }
13
+ export declare function buildReadInputShape(caps: ReadCapabilities): {
14
+ expand?: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>>;
15
+ filter?: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
9
16
  entity: z.ZodString;
10
- filter: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
11
17
  filters: z.ZodOptional<z.ZodObject<{
12
18
  all: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
13
19
  field: z.ZodString;
14
20
  op: z.ZodEnum<{
15
21
  eq: "eq";
22
+ ne: "ne";
23
+ gt: "gt";
24
+ ge: "ge";
25
+ lt: "lt";
26
+ le: "le";
16
27
  contains: "contains";
17
28
  startswith: "startswith";
18
29
  endswith: "endswith";
30
+ }>;
31
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
32
+ }, z.core.$strip>, z.ZodObject<{
33
+ field: z.ZodString;
34
+ in: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
35
+ }, z.core.$strip>]>>>;
36
+ any: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
37
+ field: z.ZodString;
38
+ op: z.ZodEnum<{
39
+ eq: "eq";
19
40
  ne: "ne";
20
41
  gt: "gt";
21
42
  ge: "ge";
22
43
  lt: "lt";
23
44
  le: "le";
45
+ contains: "contains";
46
+ startswith: "startswith";
47
+ endswith: "endswith";
24
48
  }>;
25
49
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
26
50
  }, z.core.$strip>, z.ZodObject<{
27
51
  field: z.ZodString;
28
52
  in: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
29
53
  }, z.core.$strip>]>>>;
30
- any: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
54
+ }, z.core.$strip>>;
55
+ select: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>>;
56
+ orderBy: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
57
+ top: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
58
+ skip: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
59
+ count: z.ZodOptional<z.ZodBoolean>;
60
+ };
61
+ export declare function buildReadInput(caps: ReadCapabilities): z.ZodObject<{
62
+ expand?: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>>;
63
+ filter?: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
64
+ entity: z.ZodString;
65
+ filters: z.ZodOptional<z.ZodObject<{
66
+ all: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
31
67
  field: z.ZodString;
32
68
  op: z.ZodEnum<{
33
69
  eq: "eq";
70
+ ne: "ne";
71
+ gt: "gt";
72
+ ge: "ge";
73
+ lt: "lt";
74
+ le: "le";
34
75
  contains: "contains";
35
76
  startswith: "startswith";
36
77
  endswith: "endswith";
78
+ }>;
79
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
80
+ }, z.core.$strip>, z.ZodObject<{
81
+ field: z.ZodString;
82
+ in: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
83
+ }, z.core.$strip>]>>>;
84
+ any: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
85
+ field: z.ZodString;
86
+ op: z.ZodEnum<{
87
+ eq: "eq";
37
88
  ne: "ne";
38
89
  gt: "gt";
39
90
  ge: "ge";
40
91
  lt: "lt";
41
92
  le: "le";
93
+ contains: "contains";
94
+ startswith: "startswith";
95
+ endswith: "endswith";
42
96
  }>;
43
97
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
44
98
  }, z.core.$strip>, z.ZodObject<{
@@ -46,12 +100,13 @@ export declare const readInput: z.ZodObject<{
46
100
  in: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
47
101
  }, z.core.$strip>]>>>;
48
102
  }, z.core.$strip>>;
49
- select: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
50
- expand: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
51
- orderBy: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
103
+ select: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>>;
104
+ orderBy: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
52
105
  top: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
106
+ skip: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
107
+ count: z.ZodOptional<z.ZodBoolean>;
53
108
  }, z.core.$strip>;
54
- export declare const readDescriptor: {
109
+ export declare function buildReadDescriptor(caps: ReadCapabilities): {
55
110
  title: string;
56
111
  description: string;
57
112
  inputSchema: Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
@@ -225,4 +280,61 @@ export declare const callConfigurationServiceDescriptor: {
225
280
  description: string;
226
281
  inputSchema: Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
227
282
  };
283
+ export declare const dataforgeSimilarTablesInput: z.ZodObject<{
284
+ query: z.ZodString;
285
+ limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
286
+ }, z.core.$strip>;
287
+ export declare const dataforgeSimilarTablesDescriptor: {
288
+ title: string;
289
+ description: string;
290
+ inputSchema: Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
291
+ };
292
+ export declare const dataforgeTableDetailsInput: z.ZodObject<{
293
+ query: z.ZodString;
294
+ limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
295
+ }, z.core.$strip>;
296
+ export declare const dataforgeTableDetailsDescriptor: {
297
+ title: string;
298
+ description: string;
299
+ inputSchema: Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
300
+ };
301
+ export declare const dataforgeTableRelationshipsInput: z.ZodObject<{
302
+ sourceTable: z.ZodString;
303
+ targetTable: z.ZodString;
304
+ limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
305
+ bidirectional: z.ZodOptional<z.ZodBoolean>;
306
+ skipDetails: z.ZodOptional<z.ZodBoolean>;
307
+ }, z.core.$strip>;
308
+ export declare const dataforgeTableRelationshipsDescriptor: {
309
+ title: string;
310
+ description: string;
311
+ inputSchema: Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
312
+ };
313
+ export declare const dataforgeLookupValuesInput: z.ZodObject<{
314
+ query: z.ZodString;
315
+ schemaName: z.ZodOptional<z.ZodString>;
316
+ limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
317
+ }, z.core.$strip>;
318
+ export declare const dataforgeLookupValuesDescriptor: {
319
+ title: string;
320
+ description: string;
321
+ inputSchema: Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
322
+ };
323
+ export declare const dataforgeStatusInput: z.ZodObject<{}, z.core.$strip>;
324
+ export declare const dataforgeStatusDescriptor: {
325
+ title: string;
326
+ description: string;
327
+ inputSchema: Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
328
+ };
329
+ export declare const globalSearchInput: z.ZodObject<{
330
+ query: z.ZodString;
331
+ entities: z.ZodOptional<z.ZodArray<z.ZodString>>;
332
+ limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
333
+ from: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
334
+ }, z.core.$strip>;
335
+ export declare const globalSearchDescriptor: {
336
+ title: string;
337
+ description: string;
338
+ inputSchema: Record<string, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
339
+ };
228
340
  //# sourceMappingURL=tools-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools-data.d.ts","sourceRoot":"","sources":["../../../src/server/mcp/tools-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0DxB,eAAO,MAAM,uBAAuB,gCAAyC,CAAC;AAE9E,eAAO,MAAM,4BAA4B;;;;CAuCvC,CAAC;AA+KH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA2B,CAAC;AAElD,eAAO,MAAM,cAAc;;;;CAUzB,CAAC;AAsBH,eAAO,MAAM,WAAW;;;iBAA6B,CAAC;AAEtD,eAAO,MAAM,gBAAgB;;;;CAY3B,CAAC;AA0BH,eAAO,MAAM,WAAW;;;;iBAA6B,CAAC;AAEtD,eAAO,MAAM,gBAAgB;;;;CAS3B,CAAC;AAWH,eAAO,MAAM,WAAW;;;iBAA6B,CAAC;AAEtD,eAAO,MAAM,gBAAgB;;;;CAY3B,CAAC;AAEH,eAAO,MAAM,iBAAiB,gCAAe,CAAC;AAE9C,eAAO,MAAM,sBAAsB;;;;CAKjC,CAAC;AAUH,eAAO,MAAM,mBAAmB;;iBAAqC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;CAKnC,CAAC;AA0BH,eAAO,MAAM,mBAAmB;;;iBAAqC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;CAuCnC,CAAC;AAWH,eAAO,MAAM,qBAAqB;;iBAAuC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;CAKrC,CAAC;AA+CH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAAuC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;CAKrC,CAAC;AAcH,eAAO,MAAM,wBAAwB;;iBAA0C,CAAC;AAEhF,eAAO,MAAM,6BAA6B;;;;CAYxC,CAAC;AASH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;iBAAiD,CAAC;AAE9F,eAAO,MAAM,oCAAoC;;;;CAK/C,CAAC;AAYH,eAAO,MAAM,wBAAwB;;iBAA0C,CAAC;AAEhF,eAAO,MAAM,6BAA6B;;;;CAKxC,CAAC;AA0BH,eAAO,MAAM,yBAAyB;;;;;iBAA2C,CAAC;AAElF,eAAO,MAAM,8BAA8B;;;;CAKzC,CAAC;AAWH,eAAO,MAAM,yBAAyB;;iBAA2C,CAAC;AAElF,eAAO,MAAM,8BAA8B;;;;CAKzC,CAAC;AAmBH,eAAO,MAAM,6BAA6B;;;;iBAA+C,CAAC;AAE1F,eAAO,MAAM,kCAAkC;;;;CAK7C,CAAC;AAWH,eAAO,MAAM,gCAAgC;;iBAAkD,CAAC;AAEhG,eAAO,MAAM,qCAAqC;;;;CAKhD,CAAC;AAiCH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;iBAA+C,CAAC;AAE1F,eAAO,MAAM,kCAAkC;;;;CAK7C,CAAC"}
1
+ {"version":3,"file":"tools-data.d.ts","sourceRoot":"","sources":["../../../src/server/mcp/tools-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgExB,eAAO,MAAM,uBAAuB,gCAAyC,CAAC;AAE9E,eAAO,MAAM,4BAA4B;;;;CAuCvC,CAAC;AAgMH,8FAA8F;AAC9F,MAAM,WAAW,gBAAgB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CAChB;AAWD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMzD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAEpD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB;;;;EAkBzD;AAsBD,eAAO,MAAM,WAAW;;;iBAA6B,CAAC;AAEtD,eAAO,MAAM,gBAAgB;;;;CAY3B,CAAC;AA0BH,eAAO,MAAM,WAAW;;;;iBAA6B,CAAC;AAEtD,eAAO,MAAM,gBAAgB;;;;CAS3B,CAAC;AAWH,eAAO,MAAM,WAAW;;;iBAA6B,CAAC;AAEtD,eAAO,MAAM,gBAAgB;;;;CAY3B,CAAC;AAEH,eAAO,MAAM,iBAAiB,gCAAe,CAAC;AAE9C,eAAO,MAAM,sBAAsB;;;;CAKjC,CAAC;AAUH,eAAO,MAAM,mBAAmB;;iBAAqC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;CAMnC,CAAC;AA0BH,eAAO,MAAM,mBAAmB;;;iBAAqC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;CAuCnC,CAAC;AAWH,eAAO,MAAM,qBAAqB;;iBAAuC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;CAKrC,CAAC;AA+CH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAAuC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;CAKrC,CAAC;AAcH,eAAO,MAAM,wBAAwB;;iBAA0C,CAAC;AAEhF,eAAO,MAAM,6BAA6B;;;;CAYxC,CAAC;AASH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;iBAAiD,CAAC;AAE9F,eAAO,MAAM,oCAAoC;;;;CAK/C,CAAC;AAYH,eAAO,MAAM,wBAAwB;;iBAA0C,CAAC;AAEhF,eAAO,MAAM,6BAA6B;;;;CAKxC,CAAC;AA0BH,eAAO,MAAM,yBAAyB;;;;;iBAA2C,CAAC;AAElF,eAAO,MAAM,8BAA8B;;;;CAKzC,CAAC;AAWH,eAAO,MAAM,yBAAyB;;iBAA2C,CAAC;AAElF,eAAO,MAAM,8BAA8B;;;;CAKzC,CAAC;AAmBH,eAAO,MAAM,6BAA6B;;;;iBAA+C,CAAC;AAE1F,eAAO,MAAM,kCAAkC;;;;CAK7C,CAAC;AAWH,eAAO,MAAM,gCAAgC;;iBAAkD,CAAC;AAEhG,eAAO,MAAM,qCAAqC;;;;CAKhD,CAAC;AA+BH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;iBAA+C,CAAC;AAE1F,eAAO,MAAM,kCAAkC;;;;CAK7C,CAAC;AAyCH,eAAO,MAAM,2BAA2B;;;iBAA6C,CAAC;AAEtF,eAAO,MAAM,gCAAgC;;;;CAQ3C,CAAC;AAeH,eAAO,MAAM,0BAA0B;;;iBAA4C,CAAC;AAEpF,eAAO,MAAM,+BAA+B;;;;CAO1C,CAAC;AA0BH,eAAO,MAAM,gCAAgC;;;;;;iBAAkD,CAAC;AAEhG,eAAO,MAAM,qCAAqC;;;;CAOhD,CAAC;AAwBH,eAAO,MAAM,0BAA0B;;;;iBAA4C,CAAC;AAEpF,eAAO,MAAM,+BAA+B;;;;CAO1C,CAAC;AAEH,eAAO,MAAM,oBAAoB,gCAAe,CAAC;AAEjD,eAAO,MAAM,yBAAyB;;;;CASpC,CAAC;AAmCH,eAAO,MAAM,iBAAiB;;;;;iBAAmC,CAAC;AAElE,eAAO,MAAM,sBAAsB;;;;CASjC,CAAC"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.callConfigurationServiceDescriptor = exports.callConfigurationServiceInput = exports.deleteAdminOperationGranteeDescriptor = exports.deleteAdminOperationGranteeInput = exports.setAdminOperationGranteeDescriptor = exports.setAdminOperationGranteeInput = exports.deleteAdminOperationDescriptor = exports.deleteAdminOperationInput = exports.upsertAdminOperationDescriptor = exports.upsertAdminOperationInput = exports.refreshFeatureCacheDescriptor = exports.refreshFeatureCacheInput = exports.updateSysSettingDefinitionDescriptor = exports.updateSysSettingDefinitionInput = exports.setSysSettingsValueDescriptor = exports.setSysSettingsValueInput = exports.createSysSettingDescriptor = exports.createSysSettingInput = exports.querySysSettingsDescriptor = exports.querySysSettingsInput = exports.executeProcessDescriptor = exports.executeProcessInput = exports.describeEntityDescriptor = exports.describeEntityInput = exports.listEntitiesDescriptor = exports.listEntitiesInput = exports.deleteDescriptor = exports.deleteInput = exports.updateDescriptor = exports.updateInput = exports.createDescriptor = exports.createInput = exports.readDescriptor = exports.readInput = exports.getCurrentUserInfoDescriptor = exports.getCurrentUserInfoInput = void 0;
3
+ exports.globalSearchDescriptor = exports.globalSearchInput = exports.dataforgeStatusDescriptor = exports.dataforgeStatusInput = exports.dataforgeLookupValuesDescriptor = exports.dataforgeLookupValuesInput = exports.dataforgeTableRelationshipsDescriptor = exports.dataforgeTableRelationshipsInput = exports.dataforgeTableDetailsDescriptor = exports.dataforgeTableDetailsInput = exports.dataforgeSimilarTablesDescriptor = exports.dataforgeSimilarTablesInput = exports.callConfigurationServiceDescriptor = exports.callConfigurationServiceInput = exports.deleteAdminOperationGranteeDescriptor = exports.deleteAdminOperationGranteeInput = exports.setAdminOperationGranteeDescriptor = exports.setAdminOperationGranteeInput = exports.deleteAdminOperationDescriptor = exports.deleteAdminOperationInput = exports.upsertAdminOperationDescriptor = exports.upsertAdminOperationInput = exports.refreshFeatureCacheDescriptor = exports.refreshFeatureCacheInput = exports.updateSysSettingDefinitionDescriptor = exports.updateSysSettingDefinitionInput = exports.setSysSettingsValueDescriptor = exports.setSysSettingsValueInput = exports.createSysSettingDescriptor = exports.createSysSettingInput = exports.querySysSettingsDescriptor = exports.querySysSettingsInput = exports.executeProcessDescriptor = exports.executeProcessInput = exports.describeEntityDescriptor = exports.describeEntityInput = exports.listEntitiesDescriptor = exports.listEntitiesInput = exports.deleteDescriptor = exports.deleteInput = exports.updateDescriptor = exports.updateInput = exports.createDescriptor = exports.createInput = exports.getCurrentUserInfoDescriptor = exports.getCurrentUserInfoInput = void 0;
4
+ exports.buildReadInputShape = buildReadInputShape;
5
+ exports.buildReadInput = buildReadInput;
6
+ exports.buildReadDescriptor = buildReadDescriptor;
4
7
  const zod_1 = require("zod");
5
8
  const CRITICAL_WARNINGS = {
6
9
  FILTER_SELECT_SYNC: '⚠️ CRITICAL: When using $filter with $select:\n' +
@@ -15,6 +18,11 @@ const CRITICAL_WARNINGS = {
15
18
  "- String/Text fields: WITH single quotes! Example: Name eq 'John'\n" +
16
19
  "- Navigation properties: WITH single quotes! Example: Type/Name eq 'Employee'",
17
20
  TIME_CONVERSION: '⏰ TIME CONVERSION CRITICAL:\nWhen updating StartDate/DueDate, convert local time to UTC!',
21
+ LOOKUP_NAVIGATION: '🔗 FILTERING BY A LOOKUP (related record) — use NAVIGATION, not the scalar FK:\n' +
22
+ "- By name (best): Contact/Name eq 'Andrew Baker', Type/Name eq 'Employee'\n" +
23
+ '- By id: Contact/Id eq <guid> (GUID, no quotes)\n' +
24
+ '- ❌ Do NOT filter the scalar `ContactId`/`OwnerId`/`AccountId` directly — Creatio OData 500s with "Column by path XxxId not found in schema".\n' +
25
+ '- The primary key `Id eq <guid>` DOES work as-is (it is a real column, not a lookup).',
18
26
  };
19
27
  const DATA_TYPES_DESC = {
20
28
  BASIC: 'DATA TYPES:\n' +
@@ -89,17 +97,18 @@ const baseCondition = zod_1.z.object({
89
97
  field: zod_1.z
90
98
  .string()
91
99
  .min(1)
92
- .describe('Field to filter on. For lookups use navigation like Type/Name; for GUID columns use TypeId or Id.'),
100
+ .describe('Field to filter on. To filter by a linked record, use navigation: by name `Contact/Name` / `Type/Name`, or by id `Contact/Id`. ' +
101
+ 'A scalar lookup FK (`ContactId`, `OwnerId`, `AccountId`) with a GUID value is auto-rewritten to `<Lookup>/Id`. The primary key is `Id`.'),
93
102
  });
94
103
  const compareCondition = baseCondition.extend({
95
104
  op: op.describe('Comparison operators: eq, ne, gt, ge, lt, le, contains, startswith, endswith.'),
96
- value: value.describe("Value to compare with. Strings are escaped; GUIDs formatted as guid'...'."),
105
+ value: value.describe('Value to compare with. GUIDs are emitted unquoted for Id/lookup paths; other strings are quoted/escaped automatically.'),
97
106
  });
98
107
  const inCondition = baseCondition.extend({
99
108
  in: zod_1.z
100
109
  .array(zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()]))
101
110
  .min(1)
102
- .describe("Set of values (IN emulation with OR). GUIDs auto-formatted to guid'...' when applicable."),
111
+ .describe('Set of values (expanded to an OR group). Lookup FK GUIDs are auto-navigated.'),
103
112
  });
104
113
  const condition = zod_1.z.union([compareCondition, inCondition]);
105
114
  const filtersShape = zod_1.z
@@ -108,18 +117,18 @@ const filtersShape = zod_1.z
108
117
  .array(condition)
109
118
  .min(1)
110
119
  .optional()
111
- .describe('All conditions (AND). Example: [{ field:"TypeId", op:"eq", value:"<GUID>" }]'),
120
+ .describe('All conditions (AND). Example: [{ field:"Stage/Name", op:"eq", value:"Presentation" }]'),
112
121
  any: zod_1.z
113
122
  .array(condition)
114
123
  .min(1)
115
124
  .optional()
116
125
  .describe('Any condition (OR). Example: [{ field:"Type/Name", op:"eq", value:"Employee" }, { field:"Type/Name", op:"eq", value:"Manager" }]'),
117
126
  })
118
- .describe('Structured filters - alternative to raw $filter. Automatically handles OData syntax, escaping, etc.\n' +
119
- 'Tip: For lookups, prefer navigation properties (Field/Name) over IDs for better readability.\n\n' +
127
+ .describe('Structured filters - alternative to raw $filter. Automatically handles OData syntax, escaping, GUID formatting, and lookup navigation.\n' +
128
+ 'Filter by a linked record via navigation (Contact/Name, Contact/Id) or pass a scalar `ContactId` GUID and it is auto-rewritten to `Contact/Id`.\n\n' +
120
129
  'Examples:\n' +
121
- '- Lookup by name: { all:[{ field:"Type/Name", op:"eq", value:"Employee" }] }\n' +
122
- '- By GUID: { all:[{ field:"TypeId", op:"eq", value:"60733efc-..." }] }\n' +
130
+ '- Lookup by name: { all:[{ field:"Contact/Name", op:"eq", value:"Andrew Baker" }] }\n' +
131
+ '- Lookup by id: { all:[{ field:"ContactId", op:"eq", value:"60733efc-..." }] }\n' +
123
132
  '- Multiple AND: { all:[{ field:"IsActive", op:"eq", value:true }, { field:"Name", op:"contains", value:"John" }] }\n' +
124
133
  '- Multiple OR: { any:[{ field:"Status/Name", op:"eq", value:"Active" }, { field:"Status/Name", op:"eq", value:"Pending" }] }');
125
134
  const readInputShape = {
@@ -129,33 +138,31 @@ const readInputShape = {
129
138
  .describe('Creatio OData entity set to query (e.g., Contact, Account, Activity). Tip: call "list-entities" first, then "describe-entity" to confirm fields before reading.'),
130
139
  filter: zod_1.z
131
140
  .preprocess((v) => (typeof v === 'string' && v.trim() === '' ? undefined : v), zod_1.z.string().min(1).optional())
132
- .describe("OData $filter clause. Use single quotes for strings and escape embedded ' as ''.\n" +
133
- 'Operators: eq, ne, gt, ge, lt, le, and, or, not, contains, startswith, endswith.\n\n' +
141
+ .describe('⚠️ OData backend ONLY ignored when the DataService backend is active (the default). ' +
142
+ 'Prefer the structured `filters` parameter, which works on both backends.\n' +
143
+ "OData $filter clause. Use single quotes for strings and escape embedded ' as ''.\n" +
144
+ 'Operators: eq, ne, gt, ge, lt, le, and, or, not. Functions: contains(F,\'v\'), startswith(F,\'v\'), endswith(F,\'v\'), length(F), day(F).\n\n' +
134
145
  CRITICAL_WARNINGS.GUID_NO_QUOTES +
135
146
  '\n\n' +
136
- '⚠️ IMPORTANT: When using $filter with $select:\n' +
137
- '- Include ALL fields from filter in $select if possible\n' +
138
- '- Example: filter by AccountId? Include AccountId in select array\n' +
139
- '- Creatio may fail if filtered field is not in select list\n\n' +
147
+ CRITICAL_WARNINGS.LOOKUP_NAVIGATION +
148
+ '\n\n' +
140
149
  'Examples:\n' +
141
- '- By GUID: AccountId eq 8ecab4a1-0ca3-4515-9399-efe0a19390bd\n' +
150
+ '- By primary Id: Id eq 8ecab4a1-0ca3-4515-9399-efe0a19390bd\n' +
151
+ "- Lookup by name: Contact/Name eq 'Andrew Baker' (RECOMMENDED)\n" +
152
+ '- Lookup by id (NAVIGATION): Contact/Id eq 8ecab4a1-0ca3-4515-9399-efe0a19390bd\n' +
142
153
  "- Text search: contains(Name,'Acme')\n" +
143
- "- Multiple: contains(Name,'Baker') and IsActive eq true\n" +
144
- "- Lookup by name: Type/Name eq 'Employee' (RECOMMENDED!)\n\n" +
145
- '💡 BEST PRACTICE: Use structured filters parameter instead of raw $filter - it handles syntax automatically!'),
154
+ "- Multiple: contains(Name,'Baker') and Type/Name eq 'Employee'\n\n" +
155
+ '💡 BEST PRACTICE: prefer the structured `filters` parameter — it auto-rewrites lookup `XxxId` filters to the required `Xxx/Id` navigation for you.'),
146
156
  filters: filtersShape
147
157
  .optional()
148
- .describe('Structured filters (alternative to raw $filter). Automatically handles proper OData syntax including GUID formatting.\n' +
149
- 'System automatically removes quotes from GUID values for Id fields.\n\n' +
150
- '⚠️ IMPORTANT: When using filters with select parameter:\n' +
151
- '- ALWAYS include filtered fields in select array\n' +
152
- '- Creatio OData may fail if field is in filter but not in select\n\n' +
158
+ .describe('Structured filters (alternative to raw $filter). Handles OData syntax, GUID formatting, and lookup navigation automatically.\n\n' +
159
+ CRITICAL_WARNINGS.LOOKUP_NAVIGATION +
160
+ '\n(With this structured parameter you can pass either form — a `XxxId` field with a GUID value is auto-rewritten to `Xxx/Id`.)\n\n' +
153
161
  'Examples:\n' +
154
- "- By GUID: { all:[{ field:'AccountId', op:'eq', value:'60733efc-f36b-1410-a883-16d83cab0980' }] }\n" +
155
- "- By lookup name: { all:[{ field:'Type/Name', op:'eq', value:'Employee' }] } (RECOMMENDED!)\n" +
162
+ "- Lookup by name: { all:[{ field:'Contact/Name', op:'eq', value:'Andrew Baker' }] } (RECOMMENDED)\n" +
163
+ "- Lookup by id: { all:[{ field:'ContactId', op:'eq', value:'60733efc-f36b-1410-a883-16d83cab0980' }] } // becomes Contact/Id eq <guid>\n" +
156
164
  "- Multiple AND: { all:[{ field:'IsActive', op:'eq', value:true }, { field:'Name', op:'contains', value:'John' }] }\n" +
157
- "- Multiple OR: { any:[{ field:'StatusId', op:'eq', value:'guid1' }, { field:'StatusId', op:'eq', value:'guid2' }] }\n\n" +
158
- '💡 If filtering by AccountId, ContactId, etc - include that field in select!'),
165
+ "- Multiple OR: { any:[{ field:'Stage/Name', op:'eq', value:'Presentation' }, { field:'Stage/Name', op:'eq', value:'Negotiation' }] }"),
159
166
  select: zod_1.z
160
167
  .preprocess((v) => (Array.isArray(v) && v.length === 0 ? undefined : v), zod_1.z.array(zod_1.z.string()).optional())
161
168
  .describe('Fields to return from the main entity. Strongly recommended for performance.\n\n' +
@@ -171,7 +178,9 @@ const readInputShape = {
171
178
  "Use 'describe-entity' to discover available field names."),
172
179
  expand: zod_1.z
173
180
  .preprocess((v) => (Array.isArray(v) && v.length === 0 ? undefined : v), zod_1.z.array(zod_1.z.string()).optional())
174
- .describe('Navigation properties to expand (load related entities in one request).\n\n' +
181
+ .describe('⚠️ OData backend ONLY ignored when the DataService backend is active (the default). ' +
182
+ 'With DataService, read related fields by dotted column path in `select`/`filters` (e.g. `Account.Name`).\n\n' +
183
+ 'Navigation properties to expand (load related entities in one request).\n\n' +
175
184
  'This is the OData $expand parameter. Loads related entity objects.\n' +
176
185
  'Very useful to get complete data without multiple requests!\n\n' +
177
186
  '✅ HOW TO USE:\n' +
@@ -206,22 +215,59 @@ const readInputShape = {
206
215
  top: zod_1.z.coerce
207
216
  .number()
208
217
  .int()
209
- .positive()
218
+ .min(0)
210
219
  .max(1000)
211
220
  .optional()
212
- .describe('Max rows to return (suggest 25\u2013200 for responsiveness).'),
221
+ .describe('Max rows to return ($top). Defaults to 50 when omitted (so results are never unbounded); raise it or paginate with skip for more. Use top:0 with count:true for a count-only query. Suggest 25\u2013200.'),
222
+ skip: zod_1.z.coerce
223
+ .number()
224
+ .int()
225
+ .min(0)
226
+ .optional()
227
+ .describe('Offset pagination ($skip): skip this many matching rows before returning. ' +
228
+ 'Combine with top to page, e.g. page 3 of 25 \u2192 skip:50, top:25. ' +
229
+ 'Pair with a stable orderBy so pages do not overlap.'),
230
+ count: zod_1.z
231
+ .boolean()
232
+ .optional()
233
+ .describe('When true, also return the TOTAL number of matching records ($count=true), ignoring top/skip. ' +
234
+ 'The response shape becomes { total, value } instead of a bare array.\n' +
235
+ '\ud83d\udca1 For a COUNT-ONLY question ("how many opportunities does X have"), set count:true AND top:0 \u2014 ' +
236
+ 'you get { total: N, value: [] } in one request instead of fetching rows. ' +
237
+ 'Filter the same way as a normal read (e.g. lookups via ContactId \u2192 auto Contact/Id).'),
213
238
  };
214
- exports.readInput = zod_1.z.object(readInputShape);
215
- exports.readDescriptor = makeToolDescriptor({
216
- title: 'Read records in Creatio',
217
- description: 'Query Creatio records. Workflow: 1) list-entities 2) describe-entity 3) read with select, optional expand, filters/orderBy/top. ' +
218
- 'Key params: select (fields to return), filters or filter (conditions), expand (related entities), orderBy (sorting), top (limit). ' +
219
- 'Always include fields used in filters in select when select is provided. Use structured filters over raw $filter when possible. ' +
220
- "Use expand to load related entities in one request (e.g. expand:['Account']). " +
221
- 'For date/time filtering see /datetime-guide prompt. For Contact/Owner filtering see /contactid-guide prompt. ' +
222
- "Example: entity:'Order', select:['Id','Number','Amount','AccountId'], filters:{ all:[{ field:'AccountId', op:'eq', value:'<guid>' }] }, expand:['Account'], orderBy:'Amount desc', top:10",
223
- inputShape: readInputShape,
224
- });
239
+ // Split the full read shape into the always-portable fields and the OData-only escape
240
+ // hatches (raw `filter` string, `expand`), so each backend registers only the parameters it
241
+ // actually honors instead of advertising dead options.
242
+ const { filter: odataFilterField, expand: odataExpandField, ...neutralReadShape } = readInputShape;
243
+ function buildReadInputShape(caps) {
244
+ return {
245
+ ...neutralReadShape,
246
+ ...(caps.rawFilter ? { filter: odataFilterField } : {}),
247
+ ...(caps.expand ? { expand: odataExpandField } : {}),
248
+ };
249
+ }
250
+ function buildReadInput(caps) {
251
+ return zod_1.z.object(buildReadInputShape(caps));
252
+ }
253
+ function buildReadDescriptor(caps) {
254
+ const advanced = caps.rawFilter
255
+ ? 'Advanced (OData backend): a raw `filter` string and `expand` are also available. '
256
+ : '';
257
+ return makeToolDescriptor({
258
+ title: 'Read records in Creatio',
259
+ description: 'Query Creatio records. Workflow: 1) list-entities 2) describe-entity 3) read with select, filters, orderBy, top. ' +
260
+ 'Key params: select (fields to return), filters (conditions — recommended), orderBy (sorting), top (limit), skip (pagination offset), count (return total). ' +
261
+ 'Always include fields used in filters in select when select is provided. ' +
262
+ 'Filter related records via navigation (Contact/Name, Contact/Id) — a scalar lookup `XxxId` with a GUID is handled for you. ' +
263
+ advanced +
264
+ 'Paginate with skip+top (+ a stable orderBy). To COUNT, set count:true (response becomes { total, value }); for count-only use count:true + top:0. ' +
265
+ 'For date/time filtering see /datetime-guide prompt. For Contact/Owner filtering see /contactid-guide prompt. ' +
266
+ "Examples: entity:'Order', select:['Id','Number','Amount'], filters:{ all:[{ field:'ContactId', op:'eq', value:'<guid>' }] }, orderBy:'Amount desc', top:25, skip:0. " +
267
+ "count-only: entity:'Opportunity', filters:{ all:[{ field:'ContactId', op:'eq', value:'<guid>' }] }, count:true, top:0.",
268
+ inputShape: buildReadInputShape(caps),
269
+ });
270
+ }
225
271
  const createInputShape = {
226
272
  entity: zod_1.z
227
273
  .string()
@@ -316,7 +362,8 @@ const describeEntityInputShape = {
316
362
  exports.describeEntityInput = zod_1.z.object(describeEntityInputShape);
317
363
  exports.describeEntityDescriptor = makeToolDescriptor({
318
364
  title: 'Get entity description from Creatio',
319
- description: 'Inspect schema for the given entity set: entity type, primary key(s), and properties with types/nullable. Use this before CRUD to avoid invalid fields.',
365
+ description: 'Inspect schema for the given entity set: entity type, primary key(s), and properties with types/nullable. Use this before CRUD to avoid invalid fields. ' +
366
+ 'When DataForge is enabled on the environment, this tool transparently returns the richer DataForge column details (`source:"dataforge"`); otherwise it falls back to exact OData $metadata (`source:"odata"`). Behaviour and inputs are identical either way.',
320
367
  inputShape: describeEntityInputShape,
321
368
  });
322
369
  const executeProcessInputShape = {
@@ -568,4 +615,172 @@ exports.callConfigurationServiceDescriptor = makeToolDescriptor({
568
615
  description: 'Escape hatch for invoking any configuration-package REST service exposed at /0/rest/<service>/<method>. Use this when no dedicated MCP tool covers the operation. Always prefer the specific tools (`upsert-admin-operation`, `refresh-feature-cache`, sys-settings tools, etc.) when they exist — they validate inputs, handle wrapped responses, and document side effects. Returns `{status, contentType, body}`; JSON responses are auto-parsed.',
569
616
  inputShape: callConfigurationServiceInputShape,
570
617
  });
618
+ // ---------------------------------------------------------------------------
619
+ // DataForge — AI-oriented semantic discovery over the Creatio data model.
620
+ //
621
+ // These tools call the Creatio-hosted DataForge read API
622
+ // (POST /0/rest/DataForgeSchemaReadService/<method>) which forwards to the
623
+ // remote DataForge microservice. They COMPLEMENT, and do not replace,
624
+ // `list-entities`/`describe-entity`:
625
+ // • describe-entity = authoritative, exact OData $metadata (always available,
626
+ // needs the exact entity name) → use it to confirm fields before CRUD.
627
+ // • DataForge = fuzzy / semantic discovery (natural-language → table),
628
+ // relationship pathing, and lookup-value search (needs DataForge configured
629
+ // and synced) → use it to FIND the right table/columns/values first.
630
+ // Typical chain: dataforge-similar-tables → describe-entity → read/create.
631
+ //
632
+ // Requires the MCP user to have the `CanReadDataStructureColumnDetails`
633
+ // operation, and DataForge to be enabled on the environment
634
+ // (DataForgeServiceUrl + IdentityServer settings). Use `dataforge-status` to
635
+ // verify it is online and the data/lookups are synced.
636
+ // ---------------------------------------------------------------------------
637
+ const DATAFORGE_PREREQ_NOTE = '\n\nPrerequisites: DataForge must be enabled on this environment (DataForgeServiceUrl + IdentityServer settings) and the MCP user needs the `CanReadDataStructureColumnDetails` operation. ' +
638
+ 'Run `dataforge-status` first if you are unsure whether DataForge is online. Returns `{status, contentType, body}`; on a disabled/misconfigured service `body.Success` is false with an `ErrorInfo`.';
639
+ const dataforgeSimilarTablesInputShape = {
640
+ query: zod_1.z
641
+ .string()
642
+ .min(1)
643
+ .describe('Natural-language description of the data you are looking for (e.g. "customer support tickets", "продажі по угодах"). DataForge returns the table names that best match the meaning, not an exact text match.'),
644
+ limit: zod_1.z.coerce
645
+ .number()
646
+ .int()
647
+ .positive()
648
+ .max(200)
649
+ .optional()
650
+ .describe('Optional max number of candidate tables to return (server default ~50).'),
651
+ };
652
+ exports.dataforgeSimilarTablesInput = zod_1.z.object(dataforgeSimilarTablesInputShape);
653
+ exports.dataforgeSimilarTablesDescriptor = makeToolDescriptor({
654
+ title: 'DataForge: find tables by meaning',
655
+ description: 'Semantic search for Creatio tables/entities from a natural-language query. ' +
656
+ 'Use this FIRST when you do not know which entity holds the data the user is talking about — it maps a concept to candidate table names. ' +
657
+ 'Then call `describe-entity` on the chosen table to get the authoritative field list before reading/creating.' +
658
+ DATAFORGE_PREREQ_NOTE,
659
+ inputShape: dataforgeSimilarTablesInputShape,
660
+ });
661
+ const dataforgeTableDetailsInputShape = {
662
+ query: zod_1.z
663
+ .string()
664
+ .min(1)
665
+ .describe('Natural-language query describing the table(s) you want detailed info about.'),
666
+ limit: zod_1.z.coerce
667
+ .number()
668
+ .int()
669
+ .positive()
670
+ .max(200)
671
+ .optional()
672
+ .describe('Optional max number of tables to return with details.'),
673
+ };
674
+ exports.dataforgeTableDetailsInput = zod_1.z.object(dataforgeTableDetailsInputShape);
675
+ exports.dataforgeTableDetailsDescriptor = makeToolDescriptor({
676
+ title: 'DataForge: matching tables with details',
677
+ description: 'Like `dataforge-similar-tables`, but returns richer per-table details (description/columns as known to DataForge) for the best semantic matches. ' +
678
+ 'For the canonical, exact field schema still confirm with `describe-entity` before CRUD.' +
679
+ DATAFORGE_PREREQ_NOTE,
680
+ inputShape: dataforgeTableDetailsInputShape,
681
+ });
682
+ const dataforgeTableRelationshipsInputShape = {
683
+ sourceTable: zod_1.z
684
+ .string()
685
+ .min(1)
686
+ .describe('Source table/entity name (e.g. "Contact"). Resolve it via dataforge-similar-tables if unsure.'),
687
+ targetTable: zod_1.z.string().min(1).describe('Target table/entity name (e.g. "Account").'),
688
+ limit: zod_1.z.coerce
689
+ .number()
690
+ .int()
691
+ .positive()
692
+ .max(50)
693
+ .optional()
694
+ .describe('Optional max number of relationship paths to return (server default ~5).'),
695
+ bidirectional: zod_1.z
696
+ .boolean()
697
+ .optional()
698
+ .describe('Search relationships in both directions. Defaults to true server-side.'),
699
+ skipDetails: zod_1.z
700
+ .boolean()
701
+ .optional()
702
+ .describe('Return only the path without extra column-level detail.'),
703
+ };
704
+ exports.dataforgeTableRelationshipsInput = zod_1.z.object(dataforgeTableRelationshipsInputShape);
705
+ exports.dataforgeTableRelationshipsDescriptor = makeToolDescriptor({
706
+ title: 'DataForge: how two tables are related',
707
+ description: 'Find the relationship path(s) between two Creatio tables (which columns/joins connect them). ' +
708
+ 'Use this to figure out how to `$expand` or join entities in a `read`, or to understand the data model around an entity.' +
709
+ DATAFORGE_PREREQ_NOTE,
710
+ inputShape: dataforgeTableRelationshipsInputShape,
711
+ });
712
+ const dataforgeLookupValuesInputShape = {
713
+ query: zod_1.z
714
+ .string()
715
+ .min(1)
716
+ .describe('Natural-language / partial text to match lookup values against (e.g. "in progress", "VIP").'),
717
+ schemaName: zod_1.z
718
+ .string()
719
+ .min(1)
720
+ .optional()
721
+ .describe('Optional lookup schema/entity name to restrict the search to a single lookup (e.g. "CaseStatus").'),
722
+ limit: zod_1.z.coerce
723
+ .number()
724
+ .int()
725
+ .positive()
726
+ .max(100)
727
+ .optional()
728
+ .describe('Optional max number of lookup values to return (server default ~5).'),
729
+ };
730
+ exports.dataforgeLookupValuesInput = zod_1.z.object(dataforgeLookupValuesInputShape);
731
+ exports.dataforgeLookupValuesDescriptor = makeToolDescriptor({
732
+ title: 'DataForge: find lookup values by meaning',
733
+ description: 'Fuzzy/semantic search for lookup values across (or within) Creatio lookups — returns matching values and their identifiers. ' +
734
+ 'Useful to resolve a human phrase ("high priority", "закрита угода") to the correct lookup record Id to use in a filter or create/update payload.' +
735
+ DATAFORGE_PREREQ_NOTE,
736
+ inputShape: dataforgeLookupValuesInputShape,
737
+ });
738
+ exports.dataforgeStatusInput = zod_1.z.object({});
739
+ exports.dataforgeStatusDescriptor = makeToolDescriptor({
740
+ title: 'DataForge: service status / is it enabled',
741
+ description: 'Check whether DataForge is enabled and healthy on this environment. ' +
742
+ 'Calls DataForgeMaintenanceService.GetServiceStatus and returns `{ IsOnline, Liveness, Readiness, DataStructureReadiness, LookupsReadinessInfo }`. ' +
743
+ 'Interpretation: IsOnline=false → DataForge is unreachable or DataForgeServiceUrl is not configured (the other dataforge-* tools will fail). ' +
744
+ 'Readiness.HttpStatusCode=200 with non-empty DataStructureReadiness/LookupsReadinessInfo → the data model and lookups have been synced and search will return results. ' +
745
+ 'If you only need a quick on/off signal, you can also query the `DataForgeServiceUrl` system setting (empty = disabled).',
746
+ inputShape: {},
747
+ });
748
+ // ---------------------------------------------------------------------------
749
+ // Global Search — Creatio's cross-entity record search (Elasticsearch-backed),
750
+ // the same engine behind the UI search box. Registered only when Global Search
751
+ // is enabled on the environment (non-empty `GlobalSearchUrl`).
752
+ // ---------------------------------------------------------------------------
753
+ const globalSearchInputShape = {
754
+ query: zod_1.z
755
+ .string()
756
+ .min(1)
757
+ .describe('Free-text search across indexed records, exactly like the Creatio UI search box (e.g. "andrew baker", "acme invoice 2024"). Matches names, numbers and other indexed columns.'),
758
+ entities: zod_1.z
759
+ .array(zod_1.z.string().min(1))
760
+ .optional()
761
+ .describe('Optional list of entity schema names to restrict the search to (e.g. ["Contact","Account"]). Omit to search all indexed sections. Maps to the service `type` filter.'),
762
+ limit: zod_1.z.coerce
763
+ .number()
764
+ .int()
765
+ .positive()
766
+ .max(100)
767
+ .optional()
768
+ .describe('Max records to return (server default ~15).'),
769
+ from: zod_1.z.coerce
770
+ .number()
771
+ .int()
772
+ .min(0)
773
+ .optional()
774
+ .describe('Pagination offset (skip this many results). Use with the response `nextFrom`.'),
775
+ };
776
+ exports.globalSearchInput = zod_1.z.object(globalSearchInputShape);
777
+ exports.globalSearchDescriptor = makeToolDescriptor({
778
+ title: 'Global Search: find records across entities',
779
+ description: 'Search Creatio records the way the UI search box does — full-text across all indexed entities (Elasticsearch-backed). ' +
780
+ 'Use this to locate specific records by name/number/keyword when you do not know the exact entity or filter (e.g. "find Andrew Baker", "the Acme renewal opportunity"). ' +
781
+ 'Calls GlobalSearchService.Search; returns matched records with `entityName`, `id`, `columnValues`, and highlighted `foundColumns`, plus `total`/`nextFrom` for paging. ' +
782
+ 'Differs from `read`: `read` needs an exact entity + OData filter; global-search is fuzzy and cross-entity. ' +
783
+ 'Prerequisites: Global Search must be enabled on the environment (non-empty `GlobalSearchUrl` + the `GlobalSearch_V2` feature). This tool is only registered when enabled.',
784
+ inputShape: globalSearchInputShape,
785
+ });
571
786
  //# sourceMappingURL=tools-data.js.map