@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
package/src/lib/base64.ts CHANGED
@@ -29,9 +29,9 @@ export function stringFromBase64(b64str: string): string {
29
29
  }
30
30
 
31
31
  export const zodOutbound = z
32
- .instanceof(Uint8Array)
32
+ .custom<Uint8Array>((x) => x instanceof Uint8Array)
33
33
  .or(z.string().transform(stringToBytes));
34
34
 
35
35
  export const zodInbound = z
36
- .instanceof(Uint8Array)
36
+ .custom<Uint8Array>((x) => x instanceof Uint8Array)
37
37
  .or(z.string().transform(bytesFromBase64));
package/src/lib/config.ts CHANGED
@@ -60,10 +60,10 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
60
60
 
61
61
  const serverParams: Record<string, Params> = {
62
62
  "server_0": {
63
- "API_DOMAIN": options.API_DOMAIN ?? "api.aidev.egain.cloud",
63
+ "API_DOMAIN": options.API_DOMAIN ?? "api.ai.egain.cloud",
64
64
  },
65
65
  "server_1": {
66
- "API_DOMAIN": options.API_DOMAIN ?? "api.aidev.egain.cloud",
66
+ "API_DOMAIN": options.API_DOMAIN ?? "api.ai.egain.cloud",
67
67
  },
68
68
  };
69
69
 
@@ -82,8 +82,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
82
82
  export const SDK_METADATA = {
83
83
  language: "typescript",
84
84
  openapiDocVersion: "1.0.0",
85
- sdkVersion: "1.0.24",
86
- genVersion: "2.723.8",
85
+ sdkVersion: "2.0.1",
86
+ genVersion: "2.836.5",
87
87
  userAgent:
88
- "speakeasy-sdk/mcp-typescript 1.0.24 2.723.8 1.0.0 @egain/egain-mcp-server",
88
+ "speakeasy-sdk/mcp-typescript 2.0.1 2.836.5 1.0.0 @egain/egain-mcp-server",
89
89
  } as const;
@@ -102,8 +102,9 @@ export function encodeLabel(
102
102
  });
103
103
  encValue = mapped?.join("").slice(1);
104
104
  } else {
105
- const k =
106
- options?.explode && isPlainObject(value) ? `${encodeString(pk)}=` : "";
105
+ const k = options?.explode && isPlainObject(value)
106
+ ? `${encodeString(pk)}=`
107
+ : "";
107
108
  encValue = `${k}${encodeValue(pv)}`;
108
109
  }
109
110
 
@@ -365,6 +366,12 @@ function serializeValue(value: unknown): string {
365
366
  } else if (value instanceof Uint8Array) {
366
367
  return bytesToBase64(value);
367
368
  } else if (typeof value === "object") {
369
+ if (
370
+ "toJSON" in value
371
+ && typeof value.toJSON === "function"
372
+ ) {
373
+ return String(value.toJSON());
374
+ }
368
375
  return JSON.stringify(value, jsonReplacer);
369
376
  }
370
377
 
@@ -374,6 +381,8 @@ function serializeValue(value: unknown): string {
374
381
  function jsonReplacer(_: string, value: unknown): unknown {
375
382
  if (value instanceof Uint8Array) {
376
383
  return bytesToBase64(value);
384
+ } else if (typeof value === "bigint") {
385
+ return value.toString();
377
386
  } else {
378
387
  return value;
379
388
  }
@@ -440,7 +449,7 @@ type BulkQueryEncoder = (
440
449
  ) => string;
441
450
 
442
451
  export function queryEncoder(f: QueryEncoder): BulkQueryEncoder {
443
- const bulkEncode = function (
452
+ const bulkEncode = function(
444
453
  values: Record<string, unknown>,
445
454
  options?: QueryEncoderOptions,
446
455
  ): string {
@@ -299,9 +299,13 @@ export function match<T, E>(
299
299
  );
300
300
  return [result.ok ? { ok: false, error: result.value } : result, raw];
301
301
  } else {
302
+ const valueToParse = resultKey && isPlainObject(data) && resultKey in data
303
+ ? data[resultKey as keyof typeof data]
304
+ : data;
305
+
302
306
  return [
303
307
  safeParse(
304
- data,
308
+ valueToParse,
305
309
  (v: unknown) => matcher.schema.parse(v),
306
310
  "Response validation failed",
307
311
  ),
@@ -2,34 +2,22 @@
2
2
  * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
3
  */
4
4
 
5
- import {
6
- output,
7
- ZodEffects,
8
- ZodError,
9
- ZodObject,
10
- ZodRawShape,
11
- ZodTypeAny,
12
- } from "zod";
5
+ import * as z from "zod";
13
6
  import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
14
7
  import { ERR, OK, Result } from "../types/fp.js";
15
8
 
16
9
  export function collectExtraKeys<
17
- Shape extends ZodRawShape,
18
- Catchall extends ZodTypeAny,
10
+ Shape extends z.ZodRawShape,
11
+ Catchall extends z.ZodType,
19
12
  K extends string,
13
+ Optional extends boolean,
20
14
  >(
21
- obj: ZodObject<Shape, "strip", Catchall>,
15
+ obj: z.ZodObject<Shape, z.core.$catchall<Catchall>>,
22
16
  extrasKey: K,
23
- optional: boolean,
24
- ): ZodEffects<
25
- typeof obj,
26
- & output<ZodObject<Shape, "strict">>
27
- & {
28
- [k in K]: Record<string, output<Catchall>>;
29
- }
30
- > {
31
- return obj.transform((val) => {
32
- const extras: Record<string, output<Catchall>> = {};
17
+ optional: Optional,
18
+ ) {
19
+ return obj.transform((val: any) => {
20
+ const extras: Record<string, z.output<Catchall>> = {};
33
21
  const { shape } = obj;
34
22
  for (const [key] of Object.entries(val)) {
35
23
  if (key in shape) {
@@ -66,7 +54,7 @@ export function parse<Inp, Out>(
66
54
  try {
67
55
  return fn(rawValue);
68
56
  } catch (err) {
69
- if (err instanceof ZodError) {
57
+ if (err instanceof z.ZodError) {
70
58
  throw new SDKValidationError(errorMessage, err, rawValue);
71
59
  }
72
60
  throw err;
package/src/lib/sdks.ts CHANGED
@@ -306,9 +306,9 @@ export class ClientSDK {
306
306
  }
307
307
  }
308
308
 
309
- const jsonLikeContentTypeRE = /(application|text)\/.*?\+*json.*/;
309
+ const jsonLikeContentTypeRE = /^(application|text)\/([^+]+\+)*json.*/;
310
310
  const jsonlLikeContentTypeRE =
311
- /(application|text)\/(.*?\+*\bjsonl\b.*|.*?\+*\bx-ndjson\b.*)/;
311
+ /^(application|text)\/([^+]+\+)*(jsonl|x-ndjson)\b.*/;
312
312
  async function logRequest(logger: Logger | undefined, req: Request) {
313
313
  if (!logger) {
314
314
  return;
@@ -238,6 +238,27 @@ export function resolveGlobalSecurity(
238
238
  security: Partial<Security> | null | undefined,
239
239
  ): SecurityState | null {
240
240
  return resolveSecurity(
241
+ [
242
+ {
243
+ fieldName: "Authorization",
244
+ type: "apiKey:header",
245
+ value: security?.oAuthUser,
246
+ },
247
+ ],
248
+ [
249
+ {
250
+ fieldName: "Authorization",
251
+ type: "apiKey:header",
252
+ value: security?.oAuthCustomer,
253
+ },
254
+ ],
255
+ [
256
+ {
257
+ fieldName: "Authorization",
258
+ type: "apiKey:header",
259
+ value: security?.oAuthAnonymousCustomer,
260
+ },
261
+ ],
241
262
  [
242
263
  {
243
264
  fieldName: "Authorization",
@@ -36,6 +36,37 @@ export const startCommand = buildCommand({
36
36
  return z.string().parse(value);
37
37
  },
38
38
  },
39
+ mode: {
40
+ kind: "enum",
41
+ brief:
42
+ "Server mode (dynamic: expose list_tools, describe_tool, and execute_tool instead of individual tools)",
43
+ values: ["dynamic"],
44
+ optional: true,
45
+ },
46
+ "o-auth-user": {
47
+ kind: "parsed",
48
+ brief: "Sets the oAuthUser auth field for the API",
49
+ optional: true,
50
+ parse: (value) => {
51
+ return z.string().parse(value);
52
+ },
53
+ },
54
+ "o-auth-customer": {
55
+ kind: "parsed",
56
+ brief: "Sets the oAuthCustomer auth field for the API",
57
+ optional: true,
58
+ parse: (value) => {
59
+ return z.string().parse(value);
60
+ },
61
+ },
62
+ "o-auth-anonymous-customer": {
63
+ kind: "parsed",
64
+ brief: "Sets the oAuthAnonymousCustomer auth field for the API",
65
+ optional: true,
66
+ parse: (value) => {
67
+ return z.string().parse(value);
68
+ },
69
+ },
39
70
  "access-token": {
40
71
  kind: "parsed",
41
72
  brief: "Sets the accessToken auth field for the API",
@@ -5,26 +5,29 @@
5
5
  import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
6
6
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
7
7
  import express from "express";
8
- import { SDKOptions } from "../../../lib/config.js";
9
8
  import { LocalContext } from "../../cli.js";
10
9
  import {
11
10
  ConsoleLoggerLevel,
12
11
  createConsoleLogger,
13
12
  } from "../../console-logger.js";
13
+ import { MCPServerFlags } from "../../flags.js";
14
14
  import { createMCPServer } from "../../server.js";
15
15
 
16
- interface StartCommandFlags {
16
+ import { landingPageExpress } from "../../../landing-page.js";
17
+
18
+ interface StartCommandFlags extends MCPServerFlags {
17
19
  readonly transport: "stdio" | "sse";
18
20
  readonly port: number;
19
- readonly tool?: string[];
20
- readonly "access-token"?: string;
21
- readonly "server-url"?: string;
22
- readonly server?: SDKOptions["server"];
23
- readonly "api-domain"?: SDKOptions["API_DOMAIN"];
24
21
  readonly "log-level": ConsoleLoggerLevel;
25
22
  readonly env?: [string, string][];
26
23
  }
27
24
 
25
+ interface Session {
26
+ mcpServer: ReturnType<typeof createMCPServer>["server"];
27
+ transport: SSEServerTransport;
28
+ cleanup: () => Promise<void>;
29
+ }
30
+
28
31
  export async function main(this: LocalContext, flags: StartCommandFlags) {
29
32
  flags.env?.forEach(([key, value]) => {
30
33
  process.env[key] = value;
@@ -45,10 +48,16 @@ export async function main(this: LocalContext, flags: StartCommandFlags) {
45
48
  async function startStdio(flags: StartCommandFlags) {
46
49
  const logger = createConsoleLogger(flags["log-level"]);
47
50
  const transport = new StdioServerTransport();
48
- const server = createMCPServer({
51
+ const { server } = createMCPServer({
49
52
  logger,
50
53
  allowedTools: flags.tool,
51
- security: { accessToken: flags["access-token"] ?? "" },
54
+ dynamic: flags.mode === "dynamic",
55
+ security: {
56
+ oAuthUser: flags["o-auth-user"] ?? "",
57
+ oAuthCustomer: flags["o-auth-customer"] ?? "",
58
+ oAuthAnonymousCustomer: flags["o-auth-anonymous-customer"] ?? "",
59
+ accessToken: flags["access-token"] ?? "",
60
+ },
52
61
  serverURL: flags["server-url"],
53
62
  server: flags.server,
54
63
  API_DOMAIN: flags["api-domain"],
@@ -63,39 +72,121 @@ async function startStdio(flags: StartCommandFlags) {
63
72
  process.on("SIGINT", abort);
64
73
  }
65
74
 
66
- async function startSSE(flags: StartCommandFlags) {
67
- const logger = createConsoleLogger(flags["log-level"]);
75
+ async function startSSE(cliFlags: StartCommandFlags) {
76
+ const logger = createConsoleLogger(cliFlags["log-level"]);
68
77
  const app = express();
69
- const mcpServer = createMCPServer({
70
- logger,
71
- allowedTools: flags.tool,
72
- security: { accessToken: flags["access-token"] ?? "" },
73
- serverURL: flags["server-url"],
74
- server: flags.server,
75
- API_DOMAIN: flags["api-domain"],
76
- });
77
- let transport: SSEServerTransport | undefined;
78
+ const sessions = new Map<string, Session>();
78
79
  const controller = new AbortController();
79
80
 
80
- app.get("/sse", async (_req, res) => {
81
- transport = new SSEServerTransport("/message", res);
81
+ app.get("/sse", async (req, res) => {
82
+ const sessionId = crypto.randomUUID();
83
+
84
+ logger.info("SSE connection initiated", {
85
+ sessionId,
86
+ userAgent: req.headers["user-agent"],
87
+ });
88
+
89
+ // Track early disconnection
90
+ let connectionClosed = false;
91
+ res.on("close", () => {
92
+ if (!connectionClosed) {
93
+ logger.info("Connection closed early", { sessionId });
94
+ }
95
+ connectionClosed = true;
96
+ });
97
+
98
+ // Merge CLI flags with header overrides for security credentials
99
+ const flags: StartCommandFlags = {
100
+ ...cliFlags,
101
+ // Security fields can be overridden via headers
102
+ "o-auth-user": (req.headers["oAuthUser"] as string)
103
+ ?? cliFlags["o-auth-user"],
104
+ "o-auth-customer": (req.headers["oAuthCustomer"] as string)
105
+ ?? cliFlags["o-auth-customer"],
106
+ "o-auth-anonymous-customer":
107
+ (req.headers["oAuthAnonymousCustomer"] as string)
108
+ ?? cliFlags["o-auth-anonymous-customer"],
109
+ "access-token": (req.headers["accessToken"] as string)
110
+ ?? cliFlags["access-token"],
111
+ };
112
+
113
+ // Create a new MCP server for this connection with its auth
114
+ const { server: mcpServer } = createMCPServer({
115
+ logger,
116
+ allowedTools: flags.tool,
117
+ dynamic: flags.mode === "dynamic",
118
+ security: {
119
+ oAuthUser: flags["o-auth-user"] ?? "",
120
+ oAuthCustomer: flags["o-auth-customer"] ?? "",
121
+ oAuthAnonymousCustomer: flags["o-auth-anonymous-customer"] ?? "",
122
+ accessToken: flags["access-token"] ?? "",
123
+ },
124
+ serverURL: flags["server-url"],
125
+ server: flags.server,
126
+ API_DOMAIN: flags["api-domain"],
127
+ });
128
+
129
+ // Message path includes session ID for routing
130
+ const transport = new SSEServerTransport(`/message/${sessionId}`, res);
131
+
132
+ const cleanup = async () => {
133
+ await mcpServer.close();
134
+ };
135
+
136
+ sessions.set(sessionId, { mcpServer, transport, cleanup });
137
+ logger.info("Session created", { sessionId, totalSessions: sessions.size });
138
+ controller.signal.addEventListener("abort", cleanup);
139
+
140
+ // Log server-side errors for debugging (e.g. tools/list handler failures)
141
+ mcpServer.server.onerror = (error) => {
142
+ logger.error("MCP protocol error", {
143
+ sessionId,
144
+ error: error instanceof Error ? error.message : String(error),
145
+ stack: error instanceof Error ? error.stack : undefined,
146
+ });
147
+ };
148
+
149
+ // Wrap transport.send to log error responses for debugging
150
+ const originalSend = transport.send.bind(transport);
151
+ transport.send = async (message) => {
152
+ if ("error" in message && message.error) {
153
+ logger.error("MCP sending error response", {
154
+ sessionId,
155
+ id: message.id,
156
+ errorCode: message.error.code,
157
+ errorMessage: message.error.message,
158
+ });
159
+ }
160
+ return originalSend(message);
161
+ };
82
162
 
83
163
  await mcpServer.connect(transport);
84
164
 
85
165
  mcpServer.server.onclose = async () => {
166
+ connectionClosed = true;
167
+ controller.signal.removeEventListener("abort", cleanup);
168
+ sessions.delete(sessionId);
169
+ logger.info("Session closed", {
170
+ sessionId,
171
+ totalSessions: sessions.size,
172
+ });
86
173
  res.end();
87
174
  };
88
175
  });
89
176
 
90
- app.post("/message", async (req, res) => {
91
- if (!transport) {
92
- throw new Error("Server transport not initialized");
177
+ app.post("/message/:sessionId", async (req, res) => {
178
+ const session = sessions.get(req.params.sessionId);
179
+ if (!session) {
180
+ res.status(404).send("Session not found");
181
+ return;
93
182
  }
94
183
 
95
- await transport.handlePostMessage(req, res);
184
+ await session.transport.handlePostMessage(req, res);
96
185
  });
97
186
 
98
- const httpServer = app.listen(flags.port, "0.0.0.0", () => {
187
+ app.get("/", landingPageExpress);
188
+
189
+ const httpServer = app.listen(cliFlags.port, "0.0.0.0", () => {
99
190
  const ha = httpServer.address();
100
191
  const host = typeof ha === "string" ? ha : `${ha?.address}:${ha?.port}`;
101
192
  logger.info("MCP HTTP server started", { host });
@@ -109,10 +200,6 @@ async function startSSE(flags: StartCommandFlags) {
109
200
  }
110
201
  closing = true;
111
202
 
112
- logger.info("Shutting down MCP server");
113
-
114
- await mcpServer.close();
115
-
116
203
  logger.info("Shutting down HTTP server");
117
204
 
118
205
  const timer = setTimeout(() => {
@@ -2,16 +2,18 @@
2
2
  * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
3
  */
4
4
 
5
- import { ZodRawShape } from "zod";
6
- import { PromptArgsRawShape, PromptDefinition } from "./prompts.js";
5
+ import { ZodRawShapeCompat } from "@modelcontextprotocol/sdk/server/zod-compat.js";
6
+ import { PromptDefinition } from "./prompts.js";
7
7
  import { ResourceDefinition, ResourceTemplateDefinition } from "./resources.js";
8
8
  import { ToolDefinition } from "./tools.js";
9
9
 
10
10
  export type Register = {
11
- tool: <A extends ZodRawShape | undefined>(def: ToolDefinition<A>) => void;
11
+ tool: <A extends ZodRawShapeCompat | undefined>(
12
+ def: ToolDefinition<A>,
13
+ ) => void;
12
14
  resource: (def: ResourceDefinition) => void;
13
15
  resourceTemplate: (def: ResourceTemplateDefinition) => void;
14
- prompt: <A extends PromptArgsRawShape | undefined>(
16
+ prompt: <A extends ZodRawShapeCompat | undefined>(
15
17
  prompt: PromptDefinition<A>,
16
18
  ) => void;
17
19
  };
@@ -0,0 +1,21 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { SDKOptions } from "../lib/config.js";
6
+
7
+ /**
8
+ * Base flags interface for MCP server configuration.
9
+ * Used by both CLI start command and Gram deployment wrapper.
10
+ */
11
+ export interface MCPServerFlags {
12
+ readonly tool?: string[];
13
+ readonly mode?: "dynamic" | undefined;
14
+ readonly "o-auth-user"?: string | undefined;
15
+ readonly "o-auth-customer"?: string | undefined;
16
+ readonly "o-auth-anonymous-customer"?: string | undefined;
17
+ readonly "access-token"?: string | undefined;
18
+ readonly "server-url"?: string | undefined;
19
+ readonly server?: SDKOptions["server"];
20
+ readonly "api-domain"?: SDKOptions["API_DOMAIN"];
21
+ }
@@ -19,7 +19,7 @@ const routes = buildRouteMap({
19
19
  export const app = buildApplication(routes, {
20
20
  name: "mcp",
21
21
  versionInfo: {
22
- currentVersion: "1.0.24",
22
+ currentVersion: "2.0.1",
23
23
  },
24
24
  });
25
25
 
@@ -3,40 +3,30 @@
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
  GetPromptResult,
9
13
  ServerNotification,
10
14
  ServerRequest,
11
15
  } from "@modelcontextprotocol/sdk/types.js";
12
- import {
13
- objectOutputType,
14
- ZodOptional,
15
- ZodType,
16
- ZodTypeAny,
17
- ZodTypeDef,
18
- } from "zod";
19
16
  import { EgainMcpCore } from "../core.js";
20
17
  import { ConsoleLogger } from "./console-logger.js";
21
18
  import { MCPScope } from "./scopes.js";
22
19
 
23
- // '@modelcontextprotocol/sdk' currently does not export this type
24
- export type PromptArgsRawShape = {
25
- [k: string]:
26
- | ZodType<string, ZodTypeDef, string>
27
- | ZodOptional<ZodType<string, ZodTypeDef, string>>;
28
- };
29
-
30
20
  export type PromptDefinition<
31
- Args extends undefined | PromptArgsRawShape = undefined,
32
- > = Args extends PromptArgsRawShape ? {
21
+ Args extends undefined | ZodRawShapeCompat = undefined,
22
+ > = Args extends ZodRawShapeCompat ? {
33
23
  name: string;
34
24
  description?: string;
35
25
  scopes?: MCPScope[];
36
26
  args: Args;
37
27
  prompt: (
38
28
  client: EgainMcpCore,
39
- args: objectOutputType<Args, ZodTypeAny>,
29
+ args: ShapeOutput<Args>,
40
30
  extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
41
31
  ) => GetPromptResult | Promise<GetPromptResult>;
42
32
  }
@@ -71,10 +61,10 @@ export function createRegisterPrompt(
71
61
  server: McpServer,
72
62
  getSDK: () => EgainMcpCore,
73
63
  allowedScopes: Set<MCPScope>,
74
- ): <A extends PromptArgsRawShape | undefined>(
64
+ ): <A extends ZodRawShapeCompat | undefined>(
75
65
  prompt: PromptDefinition<A>,
76
66
  ) => void {
77
- return <A extends PromptArgsRawShape | undefined>(
67
+ return <A extends ZodRawShapeCompat | undefined>(
78
68
  prompt: PromptDefinition<A>,
79
69
  ): void => {
80
70
  const scopes = prompt.scopes ?? [];
@@ -12,19 +12,20 @@ import {
12
12
  createRegisterResourceTemplate,
13
13
  } from "./resources.js";
14
14
  import { MCPScope } from "./scopes.js";
15
- import { createRegisterTool } from "./tools.js";
16
- import { tool$getAnnouncements } from "./tools/getAnnouncements.js";
17
- import { tool$getArticle } from "./tools/getArticle.js";
15
+ import { createRegisterTool, registerDynamicTools } from "./tools.js";
16
+ import { tool$aiSearch } from "./tools/aiSearch.js";
17
+ import { tool$getAnnouncementArticles } from "./tools/getAnnouncementArticles.js";
18
+ import { tool$getArticleById } from "./tools/getArticleById.js";
19
+ import { tool$getBestAnswer } from "./tools/getBestAnswer.js";
20
+ import { tool$getMyPortals } from "./tools/getMyPortals.js";
18
21
  import { tool$getPopularArticles } from "./tools/getPopularArticles.js";
19
- import { tool$getPortals } from "./tools/getPortals.js";
20
22
  import { tool$makeSuggestion } from "./tools/makeSuggestion.js";
21
- import { tool$queryAnswers } from "./tools/queryAnswers.js";
22
- import { tool$queryRetrieve } from "./tools/queryRetrieve.js";
23
- import { tool$querySearch } from "./tools/querySearch.js";
23
+ import { tool$retrieveChunks } from "./tools/retrieveChunks.js";
24
24
 
25
25
  export function createMCPServer(deps: {
26
26
  logger: ConsoleLogger;
27
27
  allowedTools?: string[] | undefined;
28
+ dynamic?: boolean | undefined;
28
29
  scopes?: MCPScope[] | undefined;
29
30
  getSDK?: () => EgainMcpCore;
30
31
  serverURL?: string | undefined;
@@ -34,7 +35,7 @@ export function createMCPServer(deps: {
34
35
  }) {
35
36
  const server = new McpServer({
36
37
  name: "EgainMcp",
37
- version: "1.0.24",
38
+ version: "2.0.1",
38
39
  });
39
40
 
40
41
  const getClient = deps.getSDK || (() =>
@@ -55,12 +56,13 @@ export function createMCPServer(deps: {
55
56
  const scopes = new Set(deps.scopes);
56
57
 
57
58
  const allowedTools = deps.allowedTools && new Set(deps.allowedTools);
58
- const tool = createRegisterTool(
59
+ const [tool, tools, toolMap] = createRegisterTool(
59
60
  deps.logger,
60
61
  server,
61
62
  getClient,
62
63
  scopes,
63
64
  allowedTools,
65
+ deps.dynamic,
64
66
  );
65
67
  const resource = createRegisterResource(
66
68
  deps.logger,
@@ -78,14 +80,18 @@ export function createMCPServer(deps: {
78
80
  const register = { tool, resource, resourceTemplate, prompt };
79
81
  void register; // suppress unused warnings
80
82
 
81
- tool(tool$queryRetrieve);
82
- tool(tool$queryAnswers);
83
- tool(tool$getArticle);
84
- tool(tool$getAnnouncements);
83
+ tool(tool$retrieveChunks);
84
+ tool(tool$getBestAnswer);
85
+ tool(tool$getArticleById);
86
+ tool(tool$getAnnouncementArticles);
85
87
  tool(tool$getPopularArticles);
86
- tool(tool$getPortals);
87
- tool(tool$querySearch);
88
+ tool(tool$getMyPortals);
89
+ tool(tool$aiSearch);
88
90
  tool(tool$makeSuggestion);
89
91
 
90
- return server;
92
+ if (deps.dynamic) {
93
+ registerDynamicTools(deps.logger, server, getClient, toolMap, scopes);
94
+ }
95
+
96
+ return { server, tools };
91
97
  }