@langwatch/mcp-server 2.1.0 → 3.0.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 (428) hide show
  1. package/.gitignore +7 -0
  2. package/.npmignore +41 -0
  3. package/CHANGELOG.md +218 -201
  4. package/CONTRIBUTING.md +10 -0
  5. package/README.md +70 -68
  6. package/dist/add-dashboard-widget-55UI6H22.js +44 -0
  7. package/dist/add-dashboard-widget-MJHIC3CC.js +45 -0
  8. package/dist/{archive-project-W3IKI7UL.js → archive-project-K5UD7A6X.js} +4 -4
  9. package/dist/archive-project-L4PAKT34.js +19 -0
  10. package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-5HSQG2HX.js} +4 -4
  11. package/dist/archive-run-plan-AOKNYQIO.js +15 -0
  12. package/dist/archive-scenario-2CWJW2VD.js +19 -0
  13. package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-5IJQESHH.js} +4 -4
  14. package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-OPB7NFI7.js} +4 -4
  15. package/dist/archive-test-suite-ZC3TN6VH.js +15 -0
  16. package/dist/assign-prompt-tag-6DDE6ZZ5.js +23 -0
  17. package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-D7O23MJM.js} +8 -4
  18. package/dist/chunk-3YLN3ATJ.js +241 -0
  19. package/dist/{chunk-EYXMLE5X.js → chunk-4RX3G62A.js} +56 -47
  20. package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
  21. package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
  22. package/dist/chunk-7CZQDZ2K.js +319 -0
  23. package/dist/{chunk-RVAE2MEA.js → chunk-7GETGE6B.js} +7 -7
  24. package/dist/{chunk-OJLYYJWI.js → chunk-AASW2TO2.js} +7 -10
  25. package/dist/{chunk-QAMP3CGR.js → chunk-B4RFWIUP.js} +4 -4
  26. package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
  27. package/dist/{chunk-G4ZAZTZW.js → chunk-D2HS73VI.js} +7 -10
  28. package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
  29. package/dist/{chunk-WT4PO4A3.js → chunk-DULFP3MK.js} +10 -7
  30. package/dist/chunk-EYPJBL7P.js +516 -0
  31. package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
  32. package/dist/chunk-GA5JUSPT.js +64 -0
  33. package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
  34. package/dist/chunk-HLQJXUR6.js +67 -0
  35. package/dist/{chunk-JTQJRNFJ.js → chunk-KILVK3FS.js} +4 -4
  36. package/dist/chunk-MOCU5XWF.js +79 -0
  37. package/dist/chunk-O2WGVCED.js +41 -0
  38. package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
  39. package/dist/{chunk-UFOYFYI7.js → chunk-QXLMHLRC.js} +6 -9
  40. package/dist/{chunk-QRO35SOM.js → chunk-R5YJIYPF.js} +981 -747
  41. package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
  42. package/dist/{chunk-SR6QPRIE.js → chunk-RFC2SBEX.js} +7 -13
  43. package/dist/chunk-SHSVN3SE.js +21 -0
  44. package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
  45. package/dist/{chunk-56OGTS24.js → chunk-VOUGDY2O.js} +4 -11
  46. package/dist/chunk-WCKZDOGF.js +31 -0
  47. package/dist/chunk-XQYH52SI.js +129 -0
  48. package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
  49. package/dist/{chunk-6DJDEXET.js → chunk-YCIUEZVK.js} +6 -12
  50. package/dist/config-2WQGMAEN.js +16 -0
  51. package/dist/config.cjs +109 -0
  52. package/dist/config.js +5 -4
  53. package/dist/{create-agent-JFJ2K6X3.js → create-agent-6JNLMYQD.js} +4 -4
  54. package/dist/create-agent-IRZOU4R5.js +23 -0
  55. package/dist/create-analytics-report-N4L4V5QL.js +19 -0
  56. package/dist/create-analytics-report-QEHXG7FU.js +18 -0
  57. package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-CCEGIZ67.js} +10 -5
  58. package/dist/create-annotation-DTHCMWHB.js +29 -0
  59. package/dist/{create-api-key-BGBB76JX.js → create-api-key-JKM2DSZO.js} +5 -7
  60. package/dist/create-api-key-JPEUIXGM.js +24 -0
  61. package/dist/create-dataset-DJNXYJ5B.js +22 -0
  62. package/dist/{create-dataset-FD5VAXU4.js → create-dataset-WON4SOTC.js} +6 -6
  63. package/dist/create-dataset-records-TMEOTLTO.js +20 -0
  64. package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-UJBW3C7C.js} +5 -7
  65. package/dist/create-evaluator-N5AEHI4K.js +27 -0
  66. package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-XYNY2YFY.js} +4 -4
  67. package/dist/create-mcp-server.cjs +9712 -0
  68. package/dist/create-mcp-server.js +2757 -10
  69. package/dist/{create-project-ZQ7TFIO2.js → create-project-EY4XZ7TH.js} +4 -4
  70. package/dist/create-project-YL345T5L.js +44 -0
  71. package/dist/{create-prompt-BS6QRCUU.js → create-prompt-JZQNQ7I3.js} +5 -7
  72. package/dist/create-prompt-ZUMQHHX7.js +37 -0
  73. package/dist/create-prompt-tag-CJ5FZ436.js +17 -0
  74. package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-JFP2Q3PO.js} +3 -3
  75. package/dist/create-scenario-CQU2SSFB.js +33 -0
  76. package/dist/{create-scenario-DRPTPXU3.js → create-scenario-S6OWWKJO.js} +5 -5
  77. package/dist/create-test-suite-OLGCAGJA.js +36 -0
  78. package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-Y7P2RI4L.js} +6 -6
  79. package/dist/create-trigger-4CNBTISJ.js +48 -0
  80. package/dist/create-trigger-RQ653WYF.js +49 -0
  81. package/dist/dashboards-BA7M6CMO.js +90 -0
  82. package/dist/dashboards-U663GUIB.js +91 -0
  83. package/dist/{delete-agent-SA4JMUZF.js → delete-agent-J2Q4DRZ2.js} +4 -4
  84. package/dist/delete-agent-ZAU4LTXB.js +18 -0
  85. package/dist/delete-analytics-report-QK6X7P4S.js +19 -0
  86. package/dist/delete-analytics-report-YUYLDHLL.js +18 -0
  87. package/dist/delete-annotation-7X4NYXXM.js +17 -0
  88. package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-KJOCDLV3.js} +4 -4
  89. package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-NXP7ZPPV.js} +5 -7
  90. package/dist/delete-dataset-RUTZBBVD.js +18 -0
  91. package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-4Z7DZCDW.js} +5 -7
  92. package/dist/delete-dataset-records-75UAR5IS.js +19 -0
  93. package/dist/delete-evaluator-E3CUNGTQ.js +16 -0
  94. package/dist/delete-evaluator-RI4GALGX.js +15 -0
  95. package/dist/delete-prompt-tag-LE3WJPKS.js +17 -0
  96. package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-S4KBZTNG.js} +3 -3
  97. package/dist/delete-workflow-4CZFIQCQ.js +17 -0
  98. package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-PWQPDW6H.js} +4 -4
  99. package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
  100. package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
  101. package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
  102. package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
  103. package/dist/discover-schema-7WHIIATI.js +442 -0
  104. package/dist/{discover-schema-L6QDPON3.js → discover-schema-J2ANOBKO.js} +181 -186
  105. package/dist/get-agent-5T3CXQOR.js +69 -0
  106. package/dist/{get-agent-7THF7HCU.js → get-agent-ZKYQJUQ7.js} +15 -11
  107. package/dist/get-analytics-4MPEK4KV.js +79 -0
  108. package/dist/get-analytics-ZLI3A4F5.js +80 -0
  109. package/dist/get-analytics-report-JCKYMA2S.js +29 -0
  110. package/dist/get-analytics-report-SKIP2JWH.js +30 -0
  111. package/dist/get-dataset-APGZBYMH.js +64 -0
  112. package/dist/get-dataset-LWXDVMVE.js +63 -0
  113. package/dist/get-evaluator-3A7BJBAB.js +47 -0
  114. package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-IWNJINRY.js} +4 -4
  115. package/dist/get-project-EQVB4LEL.js +26 -0
  116. package/dist/{get-project-QSQEAB33.js → get-project-RK6AJTEP.js} +4 -4
  117. package/dist/{get-prompt-GVKXF5NL.js → get-prompt-TLG2T2DS.js} +53 -58
  118. package/dist/get-prompt-ZER557X3.js +94 -0
  119. package/dist/get-run-plan-5X7DDJRN.js +58 -0
  120. package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-PEHRO5M3.js} +7 -9
  121. package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-375W5D6I.js} +5 -5
  122. package/dist/get-scenario-UQX45ZZO.js +37 -0
  123. package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-2NBXJADG.js} +26 -22
  124. package/dist/get-simulation-run-QZTLGL7W.js +69 -0
  125. package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GVIBDG7K.js} +5 -5
  126. package/dist/get-test-suite-OODIR3RI.js +48 -0
  127. package/dist/{get-trace-RCUV7N4O.js → get-trace-AGCHVPJK.js} +11 -13
  128. package/dist/get-trace-KJLYAZRC.js +45 -0
  129. package/dist/get-workflow-3TV2YYC5.js +25 -0
  130. package/dist/{get-workflow-EEOC7Y45.js → get-workflow-7LZSVPP2.js} +4 -4
  131. package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
  132. package/dist/{http-server-WCDUARTH.js → http-server-7CCN3EHJ.js} +4249 -325
  133. package/dist/index.js +59595 -38027
  134. package/dist/langwatch-api-analytics-reports-6CF6KUET.js +17 -0
  135. package/dist/langwatch-api-analytics-reports-RPFB5AO5.js +18 -0
  136. package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-H4AI4TKG.js} +4 -4
  137. package/dist/langwatch-api-annotations-QSJNUQQS.js +17 -0
  138. package/dist/langwatch-api-monitors-ENHLOL3S.js +47 -0
  139. package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-OHSGADTH.js} +11 -16
  140. package/dist/langwatch-api-secrets-AGW6UUMD.js +55 -0
  141. package/dist/langwatch-api-secrets-CLTS766Q.js +56 -0
  142. package/dist/langwatch-api-triggers-G5UWFNN2.js +22 -0
  143. package/dist/langwatch-api-triggers-QMR7KEXW.js +23 -0
  144. package/dist/langwatch-api-workflows-HKTBIKKY.js +15 -0
  145. package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OMROZH2O.js} +4 -4
  146. package/dist/{list-agents-AMVDQPQL.js → list-agents-BYWDNAHT.js} +4 -4
  147. package/dist/list-agents-MG24MHZE.js +42 -0
  148. package/dist/list-analytics-reports-G3EPWGSQ.js +32 -0
  149. package/dist/list-analytics-reports-PPWIFRES.js +33 -0
  150. package/dist/list-annotations-QCLGEK5A.js +38 -0
  151. package/dist/{list-annotations-6PR5NLIC.js → list-annotations-Y4EUBJHG.js} +10 -5
  152. package/dist/list-api-keys-DAVOBPFK.js +42 -0
  153. package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-JMW5WRXX.js} +10 -5
  154. package/dist/list-dashboards-2P3VJFRS.js +29 -0
  155. package/dist/list-dashboards-MW5O3MKH.js +30 -0
  156. package/dist/list-dataset-records-KEHT7G6Q.js +43 -0
  157. package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-KMLLMZAZ.js} +14 -10
  158. package/dist/{list-datasets-WXZL6UMP.js → list-datasets-P3JK2ZHS.js} +9 -13
  159. package/dist/list-datasets-Z7OOE4KI.js +56 -0
  160. package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-7RRESBOU.js} +5 -7
  161. package/dist/list-evaluators-VATJVOHR.js +32 -0
  162. package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-OXDRPUCJ.js} +4 -4
  163. package/dist/list-model-providers-VXQJWDXU.js +35 -0
  164. package/dist/{list-projects-AQVI6SUK.js → list-projects-HUVK7L3W.js} +5 -7
  165. package/dist/list-projects-X72ZXVY5.js +40 -0
  166. package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-3I3LWFIR.js} +3 -3
  167. package/dist/list-prompt-tags-DRHUH2ND.js +23 -0
  168. package/dist/list-prompts-6DX3QECJ.js +30 -0
  169. package/dist/{list-prompts-BQOHRHYT.js → list-prompts-PS423RU3.js} +4 -6
  170. package/dist/list-run-plans-5SXPOV3X.js +45 -0
  171. package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-6VNHINPY.js} +5 -5
  172. package/dist/list-scenarios-EQWCW7Q4.js +45 -0
  173. package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-GKNH3YND.js} +13 -11
  174. package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-KHY7KALI.js} +12 -8
  175. package/dist/list-simulation-runs-PUDK32C2.js +53 -0
  176. package/dist/list-test-suites-7H2DRILK.js +34 -0
  177. package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-GY56LGLY.js} +4 -4
  178. package/dist/list-trigger-fires-7RZUP54Y.js +19 -0
  179. package/dist/list-trigger-fires-OZUF65LI.js +20 -0
  180. package/dist/list-triggers-BGUCUXTJ.js +45 -0
  181. package/dist/list-triggers-XC5KMX4C.js +46 -0
  182. package/dist/list-workflows-55NYC3PC.js +33 -0
  183. package/dist/{list-workflows-6MV4XJHF.js → list-workflows-HV7FUWZA.js} +5 -7
  184. package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-2I7Z5FCY.js} +3 -3
  185. package/dist/rename-prompt-tag-SZYTOWDX.js +18 -0
  186. package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-27AYY33K.js} +4 -4
  187. package/dist/rename-test-suite-CLIEPZDO.js +20 -0
  188. package/dist/report-issue-5HSL7CNB.js +924 -0
  189. package/dist/{report-issue-RHZZ33IS.js → report-issue-N7ND5TM6.js} +107 -67
  190. package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-O3VUZ6CG.js} +5 -5
  191. package/dist/rerun-run-plan-OJTVVGJI.js +21 -0
  192. package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-BU6BKGCG.js} +4 -4
  193. package/dist/revoke-api-key-NZNCFOIR.js +15 -0
  194. package/dist/run-agent-244O4Y5M.js +75 -0
  195. package/dist/run-agent-HPCGZGYW.js +74 -0
  196. package/dist/run-plan-2ZPGGZ4H.js +38 -0
  197. package/dist/{run-plan-T4ZYOZGA.js → run-plan-KSXUYQT3.js} +7 -7
  198. package/dist/run-query-4LMOQ5UW.js +47 -0
  199. package/dist/run-query-BQUHIUC2.js +46 -0
  200. package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-P3WLVPXC.js} +6 -6
  201. package/dist/run-test-suite-UEOMCON6.js +25 -0
  202. package/dist/run-workflow-EFZ6HG5B.js +36 -0
  203. package/dist/{run-workflow-DFIS23AP.js → run-workflow-I4IHEN54.js} +4 -4
  204. package/dist/search-traces-6IR7PR4L.js +170 -0
  205. package/dist/search-traces-BYML2NQ4.js +171 -0
  206. package/dist/set-model-provider-RBNGWFVI.js +33 -0
  207. package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-SHEVKWRC.js} +4 -4
  208. package/dist/{update-agent-DUWNYBNA.js → update-agent-PTKTM2B5.js} +4 -4
  209. package/dist/update-agent-ZPXWRMS2.js +20 -0
  210. package/dist/update-dashboard-widget-HKCBXH7X.js +62 -0
  211. package/dist/update-dashboard-widget-IP2TTQ5G.js +63 -0
  212. package/dist/update-dataset-GHIN6JR3.js +22 -0
  213. package/dist/{update-dataset-YSOMDCOB.js → update-dataset-IRVMY5PF.js} +6 -6
  214. package/dist/update-dataset-record-6VI7K2CL.js +19 -0
  215. package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-Z3L7ACNF.js} +4 -4
  216. package/dist/update-evaluator-5NLNE6VY.js +24 -0
  217. package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-FEH7H6NS.js} +4 -4
  218. package/dist/update-project-75H3LDQT.js +24 -0
  219. package/dist/{update-project-Q26FBSYH.js → update-project-QPR3QX55.js} +4 -4
  220. package/dist/update-prompt-BCDFTNLK.js +140 -0
  221. package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-NPRXYSWA.js} +27 -29
  222. package/dist/update-scenario-BNOMDCMV.js +34 -0
  223. package/dist/{update-scenario-WUX34JAR.js → update-scenario-EM5XGMB7.js} +5 -5
  224. package/package.json +35 -39
  225. package/pyproject.toml +23 -8
  226. package/src/config.d.ts +6 -0
  227. package/src/config.ts +22 -29
  228. package/src/create-mcp-server.ts +887 -634
  229. package/src/documentation-fetch.ts +21 -20
  230. package/src/http-security.ts +166 -135
  231. package/src/http-server.ts +189 -224
  232. package/src/index.ts +14 -16
  233. package/src/langwatch-api-agents.ts +18 -21
  234. package/src/langwatch-api-analytics-reports.ts +62 -0
  235. package/src/langwatch-api-annotations.ts +11 -12
  236. package/src/langwatch-api-api-keys.ts +8 -9
  237. package/src/langwatch-api-dashboard-widgets.ts +47 -0
  238. package/src/langwatch-api-dashboards.ts +109 -24
  239. package/src/langwatch-api-datasets.ts +98 -32
  240. package/src/langwatch-api-evaluators.ts +13 -19
  241. package/src/langwatch-api-model-providers.ts +4 -4
  242. package/src/langwatch-api-monitors.ts +14 -18
  243. package/src/langwatch-api-projects.ts +10 -9
  244. package/src/langwatch-api-query.ts +114 -0
  245. package/src/langwatch-api-run-plans.ts +12 -29
  246. package/src/langwatch-api-scenarios.ts +9 -11
  247. package/src/langwatch-api-secrets.ts +31 -24
  248. package/src/langwatch-api-simulation-runs.ts +6 -8
  249. package/src/langwatch-api-test-suites.ts +14 -33
  250. package/src/langwatch-api-triggers.ts +96 -34
  251. package/src/langwatch-api-workflows.ts +9 -9
  252. package/src/langwatch-api.ts +118 -124
  253. package/src/public-http-request.ts +21 -12
  254. package/src/schemas/analytics-metrics.ts +3 -15
  255. package/src/schemas/create-dataset.ts +3 -4
  256. package/src/schemas/run-plan.ts +13 -29
  257. package/src/schemas/suite-fields.ts +6 -23
  258. package/src/schemas/triggers.ts +365 -0
  259. package/src/schemas/widget-sources.ts +33 -0
  260. package/src/tools/add-dashboard-widget.ts +51 -0
  261. package/src/tools/archive-project.ts +2 -4
  262. package/src/tools/archive-run-plan.ts +2 -4
  263. package/src/tools/archive-scenario.ts +2 -4
  264. package/src/tools/archive-test-suite.ts +2 -4
  265. package/src/tools/assign-prompt-tag.ts +6 -2
  266. package/src/tools/create-agent.ts +1 -1
  267. package/src/tools/create-analytics-report.ts +7 -0
  268. package/src/tools/create-annotation.ts +7 -2
  269. package/src/tools/create-api-key.ts +4 -6
  270. package/src/tools/create-dataset-records.ts +4 -8
  271. package/src/tools/create-dataset.ts +5 -7
  272. package/src/tools/create-evaluator.ts +3 -5
  273. package/src/tools/create-project.ts +2 -2
  274. package/src/tools/create-prompt-tag.ts +2 -4
  275. package/src/tools/create-prompt.ts +9 -18
  276. package/src/tools/create-scenario.ts +5 -7
  277. package/src/tools/create-test-suite.ts +4 -9
  278. package/src/tools/create-trigger.ts +55 -0
  279. package/src/tools/dashboard-widget-queries.ts +45 -0
  280. package/src/tools/dashboards.ts +104 -0
  281. package/src/tools/delete-agent.ts +1 -1
  282. package/src/tools/delete-analytics-report.ts +7 -0
  283. package/src/tools/delete-annotation.ts +1 -1
  284. package/src/tools/delete-dataset-records.ts +4 -8
  285. package/src/tools/delete-dataset.ts +3 -7
  286. package/src/tools/delete-evaluator.ts +4 -6
  287. package/src/tools/delete-prompt-tag.ts +2 -4
  288. package/src/tools/delete-workflow.ts +1 -1
  289. package/src/tools/discover-evaluator-schema.ts +34 -25
  290. package/src/tools/discover-scenario-schema.ts +41 -21
  291. package/src/tools/discover-schema.ts +149 -27
  292. package/src/tools/experiment-run-status.ts +2 -8
  293. package/src/tools/format-dataset-mutation.ts +5 -10
  294. package/src/tools/format-run-plan.ts +7 -21
  295. package/src/tools/format-scenario.ts +2 -4
  296. package/src/tools/format-suite-details.ts +6 -12
  297. package/src/tools/get-agent.ts +15 -6
  298. package/src/tools/get-analytics-report.ts +23 -0
  299. package/src/tools/get-analytics.ts +52 -46
  300. package/src/tools/get-dataset.ts +34 -16
  301. package/src/tools/get-evaluator.ts +4 -11
  302. package/src/tools/get-experiment-results.ts +219 -186
  303. package/src/tools/get-project.ts +2 -4
  304. package/src/tools/get-prompt.ts +63 -84
  305. package/src/tools/get-run-plan.ts +4 -6
  306. package/src/tools/get-scenario.ts +4 -6
  307. package/src/tools/get-simulation-run.ts +27 -24
  308. package/src/tools/get-test-suite.ts +2 -5
  309. package/src/tools/get-trace.ts +16 -17
  310. package/src/tools/get-workflow.ts +1 -1
  311. package/src/tools/list-agents.ts +1 -1
  312. package/src/tools/list-analytics-reports.ts +27 -0
  313. package/src/tools/list-annotations.ts +8 -5
  314. package/src/tools/list-api-keys.ts +7 -2
  315. package/src/tools/list-dashboards.ts +20 -21
  316. package/src/tools/list-dataset-records.ts +8 -6
  317. package/src/tools/list-datasets.ts +12 -23
  318. package/src/tools/list-evaluators.ts +4 -8
  319. package/src/tools/list-experiment-runs.ts +5 -9
  320. package/src/tools/list-experiments.ts +5 -11
  321. package/src/tools/list-model-providers.ts +3 -5
  322. package/src/tools/list-projects.ts +2 -4
  323. package/src/tools/list-prompt-tags.ts +3 -3
  324. package/src/tools/list-prompts.ts +4 -8
  325. package/src/tools/list-run-plans.ts +2 -2
  326. package/src/tools/list-scenarios.ts +14 -15
  327. package/src/tools/list-simulation-runs.ts +8 -4
  328. package/src/tools/list-test-suites.ts +1 -1
  329. package/src/tools/list-trigger-fires.ts +17 -0
  330. package/src/tools/list-triggers.ts +39 -0
  331. package/src/tools/list-workflows.ts +2 -4
  332. package/src/tools/rename-prompt-tag.ts +1 -1
  333. package/src/tools/rename-test-suite.ts +2 -5
  334. package/src/tools/report-issue.ts +7 -9
  335. package/src/tools/rerun-run-plan.ts +2 -5
  336. package/src/tools/revoke-api-key.ts +2 -4
  337. package/src/tools/run-agent.ts +29 -26
  338. package/src/tools/run-experiment.ts +37 -34
  339. package/src/tools/run-plan.ts +4 -7
  340. package/src/tools/run-query.ts +47 -0
  341. package/src/tools/run-test-suite.ts +4 -7
  342. package/src/tools/run-workflow.ts +2 -5
  343. package/src/tools/search-traces.ts +161 -47
  344. package/src/tools/set-model-provider.ts +4 -6
  345. package/src/tools/test-agent.ts +2 -2
  346. package/src/tools/update-agent.ts +1 -1
  347. package/src/tools/update-dashboard-widget.ts +86 -0
  348. package/src/tools/update-dataset-record.ts +1 -1
  349. package/src/tools/update-dataset.ts +5 -7
  350. package/src/tools/update-evaluator.ts +3 -5
  351. package/src/tools/update-project.ts +1 -1
  352. package/src/tools/update-prompt.ts +44 -59
  353. package/src/tools/update-scenario.ts +5 -7
  354. package/src/tools/update-test-suite.ts +6 -11
  355. package/src/utils/date-parsing.ts +1 -1
  356. package/src/utils/escape-markdown.ts +3 -8
  357. package/src/utils/format-evaluations.ts +6 -6
  358. package/src/utils/markdown-table.ts +58 -0
  359. package/src/utils/trace-id-shape.ts +20 -0
  360. package/tsconfig.app.json +24 -0
  361. package/tsconfig.json +14 -12
  362. package/uv.lock +667 -341
  363. package/vitest.integration.config.js +10 -0
  364. package/vitest.scenario.config.js +9 -0
  365. package/.eslintrc.cjs +0 -36
  366. package/dist/chunk-AN4OUA4D.js +0 -86
  367. package/dist/chunk-GELJ2MQR.js +0 -226
  368. package/dist/chunk-K37ZNPXK.js +0 -24
  369. package/dist/chunk-S4GVX36W.js +0 -39
  370. package/dist/config.d.ts +0 -17
  371. package/dist/create-dashboard-Z76AIPLS.js +0 -19
  372. package/dist/create-mcp-server.d.ts +0 -10
  373. package/dist/delete-dashboard-LYMRPF27.js +0 -19
  374. package/dist/delete-evaluator-RKYC4TNB.js +0 -16
  375. package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
  376. package/dist/get-analytics-R6AZD3AW.js +0 -73
  377. package/dist/get-dashboard-P4WWVHFU.js +0 -30
  378. package/dist/get-dataset-AKTYSQDI.js +0 -49
  379. package/dist/index.d.ts +0 -2
  380. package/dist/langwatch-api-dashboards-2KJL2M42.js +0 -18
  381. package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
  382. package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
  383. package/dist/list-dashboards-Z3BZKDGF.js +0 -33
  384. package/dist/run-agent-CAGWGTYT.js +0 -72
  385. package/dist/search-traces-4XTJYXIK.js +0 -79
  386. package/src/__tests__/agent-tools.unit.test.ts +0 -257
  387. package/src/__tests__/all-tools.integration.test.ts +0 -1872
  388. package/src/__tests__/config.unit.test.ts +0 -202
  389. package/src/__tests__/datasets.integration.test.ts +0 -620
  390. package/src/__tests__/datasets.unit.test.ts +0 -244
  391. package/src/__tests__/date-parsing.unit.test.ts +0 -78
  392. package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
  393. package/src/__tests__/discover-schema.unit.test.ts +0 -118
  394. package/src/__tests__/docker.integration.test.ts +0 -318
  395. package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
  396. package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
  397. package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
  398. package/src/__tests__/experiment-status.unit.test.ts +0 -194
  399. package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
  400. package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
  401. package/src/__tests__/http-security-origin.unit.test.ts +0 -97
  402. package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
  403. package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
  404. package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
  405. package/src/__tests__/http-server-origin.integration.test.ts +0 -169
  406. package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
  407. package/src/__tests__/http-transport.integration.test.ts +0 -395
  408. package/src/__tests__/integration.integration.test.ts +0 -284
  409. package/src/__tests__/langwatch-api.unit.test.ts +0 -661
  410. package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
  411. package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
  412. package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
  413. package/src/__tests__/prompts.integration.test.ts +0 -736
  414. package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
  415. package/src/__tests__/report-issue.integration.test.ts +0 -147
  416. package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
  417. package/src/__tests__/scenario-tools.integration.test.ts +0 -286
  418. package/src/__tests__/scenario-tools.unit.test.ts +0 -207
  419. package/src/__tests__/schemas.unit.test.ts +0 -85
  420. package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
  421. package/src/__tests__/support/http-server-harness.ts +0 -138
  422. package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
  423. package/src/__tests__/tools.integration.test.ts +0 -896
  424. package/src/schemas/filter-fields.ts +0 -119
  425. package/src/schemas/index.ts +0 -9
  426. package/src/tools/create-dashboard.ts +0 -7
  427. package/src/tools/delete-dashboard.ts +0 -7
  428. package/src/tools/get-dashboard.ts +0 -22
@@ -0,0 +1,319 @@
1
+ import {
2
+ getConfig,
3
+ requireApiKey
4
+ } from "./chunk-DULFP3MK.js";
5
+
6
+ // package.json
7
+ var package_default = {
8
+ name: "@langwatch/mcp-server",
9
+ version: "3.0.0",
10
+ description: "An MCP server for Langwatch.",
11
+ license: "MIT",
12
+ author: "",
13
+ repository: {
14
+ type: "git",
15
+ url: "https://github.com/langwatch/langwatch.git",
16
+ directory: "mcp-server"
17
+ },
18
+ bin: {
19
+ "langwatch-mcp-server": "./dist/index.js"
20
+ },
21
+ type: "module",
22
+ main: "./dist/index.js",
23
+ module: "./dist/index.js",
24
+ types: "./dist/index.d.ts",
25
+ exports: {
26
+ ".": {
27
+ import: "./dist/index.js"
28
+ },
29
+ "./create-mcp-server": {
30
+ types: "./src/create-mcp-server.d.ts",
31
+ import: "./dist/create-mcp-server.js",
32
+ require: "./dist/create-mcp-server.cjs",
33
+ default: "./dist/create-mcp-server.js"
34
+ },
35
+ "./config": {
36
+ types: "./src/config.d.ts",
37
+ import: "./dist/config.js",
38
+ require: "./dist/config.cjs",
39
+ default: "./dist/config.js"
40
+ }
41
+ },
42
+ scripts: {
43
+ start: "node --experimental-transform-types src/index.ts",
44
+ build: "tsup && node build.js",
45
+ typecheck: "GOMAXPROCS=2 GOMEMLIMIT=2GiB pnpm -w exec tsc -b mcp/typescript",
46
+ prepublish: "pnpm run build",
47
+ test: "vitest run",
48
+ "test:integration": "vitest run --config vitest.integration.config.js",
49
+ "test:scenario": "vitest run --config vitest.scenario.config.js"
50
+ },
51
+ dependencies: {
52
+ "@langwatch/evaluator-contract": "workspace:*",
53
+ "@modelcontextprotocol/sdk": "catalog:",
54
+ zod: "catalog:"
55
+ },
56
+ devDependencies: {
57
+ "@ai-sdk/anthropic": "catalog:",
58
+ "@anthropic-ai/claude-code": "2.1.228",
59
+ "@langwatch/egress": "workspace:*",
60
+ "@langwatch/handled-error": "workspace:*",
61
+ "@langwatch/redaction": "workspace:*",
62
+ "@langwatch/scenario": "catalog:",
63
+ "@types/debug": "catalog:",
64
+ "@types/express": "^5.0.6",
65
+ "@types/node": "catalog:",
66
+ "@types/yargs": "^17.0.33",
67
+ ai: "catalog:",
68
+ chalk: "catalog:",
69
+ dotenv: "catalog:",
70
+ esbuild: "catalog:",
71
+ express: "^5.2.1",
72
+ "node-pty": "catalog:",
73
+ tsup: "catalog:",
74
+ typescript: "catalog:sdk-toolchain",
75
+ vitest: "catalog:",
76
+ yargs: "^18.0.0",
77
+ "zod-validation-error": "catalog:"
78
+ },
79
+ engines: {
80
+ node: "^22.23.4 || ^24.22.1 || >=26.12.1"
81
+ }
82
+ };
83
+
84
+ // src/langwatch-api.ts
85
+ var MCP_IDENTITY_HEADERS = {
86
+ "User-Agent": `langwatch-mcp/${package_default.version}`,
87
+ "X-LangWatch-SDK-Name": "langwatch-mcp",
88
+ "X-LangWatch-SDK-Language": "typescript",
89
+ "X-LangWatch-SDK-Version": package_default.version
90
+ };
91
+ var LANGWATCH_API_VERSION = "2026-10-26";
92
+ var HOSTED_MCP_HEADER = "X-LangWatch-MCP-Host";
93
+ var LangWatchApiError = class extends Error {
94
+ constructor(message, status, responseBody, options = {}) {
95
+ super(message);
96
+ this.status = status;
97
+ this.responseBody = responseBody;
98
+ this.name = "LangWatchApiError";
99
+ this.code = options.code;
100
+ this.tips = options.tips;
101
+ this.docsUrl = options.docsUrl;
102
+ this.fault = options.fault;
103
+ this.reasons = options.reasons;
104
+ }
105
+ status;
106
+ responseBody;
107
+ code;
108
+ tips;
109
+ docsUrl;
110
+ fault;
111
+ /**
112
+ * The per-field failures behind this error, verbatim from the envelope. A validation failure
113
+ * carries the offending field and the values it would have accepted here — the difference
114
+ * between an agent correcting its own request and an agent guessing again.
115
+ */
116
+ reasons;
117
+ };
118
+ var VALID_FAULTS = [
119
+ "customer",
120
+ "platform",
121
+ "provider",
122
+ "presumed_platform"
123
+ ];
124
+ function parseErrorBody(responseBody) {
125
+ try {
126
+ const parsed = JSON.parse(responseBody);
127
+ if (!isRecord(parsed)) return {};
128
+ const envelope = parsed;
129
+ const nestedValue = envelope.error;
130
+ const nested = isRecord(nestedValue) ? nestedValue : null;
131
+ const body = nested ?? envelope;
132
+ const code = readErrorCode(body);
133
+ const message = typeof body.message === "string" ? body.message : void 0;
134
+ if (code === void 0 && message === void 0) {
135
+ return {};
136
+ }
137
+ const tips = readStringArray(body.tips);
138
+ const docsUrl = typeof body.docsUrl === "string" ? body.docsUrl : void 0;
139
+ const fault = VALID_FAULTS.includes(body.fault) ? body.fault : void 0;
140
+ const reasons = Array.isArray(body.reasons) && body.reasons.every((r) => !!r && typeof r === "object") ? body.reasons : void 0;
141
+ return { code, message, tips, docsUrl, fault, reasons };
142
+ } catch {
143
+ return {};
144
+ }
145
+ }
146
+ function isRecord(value) {
147
+ return typeof value === "object" && value !== null && !Array.isArray(value);
148
+ }
149
+ function readErrorCode(body) {
150
+ if (typeof body.code === "string") return body.code;
151
+ if (typeof body.error === "string") return body.error;
152
+ return void 0;
153
+ }
154
+ function readStringArray(value) {
155
+ if (!Array.isArray(value) || !value.every(isString)) return void 0;
156
+ return value;
157
+ }
158
+ function isString(value) {
159
+ return typeof value === "string";
160
+ }
161
+ function describeReason(reason) {
162
+ const meta = reason.meta;
163
+ if (!meta || typeof meta !== "object") return null;
164
+ const field = typeof meta.field === "string" ? meta.field : null;
165
+ if (!field) return null;
166
+ const parts = [`- ${field}`];
167
+ if (meta.received !== void 0) {
168
+ parts.push(`received ${JSON.stringify(meta.received)}`);
169
+ }
170
+ if (Array.isArray(meta.expected) && meta.expected.length > 0) {
171
+ parts.push(`expected one of: ${meta.expected.join(", ")}`);
172
+ }
173
+ return parts.join(" \u2014 ");
174
+ }
175
+ async function makeRequest(method, path, body) {
176
+ const config = getConfig();
177
+ const url = config.endpoint + path;
178
+ const headers = {
179
+ ...MCP_IDENTITY_HEADERS,
180
+ "X-API-Version": LANGWATCH_API_VERSION,
181
+ "X-Auth-Token": requireApiKey()
182
+ };
183
+ if (config.projectId) {
184
+ headers["X-Project-Id"] = config.projectId;
185
+ }
186
+ if (config.hosted) {
187
+ headers[HOSTED_MCP_HEADER] = "hosted";
188
+ }
189
+ if (body !== void 0) {
190
+ headers["Content-Type"] = "application/json";
191
+ }
192
+ const response = await fetch(url, {
193
+ method,
194
+ headers,
195
+ ...body !== void 0 ? { body: JSON.stringify(body) } : {}
196
+ });
197
+ if (!response.ok) {
198
+ const responseBody = await response.text();
199
+ const parsed = parseErrorBody(responseBody);
200
+ const lines = [`LangWatch API error ${response.status}: ${parsed.message ?? responseBody}`];
201
+ const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
202
+ if (reasonLines.length > 0) {
203
+ lines.push("Rejected fields:", ...reasonLines);
204
+ }
205
+ if (parsed.tips && parsed.tips.length > 0) {
206
+ lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
207
+ }
208
+ if (parsed.docsUrl) {
209
+ lines.push(`Docs: ${parsed.docsUrl}`);
210
+ }
211
+ throw new LangWatchApiError(lines.join("\n"), response.status, responseBody, {
212
+ code: parsed.code,
213
+ tips: parsed.tips,
214
+ docsUrl: parsed.docsUrl,
215
+ fault: parsed.fault,
216
+ reasons: parsed.reasons
217
+ });
218
+ }
219
+ if (response.status === 204 || response.headers?.get("content-length") === "0") {
220
+ return null;
221
+ }
222
+ return response.json();
223
+ }
224
+ async function searchTraces(params) {
225
+ const { format = "digest", ...rest } = params;
226
+ return makeRequest("POST", "/api/v1/traces/search", {
227
+ ...rest,
228
+ format
229
+ });
230
+ }
231
+ async function getTraceById(traceId, format = "digest") {
232
+ return makeRequest(
233
+ "GET",
234
+ `/api/v1/traces/${encodeURIComponent(traceId)}?format=${format}`
235
+ );
236
+ }
237
+ async function getAnalyticsTimeseries(params) {
238
+ return makeRequest(
239
+ "POST",
240
+ "/api/v1/analytics/timeseries",
241
+ params
242
+ );
243
+ }
244
+ async function listPrompts() {
245
+ return makeRequest("GET", "/api/v1/prompts");
246
+ }
247
+ async function getPrompt(idOrHandle, options) {
248
+ const params = new URLSearchParams();
249
+ if (options?.version != null) params.set("version", String(options.version));
250
+ if (options?.tag) params.set("tag", options.tag);
251
+ const query = params.toString() ? `?${params}` : "";
252
+ return makeRequest(
253
+ "GET",
254
+ `/api/v1/prompts/${encodeURIComponent(idOrHandle)}${query}`
255
+ );
256
+ }
257
+ async function getPromptVersions(idOrHandle) {
258
+ return makeRequest(
259
+ "GET",
260
+ `/api/v1/prompts/${encodeURIComponent(idOrHandle)}/versions`
261
+ );
262
+ }
263
+ async function createPrompt(data) {
264
+ return makeRequest("POST", "/api/v1/prompts", data);
265
+ }
266
+ async function updatePrompt(idOrHandle, data) {
267
+ return makeRequest(
268
+ "PUT",
269
+ `/api/v1/prompts/${encodeURIComponent(idOrHandle)}`,
270
+ data
271
+ );
272
+ }
273
+ async function assignPromptTag({
274
+ idOrHandle,
275
+ tag,
276
+ versionId
277
+ }) {
278
+ return makeRequest(
279
+ "PUT",
280
+ `/api/v1/prompts/${encodeURIComponent(idOrHandle)}/tags/${encodeURIComponent(tag)}`,
281
+ { versionId }
282
+ );
283
+ }
284
+ async function listPromptTags() {
285
+ return makeRequest("GET", "/api/v1/prompts/tags");
286
+ }
287
+ async function createPromptTag(name) {
288
+ return makeRequest("POST", "/api/v1/prompts/tags", { name });
289
+ }
290
+ async function renamePromptTag({
291
+ tag,
292
+ name
293
+ }) {
294
+ return makeRequest("PUT", `/api/v1/prompts/tags/${encodeURIComponent(tag)}`, { name });
295
+ }
296
+ async function deletePromptTag(tag) {
297
+ return makeRequest("DELETE", `/api/v1/prompts/tags/${encodeURIComponent(tag)}`);
298
+ }
299
+
300
+ export {
301
+ package_default,
302
+ LANGWATCH_API_VERSION,
303
+ LangWatchApiError,
304
+ makeRequest,
305
+ searchTraces,
306
+ getTraceById,
307
+ getAnalyticsTimeseries,
308
+ listPrompts,
309
+ getPrompt,
310
+ getPromptVersions,
311
+ createPrompt,
312
+ updatePrompt,
313
+ assignPromptTag,
314
+ listPromptTags,
315
+ createPromptTag,
316
+ renamePromptTag,
317
+ deletePromptTag
318
+ };
319
+ //# sourceMappingURL=chunk-7CZQDZ2K.js.map
@@ -1,32 +1,32 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-7CZQDZ2K.js";
4
4
 
5
5
  // src/langwatch-api-scenarios.ts
6
6
  async function listScenarios() {
7
- return makeRequest("GET", "/api/scenarios");
7
+ return makeRequest("GET", "/api/v1/scenarios");
8
8
  }
9
9
  async function getScenario(id) {
10
10
  return makeRequest(
11
11
  "GET",
12
- `/api/scenarios/${encodeURIComponent(id)}`
12
+ `/api/v1/scenarios/${encodeURIComponent(id)}`
13
13
  );
14
14
  }
15
15
  async function createScenario(data) {
16
- return makeRequest("POST", "/api/scenarios", data);
16
+ return makeRequest("POST", "/api/v1/scenarios", data);
17
17
  }
18
18
  async function updateScenario(params) {
19
19
  const { id, ...data } = params;
20
20
  return makeRequest(
21
21
  "PUT",
22
- `/api/scenarios/${encodeURIComponent(id)}`,
22
+ `/api/v1/scenarios/${encodeURIComponent(id)}`,
23
23
  data
24
24
  );
25
25
  }
26
26
  async function archiveScenario(id) {
27
27
  return makeRequest(
28
28
  "DELETE",
29
- `/api/scenarios/${encodeURIComponent(id)}`
29
+ `/api/v1/scenarios/${encodeURIComponent(id)}`
30
30
  );
31
31
  }
32
32
 
@@ -37,4 +37,4 @@ export {
37
37
  updateScenario,
38
38
  archiveScenario
39
39
  };
40
- //# sourceMappingURL=chunk-RVAE2MEA.js.map
40
+ //# sourceMappingURL=chunk-7GETGE6B.js.map
@@ -1,36 +1,33 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-7CZQDZ2K.js";
4
4
 
5
5
  // src/langwatch-api-evaluators.ts
6
6
  function getEvaluatorType(evaluator) {
7
7
  return evaluator.config?.evaluatorType;
8
8
  }
9
9
  async function listEvaluators() {
10
- return makeRequest("GET", "/api/evaluators");
10
+ return makeRequest("GET", "/api/v1/evaluators");
11
11
  }
12
12
  async function getEvaluator(idOrSlug) {
13
13
  return makeRequest(
14
14
  "GET",
15
- `/api/evaluators/${encodeURIComponent(idOrSlug)}`
15
+ `/api/v1/evaluators/${encodeURIComponent(idOrSlug)}`
16
16
  );
17
17
  }
18
18
  async function createEvaluator(data) {
19
- return makeRequest("POST", "/api/evaluators", data);
19
+ return makeRequest("POST", "/api/v1/evaluators", data);
20
20
  }
21
21
  async function updateEvaluator(params) {
22
22
  const { id, ...data } = params;
23
23
  return makeRequest(
24
24
  "PUT",
25
- `/api/evaluators/${encodeURIComponent(id)}`,
25
+ `/api/v1/evaluators/${encodeURIComponent(id)}`,
26
26
  data
27
27
  );
28
28
  }
29
29
  async function deleteEvaluator(idOrSlug) {
30
- return makeRequest(
31
- "DELETE",
32
- `/api/evaluators/${encodeURIComponent(idOrSlug)}`
33
- );
30
+ return makeRequest("DELETE", `/api/v1/evaluators/${encodeURIComponent(idOrSlug)}`);
34
31
  }
35
32
 
36
33
  export {
@@ -41,4 +38,4 @@ export {
41
38
  updateEvaluator,
42
39
  deleteEvaluator
43
40
  };
44
- //# sourceMappingURL=chunk-OJLYYJWI.js.map
41
+ //# sourceMappingURL=chunk-AASW2TO2.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-7CZQDZ2K.js";
4
4
 
5
5
  // src/langwatch-api-simulation-runs.ts
6
6
  async function listSimulationRuns(params) {
@@ -9,12 +9,12 @@ async function listSimulationRuns(params) {
9
9
  if (params?.batchRunId) query.set("batchRunId", params.batchRunId);
10
10
  if (params?.limit) query.set("limit", String(params.limit));
11
11
  const qs = query.toString() ? `?${query}` : "";
12
- return makeRequest("GET", `/api/simulation-runs${qs}`);
12
+ return makeRequest("GET", `/api/v1/simulation-runs${qs}`);
13
13
  }
14
14
  async function getSimulationRun(scenarioRunId) {
15
15
  return makeRequest(
16
16
  "GET",
17
- `/api/simulation-runs/${encodeURIComponent(scenarioRunId)}`
17
+ `/api/v1/simulation-runs/${encodeURIComponent(scenarioRunId)}`
18
18
  );
19
19
  }
20
20
 
@@ -22,4 +22,4 @@ export {
22
22
  listSimulationRuns,
23
23
  getSimulationRun
24
24
  };
25
- //# sourceMappingURL=chunk-QAMP3CGR.js.map
25
+ //# sourceMappingURL=chunk-B4RFWIUP.js.map
@@ -24,4 +24,4 @@ function parseRelativeDate(input) {
24
24
  export {
25
25
  parseRelativeDate
26
26
  };
27
- //# sourceMappingURL=chunk-ZXKLPC2E.js.map
27
+ //# sourceMappingURL=chunk-BIIKE3EI.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-7CZQDZ2K.js";
4
4
 
5
5
  // src/langwatch-api-projects.ts
6
6
  async function listProjects(params) {
@@ -8,30 +8,27 @@ async function listProjects(params) {
8
8
  if (params?.page) query.set("page", String(params.page));
9
9
  if (params?.limit) query.set("limit", String(params.limit));
10
10
  const qs = query.toString() ? `?${query}` : "";
11
- return makeRequest("GET", `/api/projects${qs}`);
11
+ return makeRequest("GET", `/api/v1/projects${qs}`);
12
12
  }
13
13
  async function getProject(id) {
14
14
  return makeRequest(
15
15
  "GET",
16
- `/api/projects/${encodeURIComponent(id)}`
16
+ `/api/v1/projects/${encodeURIComponent(id)}`
17
17
  );
18
18
  }
19
19
  async function createProject(data) {
20
- return makeRequest("POST", "/api/projects", data);
20
+ return makeRequest("POST", "/api/v1/projects", data);
21
21
  }
22
22
  async function updateProject(params) {
23
23
  const { id, ...data } = params;
24
24
  return makeRequest(
25
25
  "PATCH",
26
- `/api/projects/${encodeURIComponent(id)}`,
26
+ `/api/v1/projects/${encodeURIComponent(id)}`,
27
27
  data
28
28
  );
29
29
  }
30
30
  async function archiveProject(id) {
31
- return makeRequest(
32
- "DELETE",
33
- `/api/projects/${encodeURIComponent(id)}`
34
- );
31
+ return makeRequest("DELETE", `/api/v1/projects/${encodeURIComponent(id)}`);
35
32
  }
36
33
 
37
34
  export {
@@ -41,4 +38,4 @@ export {
41
38
  updateProject,
42
39
  archiveProject
43
40
  };
44
- //# sourceMappingURL=chunk-G4ZAZTZW.js.map
41
+ //# sourceMappingURL=chunk-D2HS73VI.js.map
@@ -1,7 +1,12 @@
1
1
  // src/utils/format-evaluations.ts
2
2
  function formatEvaluationLines(evaluations) {
3
3
  return evaluations.map((evaluation) => {
4
- const status = evaluation.passed === true ? "PASSED" : evaluation.passed === false ? "FAILED" : "N/A";
4
+ let status = "N/A";
5
+ if (evaluation.passed === true) {
6
+ status = "PASSED";
7
+ } else if (evaluation.passed === false) {
8
+ status = "FAILED";
9
+ }
5
10
  return `- **${evaluation.name || evaluation.evaluator_id}**: ${status}${evaluation.score != null ? ` (score: ${evaluation.score})` : ""}${evaluation.label ? ` [${evaluation.label}]` : ""}`;
6
11
  });
7
12
  }
@@ -9,4 +14,4 @@ function formatEvaluationLines(evaluations) {
9
14
  export {
10
15
  formatEvaluationLines
11
16
  };
12
- //# sourceMappingURL=chunk-37SMPMQS.js.map
17
+ //# sourceMappingURL=chunk-DMM3JQ42.js.map
@@ -33,21 +33,23 @@ function initConfig(args) {
33
33
  state.globalConfig = {
34
34
  apiKey: args.apiKey || process.env.LANGWATCH_API_KEY,
35
35
  endpoint: normalizeEndpoint(args.endpoint ?? "") || normalizeEndpoint(process.env.LANGWATCH_ENDPOINT ?? "") || "https://app.langwatch.ai",
36
- projectId: process.env.LANGWATCH_PROJECT_ID
36
+ projectId: args.projectId ?? process.env.LANGWATCH_PROJECT_ID
37
37
  };
38
38
  }
39
- function getConfig() {
39
+ function tryGetConfig() {
40
40
  const state = getGlobalState();
41
- const scoped = state.configStorage.getStore();
42
- if (scoped) return scoped;
43
- if (!state.globalConfig) {
41
+ return state.configStorage.getStore() ?? state.globalConfig;
42
+ }
43
+ function getConfig() {
44
+ const config = tryGetConfig();
45
+ if (!config) {
44
46
  console.error(
45
47
  "[MCP config] getConfig() failed: globalConfig is null, no scoped config active. Was initConfig() called? Stack:",
46
48
  new Error().stack
47
49
  );
48
50
  throw new Error("Config not initialized");
49
51
  }
50
- return state.globalConfig;
52
+ return config;
51
53
  }
52
54
  function requireApiKey() {
53
55
  const config = getConfig();
@@ -71,8 +73,9 @@ function runWithConfig(config, fn) {
71
73
 
72
74
  export {
73
75
  initConfig,
76
+ tryGetConfig,
74
77
  getConfig,
75
78
  requireApiKey,
76
79
  runWithConfig
77
80
  };
78
- //# sourceMappingURL=chunk-WT4PO4A3.js.map
81
+ //# sourceMappingURL=chunk-DULFP3MK.js.map