@egain/egain-mcp-server 1.0.26 → 1.1.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 (574) hide show
  1. package/README.md +20 -43
  2. package/bin/mcp-server.js +39534 -29516
  3. package/bin/mcp-server.js.map +298 -185
  4. package/esm/src/cloudflare-worker/cloudflare-worker.d.ts.map +1 -1
  5. package/esm/src/cloudflare-worker/cloudflare-worker.js +20 -9
  6. package/esm/src/cloudflare-worker/cloudflare-worker.js.map +1 -1
  7. package/esm/src/funcs/aiSearch.d.ts +63 -0
  8. package/esm/src/funcs/aiSearch.d.ts.map +1 -0
  9. package/esm/src/funcs/aiSearch.js +151 -0
  10. package/esm/src/funcs/aiSearch.js.map +1 -0
  11. package/esm/src/funcs/getAnnouncementArticles.d.ts +61 -0
  12. package/esm/src/funcs/getAnnouncementArticles.d.ts.map +1 -0
  13. package/esm/src/funcs/getAnnouncementArticles.js +152 -0
  14. package/esm/src/funcs/getAnnouncementArticles.js.map +1 -0
  15. package/esm/src/funcs/getAnnouncements.d.ts +39 -1
  16. package/esm/src/funcs/getAnnouncements.d.ts.map +1 -1
  17. package/esm/src/funcs/getAnnouncements.js +39 -1
  18. package/esm/src/funcs/getAnnouncements.js.map +1 -1
  19. package/esm/src/funcs/getArticle.d.ts +42 -0
  20. package/esm/src/funcs/getArticle.d.ts.map +1 -1
  21. package/esm/src/funcs/getArticle.js +42 -0
  22. package/esm/src/funcs/getArticle.js.map +1 -1
  23. package/esm/src/funcs/getArticleById.d.ts +70 -0
  24. package/esm/src/funcs/getArticleById.d.ts.map +1 -0
  25. package/esm/src/funcs/getArticleById.js +163 -0
  26. package/esm/src/funcs/getArticleById.js.map +1 -0
  27. package/esm/src/funcs/getBestAnswer.d.ts +66 -0
  28. package/esm/src/funcs/getBestAnswer.d.ts.map +1 -0
  29. package/esm/src/funcs/getBestAnswer.js +148 -0
  30. package/esm/src/funcs/getBestAnswer.js.map +1 -0
  31. package/esm/src/funcs/getMyPortals.d.ts +97 -0
  32. package/esm/src/funcs/getMyPortals.d.ts.map +1 -0
  33. package/esm/src/funcs/getMyPortals.js +180 -0
  34. package/esm/src/funcs/getMyPortals.js.map +1 -0
  35. package/esm/src/funcs/getPopularArticles.d.ts +39 -0
  36. package/esm/src/funcs/getPopularArticles.d.ts.map +1 -1
  37. package/esm/src/funcs/getPopularArticles.js +47 -3
  38. package/esm/src/funcs/getPopularArticles.js.map +1 -1
  39. package/esm/src/funcs/getPortals.d.ts +26 -1
  40. package/esm/src/funcs/getPortals.d.ts.map +1 -1
  41. package/esm/src/funcs/getPortals.js +35 -10
  42. package/esm/src/funcs/getPortals.js.map +1 -1
  43. package/esm/src/funcs/makeSuggestion.d.ts +46 -2
  44. package/esm/src/funcs/makeSuggestion.d.ts.map +1 -1
  45. package/esm/src/funcs/makeSuggestion.js +51 -3
  46. package/esm/src/funcs/makeSuggestion.js.map +1 -1
  47. package/esm/src/funcs/queryAnswers.d.ts +41 -5
  48. package/esm/src/funcs/queryAnswers.d.ts.map +1 -1
  49. package/esm/src/funcs/queryAnswers.js +41 -5
  50. package/esm/src/funcs/queryAnswers.js.map +1 -1
  51. package/esm/src/funcs/queryRetrieve.d.ts +41 -1
  52. package/esm/src/funcs/queryRetrieve.d.ts.map +1 -1
  53. package/esm/src/funcs/queryRetrieve.js +41 -1
  54. package/esm/src/funcs/queryRetrieve.js.map +1 -1
  55. package/esm/src/funcs/querySearch.d.ts +48 -1
  56. package/esm/src/funcs/querySearch.d.ts.map +1 -1
  57. package/esm/src/funcs/querySearch.js +48 -1
  58. package/esm/src/funcs/querySearch.js.map +1 -1
  59. package/esm/src/funcs/retrieveChunks.d.ts +41 -7
  60. package/esm/src/funcs/retrieveChunks.d.ts.map +1 -1
  61. package/esm/src/funcs/retrieveChunks.js +45 -19
  62. package/esm/src/funcs/retrieveChunks.js.map +1 -1
  63. package/esm/src/hooks/auth-hook.d.ts +1 -2
  64. package/esm/src/hooks/auth-hook.d.ts.map +1 -1
  65. package/esm/src/hooks/auth-hook.js +1 -65
  66. package/esm/src/hooks/auth-hook.js.map +1 -1
  67. package/esm/src/hooks/registration.d.ts.map +1 -1
  68. package/esm/src/hooks/registration.js +2 -16
  69. package/esm/src/hooks/registration.js.map +1 -1
  70. package/esm/src/landing-page.d.ts +5 -0
  71. package/esm/src/landing-page.d.ts.map +1 -0
  72. package/esm/src/landing-page.js +1070 -0
  73. package/esm/src/landing-page.js.map +1 -0
  74. package/esm/src/lib/base64.d.ts +2 -2
  75. package/esm/src/lib/base64.d.ts.map +1 -1
  76. package/esm/src/lib/base64.js +2 -2
  77. package/esm/src/lib/base64.js.map +1 -1
  78. package/esm/src/lib/config.d.ts +3 -3
  79. package/esm/src/lib/config.js +5 -5
  80. package/esm/src/lib/config.js.map +1 -1
  81. package/esm/src/lib/encodings.d.ts.map +1 -1
  82. package/esm/src/lib/encodings.js +10 -1
  83. package/esm/src/lib/encodings.js.map +1 -1
  84. package/esm/src/lib/matchers.d.ts.map +1 -1
  85. package/esm/src/lib/matchers.js +4 -1
  86. package/esm/src/lib/matchers.js.map +1 -1
  87. package/esm/src/lib/schemas.d.ts +4 -4
  88. package/esm/src/lib/schemas.d.ts.map +1 -1
  89. package/esm/src/lib/schemas.js +2 -2
  90. package/esm/src/lib/schemas.js.map +1 -1
  91. package/esm/src/lib/sdks.js +2 -2
  92. package/esm/src/lib/sdks.js.map +1 -1
  93. package/esm/src/lib/security.d.ts.map +1 -1
  94. package/esm/src/lib/security.js +18 -0
  95. package/esm/src/lib/security.js.map +1 -1
  96. package/esm/src/mcp-server/cli/start/command.d.ts.map +1 -1
  97. package/esm/src/mcp-server/cli/start/command.js +30 -0
  98. package/esm/src/mcp-server/cli/start/command.js.map +1 -1
  99. package/esm/src/mcp-server/cli/start/impl.d.ts +2 -7
  100. package/esm/src/mcp-server/cli/start/impl.d.ts.map +1 -1
  101. package/esm/src/mcp-server/cli/start/impl.js +98 -22
  102. package/esm/src/mcp-server/cli/start/impl.js.map +1 -1
  103. package/esm/src/mcp-server/extensions.d.ts +4 -4
  104. package/esm/src/mcp-server/extensions.d.ts.map +1 -1
  105. package/esm/src/mcp-server/flags.d.ts +17 -0
  106. package/esm/src/mcp-server/flags.d.ts.map +1 -0
  107. package/esm/src/mcp-server/flags.js +5 -0
  108. package/esm/src/mcp-server/flags.js.map +1 -0
  109. package/esm/src/mcp-server/mcp-server.js +1 -1
  110. package/esm/src/mcp-server/mcp-server.js.map +1 -1
  111. package/esm/src/mcp-server/prompts.d.ts +4 -7
  112. package/esm/src/mcp-server/prompts.d.ts.map +1 -1
  113. package/esm/src/mcp-server/prompts.js.map +1 -1
  114. package/esm/src/mcp-server/server.d.ts +8 -1
  115. package/esm/src/mcp-server/server.d.ts.map +1 -1
  116. package/esm/src/mcp-server/server.js +19 -16
  117. package/esm/src/mcp-server/server.js.map +1 -1
  118. package/esm/src/mcp-server/tools/aiSearch.d.ts +7 -0
  119. package/esm/src/mcp-server/tools/aiSearch.d.ts.map +1 -0
  120. package/esm/src/mcp-server/tools/aiSearch.js +83 -0
  121. package/esm/src/mcp-server/tools/aiSearch.js.map +1 -0
  122. package/esm/src/mcp-server/tools/getAnnouncementArticles.d.ts +7 -0
  123. package/esm/src/mcp-server/tools/getAnnouncementArticles.d.ts.map +1 -0
  124. package/esm/src/mcp-server/tools/getAnnouncementArticles.js +81 -0
  125. package/esm/src/mcp-server/tools/getAnnouncementArticles.js.map +1 -0
  126. package/esm/src/mcp-server/tools/getAnnouncements.d.ts.map +1 -1
  127. package/esm/src/mcp-server/tools/getAnnouncements.js +39 -1
  128. package/esm/src/mcp-server/tools/getAnnouncements.js.map +1 -1
  129. package/esm/src/mcp-server/tools/getArticle.d.ts.map +1 -1
  130. package/esm/src/mcp-server/tools/getArticle.js +42 -0
  131. package/esm/src/mcp-server/tools/getArticle.js.map +1 -1
  132. package/esm/src/mcp-server/tools/getArticleById.d.ts +7 -0
  133. package/esm/src/mcp-server/tools/getArticleById.d.ts.map +1 -0
  134. package/esm/src/mcp-server/tools/getArticleById.js +90 -0
  135. package/esm/src/mcp-server/tools/getArticleById.js.map +1 -0
  136. package/esm/src/mcp-server/tools/getBestAnswer.d.ts +7 -0
  137. package/esm/src/mcp-server/tools/getBestAnswer.d.ts.map +1 -0
  138. package/esm/src/mcp-server/tools/getBestAnswer.js +85 -0
  139. package/esm/src/mcp-server/tools/getBestAnswer.js.map +1 -0
  140. package/esm/src/mcp-server/tools/getMyPortals.d.ts +7 -0
  141. package/esm/src/mcp-server/tools/getMyPortals.d.ts.map +1 -0
  142. package/esm/src/mcp-server/tools/getMyPortals.js +117 -0
  143. package/esm/src/mcp-server/tools/getMyPortals.js.map +1 -0
  144. package/esm/src/mcp-server/tools/getPopularArticles.d.ts +1 -1
  145. package/esm/src/mcp-server/tools/getPopularArticles.d.ts.map +1 -1
  146. package/esm/src/mcp-server/tools/getPopularArticles.js +40 -0
  147. package/esm/src/mcp-server/tools/getPopularArticles.js.map +1 -1
  148. package/esm/src/mcp-server/tools/getPortals.d.ts +1 -1
  149. package/esm/src/mcp-server/tools/getPortals.d.ts.map +1 -1
  150. package/esm/src/mcp-server/tools/getPortals.js +26 -1
  151. package/esm/src/mcp-server/tools/getPortals.js.map +1 -1
  152. package/esm/src/mcp-server/tools/makeSuggestion.d.ts +1 -1
  153. package/esm/src/mcp-server/tools/makeSuggestion.d.ts.map +1 -1
  154. package/esm/src/mcp-server/tools/makeSuggestion.js +44 -0
  155. package/esm/src/mcp-server/tools/makeSuggestion.js.map +1 -1
  156. package/esm/src/mcp-server/tools/queryAnswers.d.ts.map +1 -1
  157. package/esm/src/mcp-server/tools/queryAnswers.js +41 -5
  158. package/esm/src/mcp-server/tools/queryAnswers.js.map +1 -1
  159. package/esm/src/mcp-server/tools/queryRetrieve.d.ts.map +1 -1
  160. package/esm/src/mcp-server/tools/queryRetrieve.js +41 -1
  161. package/esm/src/mcp-server/tools/queryRetrieve.js.map +1 -1
  162. package/esm/src/mcp-server/tools/querySearch.d.ts.map +1 -1
  163. package/esm/src/mcp-server/tools/querySearch.js +48 -1
  164. package/esm/src/mcp-server/tools/querySearch.js.map +1 -1
  165. package/esm/src/mcp-server/tools/retrieveChunks.d.ts +1 -1
  166. package/esm/src/mcp-server/tools/retrieveChunks.d.ts.map +1 -1
  167. package/esm/src/mcp-server/tools/retrieveChunks.js +41 -7
  168. package/esm/src/mcp-server/tools/retrieveChunks.js.map +1 -1
  169. package/esm/src/mcp-server/tools.d.ts +14 -4
  170. package/esm/src/mcp-server/tools.d.ts.map +1 -1
  171. package/esm/src/mcp-server/tools.js +203 -5
  172. package/esm/src/mcp-server/tools.js.map +1 -1
  173. package/esm/src/models/acceptlanguage.d.ts +36 -5
  174. package/esm/src/models/acceptlanguage.d.ts.map +1 -1
  175. package/esm/src/models/acceptlanguage.js +18 -4
  176. package/esm/src/models/acceptlanguage.js.map +1 -1
  177. package/esm/src/models/accessibleportal.d.ts +1 -1
  178. package/esm/src/models/accessibleportal.d.ts.map +1 -1
  179. package/esm/src/models/accessibleportal.js.map +1 -1
  180. package/esm/src/models/additionalsnippets.d.ts +18 -3
  181. package/esm/src/models/additionalsnippets.d.ts.map +1 -1
  182. package/esm/src/models/additionalsnippets.js +8 -1
  183. package/esm/src/models/additionalsnippets.js.map +1 -1
  184. package/esm/src/models/aisearchop.d.ts +4 -10
  185. package/esm/src/models/aisearchop.d.ts.map +1 -1
  186. package/esm/src/models/aisearchop.js +9 -20
  187. package/esm/src/models/aisearchop.js.map +1 -1
  188. package/esm/src/models/aisearchresponse.d.ts +2 -2
  189. package/esm/src/models/aisearchresponse.d.ts.map +1 -1
  190. package/esm/src/models/aisearchresponse.js.map +1 -1
  191. package/esm/src/models/aispaginationinfo.d.ts +1 -1
  192. package/esm/src/models/aispaginationinfo.d.ts.map +1 -1
  193. package/esm/src/models/aispaginationinfo.js +5 -4
  194. package/esm/src/models/aispaginationinfo.js.map +1 -1
  195. package/esm/src/models/aitopicbreadcrumb.d.ts +1 -1
  196. package/esm/src/models/aitopicbreadcrumb.d.ts.map +1 -1
  197. package/esm/src/models/aitopicbreadcrumb.js +2 -1
  198. package/esm/src/models/aitopicbreadcrumb.js.map +1 -1
  199. package/esm/src/models/aitopicsummary.d.ts +1 -1
  200. package/esm/src/models/aitopicsummary.d.ts.map +1 -1
  201. package/esm/src/models/aitopicsummary.js.map +1 -1
  202. package/esm/src/models/allaccessibleportals.d.ts +1 -1
  203. package/esm/src/models/allaccessibleportals.d.ts.map +1 -1
  204. package/esm/src/models/allaccessibleportals.js +2 -1
  205. package/esm/src/models/allaccessibleportals.js.map +1 -1
  206. package/esm/src/models/answersrequest.d.ts +16 -25
  207. package/esm/src/models/answersrequest.d.ts.map +1 -1
  208. package/esm/src/models/answersrequest.js +11 -25
  209. package/esm/src/models/answersrequest.js.map +1 -1
  210. package/esm/src/models/answersresponse.d.ts +28 -7
  211. package/esm/src/models/answersresponse.d.ts.map +1 -1
  212. package/esm/src/models/answersresponse.js +8 -0
  213. package/esm/src/models/answersresponse.js.map +1 -1
  214. package/esm/src/models/article.d.ts +2 -2
  215. package/esm/src/models/article.d.ts.map +1 -1
  216. package/esm/src/models/article.js +3 -4
  217. package/esm/src/models/article.js.map +1 -1
  218. package/esm/src/models/articleadditionalattributes.d.ts +36 -2
  219. package/esm/src/models/articleadditionalattributes.d.ts.map +1 -1
  220. package/esm/src/models/articleadditionalattributes.js +17 -0
  221. package/esm/src/models/articleadditionalattributes.js.map +1 -1
  222. package/esm/src/models/articleaisearchresult.d.ts +48 -9
  223. package/esm/src/models/articleaisearchresult.d.ts.map +1 -1
  224. package/esm/src/models/articleaisearchresult.js +17 -1
  225. package/esm/src/models/articleaisearchresult.js.map +1 -1
  226. package/esm/src/models/articleattachment.d.ts +14 -3
  227. package/esm/src/models/articleattachment.d.ts.map +1 -1
  228. package/esm/src/models/articleattachment.js +7 -2
  229. package/esm/src/models/articleattachment.js.map +1 -1
  230. package/esm/src/models/articleresult.d.ts +1 -1
  231. package/esm/src/models/articleresult.d.ts.map +1 -1
  232. package/esm/src/models/articleresult.js +1 -1
  233. package/esm/src/models/articleresult.js.map +1 -1
  234. package/esm/src/models/articleresultadditionalattributes.d.ts +34 -2
  235. package/esm/src/models/articleresultadditionalattributes.d.ts.map +1 -1
  236. package/esm/src/models/articleresultadditionalattributes.js +16 -0
  237. package/esm/src/models/articleresultadditionalattributes.js.map +1 -1
  238. package/esm/src/models/articleresults.d.ts +1 -1
  239. package/esm/src/models/articleresults.d.ts.map +1 -1
  240. package/esm/src/models/articleresults.js.map +1 -1
  241. package/esm/src/models/articletype.d.ts +2 -7
  242. package/esm/src/models/articletype.d.ts.map +1 -1
  243. package/esm/src/models/articletype.js +2 -16
  244. package/esm/src/models/articletype.js.map +1 -1
  245. package/esm/src/models/attachmentforcreatesuggestion.d.ts +1 -1
  246. package/esm/src/models/attachmentforcreatesuggestion.d.ts.map +1 -1
  247. package/esm/src/models/attachmentforcreatesuggestion.js.map +1 -1
  248. package/esm/src/models/bookmarkstatus.d.ts +1 -1
  249. package/esm/src/models/bookmarkstatus.d.ts.map +1 -1
  250. package/esm/src/models/bookmarkstatus.js +1 -1
  251. package/esm/src/models/bookmarkstatus.js.map +1 -1
  252. package/esm/src/models/complianceforarticle.d.ts +3 -3
  253. package/esm/src/models/complianceforarticle.d.ts.map +1 -1
  254. package/esm/src/models/complianceforarticle.js +8 -5
  255. package/esm/src/models/complianceforarticle.js.map +1 -1
  256. package/esm/src/models/createdby.d.ts +1 -1
  257. package/esm/src/models/createdby.d.ts.map +1 -1
  258. package/esm/src/models/createdby.js.map +1 -1
  259. package/esm/src/models/createsuggestion.d.ts +69 -6
  260. package/esm/src/models/createsuggestion.d.ts.map +1 -1
  261. package/esm/src/models/createsuggestion.js +31 -2
  262. package/esm/src/models/createsuggestion.js.map +1 -1
  263. package/esm/src/models/customattribute.d.ts +18 -3
  264. package/esm/src/models/customattribute.d.ts.map +1 -1
  265. package/esm/src/models/customattribute.js +6 -0
  266. package/esm/src/models/customattribute.js.map +1 -1
  267. package/esm/src/models/department.d.ts +1 -1
  268. package/esm/src/models/department.d.ts.map +1 -1
  269. package/esm/src/models/department.js.map +1 -1
  270. package/esm/src/models/edition.d.ts +2 -2
  271. package/esm/src/models/edition.d.ts.map +1 -1
  272. package/esm/src/models/edition.js +1 -2
  273. package/esm/src/models/edition.js.map +1 -1
  274. package/esm/src/models/errors/sdkvalidationerror.d.ts +1 -1
  275. package/esm/src/models/errors/sdkvalidationerror.d.ts.map +1 -1
  276. package/esm/src/models/errors/sdkvalidationerror.js +2 -49
  277. package/esm/src/models/errors/sdkvalidationerror.js.map +1 -1
  278. package/esm/src/models/folderbreadcrumb.d.ts +1 -1
  279. package/esm/src/models/folderbreadcrumb.d.ts.map +1 -1
  280. package/esm/src/models/folderbreadcrumb.js.map +1 -1
  281. package/esm/src/models/foldersummary.d.ts +1 -1
  282. package/esm/src/models/foldersummary.d.ts.map +1 -1
  283. package/esm/src/models/foldersummary.js +1 -1
  284. package/esm/src/models/foldersummary.js.map +1 -1
  285. package/esm/src/models/getannouncementarticlesop.d.ts +8 -9
  286. package/esm/src/models/getannouncementarticlesop.d.ts.map +1 -1
  287. package/esm/src/models/getannouncementarticlesop.js +12 -10
  288. package/esm/src/models/getannouncementarticlesop.js.map +1 -1
  289. package/esm/src/models/getarticlebyidop.d.ts +77 -11
  290. package/esm/src/models/getarticlebyidop.d.ts.map +1 -1
  291. package/esm/src/models/getarticlebyidop.js +31 -62
  292. package/esm/src/models/getarticlebyidop.js.map +1 -1
  293. package/esm/src/models/getbestanswerop.d.ts +1 -9
  294. package/esm/src/models/getbestanswerop.d.ts.map +1 -1
  295. package/esm/src/models/getbestanswerop.js +3 -16
  296. package/esm/src/models/getbestanswerop.js.map +1 -1
  297. package/esm/src/models/getmyportalsop.d.ts +4 -10
  298. package/esm/src/models/getmyportalsop.d.ts.map +1 -1
  299. package/esm/src/models/getmyportalsop.js +9 -10
  300. package/esm/src/models/getmyportalsop.js.map +1 -1
  301. package/esm/src/models/getpopulararticlesop.d.ts +8 -9
  302. package/esm/src/models/getpopulararticlesop.d.ts.map +1 -1
  303. package/esm/src/models/getpopulararticlesop.js +12 -10
  304. package/esm/src/models/getpopulararticlesop.js.map +1 -1
  305. package/esm/src/models/l10nstring.d.ts +1 -1
  306. package/esm/src/models/l10nstring.d.ts.map +1 -1
  307. package/esm/src/models/l10nstring.js.map +1 -1
  308. package/esm/src/models/languagecode.d.ts +69 -2
  309. package/esm/src/models/languagecode.d.ts.map +1 -1
  310. package/esm/src/models/languagecode.js +32 -0
  311. package/esm/src/models/languagecode.js.map +1 -1
  312. package/esm/src/models/languagecodeparameter.d.ts +90 -5
  313. package/esm/src/models/languagecodeparameter.d.ts.map +1 -1
  314. package/esm/src/models/languagecodeparameter.js +45 -4
  315. package/esm/src/models/languagecodeparameter.js.map +1 -1
  316. package/esm/src/models/languagequeryparameter.d.ts +90 -5
  317. package/esm/src/models/languagequeryparameter.d.ts.map +1 -1
  318. package/esm/src/models/languagequeryparameter.js +45 -4
  319. package/esm/src/models/languagequeryparameter.js.map +1 -1
  320. package/esm/src/models/link.d.ts +1 -1
  321. package/esm/src/models/link.d.ts.map +1 -1
  322. package/esm/src/models/link.js.map +1 -1
  323. package/esm/src/models/makesuggestionop.d.ts +4 -9
  324. package/esm/src/models/makesuggestionop.d.ts.map +1 -1
  325. package/esm/src/models/makesuggestionop.js +3 -7
  326. package/esm/src/models/makesuggestionop.js.map +1 -1
  327. package/esm/src/models/mandatorylanguagequeryparameter.d.ts +90 -5
  328. package/esm/src/models/mandatorylanguagequeryparameter.d.ts.map +1 -1
  329. package/esm/src/models/mandatorylanguagequeryparameter.js +45 -4
  330. package/esm/src/models/mandatorylanguagequeryparameter.js.map +1 -1
  331. package/esm/src/models/milestone.d.ts +1 -1
  332. package/esm/src/models/milestone.d.ts.map +1 -1
  333. package/esm/src/models/milestone.js.map +1 -1
  334. package/esm/src/models/milestonename.d.ts +1 -1
  335. package/esm/src/models/milestonename.d.ts.map +1 -1
  336. package/esm/src/models/milestonename.js.map +1 -1
  337. package/esm/src/models/modifiedby.d.ts +1 -1
  338. package/esm/src/models/modifiedby.d.ts.map +1 -1
  339. package/esm/src/models/modifiedby.js.map +1 -1
  340. package/esm/src/models/order.d.ts +10 -2
  341. package/esm/src/models/order.d.ts.map +1 -1
  342. package/esm/src/models/order.js +4 -0
  343. package/esm/src/models/order.js.map +1 -1
  344. package/esm/src/models/ownedby.d.ts +1 -1
  345. package/esm/src/models/ownedby.d.ts.map +1 -1
  346. package/esm/src/models/ownedby.js +1 -2
  347. package/esm/src/models/ownedby.js.map +1 -1
  348. package/esm/src/models/paginationinfo.d.ts +1 -1
  349. package/esm/src/models/paginationinfo.d.ts.map +1 -1
  350. package/esm/src/models/paginationinfo.js +3 -3
  351. package/esm/src/models/paginationinfo.js.map +1 -1
  352. package/esm/src/models/personalization.d.ts +4 -4
  353. package/esm/src/models/personalization.d.ts.map +1 -1
  354. package/esm/src/models/personalization.js +1 -2
  355. package/esm/src/models/personalization.js.map +1 -1
  356. package/esm/src/models/publishview.d.ts +2 -2
  357. package/esm/src/models/publishview.d.ts.map +1 -1
  358. package/esm/src/models/publishview.js.map +1 -1
  359. package/esm/src/models/referenceresponse.d.ts +30 -5
  360. package/esm/src/models/referenceresponse.d.ts.map +1 -1
  361. package/esm/src/models/referenceresponse.js +12 -1
  362. package/esm/src/models/referenceresponse.js.map +1 -1
  363. package/esm/src/models/requiredlanguagecode.d.ts +71 -2
  364. package/esm/src/models/requiredlanguagecode.d.ts.map +1 -1
  365. package/esm/src/models/requiredlanguagecode.js +33 -0
  366. package/esm/src/models/requiredlanguagecode.js.map +1 -1
  367. package/esm/src/models/retrievechunksop.d.ts +1 -9
  368. package/esm/src/models/retrievechunksop.d.ts.map +1 -1
  369. package/esm/src/models/retrievechunksop.js +1 -15
  370. package/esm/src/models/retrievechunksop.js.map +1 -1
  371. package/esm/src/models/retrieverequest.d.ts +15 -4
  372. package/esm/src/models/retrieverequest.d.ts.map +1 -1
  373. package/esm/src/models/retrieverequest.js +4 -0
  374. package/esm/src/models/retrieverequest.js.map +1 -1
  375. package/esm/src/models/retrieveresponse.d.ts +27 -8
  376. package/esm/src/models/retrieveresponse.d.ts.map +1 -1
  377. package/esm/src/models/retrieveresponse.js +8 -1
  378. package/esm/src/models/retrieveresponse.js.map +1 -1
  379. package/esm/src/models/schemaslink.d.ts +1 -1
  380. package/esm/src/models/schemaslink.d.ts.map +1 -1
  381. package/esm/src/models/schemaslink.js.map +1 -1
  382. package/esm/src/models/schemastags.d.ts +1 -1
  383. package/esm/src/models/schemastags.d.ts.map +1 -1
  384. package/esm/src/models/schemastags.js.map +1 -1
  385. package/esm/src/models/searchresult.d.ts +40 -5
  386. package/esm/src/models/searchresult.d.ts.map +1 -1
  387. package/esm/src/models/searchresult.js +19 -0
  388. package/esm/src/models/searchresult.js.map +1 -1
  389. package/esm/src/models/security.d.ts +5 -2
  390. package/esm/src/models/security.d.ts.map +1 -1
  391. package/esm/src/models/security.js +5 -3
  392. package/esm/src/models/security.js.map +1 -1
  393. package/esm/src/models/shorturl.d.ts +1 -1
  394. package/esm/src/models/shorturl.d.ts.map +1 -1
  395. package/esm/src/models/shorturl.js +1 -2
  396. package/esm/src/models/shorturl.js.map +1 -1
  397. package/esm/src/models/sortidnamedepartment.d.ts +12 -2
  398. package/esm/src/models/sortidnamedepartment.d.ts.map +1 -1
  399. package/esm/src/models/sortidnamedepartment.js +5 -0
  400. package/esm/src/models/sortidnamedepartment.js.map +1 -1
  401. package/esm/src/models/stage.d.ts +1 -1
  402. package/esm/src/models/stage.d.ts.map +1 -1
  403. package/esm/src/models/stage.js +1 -2
  404. package/esm/src/models/stage.js.map +1 -1
  405. package/esm/src/models/structuredauthoringfields.d.ts +1 -1
  406. package/esm/src/models/structuredauthoringfields.d.ts.map +1 -1
  407. package/esm/src/models/structuredauthoringfields.js.map +1 -1
  408. package/esm/src/models/tag.d.ts +1 -1
  409. package/esm/src/models/tag.d.ts.map +1 -1
  410. package/esm/src/models/tag.js.map +1 -1
  411. package/esm/src/models/tagcategory.d.ts +1 -1
  412. package/esm/src/models/tagcategory.d.ts.map +1 -1
  413. package/esm/src/models/tagcategory.js.map +1 -1
  414. package/esm/src/models/taggroup.d.ts +1 -1
  415. package/esm/src/models/taggroup.d.ts.map +1 -1
  416. package/esm/src/models/taggroup.js +1 -2
  417. package/esm/src/models/taggroup.js.map +1 -1
  418. package/esm/src/models/taggroups.d.ts +1 -1
  419. package/esm/src/models/taggroups.d.ts.map +1 -1
  420. package/esm/src/models/taggroups.js.map +1 -1
  421. package/esm/src/models/tags.d.ts +1 -1
  422. package/esm/src/models/tags.d.ts.map +1 -1
  423. package/esm/src/models/tags.js.map +1 -1
  424. package/esm/src/models/topicbreadcrumb.d.ts +1 -1
  425. package/esm/src/models/topicbreadcrumb.d.ts.map +1 -1
  426. package/esm/src/models/topicbreadcrumb.js.map +1 -1
  427. package/esm/src/models/topicsummary.d.ts +1 -1
  428. package/esm/src/models/topicsummary.d.ts.map +1 -1
  429. package/esm/src/models/topicsummary.js.map +1 -1
  430. package/esm/src/models/workflow.d.ts +1 -1
  431. package/esm/src/models/workflow.d.ts.map +1 -1
  432. package/esm/src/models/workflow.js +1 -2
  433. package/esm/src/models/workflow.js.map +1 -1
  434. package/esm/src/models/workflowmilestone.d.ts +12 -2
  435. package/esm/src/models/workflowmilestone.d.ts.map +1 -1
  436. package/esm/src/models/workflowmilestone.js +5 -0
  437. package/esm/src/models/workflowmilestone.js.map +1 -1
  438. package/esm/src/models/wserrorcommon.d.ts +2 -2
  439. package/esm/src/models/wserrorcommon.d.ts.map +1 -1
  440. package/esm/src/models/wserrorcommon.js +1 -2
  441. package/esm/src/models/wserrorcommon.js.map +1 -1
  442. package/esm/src/tool-names.d.ts +5 -0
  443. package/esm/src/tool-names.d.ts.map +1 -0
  444. package/esm/src/tool-names.js +36 -0
  445. package/esm/src/tool-names.js.map +1 -0
  446. package/esm/src/types/bigint.d.ts +6 -0
  447. package/esm/src/types/bigint.d.ts.map +1 -0
  448. package/esm/src/types/bigint.js +87 -0
  449. package/esm/src/types/bigint.js.map +1 -0
  450. package/esm/worker-configuration.d.ts +1 -0
  451. package/esm/worker-configuration.d.ts.map +1 -1
  452. package/manifest.json +78 -51
  453. package/package.json +11 -7
  454. package/src/cloudflare-worker/cloudflare-worker.ts +22 -9
  455. package/src/funcs/{querySearch.ts → aiSearch.ts} +49 -2
  456. package/src/funcs/{getAnnouncements.ts → getAnnouncementArticles.ts} +67 -10
  457. package/src/funcs/{getArticle.ts → getArticleById.ts} +58 -1
  458. package/src/funcs/{queryAnswers.ts → getBestAnswer.ts} +52 -14
  459. package/src/funcs/{getPortals.ts → getMyPortals.ts} +35 -2
  460. package/src/funcs/getPopularArticles.ts +68 -8
  461. package/src/funcs/makeSuggestion.ts +67 -9
  462. package/src/funcs/{queryRetrieve.ts → retrieveChunks.ts} +50 -15
  463. package/src/hooks/auth-hook.ts +3 -63
  464. package/src/hooks/registration.ts +3 -18
  465. package/src/landing-page.ts +1084 -0
  466. package/src/lib/base64.ts +2 -2
  467. package/src/lib/config.ts +5 -5
  468. package/src/lib/encodings.ts +12 -3
  469. package/src/lib/matchers.ts +5 -1
  470. package/src/lib/schemas.ts +10 -22
  471. package/src/lib/sdks.ts +2 -2
  472. package/src/lib/security.ts +21 -0
  473. package/src/mcp-server/cli/start/command.ts +31 -0
  474. package/src/mcp-server/cli/start/impl.ts +118 -31
  475. package/src/mcp-server/extensions.ts +6 -4
  476. package/src/mcp-server/flags.ts +21 -0
  477. package/src/mcp-server/mcp-server.ts +1 -1
  478. package/src/mcp-server/prompts.ts +9 -19
  479. package/src/mcp-server/server.ts +22 -16
  480. package/src/mcp-server/tools/aiSearch.ts +92 -0
  481. package/src/mcp-server/tools/getAnnouncementArticles.ts +90 -0
  482. package/src/mcp-server/tools/getArticleById.ts +99 -0
  483. package/src/mcp-server/tools/getBestAnswer.ts +94 -0
  484. package/src/mcp-server/tools/{getPortals.ts → getMyPortals.ts} +39 -5
  485. package/src/mcp-server/tools/getPopularArticles.ts +40 -0
  486. package/src/mcp-server/tools/makeSuggestion.ts +44 -0
  487. package/src/mcp-server/tools/retrieveChunks.ts +89 -0
  488. package/src/mcp-server/tools.ts +300 -46
  489. package/src/models/acceptlanguage.ts +21 -8
  490. package/src/models/accessibleportal.ts +9 -11
  491. package/src/models/additionalsnippets.ts +25 -18
  492. package/src/models/aisearchop.ts +14 -37
  493. package/src/models/aisearchresponse.ts +7 -13
  494. package/src/models/aispaginationinfo.ts +7 -10
  495. package/src/models/aitopicbreadcrumb.ts +4 -7
  496. package/src/models/aitopicsummary.ts +1 -5
  497. package/src/models/allaccessibleportals.ts +5 -8
  498. package/src/models/answersrequest.ts +22 -58
  499. package/src/models/answersresponse.ts +30 -24
  500. package/src/models/article.ts +39 -40
  501. package/src/models/articleadditionalattributes.ts +22 -4
  502. package/src/models/articleaisearchresult.ts +70 -52
  503. package/src/models/articleattachment.ts +18 -15
  504. package/src/models/articleresult.ts +2 -6
  505. package/src/models/articleresultadditionalattributes.ts +43 -0
  506. package/src/models/articleresults.ts +1 -5
  507. package/src/models/articletype.ts +4 -25
  508. package/src/models/attachmentforcreatesuggestion.ts +1 -3
  509. package/src/models/bookmarkstatus.ts +2 -6
  510. package/src/models/complianceforarticle.ts +13 -22
  511. package/src/models/createdby.ts +7 -8
  512. package/src/models/createsuggestion.ts +54 -31
  513. package/src/models/customattribute.ts +13 -7
  514. package/src/models/department.ts +1 -5
  515. package/src/models/edition.ts +8 -13
  516. package/src/models/errors/sdkvalidationerror.ts +2 -57
  517. package/src/models/folderbreadcrumb.ts +5 -7
  518. package/src/models/foldersummary.ts +2 -6
  519. package/src/models/getannouncementarticlesop.ts +34 -23
  520. package/src/models/getarticlebyidop.ts +91 -95
  521. package/src/models/getbestanswerop.ts +16 -48
  522. package/src/models/getmyportalsop.ts +29 -44
  523. package/src/models/getpopulararticlesop.ts +34 -23
  524. package/src/models/l10nstring.ts +1 -5
  525. package/src/models/languagecode.ts +38 -2
  526. package/src/models/languagecodeparameter.ts +48 -10
  527. package/src/models/languagequeryparameter.ts +48 -10
  528. package/src/models/link.ts +1 -1
  529. package/src/models/makesuggestionop.ts +20 -30
  530. package/src/models/mandatorylanguagequeryparameter.ts +50 -10
  531. package/src/models/milestone.ts +3 -4
  532. package/src/models/milestonename.ts +1 -5
  533. package/src/models/modifiedby.ts +1 -5
  534. package/src/models/order.ts +7 -2
  535. package/src/models/ownedby.ts +7 -8
  536. package/src/models/paginationinfo.ts +4 -8
  537. package/src/models/personalization.ts +6 -19
  538. package/src/models/publishview.ts +2 -8
  539. package/src/models/referenceresponse.ts +34 -20
  540. package/src/models/requiredlanguagecode.ts +39 -4
  541. package/src/models/retrievechunksop.ts +16 -48
  542. package/src/models/retrieverequest.ts +12 -10
  543. package/src/models/retrieveresponse.ts +34 -28
  544. package/src/models/schemaslink.ts +1 -5
  545. package/src/models/schemastags.ts +1 -5
  546. package/src/models/searchresult.ts +34 -8
  547. package/src/models/security.ts +14 -7
  548. package/src/models/shorturl.ts +6 -7
  549. package/src/models/sortidnamedepartment.ts +8 -4
  550. package/src/models/stage.ts +4 -5
  551. package/src/models/structuredauthoringfields.ts +1 -3
  552. package/src/models/tag.ts +1 -1
  553. package/src/models/tagcategory.ts +1 -5
  554. package/src/models/taggroup.ts +4 -5
  555. package/src/models/taggroups.ts +3 -4
  556. package/src/models/tags.ts +1 -1
  557. package/src/models/topicbreadcrumb.ts +1 -5
  558. package/src/models/topicsummary.ts +1 -5
  559. package/src/models/workflow.ts +3 -4
  560. package/src/models/workflowmilestone.ts +8 -2
  561. package/src/models/wserrorcommon.ts +5 -10
  562. package/src/tool-names.ts +35 -0
  563. package/src/types/bigint.ts +87 -0
  564. package/tsconfig.json +0 -1
  565. package/worker-configuration.d.ts +2 -2
  566. package/worker-configuration.ts +1 -0
  567. package/src/cloudflare-worker/landing-page.ts +0 -337
  568. package/src/hooks/portal-cache-hook.ts +0 -505
  569. package/src/hooks/portal-lookup-hook.ts +0 -429
  570. package/src/mcp-server/tools/getAnnouncements.ts +0 -53
  571. package/src/mcp-server/tools/getArticle.ts +0 -56
  572. package/src/mcp-server/tools/queryAnswers.ts +0 -57
  573. package/src/mcp-server/tools/queryRetrieve.ts +0 -55
  574. package/src/mcp-server/tools/querySearch.ts +0 -44
@@ -3,52 +3,59 @@
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 { EgainMcpCore } from "../core.js";
14
18
  import { ConsoleLogger } from "./console-logger.js";
15
- import { MCPScope } from "./scopes.js";
19
+ import { MCPScope, mcpScopes } from "./scopes.js";
16
20
  import { isAsyncIterable, isBinaryData, valueToBase64 } from "./shared.js";
17
21
 
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
- destructiveHint: boolean;
26
- idempotentHint: boolean;
27
- openWorldHint: boolean;
28
- readOnlyHint: boolean;
29
- };
30
- tool: (
31
- client: EgainMcpCore,
32
- args: objectOutputType<Args, ZodTypeAny>,
33
- extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
34
- ) => CallToolResult | Promise<CallToolResult>;
35
- }
36
- : {
37
- name: string;
38
- description: string;
39
- scopes?: MCPScope[];
40
- args?: undefined;
41
- annotations: {
42
- destructiveHint: boolean;
43
- idempotentHint: boolean;
44
- openWorldHint: boolean;
45
- readOnlyHint: boolean;
46
- };
47
- tool: (
48
- client: EgainMcpCore,
49
- extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
50
- ) => CallToolResult | Promise<CallToolResult>;
22
+ export type ToolDefinition<
23
+ Args extends undefined | ZodRawShapeCompat = undefined,
24
+ > = Args extends ZodRawShapeCompat ? {
25
+ name: string;
26
+ description: string;
27
+ scopes?: MCPScope[];
28
+ args: Args;
29
+ annotations: {
30
+ title: string;
31
+ destructiveHint: boolean;
32
+ idempotentHint: boolean;
33
+ openWorldHint: boolean;
34
+ readOnlyHint: boolean;
35
+ };
36
+ tool: (
37
+ client: EgainMcpCore,
38
+ args: ShapeOutput<Args>,
39
+ extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
40
+ ) => CallToolResult | Promise<CallToolResult>;
41
+ }
42
+ : {
43
+ name: string;
44
+ description: string;
45
+ scopes?: MCPScope[];
46
+ args?: undefined;
47
+ annotations: {
48
+ title: string;
49
+ destructiveHint: boolean;
50
+ idempotentHint: boolean;
51
+ openWorldHint: boolean;
52
+ readOnlyHint: boolean;
51
53
  };
54
+ tool: (
55
+ client: EgainMcpCore,
56
+ extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
57
+ ) => CallToolResult | Promise<CallToolResult>;
58
+ };
52
59
 
53
60
  // Optional function to assist with formatting tool results
54
61
  export async function formatResult(
@@ -87,7 +94,8 @@ export async function formatResult(
87
94
  };
88
95
  }
89
96
 
90
- return { content };
97
+ const isError = response ? !response.ok : false;
98
+ return isError ? { content, isError } : { content };
91
99
  }
92
100
 
93
101
  async function consumeSSE(
@@ -112,8 +120,20 @@ export function createRegisterTool(
112
120
  getSDK: () => EgainMcpCore,
113
121
  allowedScopes: Set<MCPScope>,
114
122
  allowedTools?: Set<string>,
115
- ): <A extends ZodRawShape | undefined>(tool: ToolDefinition<A>) => void {
116
- return <A extends ZodRawShape | undefined>(tool: ToolDefinition<A>): void => {
123
+ dynamic?: boolean,
124
+ ): [
125
+ <A extends ZodRawShapeCompat | undefined>(tool: ToolDefinition<A>) => void,
126
+ Array<{ name: string; description: string }>,
127
+ Map<string, ToolDefinition<ZodRawShapeCompat | undefined>>,
128
+ ] {
129
+ const tools: Array<{ name: string; description: string }> = [];
130
+ const toolMap = new Map<
131
+ string,
132
+ ToolDefinition<ZodRawShapeCompat | undefined>
133
+ >();
134
+ const registerTool = <A extends ZodRawShapeCompat | undefined>(
135
+ tool: ToolDefinition<A>,
136
+ ): void => {
117
137
  if (allowedTools && !allowedTools.has(tool.name)) {
118
138
  return;
119
139
  }
@@ -130,27 +150,261 @@ export function createRegisterTool(
130
150
  return;
131
151
  }
132
152
 
153
+ toolMap.set(
154
+ tool.name,
155
+ tool as ToolDefinition<ZodRawShapeCompat | undefined>,
156
+ );
157
+
158
+ if (dynamic) {
159
+ logger.debug("Collected tool for dynamic mode", { name: tool.name });
160
+ tools.push({ name: tool.name, description: tool.description });
161
+ return;
162
+ }
163
+
133
164
  if (tool.args) {
134
- server.tool(
165
+ server.registerTool(
135
166
  tool.name,
136
- tool.description,
137
- tool.args,
138
- tool.annotations,
167
+ {
168
+ description: tool.description,
169
+ inputSchema: tool.args,
170
+ annotations: tool.annotations,
171
+ },
139
172
  async (args, ctx) => {
140
173
  return tool.tool(getSDK(), args, ctx);
141
174
  },
142
175
  );
143
176
  } else {
144
- server.tool(
177
+ server.registerTool(
145
178
  tool.name,
146
- tool.description,
147
- tool.annotations,
148
- async (_, ctx) => {
179
+ {
180
+ description: tool.description,
181
+ annotations: tool.annotations,
182
+ },
183
+ async (ctx) => {
149
184
  return tool.tool(getSDK(), ctx);
150
185
  },
151
186
  );
152
187
  }
153
188
 
154
189
  logger.debug("Registered tool", { name: tool.name });
190
+ tools.push({ name: tool.name, description: tool.description });
155
191
  };
192
+
193
+ return [registerTool, tools, toolMap];
194
+ }
195
+
196
+ function matchesSearchTerms(
197
+ terms: string[],
198
+ name: string,
199
+ def: ToolDefinition<ZodRawShapeCompat | undefined>,
200
+ ): boolean {
201
+ if (terms.length === 0) {
202
+ return true;
203
+ }
204
+
205
+ const nameLower = name.toLowerCase();
206
+ const descLower = def.description.toLowerCase();
207
+ const scopesLower = def.scopes?.flatMap((s: unknown) => {
208
+ return typeof s === "string" ? [s.toLowerCase()] : [];
209
+ }) || [];
210
+
211
+ return terms.some((term) =>
212
+ nameLower.includes(term)
213
+ || descLower.includes(term)
214
+ || scopesLower.some((s) => s.includes(term))
215
+ );
216
+ }
217
+
218
+ export function registerDynamicTools(
219
+ logger: ConsoleLogger,
220
+ server: McpServer,
221
+ getSDK: () => EgainMcpCore,
222
+ toolMap: Map<string, ToolDefinition<ZodRawShapeCompat | undefined>>,
223
+ allowedScopes: Set<MCPScope>,
224
+ ): void {
225
+ // 1. list_tools
226
+ server.registerTool("list_tools", {
227
+ description:
228
+ "List available tools. Optionally filter by search terms that match against tool name, description, and scopes.",
229
+ inputSchema: {
230
+ search_terms: z.array(z.string()).optional().describe(
231
+ [
232
+ "Filter the list of tools.",
233
+ "Each term is matched case-insensitively as a substring against tool name, description, and scopes.",
234
+ "Multiple terms are combined with a logical OR: a tool is included if ANY term matches ANY field.",
235
+ "If not provided, all tools are returned.",
236
+ ].join("\n"),
237
+ ),
238
+ },
239
+ annotations: {
240
+ title: "List Tools",
241
+ readOnlyHint: true,
242
+ destructiveHint: false,
243
+ idempotentHint: true,
244
+ openWorldHint: false,
245
+ },
246
+ }, async (args) => {
247
+ const terms = (args.search_terms ?? []).map((t) => t.toLowerCase());
248
+
249
+ const tools: Array<
250
+ { name: string; description: string; scopes?: MCPScope[] | undefined }
251
+ > = [];
252
+ for (const [name, def] of toolMap) {
253
+ if (!matchesSearchTerms(terms, name, def)) {
254
+ continue;
255
+ }
256
+
257
+ tools.push({
258
+ name: name,
259
+ description: def.description,
260
+ scopes: def.scopes,
261
+ });
262
+ }
263
+ return {
264
+ content: [{ type: "text", text: JSON.stringify(tools, null, 2) }],
265
+ };
266
+ });
267
+ logger.debug("Registered dynamic meta-tool", { name: "list_tools" });
268
+
269
+ // 2. describe_tool
270
+ server.registerTool("describe_tool_input", {
271
+ description:
272
+ "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.",
273
+ inputSchema: {
274
+ tool_names: z.array(z.string()).describe(
275
+ "The names of the tools to describe",
276
+ ),
277
+ },
278
+ annotations: {
279
+ title: "Describe Tool",
280
+ readOnlyHint: true,
281
+ destructiveHint: false,
282
+ idempotentHint: true,
283
+ openWorldHint: false,
284
+ },
285
+ }, async (args) => {
286
+ const parts: string[] = [];
287
+ const unknown: string[] = [];
288
+
289
+ if (args.tool_names.length === 0) {
290
+ return { content: [{ type: "text", text: "No tool names provided." }] };
291
+ }
292
+
293
+ for (const toolName of args.tool_names) {
294
+ const def = toolMap.get(toolName);
295
+ if (!def) {
296
+ unknown.push(toolName);
297
+ continue;
298
+ }
299
+
300
+ let schemaText = `<input_schema tool="${toolName}">\n\n`;
301
+ if (def.args) {
302
+ const jsonSchema = z.toJSONSchema(z.object(def.args), {
303
+ target: "draft-2020-12",
304
+ });
305
+ schemaText += JSON.stringify(jsonSchema, null, 2);
306
+ } else {
307
+ schemaText += "This tool takes no input parameters.";
308
+ }
309
+ schemaText += `\n\n</input_schema>`;
310
+ parts.push(schemaText);
311
+ }
312
+
313
+ if (unknown.length > 0) {
314
+ parts.push(`Unknown tools: ${unknown.join(", ")}`);
315
+ }
316
+
317
+ return { content: [{ type: "text", text: parts.join("\n\n") }] };
318
+ });
319
+ logger.debug("Registered dynamic meta-tool", { name: "describe_tool" });
320
+
321
+ // 3. execute_tool
322
+ server.registerTool("execute_tool", {
323
+ description:
324
+ "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.",
325
+ inputSchema: {
326
+ tool_name: z.string().describe("The name of the tool to execute"),
327
+ input: z.record(z.string(), z.unknown()).optional().describe(
328
+ "Input parameters for the tool as a JSON object",
329
+ ),
330
+ },
331
+ annotations: {
332
+ title: "Execute Tool",
333
+ readOnlyHint: false,
334
+ destructiveHint: true,
335
+ idempotentHint: false,
336
+ openWorldHint: true,
337
+ },
338
+ }, async (args, ctx) => {
339
+ const def = toolMap.get(args.tool_name);
340
+ if (!def) {
341
+ return {
342
+ content: [{ type: "text", text: `Unknown tool: ${args.tool_name}` }],
343
+ isError: true,
344
+ };
345
+ }
346
+
347
+ let validatedInput: Record<string, unknown> = {};
348
+ if (def.args) {
349
+ const vres = z.object(def.args).safeParse(args.input ?? {});
350
+ if (vres.success) {
351
+ validatedInput = vres.data;
352
+ } else {
353
+ const issues = z.prettifyError(vres.error);
354
+
355
+ return {
356
+ content: [{
357
+ type: "text",
358
+ text:
359
+ `Invalid input for tool ${args.tool_name}:\n<issues>\n${issues}\n</issues>`,
360
+ }],
361
+ isError: true,
362
+ };
363
+ }
364
+ }
365
+
366
+ try {
367
+ if (def.args) {
368
+ return await def.tool(getSDK(), validatedInput, ctx);
369
+ } else {
370
+ return await def.tool(getSDK(), ctx);
371
+ }
372
+ } catch (error) {
373
+ const message = error instanceof Error ? error.message : String(error);
374
+ return {
375
+ content: [{
376
+ type: "text",
377
+ text: `Error executing tool ${args.tool_name}: ${message}`,
378
+ }],
379
+ isError: true,
380
+ };
381
+ }
382
+ });
383
+ logger.debug("Registered dynamic meta-tool", { name: "execute_tool" });
384
+
385
+ // 4. list_scopes (only when the server has scopes defined)
386
+ if (mcpScopes.length > 0) {
387
+ const scopes = allowedScopes.size > 0
388
+ ? [...allowedScopes].sort()
389
+ : [...mcpScopes];
390
+
391
+ server.registerTool("list_scopes", {
392
+ description: [
393
+ "List the scopes available on this server.",
394
+ "Scopes are categories that group related tools together.",
395
+ "They can be used as search terms when filtering the list of tools.",
396
+ ].join("\n"),
397
+ annotations: {
398
+ title: "List Scopes",
399
+ readOnlyHint: true,
400
+ destructiveHint: false,
401
+ idempotentHint: true,
402
+ openWorldHint: false,
403
+ },
404
+ }, async () => {
405
+ const lines = scopes.map((s) => `- ${s}`);
406
+ return { content: [{ type: "text", text: lines.join("\n") }] };
407
+ });
408
+ logger.debug("Registered dynamic meta-tool", { name: "list_scopes" });
409
+ }
156
410
  }
@@ -3,10 +3,27 @@
3
3
  */
4
4
 
5
5
  import * as z from "zod";
6
+ import { ClosedEnum } from "../types/enums.js";
7
+
8
+ export const AcceptLanguage = {
9
+ EnUS: "en-US",
10
+ ESES: "es-ES",
11
+ FRFR: "fr-FR",
12
+ ITIT: "it-IT",
13
+ DEDE: "de-DE",
14
+ NLNL: "nl-NL",
15
+ PtBR: "pt-BR",
16
+ PTPT: "pt-PT",
17
+ DaDK: "da-DK",
18
+ RURU: "ru-RU",
19
+ FrCA: "fr-CA",
20
+ ZhCN: "zh-CN",
21
+ JaJP: "ja-JP",
22
+ KoKR: "ko-KR",
23
+ SvSE: "sv-SE",
24
+ } as const;
25
+ export type AcceptLanguage = ClosedEnum<typeof AcceptLanguage>;
6
26
 
7
- /**
8
- * The language that describes the details of a resource. Resources available in different languages may differ from each other.<li>If <code>$lang</code> is not passed, then the portal's default language is used.</li><br><br>**Important**: When using this API via SDK or MCP, use the parameter name `Dollar_lang`, not `$lang` or `lang`.
9
- */
10
27
  export const AcceptLanguage$zodSchema = z.enum([
11
28
  "en-US",
12
29
  "es-ES",
@@ -23,8 +40,4 @@ export const AcceptLanguage$zodSchema = z.enum([
23
40
  "ja-JP",
24
41
  "ko-KR",
25
42
  "sv-SE",
26
- ]).describe(
27
- "The language that describes the details of a resource. Resources available in different languages may differ from each other.<li>If <code>$lang</code> is not passed, then the portal's default language is used.</li><br><br>**Important**: When using this API via SDK or MCP, use the parameter name `Dollar_lang`, not `$lang` or `lang`.",
28
- );
29
-
30
- export type AcceptLanguage = z.infer<typeof AcceptLanguage$zodSchema>;
43
+ ]);
@@ -14,14 +14,12 @@ export type AccessiblePortal = {
14
14
  shortURL?: Array<ShortURL> | undefined;
15
15
  };
16
16
 
17
- export const AccessiblePortal$zodSchema: z.ZodType<
18
- AccessiblePortal,
19
- z.ZodTypeDef,
20
- unknown
21
- > = z.object({
22
- department: Department$zodSchema.optional(),
23
- description: z.string().optional(),
24
- id: z.string().optional(),
25
- name: z.string().optional(),
26
- shortURL: z.array(ShortURL$zodSchema).optional(),
27
- });
17
+ export const AccessiblePortal$zodSchema: z.ZodType<AccessiblePortal> = z.object(
18
+ {
19
+ department: Department$zodSchema.optional(),
20
+ description: z.string().optional(),
21
+ id: z.string().optional(),
22
+ name: z.string().optional(),
23
+ shortURL: z.array(ShortURL$zodSchema).optional(),
24
+ },
25
+ );
@@ -3,10 +3,24 @@
3
3
  */
4
4
 
5
5
  import * as z from "zod";
6
+ import { ClosedEnum } from "../types/enums.js";
6
7
 
7
8
  /**
8
9
  * Format of the source document (HTML, DOCX, PPTX or PDF).
9
10
  */
11
+ export const AdditionalSnippetsDocType = {
12
+ Html: "HTML",
13
+ Docx: "DOCX",
14
+ Pdf: "PDF",
15
+ Pptx: "PPTX",
16
+ } as const;
17
+ /**
18
+ * Format of the source document (HTML, DOCX, PPTX or PDF).
19
+ */
20
+ export type AdditionalSnippetsDocType = ClosedEnum<
21
+ typeof AdditionalSnippetsDocType
22
+ >;
23
+
10
24
  export const AdditionalSnippetsDocType$zodSchema = z.enum([
11
25
  "HTML",
12
26
  "DOCX",
@@ -14,10 +28,6 @@ export const AdditionalSnippetsDocType$zodSchema = z.enum([
14
28
  "PPTX",
15
29
  ]).describe("Format of the source document (HTML, DOCX, PPTX or PDF).");
16
30
 
17
- export type AdditionalSnippetsDocType = z.infer<
18
- typeof AdditionalSnippetsDocType$zodSchema
19
- >;
20
-
21
31
  export type AdditionalSnippets = {
22
32
  id: string;
23
33
  name: string;
@@ -29,17 +39,14 @@ export type AdditionalSnippets = {
29
39
  normalizedScore?: number | undefined;
30
40
  };
31
41
 
32
- export const AdditionalSnippets$zodSchema: z.ZodType<
33
- AdditionalSnippets,
34
- z.ZodTypeDef,
35
- unknown
36
- > = z.object({
37
- docName: z.string().optional(),
38
- docType: AdditionalSnippetsDocType$zodSchema,
39
- id: z.string(),
40
- keywordSnippet: z.string().optional(),
41
- name: z.string(),
42
- normalizedScore: z.number().optional(),
43
- relevanceScore: z.number().optional(),
44
- snippet: z.string(),
45
- });
42
+ export const AdditionalSnippets$zodSchema: z.ZodType<AdditionalSnippets> = z
43
+ .object({
44
+ docName: z.string().optional(),
45
+ docType: AdditionalSnippetsDocType$zodSchema,
46
+ id: z.string(),
47
+ keywordSnippet: z.string().optional(),
48
+ name: z.string(),
49
+ normalizedScore: z.number().optional(),
50
+ relevanceScore: z.number().optional(),
51
+ snippet: z.string(),
52
+ });
@@ -17,7 +17,7 @@ export type AiSearchRequest = {
17
17
  q: string;
18
18
  portalID: string;
19
19
  dollarFilterUserProfileID?: string | undefined;
20
- Dollar_lang?: LanguageCodeParameter | undefined;
20
+ Dollar_lang: LanguageCodeParameter;
21
21
  dollarFilterTags?: { [k: string]: Array<string> } | undefined;
22
22
  dollarFilterTopicIds?: Array<string> | undefined;
23
23
  articleCustomAdditionalAttributes?: string | undefined;
@@ -25,37 +25,25 @@ export type AiSearchRequest = {
25
25
  Dollar_pagesize?: number | undefined;
26
26
  };
27
27
 
28
- export const AiSearchRequest$zodSchema: z.ZodType<
29
- AiSearchRequest,
30
- z.ZodTypeDef,
31
- unknown
32
- > = z.object({
33
- Dollar_lang: LanguageCodeParameter$zodSchema.default("en-US"),
34
- Dollar_pagenum: z.number().int().default(1).describe(
28
+ export const AiSearchRequest$zodSchema: z.ZodType<AiSearchRequest> = z.object({
29
+ Dollar_lang: LanguageCodeParameter$zodSchema,
30
+ Dollar_pagenum: z.int().default(1).describe(
35
31
  "Pagination parameter that specifies the page number of results to be returned. Used in conjunction with $pagesize.",
36
32
  ),
37
- Dollar_pagesize: z.number().int().default(20).describe(
33
+ Dollar_pagesize: z.int().default(20).describe(
38
34
  "Pagination parameter that specifies the number of results per page. Used in conjunction with $pagenum.",
39
35
  ),
40
36
  articleCustomAdditionalAttributes: z.string().describe(
41
37
  "One or more comma-separated names for article custom attributes defined by the user to be returned.",
42
38
  ).optional(),
43
- dollarFilterTags: z.record(z.array(z.string())).describe(
44
- "An object where each key is a **Category Tag ID** (numeric string), \n"
45
- + "and each value is an array of **Tag IDs** for that category.\n"
46
- + " **Note**:\n"
47
- + " - The '$filter[tags]' query parameter JSON value should be url encoded.\n"
48
- + " - Some developer tools for invoking APIs may not url encode the '$filter[tags]' query parameter JSON value by default. Ensure that only url encoded values are used.\n"
49
- + " - Example of JSON value: {\"BASE-40845\":[\"BASE-40849\",\"BASE-40853\"]}\n"
50
- + " - Example of URL encoded value: %7B%22BASE-40845%22%3A%5B%22BASE-40849%22%2C%22BASE-40853%22%5D%7D\n"
51
- + "",
39
+ dollarFilterTags: z.record(z.string(), z.array(z.string())).describe(
40
+ "An object where each key is a **Category Tag ID** (numeric string), \nand each value is an array of **Tag IDs** for that category.\n **Note**:\n - The '$filter[tags]' query parameter JSON value should be url encoded.\n - Some developer tools for invoking APIs may not url encode the '$filter[tags]' query parameter JSON value by default. Ensure that only url encoded values are used.\n - Example of JSON value: {\"BASE-40845\":[\"BASE-40849\",\"BASE-40853\"]}\n - Example of URL encoded value: %7B%22BASE-40845%22%3A%5B%22BASE-40849%22%2C%22BASE-40853%22%5D%7D\n",
52
41
  ).optional(),
53
42
  dollarFilterTopicIds: z.array(z.string()).describe(
54
43
  "An array of topic IDs. It is used to restrict search results to specific topics.",
55
44
  ).optional(),
56
45
  dollarFilterUserProfileID: z.string().describe(
57
- "The ID of the user profile. \n"
58
- + "",
46
+ "The ID of the user profile. \n",
59
47
  ).optional(),
60
48
  portalID: z.string().describe(
61
49
  "The ID of the portal being accessed.<br><br>A portal ID is composed of a 2-4 letter prefix, followed by a dash and 4-15 digits.",
@@ -65,22 +53,11 @@ export const AiSearchRequest$zodSchema: z.ZodType<
65
53
  ),
66
54
  });
67
55
 
68
- export type AiSearchResponseResponse = {
69
- ContentType: string;
70
- StatusCode: number;
71
- RawResponse: Response;
72
- AISearchResponse?: AISearchResponse | undefined;
73
- WSErrorCommon?: WSErrorCommon | undefined;
74
- };
56
+ export type AiSearchResponseResponse = WSErrorCommon | AISearchResponse;
75
57
 
76
58
  export const AiSearchResponseResponse$zodSchema: z.ZodType<
77
- AiSearchResponseResponse,
78
- z.ZodTypeDef,
79
- unknown
80
- > = z.object({
81
- AISearchResponse: AISearchResponse$zodSchema.optional(),
82
- ContentType: z.string(),
83
- RawResponse: z.instanceof(Response),
84
- StatusCode: z.number().int(),
85
- WSErrorCommon: WSErrorCommon$zodSchema.optional(),
86
- });
59
+ AiSearchResponseResponse
60
+ > = z.union([
61
+ WSErrorCommon$zodSchema,
62
+ AISearchResponse$zodSchema,
63
+ ]);
@@ -19,11 +19,7 @@ export type SearchResults = {
19
19
  article?: Array<ArticleAISearchResult> | undefined;
20
20
  };
21
21
 
22
- export const SearchResults$zodSchema: z.ZodType<
23
- SearchResults,
24
- z.ZodTypeDef,
25
- unknown
26
- > = z.object({
22
+ export const SearchResults$zodSchema: z.ZodType<SearchResults> = z.object({
27
23
  article: z.array(ArticleAISearchResult$zodSchema).optional(),
28
24
  }).describe("Top search results with relevance scores");
29
25
 
@@ -32,11 +28,9 @@ export type AISearchResponse = {
32
28
  paginationInfo?: AISPaginationInfo | undefined;
33
29
  };
34
30
 
35
- export const AISearchResponse$zodSchema: z.ZodType<
36
- AISearchResponse,
37
- z.ZodTypeDef,
38
- unknown
39
- > = z.object({
40
- paginationInfo: AISPaginationInfo$zodSchema.optional(),
41
- searchResults: z.lazy(() => SearchResults$zodSchema),
42
- });
31
+ export const AISearchResponse$zodSchema: z.ZodType<AISearchResponse> = z.object(
32
+ {
33
+ paginationInfo: AISPaginationInfo$zodSchema.optional(),
34
+ searchResults: z.lazy(() => SearchResults$zodSchema),
35
+ },
36
+ );
@@ -12,13 +12,10 @@ export type AISPaginationInfo = {
12
12
  link?: Array<Link> | undefined;
13
13
  };
14
14
 
15
- export const AISPaginationInfo$zodSchema: z.ZodType<
16
- AISPaginationInfo,
17
- z.ZodTypeDef,
18
- unknown
19
- > = z.object({
20
- count: z.number().int().default(1),
21
- link: z.array(Link$zodSchema).optional(),
22
- pagenum: z.number().int().default(1),
23
- pagesize: z.number().int().default(20),
24
- });
15
+ export const AISPaginationInfo$zodSchema: z.ZodType<AISPaginationInfo> = z
16
+ .object({
17
+ count: z.int().default(1),
18
+ link: z.array(Link$zodSchema).optional(),
19
+ pagenum: z.int().default(1),
20
+ pagesize: z.int().default(20),
21
+ });
@@ -12,10 +12,7 @@ export type AITopicBreadcrumb = {
12
12
  topicSummary?: Array<AITopicSummary> | undefined;
13
13
  };
14
14
 
15
- export const AITopicBreadcrumb$zodSchema: z.ZodType<
16
- AITopicBreadcrumb,
17
- z.ZodTypeDef,
18
- unknown
19
- > = z.object({
20
- topicSummary: z.array(AITopicSummary$zodSchema).optional(),
21
- }).describe("This schema contains one or more TopicSummary instances.");
15
+ export const AITopicBreadcrumb$zodSchema: z.ZodType<AITopicBreadcrumb> = z
16
+ .object({
17
+ topicSummary: z.array(AITopicSummary$zodSchema).optional(),
18
+ }).describe("This schema contains one or more TopicSummary instances.");