@langwatch/mcp-server 2.1.0 → 2.2.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 (415) hide show
  1. package/.gitignore +7 -0
  2. package/.npmignore +41 -0
  3. package/CHANGELOG.md +192 -201
  4. package/CONTRIBUTING.md +10 -0
  5. package/README.md +70 -68
  6. package/dist/add-dashboard-widget-4ZC5UN73.js +50 -0
  7. package/dist/add-dashboard-widget-ACC6QYBG.js +49 -0
  8. package/dist/archive-project-KWFM3I5Z.js +19 -0
  9. package/dist/{archive-project-W3IKI7UL.js → archive-project-SPVHXK6A.js} +4 -4
  10. package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-65QN3XRX.js} +4 -4
  11. package/dist/archive-run-plan-Z4SYE6BP.js +15 -0
  12. package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-A6QV5LOW.js} +4 -4
  13. package/dist/archive-scenario-FXEYQNEH.js +19 -0
  14. package/dist/archive-test-suite-5ADQ3KPQ.js +15 -0
  15. package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-NKZDZY3D.js} +4 -4
  16. package/dist/assign-prompt-tag-5IUZXJ2T.js +23 -0
  17. package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-HBZLBIFD.js} +8 -4
  18. package/dist/{chunk-OJLYYJWI.js → chunk-3OCG3QPU.js} +7 -10
  19. package/dist/chunk-3YLN3ATJ.js +241 -0
  20. package/dist/chunk-5FNCQRCX.js +91 -0
  21. package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
  22. package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
  23. package/dist/chunk-7VNSRCXO.js +129 -0
  24. package/dist/{chunk-G4ZAZTZW.js → chunk-B4J3PJLX.js} +11 -10
  25. package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
  26. package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
  27. package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
  28. package/dist/{chunk-WT4PO4A3.js → chunk-H6WGMG2T.js} +10 -7
  29. package/dist/{chunk-EYXMLE5X.js → chunk-HGELNIVY.js} +56 -47
  30. package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
  31. package/dist/{chunk-RVAE2MEA.js → chunk-I7ATIZED.js} +7 -7
  32. package/dist/{chunk-S4GVX36W.js → chunk-ILZDO25L.js} +7 -10
  33. package/dist/{chunk-QRO35SOM.js → chunk-J7PQKBLD.js} +652 -528
  34. package/dist/{chunk-SR6QPRIE.js → chunk-JRJPH75H.js} +7 -13
  35. package/dist/chunk-K2I7Z3LZ.js +28 -0
  36. package/dist/{chunk-UFOYFYI7.js → chunk-NKMTIHIJ.js} +6 -9
  37. package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
  38. package/dist/{chunk-56OGTS24.js → chunk-PTDR56Z3.js} +4 -11
  39. package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
  40. package/dist/chunk-SUPUUC4W.js +64 -0
  41. package/dist/{chunk-JTQJRNFJ.js → chunk-SXFC3FNH.js} +4 -4
  42. package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
  43. package/dist/chunk-UNJM3BIL.js +21 -0
  44. package/dist/{chunk-QAMP3CGR.js → chunk-UTJCWXPZ.js} +4 -4
  45. package/dist/chunk-UWLE5T2F.js +312 -0
  46. package/dist/{chunk-6DJDEXET.js → chunk-VMWJD732.js} +6 -12
  47. package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
  48. package/dist/chunk-Y34DHR5K.js +67 -0
  49. package/dist/chunk-YCARO42Z.js +516 -0
  50. package/dist/config-EAKW6F26.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-AYZ3LB3V.js} +4 -4
  54. package/dist/create-agent-S5ZBCEFT.js +23 -0
  55. package/dist/create-annotation-LHNCLHYP.js +29 -0
  56. package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-VUSXULQK.js} +10 -5
  57. package/dist/{create-api-key-BGBB76JX.js → create-api-key-NNYKARMG.js} +5 -7
  58. package/dist/create-api-key-T4KSNPKB.js +24 -0
  59. package/dist/create-dashboard-DHVFMEU4.js +18 -0
  60. package/dist/{create-dashboard-Z76AIPLS.js → create-dashboard-WTKKS5Z6.js} +4 -4
  61. package/dist/{create-dataset-FD5VAXU4.js → create-dataset-2MC4SD4O.js} +6 -6
  62. package/dist/create-dataset-LUP5PVDM.js +22 -0
  63. package/dist/create-dataset-records-NSKBZP3G.js +20 -0
  64. package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-W4GLN2FV.js} +5 -7
  65. package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-643G6LXL.js} +4 -4
  66. package/dist/create-evaluator-HMTYO5SS.js +27 -0
  67. package/dist/create-mcp-server.cjs +9513 -0
  68. package/dist/create-mcp-server.js +2647 -10
  69. package/dist/create-project-6N7PIYRY.js +44 -0
  70. package/dist/{create-project-ZQ7TFIO2.js → create-project-KAIC46UY.js} +4 -4
  71. package/dist/{create-prompt-BS6QRCUU.js → create-prompt-E67LXIYT.js} +5 -7
  72. package/dist/create-prompt-PKJ7EDRR.js +37 -0
  73. package/dist/create-prompt-tag-4YO3FSJ3.js +17 -0
  74. package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-OPQUEXWB.js} +3 -3
  75. package/dist/create-scenario-5PJBMAXO.js +33 -0
  76. package/dist/{create-scenario-DRPTPXU3.js → create-scenario-UEM77OE7.js} +5 -5
  77. package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-4IPXVSFQ.js} +6 -6
  78. package/dist/create-test-suite-SZEPVXSE.js +36 -0
  79. package/dist/create-trigger-5HZSCRAN.js +49 -0
  80. package/dist/create-trigger-PRELMT6J.js +48 -0
  81. package/dist/delete-agent-JUIZWAXG.js +18 -0
  82. package/dist/{delete-agent-SA4JMUZF.js → delete-agent-QMEK3XHK.js} +4 -4
  83. package/dist/delete-annotation-HY3O2OGR.js +17 -0
  84. package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-VKIQWUYW.js} +4 -4
  85. package/dist/delete-dashboard-76N66XXL.js +18 -0
  86. package/dist/{delete-dashboard-LYMRPF27.js → delete-dashboard-JVIVHNJM.js} +4 -4
  87. package/dist/delete-dataset-HQCR66MG.js +18 -0
  88. package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-WKRUW4FP.js} +5 -7
  89. package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-C2IQFFVQ.js} +5 -7
  90. package/dist/delete-dataset-records-SDUHQLLM.js +19 -0
  91. package/dist/delete-evaluator-4SNSCLEE.js +16 -0
  92. package/dist/delete-evaluator-QP3QHTLN.js +15 -0
  93. package/dist/delete-prompt-tag-NZ4JQMYG.js +17 -0
  94. package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-YYQ4VMAD.js} +3 -3
  95. package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-5J46T73T.js} +4 -4
  96. package/dist/delete-workflow-JSWABL5F.js +17 -0
  97. package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
  98. package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
  99. package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
  100. package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
  101. package/dist/{discover-schema-L6QDPON3.js → discover-schema-55YJBFGQ.js} +181 -186
  102. package/dist/discover-schema-A33SLMXW.js +442 -0
  103. package/dist/get-agent-LJQX7OF4.js +69 -0
  104. package/dist/{get-agent-7THF7HCU.js → get-agent-OTIYUFZA.js} +15 -11
  105. package/dist/get-analytics-DCS72353.js +80 -0
  106. package/dist/get-analytics-IQZKJHLW.js +79 -0
  107. package/dist/get-dashboard-5NYJEIX2.js +29 -0
  108. package/dist/{get-dashboard-P4WWVHFU.js → get-dashboard-QMTYDQAZ.js} +4 -4
  109. package/dist/get-dataset-ALSP7RTX.js +64 -0
  110. package/dist/get-dataset-X4B5JDG2.js +63 -0
  111. package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-ISMC4LLI.js} +4 -4
  112. package/dist/get-evaluator-XEUZGZCH.js +47 -0
  113. package/dist/{get-project-QSQEAB33.js → get-project-5VKROSDH.js} +4 -4
  114. package/dist/get-project-RM6FRCBK.js +26 -0
  115. package/dist/{get-prompt-GVKXF5NL.js → get-prompt-OWXJZHQQ.js} +53 -58
  116. package/dist/get-prompt-W52DY36E.js +94 -0
  117. package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-BE3M2AUX.js} +7 -9
  118. package/dist/get-run-plan-RUXQ6PAX.js +58 -0
  119. package/dist/get-scenario-RNM7BAX2.js +37 -0
  120. package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-YM4ODWW6.js} +5 -5
  121. package/dist/get-simulation-run-6GIATQE5.js +69 -0
  122. package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-LCFSMPGQ.js} +26 -22
  123. package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GC2O7YH6.js} +5 -5
  124. package/dist/get-test-suite-P5LJ6VLF.js +48 -0
  125. package/dist/get-trace-KBRVV4NN.js +45 -0
  126. package/dist/{get-trace-RCUV7N4O.js → get-trace-SEF3FMR5.js} +11 -13
  127. package/dist/get-workflow-7PVED7JE.js +25 -0
  128. package/dist/{get-workflow-EEOC7Y45.js → get-workflow-YXULW4GC.js} +4 -4
  129. package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
  130. package/dist/{http-server-WCDUARTH.js → http-server-IR4QOS43.js} +4071 -347
  131. package/dist/index.js +58671 -37983
  132. package/dist/langwatch-api-annotations-6SA4OB4C.js +17 -0
  133. package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-TBHLCQ5R.js} +4 -4
  134. package/dist/langwatch-api-dashboards-6EO2VVZW.js +17 -0
  135. package/dist/{langwatch-api-dashboards-2KJL2M42.js → langwatch-api-dashboards-NHU5BZD7.js} +4 -4
  136. package/dist/langwatch-api-monitors-CBF3FGIM.js +47 -0
  137. package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-YNWA2M5Y.js} +11 -16
  138. package/dist/langwatch-api-secrets-ADTOJELP.js +56 -0
  139. package/dist/langwatch-api-secrets-RNFO4LF2.js +55 -0
  140. package/dist/langwatch-api-triggers-KQDQC6L5.js +22 -0
  141. package/dist/langwatch-api-triggers-QS7HDIVW.js +23 -0
  142. package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OKC4FXIF.js} +4 -4
  143. package/dist/langwatch-api-workflows-XGJE6SR5.js +15 -0
  144. package/dist/{list-agents-AMVDQPQL.js → list-agents-HVYWEQMI.js} +4 -4
  145. package/dist/list-agents-RBAOCF53.js +42 -0
  146. package/dist/list-annotations-HJH4NBLD.js +38 -0
  147. package/dist/{list-annotations-6PR5NLIC.js → list-annotations-J4UAHSUN.js} +10 -5
  148. package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-7UTJRZDG.js} +10 -5
  149. package/dist/list-api-keys-A2PMV435.js +42 -0
  150. package/dist/list-dashboard-boards-OPWROHMG.js +33 -0
  151. package/dist/list-dashboard-boards-U2GJ7GC5.js +34 -0
  152. package/dist/{list-dashboards-Z3BZKDGF.js → list-dashboards-ROSYFLDQ.js} +4 -4
  153. package/dist/list-dashboards-RQ635ZU7.js +32 -0
  154. package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-M5TKA6LK.js} +14 -10
  155. package/dist/list-dataset-records-WFM7F33C.js +43 -0
  156. package/dist/{list-datasets-WXZL6UMP.js → list-datasets-B5X4P7BQ.js} +9 -13
  157. package/dist/list-datasets-THUKQHPX.js +56 -0
  158. package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-MYH2OVCI.js} +5 -7
  159. package/dist/list-evaluators-NLVWF6K7.js +32 -0
  160. package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-3JUGP4YI.js} +4 -4
  161. package/dist/list-model-providers-H3XKORFO.js +35 -0
  162. package/dist/{list-projects-AQVI6SUK.js → list-projects-6EJ5YYEW.js} +5 -7
  163. package/dist/list-projects-YNNSRMLC.js +40 -0
  164. package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-NVFQO6WX.js} +3 -3
  165. package/dist/list-prompt-tags-XUQTTAH4.js +23 -0
  166. package/dist/{list-prompts-BQOHRHYT.js → list-prompts-HSIMMHTF.js} +4 -6
  167. package/dist/list-prompts-IRI6AIXO.js +30 -0
  168. package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-PX2XI6EK.js} +5 -5
  169. package/dist/list-run-plans-QALLCN2K.js +45 -0
  170. package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-QZRPVHS4.js} +13 -11
  171. package/dist/list-scenarios-SSJQEMJP.js +45 -0
  172. package/dist/list-simulation-runs-KNOLGMDV.js +53 -0
  173. package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-OEADLLQR.js} +12 -8
  174. package/dist/list-test-suites-ANAQBLDG.js +34 -0
  175. package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-N4WVLBKK.js} +4 -4
  176. package/dist/list-trigger-fires-JV3WFYYG.js +19 -0
  177. package/dist/list-trigger-fires-WTW4DVIW.js +20 -0
  178. package/dist/list-triggers-SQNIG35Q.js +45 -0
  179. package/dist/list-triggers-V4Y356AK.js +46 -0
  180. package/dist/{list-workflows-6MV4XJHF.js → list-workflows-IMSX7SXU.js} +5 -7
  181. package/dist/list-workflows-ZHTX5LCL.js +33 -0
  182. package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-IQI7MHOI.js} +3 -3
  183. package/dist/rename-prompt-tag-PA2BRIE6.js +18 -0
  184. package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-4J7UX5S2.js} +4 -4
  185. package/dist/rename-test-suite-NNVLMLKY.js +20 -0
  186. package/dist/report-issue-AS34ZMJF.js +898 -0
  187. package/dist/{report-issue-RHZZ33IS.js → report-issue-DCZFLGDO.js} +81 -67
  188. package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-TG2V4WM4.js} +5 -5
  189. package/dist/rerun-run-plan-ZI5OY3VA.js +21 -0
  190. package/dist/revoke-api-key-3J3ZA4UB.js +15 -0
  191. package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-SFMEFWJC.js} +4 -4
  192. package/dist/run-agent-W4VJP72Z.js +75 -0
  193. package/dist/run-agent-YNV6ZHW4.js +74 -0
  194. package/dist/run-plan-6C77GWG4.js +38 -0
  195. package/dist/{run-plan-T4ZYOZGA.js → run-plan-PAARQSI4.js} +7 -7
  196. package/dist/run-query-KJDH544C.js +47 -0
  197. package/dist/run-query-T4QW2Z5O.js +46 -0
  198. package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-SQJELEZX.js} +6 -6
  199. package/dist/run-test-suite-STB6NUJM.js +25 -0
  200. package/dist/{run-workflow-DFIS23AP.js → run-workflow-D6PQNBI6.js} +4 -4
  201. package/dist/run-workflow-SP32SO5M.js +36 -0
  202. package/dist/search-traces-HCBGOG6R.js +170 -0
  203. package/dist/search-traces-HSTQ6WTQ.js +171 -0
  204. package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-GF7NXUJA.js} +4 -4
  205. package/dist/set-model-provider-KDQ7C4EZ.js +33 -0
  206. package/dist/{update-agent-DUWNYBNA.js → update-agent-DWG43T2P.js} +4 -4
  207. package/dist/update-agent-MXNOBS4H.js +20 -0
  208. package/dist/update-dashboard-widget-CJKJLCDY.js +71 -0
  209. package/dist/update-dashboard-widget-CYQDS2NR.js +70 -0
  210. package/dist/update-dataset-DQH3OHOU.js +22 -0
  211. package/dist/{update-dataset-YSOMDCOB.js → update-dataset-SQZ6T4WX.js} +6 -6
  212. package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-3AT4IPBC.js} +4 -4
  213. package/dist/update-dataset-record-7PLDGTMR.js +19 -0
  214. package/dist/update-evaluator-4LFTKFPT.js +24 -0
  215. package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-IGTX6PX4.js} +4 -4
  216. package/dist/{update-project-Q26FBSYH.js → update-project-PLJIOZS6.js} +4 -4
  217. package/dist/update-project-QVHSJRUP.js +24 -0
  218. package/dist/update-prompt-GDKRYJI3.js +140 -0
  219. package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-MY263DYF.js} +27 -29
  220. package/dist/update-scenario-7KA3JDXA.js +34 -0
  221. package/dist/{update-scenario-WUX34JAR.js → update-scenario-MOHRQKAQ.js} +5 -5
  222. package/package.json +35 -39
  223. package/pyproject.toml +8 -8
  224. package/src/config.d.ts +4 -0
  225. package/src/config.ts +20 -29
  226. package/src/create-mcp-server.ts +755 -609
  227. package/src/documentation-fetch.ts +21 -20
  228. package/src/http-security.ts +166 -135
  229. package/src/http-server.ts +189 -224
  230. package/src/index.ts +14 -16
  231. package/src/langwatch-api-agents.ts +18 -21
  232. package/src/langwatch-api-annotations.ts +11 -12
  233. package/src/langwatch-api-api-keys.ts +8 -9
  234. package/src/langwatch-api-boards.ts +46 -0
  235. package/src/langwatch-api-dashboard-widgets.ts +112 -0
  236. package/src/langwatch-api-dashboards.ts +13 -10
  237. package/src/langwatch-api-datasets.ts +98 -32
  238. package/src/langwatch-api-evaluators.ts +13 -19
  239. package/src/langwatch-api-model-providers.ts +4 -4
  240. package/src/langwatch-api-monitors.ts +14 -18
  241. package/src/langwatch-api-projects.ts +27 -9
  242. package/src/langwatch-api-query.ts +114 -0
  243. package/src/langwatch-api-run-plans.ts +12 -29
  244. package/src/langwatch-api-scenarios.ts +9 -11
  245. package/src/langwatch-api-secrets.ts +31 -24
  246. package/src/langwatch-api-simulation-runs.ts +6 -8
  247. package/src/langwatch-api-test-suites.ts +14 -33
  248. package/src/langwatch-api-triggers.ts +96 -34
  249. package/src/langwatch-api-workflows.ts +9 -9
  250. package/src/langwatch-api.ts +108 -124
  251. package/src/public-http-request.ts +21 -12
  252. package/src/schemas/analytics-metrics.ts +3 -15
  253. package/src/schemas/create-dataset.ts +3 -4
  254. package/src/schemas/run-plan.ts +13 -29
  255. package/src/schemas/suite-fields.ts +6 -23
  256. package/src/schemas/triggers.ts +365 -0
  257. package/src/tools/add-dashboard-widget.ts +63 -0
  258. package/src/tools/archive-project.ts +2 -4
  259. package/src/tools/archive-run-plan.ts +2 -4
  260. package/src/tools/archive-scenario.ts +2 -4
  261. package/src/tools/archive-test-suite.ts +2 -4
  262. package/src/tools/assign-prompt-tag.ts +6 -2
  263. package/src/tools/create-agent.ts +1 -1
  264. package/src/tools/create-annotation.ts +7 -2
  265. package/src/tools/create-api-key.ts +4 -6
  266. package/src/tools/create-dashboard.ts +1 -1
  267. package/src/tools/create-dataset-records.ts +4 -8
  268. package/src/tools/create-dataset.ts +5 -7
  269. package/src/tools/create-evaluator.ts +3 -5
  270. package/src/tools/create-project.ts +2 -2
  271. package/src/tools/create-prompt-tag.ts +2 -4
  272. package/src/tools/create-prompt.ts +9 -18
  273. package/src/tools/create-scenario.ts +5 -7
  274. package/src/tools/create-test-suite.ts +4 -9
  275. package/src/tools/create-trigger.ts +55 -0
  276. package/src/tools/dashboard-exists.ts +25 -0
  277. package/src/tools/dashboard-widget-queries.ts +32 -0
  278. package/src/tools/delete-agent.ts +1 -1
  279. package/src/tools/delete-annotation.ts +1 -1
  280. package/src/tools/delete-dashboard.ts +1 -1
  281. package/src/tools/delete-dataset-records.ts +4 -8
  282. package/src/tools/delete-dataset.ts +3 -7
  283. package/src/tools/delete-evaluator.ts +4 -6
  284. package/src/tools/delete-prompt-tag.ts +2 -4
  285. package/src/tools/delete-workflow.ts +1 -1
  286. package/src/tools/discover-evaluator-schema.ts +34 -25
  287. package/src/tools/discover-scenario-schema.ts +41 -21
  288. package/src/tools/discover-schema.ts +149 -27
  289. package/src/tools/experiment-run-status.ts +2 -8
  290. package/src/tools/format-dataset-mutation.ts +5 -10
  291. package/src/tools/format-run-plan.ts +7 -21
  292. package/src/tools/format-scenario.ts +2 -4
  293. package/src/tools/format-suite-details.ts +6 -12
  294. package/src/tools/get-agent.ts +15 -6
  295. package/src/tools/get-analytics.ts +52 -46
  296. package/src/tools/get-dashboard.ts +1 -1
  297. package/src/tools/get-dataset.ts +34 -16
  298. package/src/tools/get-evaluator.ts +4 -11
  299. package/src/tools/get-experiment-results.ts +219 -186
  300. package/src/tools/get-project.ts +2 -4
  301. package/src/tools/get-prompt.ts +63 -84
  302. package/src/tools/get-run-plan.ts +4 -6
  303. package/src/tools/get-scenario.ts +4 -6
  304. package/src/tools/get-simulation-run.ts +27 -24
  305. package/src/tools/get-test-suite.ts +2 -5
  306. package/src/tools/get-trace.ts +16 -17
  307. package/src/tools/get-workflow.ts +1 -1
  308. package/src/tools/list-agents.ts +1 -1
  309. package/src/tools/list-annotations.ts +8 -5
  310. package/src/tools/list-api-keys.ts +7 -2
  311. package/src/tools/list-dashboard-boards.ts +28 -0
  312. package/src/tools/list-dashboards.ts +1 -1
  313. package/src/tools/list-dataset-records.ts +8 -6
  314. package/src/tools/list-datasets.ts +12 -23
  315. package/src/tools/list-evaluators.ts +4 -8
  316. package/src/tools/list-experiment-runs.ts +5 -9
  317. package/src/tools/list-experiments.ts +5 -11
  318. package/src/tools/list-model-providers.ts +3 -5
  319. package/src/tools/list-projects.ts +2 -4
  320. package/src/tools/list-prompt-tags.ts +3 -3
  321. package/src/tools/list-prompts.ts +4 -8
  322. package/src/tools/list-run-plans.ts +2 -2
  323. package/src/tools/list-scenarios.ts +14 -15
  324. package/src/tools/list-simulation-runs.ts +8 -4
  325. package/src/tools/list-test-suites.ts +1 -1
  326. package/src/tools/list-trigger-fires.ts +17 -0
  327. package/src/tools/list-triggers.ts +39 -0
  328. package/src/tools/list-workflows.ts +2 -4
  329. package/src/tools/rename-prompt-tag.ts +1 -1
  330. package/src/tools/rename-test-suite.ts +2 -5
  331. package/src/tools/report-issue.ts +5 -9
  332. package/src/tools/rerun-run-plan.ts +2 -5
  333. package/src/tools/revoke-api-key.ts +2 -4
  334. package/src/tools/run-agent.ts +29 -26
  335. package/src/tools/run-experiment.ts +36 -37
  336. package/src/tools/run-plan.ts +4 -7
  337. package/src/tools/run-query.ts +47 -0
  338. package/src/tools/run-test-suite.ts +4 -7
  339. package/src/tools/run-workflow.ts +2 -5
  340. package/src/tools/search-traces.ts +161 -47
  341. package/src/tools/set-model-provider.ts +4 -6
  342. package/src/tools/test-agent.ts +2 -2
  343. package/src/tools/update-agent.ts +1 -1
  344. package/src/tools/update-dashboard-widget.ts +97 -0
  345. package/src/tools/update-dataset-record.ts +1 -1
  346. package/src/tools/update-dataset.ts +5 -7
  347. package/src/tools/update-evaluator.ts +3 -5
  348. package/src/tools/update-project.ts +1 -1
  349. package/src/tools/update-prompt.ts +44 -59
  350. package/src/tools/update-scenario.ts +5 -7
  351. package/src/tools/update-test-suite.ts +6 -11
  352. package/src/utils/date-parsing.ts +1 -1
  353. package/src/utils/escape-markdown.ts +3 -8
  354. package/src/utils/format-evaluations.ts +6 -6
  355. package/src/utils/markdown-table.ts +58 -0
  356. package/src/utils/trace-id-shape.ts +20 -0
  357. package/tsconfig.app.json +24 -0
  358. package/tsconfig.json +14 -12
  359. package/vitest.integration.config.js +10 -0
  360. package/vitest.scenario.config.js +9 -0
  361. package/.eslintrc.cjs +0 -36
  362. package/dist/chunk-AN4OUA4D.js +0 -86
  363. package/dist/chunk-GELJ2MQR.js +0 -226
  364. package/dist/chunk-K37ZNPXK.js +0 -24
  365. package/dist/config.d.ts +0 -17
  366. package/dist/create-mcp-server.d.ts +0 -10
  367. package/dist/delete-evaluator-RKYC4TNB.js +0 -16
  368. package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
  369. package/dist/get-analytics-R6AZD3AW.js +0 -73
  370. package/dist/get-dataset-AKTYSQDI.js +0 -49
  371. package/dist/index.d.ts +0 -2
  372. package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
  373. package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
  374. package/dist/run-agent-CAGWGTYT.js +0 -72
  375. package/dist/search-traces-4XTJYXIK.js +0 -79
  376. package/src/__tests__/agent-tools.unit.test.ts +0 -257
  377. package/src/__tests__/all-tools.integration.test.ts +0 -1872
  378. package/src/__tests__/config.unit.test.ts +0 -202
  379. package/src/__tests__/datasets.integration.test.ts +0 -620
  380. package/src/__tests__/datasets.unit.test.ts +0 -244
  381. package/src/__tests__/date-parsing.unit.test.ts +0 -78
  382. package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
  383. package/src/__tests__/discover-schema.unit.test.ts +0 -118
  384. package/src/__tests__/docker.integration.test.ts +0 -318
  385. package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
  386. package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
  387. package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
  388. package/src/__tests__/experiment-status.unit.test.ts +0 -194
  389. package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
  390. package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
  391. package/src/__tests__/http-security-origin.unit.test.ts +0 -97
  392. package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
  393. package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
  394. package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
  395. package/src/__tests__/http-server-origin.integration.test.ts +0 -169
  396. package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
  397. package/src/__tests__/http-transport.integration.test.ts +0 -395
  398. package/src/__tests__/integration.integration.test.ts +0 -284
  399. package/src/__tests__/langwatch-api.unit.test.ts +0 -661
  400. package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
  401. package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
  402. package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
  403. package/src/__tests__/prompts.integration.test.ts +0 -736
  404. package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
  405. package/src/__tests__/report-issue.integration.test.ts +0 -147
  406. package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
  407. package/src/__tests__/scenario-tools.integration.test.ts +0 -286
  408. package/src/__tests__/scenario-tools.unit.test.ts +0 -207
  409. package/src/__tests__/schemas.unit.test.ts +0 -85
  410. package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
  411. package/src/__tests__/support/http-server-harness.ts +0 -138
  412. package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
  413. package/src/__tests__/tools.integration.test.ts +0 -896
  414. package/src/schemas/filter-fields.ts +0 -119
  415. package/src/schemas/index.ts +0 -9
@@ -1,35 +1,29 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-UWLE5T2F.js";
4
4
 
5
5
  // src/langwatch-api-annotations.ts
6
6
  async function listAnnotations() {
7
- return makeRequest("GET", "/api/annotations");
7
+ return makeRequest("GET", "/api/v1/annotations");
8
8
  }
9
9
  async function getAnnotation(id) {
10
10
  return makeRequest(
11
11
  "GET",
12
- `/api/annotations/${encodeURIComponent(id)}`
12
+ `/api/v1/annotations/${encodeURIComponent(id)}`
13
13
  );
14
14
  }
15
15
  async function getAnnotationsByTrace(traceId) {
16
- return makeRequest(
17
- "GET",
18
- `/api/annotations/trace/${encodeURIComponent(traceId)}`
19
- );
16
+ return makeRequest("GET", `/api/v1/annotations/trace/${encodeURIComponent(traceId)}`);
20
17
  }
21
18
  async function createAnnotation(traceId, data) {
22
19
  return makeRequest(
23
20
  "POST",
24
- `/api/annotations/trace/${encodeURIComponent(traceId)}`,
21
+ `/api/v1/annotations/trace/${encodeURIComponent(traceId)}`,
25
22
  data
26
23
  );
27
24
  }
28
25
  async function deleteAnnotation(id) {
29
- return makeRequest(
30
- "DELETE",
31
- `/api/annotations/${encodeURIComponent(id)}`
32
- );
26
+ return makeRequest("DELETE", `/api/v1/annotations/${encodeURIComponent(id)}`);
33
27
  }
34
28
 
35
29
  export {
@@ -39,4 +33,4 @@ export {
39
33
  createAnnotation,
40
34
  deleteAnnotation
41
35
  };
42
- //# sourceMappingURL=chunk-SR6QPRIE.js.map
36
+ //# sourceMappingURL=chunk-JRJPH75H.js.map
@@ -0,0 +1,28 @@
1
+ import {
2
+ makeRequest
3
+ } from "./chunk-UWLE5T2F.js";
4
+
5
+ // src/langwatch-api-boards.ts
6
+ async function listBoards({
7
+ projectId
8
+ }) {
9
+ return makeRequest(
10
+ "GET",
11
+ `/api/v1/projects/${encodeURIComponent(projectId)}/analytics/boards`
12
+ );
13
+ }
14
+ async function getBoard({
15
+ projectId,
16
+ boardId
17
+ }) {
18
+ return makeRequest(
19
+ "GET",
20
+ `/api/v1/projects/${encodeURIComponent(projectId)}/analytics/boards/${encodeURIComponent(boardId)}`
21
+ );
22
+ }
23
+
24
+ export {
25
+ listBoards,
26
+ getBoard
27
+ };
28
+ //# sourceMappingURL=chunk-K2I7Z3LZ.js.map
@@ -1,29 +1,26 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-UWLE5T2F.js";
4
4
 
5
5
  // src/langwatch-api-workflows.ts
6
6
  async function listWorkflows() {
7
- return makeRequest("GET", "/api/workflows");
7
+ return makeRequest("GET", "/api/v1/workflows");
8
8
  }
9
9
  async function getWorkflow(id) {
10
10
  return makeRequest(
11
11
  "GET",
12
- `/api/workflows/${encodeURIComponent(id)}`
12
+ `/api/v1/workflows/${encodeURIComponent(id)}`
13
13
  );
14
14
  }
15
15
  async function runWorkflow(id, input) {
16
16
  return makeRequest(
17
17
  "POST",
18
- `/api/workflows/${encodeURIComponent(id)}/run`,
18
+ `/api/v1/workflows/${encodeURIComponent(id)}/run`,
19
19
  input ?? {}
20
20
  );
21
21
  }
22
22
  async function deleteWorkflow(id) {
23
- return makeRequest(
24
- "DELETE",
25
- `/api/workflows/${encodeURIComponent(id)}`
26
- );
23
+ return makeRequest("DELETE", `/api/v1/workflows/${encodeURIComponent(id)}`);
27
24
  }
28
25
 
29
26
  export {
@@ -32,4 +29,4 @@ export {
32
29
  runWorkflow,
33
30
  deleteWorkflow
34
31
  };
35
- //# sourceMappingURL=chunk-UFOYFYI7.js.map
32
+ //# sourceMappingURL=chunk-NKMTIHIJ.js.map
@@ -9,9 +9,7 @@ var runPlanScopeSchema = z.discriminatedUnion("mode", [
9
9
  z.object({
10
10
  mode: z.literal("labels"),
11
11
  labels: z.array(z.string()).describe("The labels to select scenarios by")
12
- }).describe(
13
- "The non-archived scenarios carrying at least one of the given labels"
14
- ),
12
+ }).describe("The non-archived scenarios carrying at least one of the given labels"),
15
13
  z.object({ mode: z.literal("scenarios") }).describe("The scenarios named in scenarioIds, picked by hand")
16
14
  ]);
17
15
  var runParametersSchema = z.record(
@@ -43,4 +41,4 @@ export {
43
41
  runPlanTargetSchema,
44
42
  toWireTargets
45
43
  };
46
- //# sourceMappingURL=chunk-HV4DWKBI.js.map
44
+ //# sourceMappingURL=chunk-O7EMWEVJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-UWLE5T2F.js";
4
4
 
5
5
  // src/langwatch-api-run-plans.ts
6
6
  async function listRunPlans(params) {
@@ -8,17 +8,10 @@ async function listRunPlans(params) {
8
8
  return makeRequest("GET", `/api/v1/run-plans${query}`);
9
9
  }
10
10
  async function getRunPlan(id) {
11
- return makeRequest(
12
- "GET",
13
- `/api/v1/run-plans/${encodeURIComponent(id)}`
14
- );
11
+ return makeRequest("GET", `/api/v1/run-plans/${encodeURIComponent(id)}`);
15
12
  }
16
13
  async function runRunPlan(data) {
17
- return makeRequest(
18
- "POST",
19
- "/api/v1/run-plans/run",
20
- data
21
- );
14
+ return makeRequest("POST", "/api/v1/run-plans/run", data);
22
15
  }
23
16
  async function rerunRunPlan(id, data) {
24
17
  return makeRequest(
@@ -41,4 +34,4 @@ export {
41
34
  rerunRunPlan,
42
35
  archiveRunPlan
43
36
  };
44
- //# sourceMappingURL=chunk-56OGTS24.js.map
37
+ //# sourceMappingURL=chunk-PTDR56Z3.js.map
@@ -10,20 +10,14 @@ function formatRunPlanRun(result) {
10
10
  lines.push(`**Set ID**: ${result.setId}`);
11
11
  lines.push(`**Jobs**: ${result.jobCount}`);
12
12
  if (result.skippedArchived.scenarios.length > 0) {
13
- lines.push(
14
- `**Skipped archived scenarios**: ${result.skippedArchived.scenarios.join(", ")}`
15
- );
13
+ lines.push(`**Skipped archived scenarios**: ${result.skippedArchived.scenarios.join(", ")}`);
16
14
  }
17
15
  if (result.skippedArchived.targets.length > 0) {
18
- lines.push(
19
- `**Skipped archived targets**: ${result.skippedArchived.targets.join(", ")}`
20
- );
16
+ lines.push(`**Skipped archived targets**: ${result.skippedArchived.targets.join(", ")}`);
21
17
  }
22
18
  lines.push(`**View**: ${result.platformUrl}`);
23
19
  lines.push("");
24
- lines.push(
25
- "> Use `platform_list_simulation_runs` with the batch run ID to read the results."
26
- );
20
+ lines.push("> Use `platform_list_simulation_runs` with the batch run ID to read the results.");
27
21
  return lines.join("\n");
28
22
  }
29
23
  function describeRunPlanScope(scope, scenarioIds) {
@@ -46,4 +40,4 @@ export {
46
40
  formatRunPlanRun,
47
41
  describeRunPlanScope
48
42
  };
49
- //# sourceMappingURL=chunk-JR6DJZOU.js.map
43
+ //# sourceMappingURL=chunk-RABYBFX5.js.map
@@ -0,0 +1,64 @@
1
+ import {
2
+ escapeMarkdown
3
+ } from "./chunk-FOKVY3BK.js";
4
+ import {
5
+ makeRequest
6
+ } from "./chunk-UWLE5T2F.js";
7
+
8
+ // src/langwatch-api-query.ts
9
+ async function runQuery(params) {
10
+ return makeRequest("POST", "/api/v1/query", {
11
+ sql: params.sql,
12
+ ...params.parameters ? { parameters: params.parameters } : {}
13
+ });
14
+ }
15
+ async function getQueryReference() {
16
+ return makeRequest("GET", "/api/v1/query/reference");
17
+ }
18
+
19
+ // src/utils/markdown-table.ts
20
+ var MAX_CELL_LENGTH = 200;
21
+ function markdownCell(value) {
22
+ if (value === null || value === void 0) return "";
23
+ const text = cellText(value);
24
+ const escaped = escapeMarkdown(text);
25
+ return escaped.length > MAX_CELL_LENGTH ? `${escaped.slice(0, MAX_CELL_LENGTH - 1)}\u2026` : escaped;
26
+ }
27
+ function markdownTable({
28
+ headers,
29
+ rows,
30
+ emptyMessage = "No rows."
31
+ }) {
32
+ if (headers.length === 0 || rows.length === 0) return emptyMessage;
33
+ const lines = [
34
+ `| ${headers.map(markdownCell).join(" | ")} |`,
35
+ `| ${headers.map(() => "---").join(" | ")} |`
36
+ ];
37
+ for (const row of rows) {
38
+ lines.push(`| ${headers.map((header) => markdownCell(row[header])).join(" | ")} |`);
39
+ }
40
+ return lines.join("\n");
41
+ }
42
+ function cellText(value) {
43
+ switch (typeof value) {
44
+ case "string":
45
+ return value;
46
+ case "number":
47
+ case "boolean":
48
+ case "bigint":
49
+ return String(value);
50
+ case "symbol":
51
+ return value.toString();
52
+ case "function":
53
+ return value.name;
54
+ default:
55
+ return JSON.stringify(value);
56
+ }
57
+ }
58
+
59
+ export {
60
+ runQuery,
61
+ getQueryReference,
62
+ markdownTable
63
+ };
64
+ //# sourceMappingURL=chunk-SUPUUC4W.js.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-UWLE5T2F.js";
4
4
 
5
5
  // src/langwatch-api-model-providers.ts
6
6
  async function listModelProviders() {
7
- return makeRequest("GET", "/api/model-providers");
7
+ return makeRequest("GET", "/api/v1/model-providers");
8
8
  }
9
9
  async function setModelProvider(params) {
10
10
  const { provider, ...data } = params;
11
11
  return makeRequest(
12
12
  "PUT",
13
- `/api/model-providers/${encodeURIComponent(provider)}`,
13
+ `/api/v1/model-providers/${encodeURIComponent(provider)}`,
14
14
  data
15
15
  );
16
16
  }
@@ -19,4 +19,4 @@ export {
19
19
  listModelProviders,
20
20
  setModelProvider
21
21
  };
22
- //# sourceMappingURL=chunk-JTQJRNFJ.js.map
22
+ //# sourceMappingURL=chunk-SXFC3FNH.js.map
@@ -2,10 +2,7 @@
2
2
  import { z } from "zod";
3
3
  var SUITE_FIELD_TYPES = ["text", "number", "boolean"];
4
4
  var suiteFieldSchema = z.object({
5
- identifier: z.string().min(1).max(64).regex(
6
- /^[a-z][a-z0-9_]*$/,
7
- "Lowercase letters, digits and underscores, starting with a letter"
8
- ).describe(
5
+ identifier: z.string().min(1).max(64).regex(/^[a-z][a-z0-9_]*$/, "Lowercase letters, digits and underscores, starting with a letter").describe(
9
6
  "The field name, as scenarios and evaluator mappings address it, for example golden_sql. Lowercase letters, digits and underscores, starting with a letter. situation, criteria, name, input and output are reserved."
10
7
  ),
11
8
  type: z.enum(SUITE_FIELD_TYPES).describe("The value type every scenario carries for this field.")
@@ -13,11 +10,7 @@ var suiteFieldSchema = z.object({
13
10
  var suiteFieldsSchema = z.array(suiteFieldSchema).max(30).describe(
14
11
  "The fields the test suite declares, in order. Up to 30. Every scenario filed in the suite carries one value per field, and an evaluator attached to the suite reads them through its mappings."
15
12
  );
16
- var SCENARIO_MAPPING_SOURCE_IDS = [
17
- "conversation",
18
- "scenario",
19
- "trace"
20
- ];
13
+ var SCENARIO_MAPPING_SOURCE_IDS = ["conversation", "scenario", "trace"];
21
14
  var scenarioMappingSchema = z.discriminatedUnion("type", [
22
15
  z.object({
23
16
  type: z.literal("source"),
@@ -71,4 +64,4 @@ export {
71
64
  scenarioFieldValuesSchema,
72
65
  toWireAttachments
73
66
  };
74
- //# sourceMappingURL=chunk-CKNAH5TG.js.map
67
+ //# sourceMappingURL=chunk-U24EACC4.js.map
@@ -0,0 +1,21 @@
1
+ import {
2
+ makeRequest
3
+ } from "./chunk-UWLE5T2F.js";
4
+
5
+ // src/langwatch-api-api-keys.ts
6
+ async function listApiKeys() {
7
+ return makeRequest("GET", "/api/v1/api-keys");
8
+ }
9
+ async function createApiKey(data) {
10
+ return makeRequest("POST", "/api/v1/api-keys", data);
11
+ }
12
+ async function revokeApiKey(id) {
13
+ return makeRequest("DELETE", `/api/v1/api-keys/${encodeURIComponent(id)}`);
14
+ }
15
+
16
+ export {
17
+ listApiKeys,
18
+ createApiKey,
19
+ revokeApiKey
20
+ };
21
+ //# sourceMappingURL=chunk-UNJM3BIL.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-UWLE5T2F.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-UTJCWXPZ.js.map
@@ -0,0 +1,312 @@
1
+ import {
2
+ getConfig,
3
+ requireApiKey
4
+ } from "./chunk-H6WGMG2T.js";
5
+
6
+ // package.json
7
+ var package_default = {
8
+ name: "@langwatch/mcp-server",
9
+ version: "2.2.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 LangWatchApiError = class extends Error {
92
+ constructor(message, status, responseBody, options = {}) {
93
+ super(message);
94
+ this.status = status;
95
+ this.responseBody = responseBody;
96
+ this.name = "LangWatchApiError";
97
+ this.code = options.code;
98
+ this.tips = options.tips;
99
+ this.docsUrl = options.docsUrl;
100
+ this.fault = options.fault;
101
+ this.reasons = options.reasons;
102
+ }
103
+ status;
104
+ responseBody;
105
+ code;
106
+ tips;
107
+ docsUrl;
108
+ fault;
109
+ /**
110
+ * The per-field failures behind this error, verbatim from the envelope. A validation failure
111
+ * carries the offending field and the values it would have accepted here — the difference
112
+ * between an agent correcting its own request and an agent guessing again.
113
+ */
114
+ reasons;
115
+ };
116
+ var VALID_FAULTS = [
117
+ "customer",
118
+ "platform",
119
+ "provider",
120
+ "presumed_platform"
121
+ ];
122
+ function parseErrorBody(responseBody) {
123
+ try {
124
+ const parsed = JSON.parse(responseBody);
125
+ if (!isRecord(parsed)) return {};
126
+ const envelope = parsed;
127
+ const nestedValue = envelope.error;
128
+ const nested = isRecord(nestedValue) ? nestedValue : null;
129
+ const body = nested ?? envelope;
130
+ const code = readErrorCode(body);
131
+ const message = typeof body.message === "string" ? body.message : void 0;
132
+ if (code === void 0 && message === void 0) {
133
+ return {};
134
+ }
135
+ const tips = readStringArray(body.tips);
136
+ const docsUrl = typeof body.docsUrl === "string" ? body.docsUrl : void 0;
137
+ const fault = VALID_FAULTS.includes(body.fault) ? body.fault : void 0;
138
+ const reasons = Array.isArray(body.reasons) && body.reasons.every((r) => !!r && typeof r === "object") ? body.reasons : void 0;
139
+ return { code, message, tips, docsUrl, fault, reasons };
140
+ } catch {
141
+ return {};
142
+ }
143
+ }
144
+ function isRecord(value) {
145
+ return typeof value === "object" && value !== null && !Array.isArray(value);
146
+ }
147
+ function readErrorCode(body) {
148
+ if (typeof body.code === "string") return body.code;
149
+ if (typeof body.error === "string") return body.error;
150
+ return void 0;
151
+ }
152
+ function readStringArray(value) {
153
+ if (!Array.isArray(value) || !value.every(isString)) return void 0;
154
+ return value;
155
+ }
156
+ function isString(value) {
157
+ return typeof value === "string";
158
+ }
159
+ function describeReason(reason) {
160
+ const meta = reason.meta;
161
+ if (!meta || typeof meta !== "object") return null;
162
+ const field = typeof meta.field === "string" ? meta.field : null;
163
+ if (!field) return null;
164
+ const parts = [`- ${field}`];
165
+ if (meta.received !== void 0) {
166
+ parts.push(`received ${JSON.stringify(meta.received)}`);
167
+ }
168
+ if (Array.isArray(meta.expected) && meta.expected.length > 0) {
169
+ parts.push(`expected one of: ${meta.expected.join(", ")}`);
170
+ }
171
+ return parts.join(" \u2014 ");
172
+ }
173
+ async function makeRequest(method, path, body) {
174
+ const config = getConfig();
175
+ const url = config.endpoint + path;
176
+ const headers = {
177
+ ...MCP_IDENTITY_HEADERS,
178
+ "X-Auth-Token": requireApiKey()
179
+ };
180
+ if (config.projectId) {
181
+ headers["X-Project-Id"] = config.projectId;
182
+ }
183
+ if (body !== void 0) {
184
+ headers["Content-Type"] = "application/json";
185
+ }
186
+ const response = await fetch(url, {
187
+ method,
188
+ headers,
189
+ ...body !== void 0 ? { body: JSON.stringify(body) } : {}
190
+ });
191
+ if (!response.ok) {
192
+ const responseBody = await response.text();
193
+ const parsed = parseErrorBody(responseBody);
194
+ const lines = [`LangWatch API error ${response.status}: ${parsed.message ?? responseBody}`];
195
+ const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
196
+ if (reasonLines.length > 0) {
197
+ lines.push("Rejected fields:", ...reasonLines);
198
+ }
199
+ if (parsed.tips && parsed.tips.length > 0) {
200
+ lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
201
+ }
202
+ if (parsed.docsUrl) {
203
+ lines.push(`Docs: ${parsed.docsUrl}`);
204
+ }
205
+ throw new LangWatchApiError(lines.join("\n"), response.status, responseBody, {
206
+ code: parsed.code,
207
+ tips: parsed.tips,
208
+ docsUrl: parsed.docsUrl,
209
+ fault: parsed.fault,
210
+ reasons: parsed.reasons
211
+ });
212
+ }
213
+ if (response.status === 204 || response.headers?.get("content-length") === "0") {
214
+ return null;
215
+ }
216
+ return response.json();
217
+ }
218
+ async function searchTraces(params) {
219
+ const { format = "digest", ...rest } = params;
220
+ return makeRequest("POST", "/api/v1/traces/search", {
221
+ ...rest,
222
+ format
223
+ });
224
+ }
225
+ async function getTraceById(traceId, format = "digest") {
226
+ return makeRequest(
227
+ "GET",
228
+ `/api/v1/traces/${encodeURIComponent(traceId)}?format=${format}`
229
+ );
230
+ }
231
+ async function getAnalyticsTimeseries(params) {
232
+ return makeRequest(
233
+ "POST",
234
+ "/api/v1/analytics/timeseries",
235
+ params
236
+ );
237
+ }
238
+ async function listPrompts() {
239
+ return makeRequest("GET", "/api/v1/prompts");
240
+ }
241
+ async function getPrompt(idOrHandle, options) {
242
+ const params = new URLSearchParams();
243
+ if (options?.version != null) params.set("version", String(options.version));
244
+ if (options?.tag) params.set("tag", options.tag);
245
+ const query = params.toString() ? `?${params}` : "";
246
+ return makeRequest(
247
+ "GET",
248
+ `/api/v1/prompts/${encodeURIComponent(idOrHandle)}${query}`
249
+ );
250
+ }
251
+ async function getPromptVersions(idOrHandle) {
252
+ return makeRequest(
253
+ "GET",
254
+ `/api/v1/prompts/${encodeURIComponent(idOrHandle)}/versions`
255
+ );
256
+ }
257
+ async function createPrompt(data) {
258
+ return makeRequest("POST", "/api/v1/prompts", data);
259
+ }
260
+ async function updatePrompt(idOrHandle, data) {
261
+ return makeRequest(
262
+ "PUT",
263
+ `/api/v1/prompts/${encodeURIComponent(idOrHandle)}`,
264
+ data
265
+ );
266
+ }
267
+ async function assignPromptTag({
268
+ idOrHandle,
269
+ tag,
270
+ versionId
271
+ }) {
272
+ return makeRequest(
273
+ "PUT",
274
+ `/api/v1/prompts/${encodeURIComponent(idOrHandle)}/tags/${encodeURIComponent(tag)}`,
275
+ { versionId }
276
+ );
277
+ }
278
+ async function listPromptTags() {
279
+ return makeRequest("GET", "/api/v1/prompts/tags");
280
+ }
281
+ async function createPromptTag(name) {
282
+ return makeRequest("POST", "/api/v1/prompts/tags", { name });
283
+ }
284
+ async function renamePromptTag({
285
+ tag,
286
+ name
287
+ }) {
288
+ return makeRequest("PUT", `/api/v1/prompts/tags/${encodeURIComponent(tag)}`, { name });
289
+ }
290
+ async function deletePromptTag(tag) {
291
+ return makeRequest("DELETE", `/api/v1/prompts/tags/${encodeURIComponent(tag)}`);
292
+ }
293
+
294
+ export {
295
+ package_default,
296
+ LangWatchApiError,
297
+ makeRequest,
298
+ searchTraces,
299
+ getTraceById,
300
+ getAnalyticsTimeseries,
301
+ listPrompts,
302
+ getPrompt,
303
+ getPromptVersions,
304
+ createPrompt,
305
+ updatePrompt,
306
+ assignPromptTag,
307
+ listPromptTags,
308
+ createPromptTag,
309
+ renamePromptTag,
310
+ deletePromptTag
311
+ };
312
+ //# sourceMappingURL=chunk-UWLE5T2F.js.map