@langwatch/mcp-server 2.2.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/add-dashboard-widget-3IE3W5RR.js +46 -0
  3. package/dist/add-dashboard-widget-XNAIGV37.js +45 -0
  4. package/dist/{archive-project-KWFM3I5Z.js → archive-project-LAWWNKTX.js} +4 -4
  5. package/dist/{archive-project-SPVHXK6A.js → archive-project-X64627XS.js} +4 -4
  6. package/dist/{archive-run-plan-Z4SYE6BP.js → archive-run-plan-3HKFL5MS.js} +4 -4
  7. package/dist/{archive-run-plan-65QN3XRX.js → archive-run-plan-C35EJACZ.js} +4 -4
  8. package/dist/{archive-scenario-A6QV5LOW.js → archive-scenario-3DOXHOJJ.js} +4 -4
  9. package/dist/{archive-scenario-FXEYQNEH.js → archive-scenario-7KDGEZM5.js} +4 -4
  10. package/dist/{archive-test-suite-NKZDZY3D.js → archive-test-suite-KZOESY2Y.js} +4 -4
  11. package/dist/{archive-test-suite-5ADQ3KPQ.js → archive-test-suite-RPJ6ZKBV.js} +4 -4
  12. package/dist/{assign-prompt-tag-5IUZXJ2T.js → assign-prompt-tag-2A25CXB7.js} +3 -3
  13. package/dist/{assign-prompt-tag-HBZLBIFD.js → assign-prompt-tag-TQRV6D6V.js} +3 -3
  14. package/dist/{chunk-Y34DHR5K.js → chunk-27SS5FBC.js} +2 -2
  15. package/dist/chunk-2RLDGMPZ.js +79 -0
  16. package/dist/{chunk-VMWJD732.js → chunk-3GVTJ7NK.js} +2 -2
  17. package/dist/chunk-6DF65T3B.js +36 -0
  18. package/dist/{chunk-3OCG3QPU.js → chunk-6OLI3LFY.js} +2 -2
  19. package/dist/{chunk-B4J3PJLX.js → chunk-7HJSQOSZ.js} +2 -6
  20. package/dist/{chunk-UWLE5T2F.js → chunk-7MNQDTKJ.js} +46 -27
  21. package/dist/{chunk-I7ATIZED.js → chunk-BHCYKMRH.js} +2 -2
  22. package/dist/{chunk-H6WGMG2T.js → chunk-DULFP3MK.js} +1 -1
  23. package/dist/{chunk-NKMTIHIJ.js → chunk-FSU2ZBUM.js} +2 -2
  24. package/dist/{chunk-SXFC3FNH.js → chunk-I2Z5CBOU.js} +2 -2
  25. package/dist/{chunk-J7PQKBLD.js → chunk-JEMUBKLJ.js} +533 -402
  26. package/dist/{chunk-7VNSRCXO.js → chunk-JOFSQFCN.js} +2 -2
  27. package/dist/{chunk-HGELNIVY.js → chunk-JQN3VXPH.js} +3 -3
  28. package/dist/{chunk-UTJCWXPZ.js → chunk-LXBQK3J3.js} +2 -2
  29. package/dist/{chunk-JRJPH75H.js → chunk-MQRTYXHJ.js} +2 -2
  30. package/dist/{chunk-YCARO42Z.js → chunk-P2JRKSYI.js} +3 -3
  31. package/dist/{chunk-PTDR56Z3.js → chunk-QF7ZGYVI.js} +2 -2
  32. package/dist/{chunk-UNJM3BIL.js → chunk-QTAHHJH3.js} +2 -2
  33. package/dist/chunk-SLRQHMJZ.js +41 -0
  34. package/dist/{chunk-SUPUUC4W.js → chunk-YQWZ4CDN.js} +5 -3
  35. package/dist/{config-EAKW6F26.js → config-2WQGMAEN.js} +2 -2
  36. package/dist/config.js +1 -1
  37. package/dist/{create-agent-S5ZBCEFT.js → create-agent-IE7Q2Z4C.js} +4 -4
  38. package/dist/{create-agent-AYZ3LB3V.js → create-agent-JMCQ5WZC.js} +4 -4
  39. package/dist/create-analytics-report-4X5N7EOT.js +19 -0
  40. package/dist/create-analytics-report-IKWZRS2O.js +18 -0
  41. package/dist/{create-annotation-VUSXULQK.js → create-annotation-IZ53SJOX.js} +4 -4
  42. package/dist/{create-annotation-LHNCLHYP.js → create-annotation-JR6DBHPW.js} +4 -4
  43. package/dist/{create-api-key-T4KSNPKB.js → create-api-key-IKMOTWCD.js} +4 -4
  44. package/dist/{create-api-key-NNYKARMG.js → create-api-key-YUDAGOWL.js} +4 -4
  45. package/dist/{create-dataset-2MC4SD4O.js → create-dataset-54FJCX45.js} +4 -4
  46. package/dist/{create-dataset-LUP5PVDM.js → create-dataset-ONX3RADL.js} +4 -4
  47. package/dist/{create-dataset-records-W4GLN2FV.js → create-dataset-records-HPLMFDJY.js} +4 -4
  48. package/dist/{create-dataset-records-NSKBZP3G.js → create-dataset-records-QZZZF64Z.js} +4 -4
  49. package/dist/{create-evaluator-HMTYO5SS.js → create-evaluator-I5I52HOQ.js} +4 -4
  50. package/dist/{create-evaluator-643G6LXL.js → create-evaluator-L66QGSDX.js} +4 -4
  51. package/dist/create-mcp-server.cjs +851 -597
  52. package/dist/create-mcp-server.js +523 -392
  53. package/dist/{create-project-6N7PIYRY.js → create-project-UPZGETN5.js} +4 -4
  54. package/dist/{create-project-KAIC46UY.js → create-project-Y5EGJKDG.js} +4 -4
  55. package/dist/{create-prompt-PKJ7EDRR.js → create-prompt-RNUJOL25.js} +3 -3
  56. package/dist/{create-prompt-E67LXIYT.js → create-prompt-WGQLJASD.js} +3 -3
  57. package/dist/{create-prompt-tag-OPQUEXWB.js → create-prompt-tag-3ZCA7M7O.js} +3 -3
  58. package/dist/{create-prompt-tag-4YO3FSJ3.js → create-prompt-tag-R6KIAZTB.js} +3 -3
  59. package/dist/{create-scenario-UEM77OE7.js → create-scenario-WIMKZLQO.js} +4 -4
  60. package/dist/{create-scenario-5PJBMAXO.js → create-scenario-WO5NWXVQ.js} +4 -4
  61. package/dist/{create-test-suite-4IPXVSFQ.js → create-test-suite-AVSR7IIM.js} +4 -4
  62. package/dist/{create-test-suite-SZEPVXSE.js → create-test-suite-LRKCNIJA.js} +4 -4
  63. package/dist/{create-trigger-5HZSCRAN.js → create-trigger-CBO2XDYC.js} +4 -4
  64. package/dist/{create-trigger-PRELMT6J.js → create-trigger-M3VFK5UH.js} +4 -4
  65. package/dist/dashboards-4X6QUT3E.js +90 -0
  66. package/dist/dashboards-CX2T6RKH.js +91 -0
  67. package/dist/{delete-agent-QMEK3XHK.js → delete-agent-QUVDMSOC.js} +4 -4
  68. package/dist/{delete-agent-JUIZWAXG.js → delete-agent-Y4QTEQ3B.js} +4 -4
  69. package/dist/delete-analytics-report-T4GIMEOA.js +18 -0
  70. package/dist/delete-analytics-report-WIP24EXV.js +19 -0
  71. package/dist/{delete-annotation-VKIQWUYW.js → delete-annotation-BWO5ZEZY.js} +4 -4
  72. package/dist/{delete-annotation-HY3O2OGR.js → delete-annotation-ESUH3RWN.js} +4 -4
  73. package/dist/{delete-dataset-WKRUW4FP.js → delete-dataset-N4AEYIAA.js} +4 -4
  74. package/dist/{delete-dataset-HQCR66MG.js → delete-dataset-ZRD23FLO.js} +4 -4
  75. package/dist/{delete-dataset-records-SDUHQLLM.js → delete-dataset-records-HC7VLBT7.js} +4 -4
  76. package/dist/{delete-dataset-records-C2IQFFVQ.js → delete-dataset-records-XC2DFVXD.js} +4 -4
  77. package/dist/{delete-evaluator-QP3QHTLN.js → delete-evaluator-27P5XLNV.js} +4 -4
  78. package/dist/{delete-evaluator-4SNSCLEE.js → delete-evaluator-LJII4YLC.js} +4 -4
  79. package/dist/{delete-prompt-tag-YYQ4VMAD.js → delete-prompt-tag-DH7IQO4X.js} +3 -3
  80. package/dist/{delete-prompt-tag-NZ4JQMYG.js → delete-prompt-tag-OC57CN32.js} +3 -3
  81. package/dist/{delete-workflow-5J46T73T.js → delete-workflow-I4IXK3ZL.js} +4 -4
  82. package/dist/{delete-workflow-JSWABL5F.js → delete-workflow-JXREDDW7.js} +4 -4
  83. package/dist/{discover-schema-A33SLMXW.js → discover-schema-ME5BAD2S.js} +4 -4
  84. package/dist/{discover-schema-55YJBFGQ.js → discover-schema-OHYBG3CY.js} +4 -4
  85. package/dist/{get-agent-LJQX7OF4.js → get-agent-6GKIKKL7.js} +4 -4
  86. package/dist/{get-agent-OTIYUFZA.js → get-agent-UKZUBVPB.js} +4 -4
  87. package/dist/{get-analytics-IQZKJHLW.js → get-analytics-TI2U3JLA.js} +3 -3
  88. package/dist/{get-analytics-DCS72353.js → get-analytics-ZGQ4LY3I.js} +3 -3
  89. package/dist/get-analytics-report-PD6XZ4ZA.js +29 -0
  90. package/dist/get-analytics-report-QMXNQ7VA.js +30 -0
  91. package/dist/{get-dataset-ALSP7RTX.js → get-dataset-5QORNVOZ.js} +4 -4
  92. package/dist/{get-dataset-X4B5JDG2.js → get-dataset-E5WLIPNK.js} +4 -4
  93. package/dist/{get-evaluator-XEUZGZCH.js → get-evaluator-GYQFB4F3.js} +4 -4
  94. package/dist/{get-evaluator-ISMC4LLI.js → get-evaluator-QQV65MQB.js} +4 -4
  95. package/dist/{get-project-5VKROSDH.js → get-project-43SGQCAT.js} +4 -4
  96. package/dist/{get-project-RM6FRCBK.js → get-project-W5DCKXZP.js} +4 -4
  97. package/dist/{get-prompt-OWXJZHQQ.js → get-prompt-IUTPSRRI.js} +3 -3
  98. package/dist/{get-prompt-W52DY36E.js → get-prompt-ZTCWGYJV.js} +3 -3
  99. package/dist/{get-run-plan-BE3M2AUX.js → get-run-plan-M3LVXMGO.js} +4 -4
  100. package/dist/{get-run-plan-RUXQ6PAX.js → get-run-plan-MEPEU353.js} +4 -4
  101. package/dist/{get-scenario-RNM7BAX2.js → get-scenario-2DM4XR44.js} +4 -4
  102. package/dist/{get-scenario-YM4ODWW6.js → get-scenario-D6EPSSPW.js} +4 -4
  103. package/dist/{get-simulation-run-6GIATQE5.js → get-simulation-run-53WM2XOO.js} +4 -4
  104. package/dist/{get-simulation-run-LCFSMPGQ.js → get-simulation-run-RKQ52TKP.js} +4 -4
  105. package/dist/{get-test-suite-P5LJ6VLF.js → get-test-suite-DP2HNOQZ.js} +4 -4
  106. package/dist/{get-test-suite-GC2O7YH6.js → get-test-suite-MUSY2CDJ.js} +4 -4
  107. package/dist/{get-trace-SEF3FMR5.js → get-trace-5Z2BIZ3V.js} +3 -3
  108. package/dist/{get-trace-KBRVV4NN.js → get-trace-THPWSLD3.js} +3 -3
  109. package/dist/{get-workflow-YXULW4GC.js → get-workflow-63E7BNLY.js} +4 -4
  110. package/dist/{get-workflow-7PVED7JE.js → get-workflow-R6XUKTZ7.js} +4 -4
  111. package/dist/{http-server-IR4QOS43.js → http-server-4JHSQN56.js} +245 -45
  112. package/dist/index.js +1847 -899
  113. package/dist/langwatch-api-analytics-reports-IIHGTTQA.js +17 -0
  114. package/dist/langwatch-api-analytics-reports-IQ6CHM5Y.js +18 -0
  115. package/dist/{langwatch-api-annotations-TBHLCQ5R.js → langwatch-api-annotations-CN2KYV3Z.js} +4 -4
  116. package/dist/{langwatch-api-annotations-6SA4OB4C.js → langwatch-api-annotations-CRI6JTQR.js} +4 -4
  117. package/dist/{langwatch-api-monitors-CBF3FGIM.js → langwatch-api-monitors-66O5Z5LB.js} +3 -3
  118. package/dist/{langwatch-api-monitors-YNWA2M5Y.js → langwatch-api-monitors-GNHQRPMR.js} +3 -3
  119. package/dist/{langwatch-api-secrets-RNFO4LF2.js → langwatch-api-secrets-B7BURV76.js} +3 -3
  120. package/dist/{langwatch-api-secrets-ADTOJELP.js → langwatch-api-secrets-P6SHZOHE.js} +3 -3
  121. package/dist/{langwatch-api-triggers-KQDQC6L5.js → langwatch-api-triggers-6FR4VWDL.js} +4 -4
  122. package/dist/{langwatch-api-triggers-QS7HDIVW.js → langwatch-api-triggers-VKNGXSJH.js} +4 -4
  123. package/dist/langwatch-api-workflows-22RQFYO7.js +15 -0
  124. package/dist/{langwatch-api-workflows-OKC4FXIF.js → langwatch-api-workflows-KDACD36L.js} +4 -4
  125. package/dist/{list-agents-RBAOCF53.js → list-agents-SVXWLLO7.js} +4 -4
  126. package/dist/{list-agents-HVYWEQMI.js → list-agents-XM5JNCVK.js} +4 -4
  127. package/dist/list-analytics-reports-DEKKC6BU.js +32 -0
  128. package/dist/list-analytics-reports-E7QFC22G.js +33 -0
  129. package/dist/{list-annotations-J4UAHSUN.js → list-annotations-5CGNOIKI.js} +4 -4
  130. package/dist/{list-annotations-HJH4NBLD.js → list-annotations-P26ELIAO.js} +4 -4
  131. package/dist/{list-api-keys-A2PMV435.js → list-api-keys-B4YL7STE.js} +4 -4
  132. package/dist/{list-api-keys-7UTJRZDG.js → list-api-keys-ZIJJH755.js} +4 -4
  133. package/dist/list-dashboards-F4YJPDKD.js +29 -0
  134. package/dist/list-dashboards-XHYTXEQK.js +30 -0
  135. package/dist/{list-dataset-records-WFM7F33C.js → list-dataset-records-SWCEDRPX.js} +4 -4
  136. package/dist/{list-dataset-records-M5TKA6LK.js → list-dataset-records-YWGROVKC.js} +4 -4
  137. package/dist/{list-datasets-B5X4P7BQ.js → list-datasets-32SCF66H.js} +4 -4
  138. package/dist/{list-datasets-THUKQHPX.js → list-datasets-YYADWT4D.js} +4 -4
  139. package/dist/{list-evaluators-MYH2OVCI.js → list-evaluators-KKQKBJKN.js} +4 -4
  140. package/dist/{list-evaluators-NLVWF6K7.js → list-evaluators-V6LP6ZQA.js} +4 -4
  141. package/dist/{list-model-providers-3JUGP4YI.js → list-model-providers-RCPVT7R4.js} +4 -4
  142. package/dist/{list-model-providers-H3XKORFO.js → list-model-providers-TMBSB6EE.js} +4 -4
  143. package/dist/{list-projects-YNNSRMLC.js → list-projects-4Y74TFDZ.js} +4 -4
  144. package/dist/{list-projects-6EJ5YYEW.js → list-projects-R4MTRF3C.js} +4 -4
  145. package/dist/{list-prompt-tags-NVFQO6WX.js → list-prompt-tags-C345AGM2.js} +3 -3
  146. package/dist/{list-prompt-tags-XUQTTAH4.js → list-prompt-tags-RITKQDC5.js} +3 -3
  147. package/dist/{list-prompts-IRI6AIXO.js → list-prompts-DSJ2LUSU.js} +3 -3
  148. package/dist/{list-prompts-HSIMMHTF.js → list-prompts-F7C5L5XK.js} +3 -3
  149. package/dist/{list-run-plans-PX2XI6EK.js → list-run-plans-YPGLC5QG.js} +4 -4
  150. package/dist/{list-run-plans-QALLCN2K.js → list-run-plans-ZHRZHCDL.js} +4 -4
  151. package/dist/{list-scenarios-SSJQEMJP.js → list-scenarios-6HN72TMW.js} +4 -4
  152. package/dist/{list-scenarios-QZRPVHS4.js → list-scenarios-HCYFOTSL.js} +4 -4
  153. package/dist/{list-simulation-runs-OEADLLQR.js → list-simulation-runs-BKVMQQMT.js} +4 -4
  154. package/dist/{list-simulation-runs-KNOLGMDV.js → list-simulation-runs-JNST5PQU.js} +4 -4
  155. package/dist/{list-test-suites-N4WVLBKK.js → list-test-suites-4ZVYYKVB.js} +4 -4
  156. package/dist/{list-test-suites-ANAQBLDG.js → list-test-suites-YY4J3L7H.js} +4 -4
  157. package/dist/{list-trigger-fires-WTW4DVIW.js → list-trigger-fires-3XM6YZWG.js} +4 -4
  158. package/dist/{list-trigger-fires-JV3WFYYG.js → list-trigger-fires-5C5XM2KQ.js} +4 -4
  159. package/dist/{list-triggers-V4Y356AK.js → list-triggers-DARBIIRA.js} +4 -4
  160. package/dist/{list-triggers-SQNIG35Q.js → list-triggers-MRSWN7RR.js} +4 -4
  161. package/dist/{list-workflows-ZHTX5LCL.js → list-workflows-BGUSQUJX.js} +4 -4
  162. package/dist/{list-workflows-IMSX7SXU.js → list-workflows-NXOWP3XS.js} +4 -4
  163. package/dist/{rename-prompt-tag-IQI7MHOI.js → rename-prompt-tag-F3WT4FB4.js} +3 -3
  164. package/dist/{rename-prompt-tag-PA2BRIE6.js → rename-prompt-tag-HR5HZZI2.js} +3 -3
  165. package/dist/{rename-test-suite-NNVLMLKY.js → rename-test-suite-2ZRXG5O7.js} +4 -4
  166. package/dist/{rename-test-suite-4J7UX5S2.js → rename-test-suite-PWXKE7Z4.js} +4 -4
  167. package/dist/{report-issue-AS34ZMJF.js → report-issue-HG7XCPOY.js} +28 -2
  168. package/dist/{report-issue-DCZFLGDO.js → report-issue-TWRFUPGB.js} +28 -2
  169. package/dist/{rerun-run-plan-TG2V4WM4.js → rerun-run-plan-BFRZFEJB.js} +4 -4
  170. package/dist/{rerun-run-plan-ZI5OY3VA.js → rerun-run-plan-LXM3RFZC.js} +4 -4
  171. package/dist/{revoke-api-key-3J3ZA4UB.js → revoke-api-key-GR55PUP4.js} +4 -4
  172. package/dist/{revoke-api-key-SFMEFWJC.js → revoke-api-key-KCDOYPUK.js} +4 -4
  173. package/dist/{run-agent-YNV6ZHW4.js → run-agent-HRVRHRHI.js} +4 -4
  174. package/dist/{run-agent-W4VJP72Z.js → run-agent-WS6TADJQ.js} +4 -4
  175. package/dist/{run-plan-6C77GWG4.js → run-plan-G24DBB5D.js} +4 -4
  176. package/dist/{run-plan-PAARQSI4.js → run-plan-NSXMBEC5.js} +4 -4
  177. package/dist/{run-query-T4QW2Z5O.js → run-query-6YVOA5NV.js} +19 -5
  178. package/dist/{run-query-KJDH544C.js → run-query-7QIYSDVI.js} +19 -5
  179. package/dist/{run-test-suite-STB6NUJM.js → run-test-suite-NTKLJZCJ.js} +4 -4
  180. package/dist/{run-test-suite-SQJELEZX.js → run-test-suite-P33XFQ6H.js} +4 -4
  181. package/dist/{run-workflow-D6PQNBI6.js → run-workflow-E5ZRSXUB.js} +4 -4
  182. package/dist/{run-workflow-SP32SO5M.js → run-workflow-HDF6CRLM.js} +4 -4
  183. package/dist/{search-traces-HCBGOG6R.js → search-traces-X7NSRTTP.js} +3 -3
  184. package/dist/{search-traces-HSTQ6WTQ.js → search-traces-XWZYOZOM.js} +3 -3
  185. package/dist/{set-model-provider-GF7NXUJA.js → set-model-provider-XJF47L6H.js} +4 -4
  186. package/dist/{set-model-provider-KDQ7C4EZ.js → set-model-provider-YPUCFEXG.js} +4 -4
  187. package/dist/{update-agent-MXNOBS4H.js → update-agent-6FHGWOO7.js} +4 -4
  188. package/dist/{update-agent-DWG43T2P.js → update-agent-VEDXQRSM.js} +4 -4
  189. package/dist/update-dashboard-widget-VOKXN7JA.js +64 -0
  190. package/dist/update-dashboard-widget-VUIQZ7F5.js +63 -0
  191. package/dist/{update-dataset-SQZ6T4WX.js → update-dataset-7AQ24NRS.js} +4 -4
  192. package/dist/{update-dataset-DQH3OHOU.js → update-dataset-GHKDCJJQ.js} +4 -4
  193. package/dist/{update-dataset-record-3AT4IPBC.js → update-dataset-record-IRD6FH2C.js} +4 -4
  194. package/dist/{update-dataset-record-7PLDGTMR.js → update-dataset-record-ZZUPG7AS.js} +4 -4
  195. package/dist/{update-evaluator-4LFTKFPT.js → update-evaluator-O6EJFTQJ.js} +4 -4
  196. package/dist/{update-evaluator-IGTX6PX4.js → update-evaluator-PUJFU5LT.js} +4 -4
  197. package/dist/{update-project-PLJIOZS6.js → update-project-HO53IHXC.js} +4 -4
  198. package/dist/{update-project-QVHSJRUP.js → update-project-VTVU6KNP.js} +4 -4
  199. package/dist/{update-prompt-GDKRYJI3.js → update-prompt-FABVQCAC.js} +3 -3
  200. package/dist/{update-prompt-MY263DYF.js → update-prompt-MNRLCLBA.js} +3 -3
  201. package/dist/{update-scenario-MOHRQKAQ.js → update-scenario-MQZZM5CP.js} +4 -4
  202. package/dist/{update-scenario-7KA3JDXA.js → update-scenario-XIZNUH4I.js} +4 -4
  203. package/package.json +2 -2
  204. package/pyproject.toml +17 -2
  205. package/src/config.d.ts +2 -0
  206. package/src/config.ts +2 -0
  207. package/src/create-mcp-server.ts +165 -41
  208. package/src/langwatch-api-analytics-reports.ts +62 -0
  209. package/src/langwatch-api-dashboard-widgets.ts +4 -68
  210. package/src/langwatch-api-dashboards.ts +110 -28
  211. package/src/langwatch-api-projects.ts +0 -17
  212. package/src/langwatch-api-query.ts +6 -0
  213. package/src/langwatch-api.ts +60 -27
  214. package/src/schemas/widget-sources.ts +69 -0
  215. package/src/tools/add-dashboard-widget.ts +23 -32
  216. package/src/tools/create-analytics-report.ts +7 -0
  217. package/src/tools/dashboard-widget-queries.ts +22 -0
  218. package/src/tools/dashboards.ts +104 -0
  219. package/src/tools/delete-analytics-report.ts +7 -0
  220. package/src/tools/get-analytics-report.ts +23 -0
  221. package/src/tools/list-analytics-reports.ts +27 -0
  222. package/src/tools/list-dashboards.ts +20 -21
  223. package/src/tools/report-issue.ts +2 -0
  224. package/src/tools/run-experiment.ts +5 -1
  225. package/src/tools/run-query.ts +23 -1
  226. package/src/tools/update-dashboard-widget.ts +32 -40
  227. package/uv.lock +667 -341
  228. package/dist/add-dashboard-widget-4ZC5UN73.js +0 -50
  229. package/dist/add-dashboard-widget-ACC6QYBG.js +0 -49
  230. package/dist/chunk-5FNCQRCX.js +0 -91
  231. package/dist/chunk-ILZDO25L.js +0 -36
  232. package/dist/chunk-K2I7Z3LZ.js +0 -28
  233. package/dist/create-dashboard-DHVFMEU4.js +0 -18
  234. package/dist/create-dashboard-WTKKS5Z6.js +0 -19
  235. package/dist/delete-dashboard-76N66XXL.js +0 -18
  236. package/dist/delete-dashboard-JVIVHNJM.js +0 -19
  237. package/dist/get-dashboard-5NYJEIX2.js +0 -29
  238. package/dist/get-dashboard-QMTYDQAZ.js +0 -30
  239. package/dist/langwatch-api-dashboards-6EO2VVZW.js +0 -17
  240. package/dist/langwatch-api-dashboards-NHU5BZD7.js +0 -18
  241. package/dist/langwatch-api-workflows-XGJE6SR5.js +0 -15
  242. package/dist/list-dashboard-boards-OPWROHMG.js +0 -33
  243. package/dist/list-dashboard-boards-U2GJ7GC5.js +0 -34
  244. package/dist/list-dashboards-ROSYFLDQ.js +0 -33
  245. package/dist/list-dashboards-RQ635ZU7.js +0 -32
  246. package/dist/update-dashboard-widget-CJKJLCDY.js +0 -71
  247. package/dist/update-dashboard-widget-CYQDS2NR.js +0 -70
  248. package/src/langwatch-api-boards.ts +0 -46
  249. package/src/tools/create-dashboard.ts +0 -7
  250. package/src/tools/dashboard-exists.ts +0 -25
  251. package/src/tools/delete-dashboard.ts +0 -7
  252. package/src/tools/get-dashboard.ts +0 -22
  253. package/src/tools/list-dashboard-boards.ts +0 -28
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.1.0](https://github.com/langwatch/langwatch/compare/mcp-server@v3.0.0...mcp-server@v3.1.0) (2026-11-02)
4
+
5
+
6
+ ### Features
7
+
8
+ * **dashboards:** widget queries take sources and projects as params ([#9171](https://github.com/langwatch/langwatch/issues/9171)) ([af5a9c3](https://github.com/langwatch/langwatch/commit/af5a9c342951371a1cf547188cff78f9cd50bcc1))
9
+
10
+ ## [3.0.0](https://github.com/langwatch/langwatch/compare/mcp-server@v2.2.0...mcp-server@v3.0.0) (2026-10-30)
11
+
12
+
13
+ ### ⚠ BREAKING CHANGES
14
+
15
+ * **sdk:** client.dashboards and langwatch.dashboards now address the new Dashboards API, not the old Reports; use client.analyticsReports / langwatch.analytics_reports for those. MCP Reports tools are renamed platform_*_analytics_report(s).
16
+
17
+ ### Features
18
+
19
+ * **auth:** log which credential and client each API request used ([#9003](https://github.com/langwatch/langwatch/issues/9003)) ([c55dc6e](https://github.com/langwatch/langwatch/commit/c55dc6e6e22aa2a6563b4be7d3e93d7f40c7f23b))
20
+ * **dashboard:** add REST create and delete for Dashboards boards ([#8896](https://github.com/langwatch/langwatch/issues/8896)) ([fbc1469](https://github.com/langwatch/langwatch/commit/fbc1469027d6ef59c920243f63e2ebaf2264bcf8))
21
+ * **dashboards:** per-widget "Langy traces" setting in the query editor ([#9137](https://github.com/langwatch/langwatch/issues/9137)) ([5e82c1e](https://github.com/langwatch/langwatch/commit/5e82c1ebc1d2dbfda817cf175f3aba62e485a0d8))
22
+ * **experiment:** accept a per-run concurrency on the experiment run API ([#9023](https://github.com/langwatch/langwatch/issues/9023)) ([640d0f6](https://github.com/langwatch/langwatch/commit/640d0f6e21afd19e46eaed9312d4c04c121b9a4b))
23
+ * **monitor:** pause a monitor whose evaluations mostly fail ([#9040](https://github.com/langwatch/langwatch/issues/9040)) ([fcbd9ed](https://github.com/langwatch/langwatch/commit/fcbd9edabbfa2fd9b3a4c142c678298a846e184d))
24
+ * **sdk:** one product per dashboards path; dashboards means the new product everywhere ([#9089](https://github.com/langwatch/langwatch/issues/9089)) ([552534d](https://github.com/langwatch/langwatch/commit/552534d24487441ac5395d91c1af69ed072a0c00))
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * **dashboards:** refresh moves fixed ranges, hidden stars keep their place, agents read boards by id ([#9048](https://github.com/langwatch/langwatch/issues/9048)) ([a5ea0ed](https://github.com/langwatch/langwatch/commit/a5ea0eda1d886635096da02bb76b2b99f9bed6f6))
30
+ * **deps:** raise authlib, litellm and dnspython for today's advisories ([#9120](https://github.com/langwatch/langwatch/issues/9120)) ([828259f](https://github.com/langwatch/langwatch/commit/828259f92eafec9a0d4e1c5ffecab87e4abd2257))
31
+ * **langevals:** judges reach a verdict on gpt-6 reasoning models ([#9102](https://github.com/langwatch/langwatch/issues/9102)) ([d7b6238](https://github.com/langwatch/langwatch/commit/d7b623874e55e0b6af4d81ce9671114d54dfb2cc))
32
+ * **mcp:** repair main after the board-reading merge ([#9087](https://github.com/langwatch/langwatch/issues/9087)) ([96a4bf6](https://github.com/langwatch/langwatch/commit/96a4bf61c903ffb0f75b64e93cef7fd43d0897cd))
33
+ * **security:** close 148 of 150 alerts across the python locks ([#7634](https://github.com/langwatch/langwatch/issues/7634)) ([c0837d1](https://github.com/langwatch/langwatch/commit/c0837d164d28f15ba179fc6f1c1f0516be32cfa3))
34
+ * **security:** close the nine alerts raised on 2026-10-22 ([#8982](https://github.com/langwatch/langwatch/issues/8982)) ([7eca2c2](https://github.com/langwatch/langwatch/commit/7eca2c24ccba4b38a1636048ea18801a2fd1d2b1))
35
+
3
36
  ## [2.2.0](https://github.com/langwatch/langwatch/compare/mcp-server@v2.1.0...mcp-server@v2.2.0) (2026-10-21)
4
37
 
5
38
 
@@ -0,0 +1,46 @@
1
+ import {
2
+ normalizeDashboardWidgetQueries,
3
+ withLists
4
+ } from "./chunk-6DF65T3B.js";
5
+ import {
6
+ createWidgetOnDashboard
7
+ } from "./chunk-2RLDGMPZ.js";
8
+ import {
9
+ LangWatchApiError
10
+ } from "./chunk-7MNQDTKJ.js";
11
+ import "./chunk-DULFP3MK.js";
12
+ import "./chunk-SAS5OB7F.js";
13
+
14
+ // src/tools/add-dashboard-widget.ts
15
+ async function handleAddDashboardWidget(params) {
16
+ const queries = withLists({
17
+ queries: normalizeDashboardWidgetQueries({ queries: params.queries }),
18
+ sources: params.sources,
19
+ projects: params.projects
20
+ });
21
+ let widget;
22
+ try {
23
+ widget = await createWidgetOnDashboard({
24
+ dashboardId: params.dashboardId,
25
+ name: params.name,
26
+ code: params.code,
27
+ queries
28
+ });
29
+ } catch (error) {
30
+ if (error instanceof LangWatchApiError && error.status === 404) {
31
+ throw new Error(
32
+ `No dashboard with ID "${params.dashboardId}" was found in this project. Use list_dashboards to find a valid dashboard ID.`
33
+ );
34
+ }
35
+ throw error;
36
+ }
37
+ return [
38
+ `Widget "${params.name}" created and added to dashboard "${params.dashboardId}".`,
39
+ `**Widget ID**: ${widget.id}`,
40
+ `**Queries**: ${queries.map((q) => q.name).join(", ")}`
41
+ ].join("\n");
42
+ }
43
+ export {
44
+ handleAddDashboardWidget
45
+ };
46
+ //# sourceMappingURL=add-dashboard-widget-3IE3W5RR.js.map
@@ -0,0 +1,45 @@
1
+ import {
2
+ normalizeDashboardWidgetQueries,
3
+ withLists
4
+ } from "./chunk-6DF65T3B.js";
5
+ import {
6
+ createWidgetOnDashboard
7
+ } from "./chunk-2RLDGMPZ.js";
8
+ import {
9
+ LangWatchApiError
10
+ } from "./chunk-7MNQDTKJ.js";
11
+ import "./chunk-DULFP3MK.js";
12
+
13
+ // src/tools/add-dashboard-widget.ts
14
+ async function handleAddDashboardWidget(params) {
15
+ const queries = withLists({
16
+ queries: normalizeDashboardWidgetQueries({ queries: params.queries }),
17
+ sources: params.sources,
18
+ projects: params.projects
19
+ });
20
+ let widget;
21
+ try {
22
+ widget = await createWidgetOnDashboard({
23
+ dashboardId: params.dashboardId,
24
+ name: params.name,
25
+ code: params.code,
26
+ queries
27
+ });
28
+ } catch (error) {
29
+ if (error instanceof LangWatchApiError && error.status === 404) {
30
+ throw new Error(
31
+ `No dashboard with ID "${params.dashboardId}" was found in this project. Use list_dashboards to find a valid dashboard ID.`
32
+ );
33
+ }
34
+ throw error;
35
+ }
36
+ return [
37
+ `Widget "${params.name}" created and added to dashboard "${params.dashboardId}".`,
38
+ `**Widget ID**: ${widget.id}`,
39
+ `**Queries**: ${queries.map((q) => q.name).join(", ")}`
40
+ ].join("\n");
41
+ }
42
+ export {
43
+ handleAddDashboardWidget
44
+ };
45
+ //# sourceMappingURL=add-dashboard-widget-XNAIGV37.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  archiveProject
3
- } from "./chunk-B4J3PJLX.js";
4
- import "./chunk-UWLE5T2F.js";
5
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-7HJSQOSZ.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
 
7
7
  // src/tools/archive-project.ts
8
8
  async function handleArchiveProject(params) {
@@ -16,4 +16,4 @@ async function handleArchiveProject(params) {
16
16
  export {
17
17
  handleArchiveProject
18
18
  };
19
- //# sourceMappingURL=archive-project-KWFM3I5Z.js.map
19
+ //# sourceMappingURL=archive-project-LAWWNKTX.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  archiveProject
3
- } from "./chunk-B4J3PJLX.js";
4
- import "./chunk-UWLE5T2F.js";
5
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-7HJSQOSZ.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/archive-project.ts
@@ -17,4 +17,4 @@ async function handleArchiveProject(params) {
17
17
  export {
18
18
  handleArchiveProject
19
19
  };
20
- //# sourceMappingURL=archive-project-SPVHXK6A.js.map
20
+ //# sourceMappingURL=archive-project-X64627XS.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  archiveRunPlan
3
- } from "./chunk-PTDR56Z3.js";
4
- import "./chunk-UWLE5T2F.js";
5
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-QF7ZGYVI.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
 
7
7
  // src/tools/archive-run-plan.ts
8
8
  async function handleArchiveRunPlan(params) {
@@ -12,4 +12,4 @@ async function handleArchiveRunPlan(params) {
12
12
  export {
13
13
  handleArchiveRunPlan
14
14
  };
15
- //# sourceMappingURL=archive-run-plan-Z4SYE6BP.js.map
15
+ //# sourceMappingURL=archive-run-plan-3HKFL5MS.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  archiveRunPlan
3
- } from "./chunk-PTDR56Z3.js";
4
- import "./chunk-UWLE5T2F.js";
5
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-QF7ZGYVI.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/archive-run-plan.ts
@@ -13,4 +13,4 @@ async function handleArchiveRunPlan(params) {
13
13
  export {
14
14
  handleArchiveRunPlan
15
15
  };
16
- //# sourceMappingURL=archive-run-plan-65QN3XRX.js.map
16
+ //# sourceMappingURL=archive-run-plan-C35EJACZ.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  archiveScenario
3
- } from "./chunk-I7ATIZED.js";
4
- import "./chunk-UWLE5T2F.js";
5
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-BHCYKMRH.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/archive-scenario.ts
@@ -17,4 +17,4 @@ async function handleArchiveScenario(params) {
17
17
  export {
18
18
  handleArchiveScenario
19
19
  };
20
- //# sourceMappingURL=archive-scenario-A6QV5LOW.js.map
20
+ //# sourceMappingURL=archive-scenario-3DOXHOJJ.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  archiveScenario
3
- } from "./chunk-I7ATIZED.js";
4
- import "./chunk-UWLE5T2F.js";
5
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-BHCYKMRH.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
 
7
7
  // src/tools/archive-scenario.ts
8
8
  async function handleArchiveScenario(params) {
@@ -16,4 +16,4 @@ async function handleArchiveScenario(params) {
16
16
  export {
17
17
  handleArchiveScenario
18
18
  };
19
- //# sourceMappingURL=archive-scenario-FXEYQNEH.js.map
19
+ //# sourceMappingURL=archive-scenario-7KDGEZM5.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  archiveTestSuite
3
- } from "./chunk-VMWJD732.js";
4
- import "./chunk-UWLE5T2F.js";
5
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-3GVTJ7NK.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/archive-test-suite.ts
@@ -13,4 +13,4 @@ async function handleArchiveTestSuite(params) {
13
13
  export {
14
14
  handleArchiveTestSuite
15
15
  };
16
- //# sourceMappingURL=archive-test-suite-NKZDZY3D.js.map
16
+ //# sourceMappingURL=archive-test-suite-KZOESY2Y.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  archiveTestSuite
3
- } from "./chunk-VMWJD732.js";
4
- import "./chunk-UWLE5T2F.js";
5
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-3GVTJ7NK.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
 
7
7
  // src/tools/archive-test-suite.ts
8
8
  async function handleArchiveTestSuite(params) {
@@ -12,4 +12,4 @@ async function handleArchiveTestSuite(params) {
12
12
  export {
13
13
  handleArchiveTestSuite
14
14
  };
15
- //# sourceMappingURL=archive-test-suite-5ADQ3KPQ.js.map
15
+ //# sourceMappingURL=archive-test-suite-RPJ6ZKBV.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  assignPromptTag
3
- } from "./chunk-UWLE5T2F.js";
4
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
+ import "./chunk-DULFP3MK.js";
5
5
 
6
6
  // src/tools/assign-prompt-tag.ts
7
7
  async function handleAssignPromptTag(params) {
@@ -20,4 +20,4 @@ async function handleAssignPromptTag(params) {
20
20
  export {
21
21
  handleAssignPromptTag
22
22
  };
23
- //# sourceMappingURL=assign-prompt-tag-5IUZXJ2T.js.map
23
+ //# sourceMappingURL=assign-prompt-tag-2A25CXB7.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  assignPromptTag
3
- } from "./chunk-UWLE5T2F.js";
4
- import "./chunk-H6WGMG2T.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
+ import "./chunk-DULFP3MK.js";
5
5
  import "./chunk-SAS5OB7F.js";
6
6
 
7
7
  // src/tools/assign-prompt-tag.ts
@@ -21,4 +21,4 @@ async function handleAssignPromptTag(params) {
21
21
  export {
22
22
  handleAssignPromptTag
23
23
  };
24
- //# sourceMappingURL=assign-prompt-tag-HBZLBIFD.js.map
24
+ //# sourceMappingURL=assign-prompt-tag-TQRV6D6V.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-3YLN3ATJ.js";
7
7
  import {
8
8
  makeRequest
9
- } from "./chunk-UWLE5T2F.js";
9
+ } from "./chunk-7MNQDTKJ.js";
10
10
 
11
11
  // src/langwatch-api-triggers.ts
12
12
  import { z } from "zod";
@@ -64,4 +64,4 @@ export {
64
64
  listTriggerFires,
65
65
  deleteTrigger
66
66
  };
67
- //# sourceMappingURL=chunk-Y34DHR5K.js.map
67
+ //# sourceMappingURL=chunk-27SS5FBC.js.map
@@ -0,0 +1,79 @@
1
+ import {
2
+ makeRequest
3
+ } from "./chunk-7MNQDTKJ.js";
4
+
5
+ // src/langwatch-api-dashboards.ts
6
+ var dashboardPath = (dashboardId) => `/api/v1/dashboards/${encodeURIComponent(dashboardId)}`;
7
+ var widgetPath = (dashboardId, widgetId) => `${dashboardPath(dashboardId)}/widgets/${encodeURIComponent(widgetId)}`;
8
+ async function listDashboards() {
9
+ return makeRequest("GET", "/api/v1/dashboards");
10
+ }
11
+ async function getDashboard({ dashboardId }) {
12
+ return makeRequest("GET", dashboardPath(dashboardId));
13
+ }
14
+ async function createDashboard({ name }) {
15
+ return makeRequest("POST", "/api/v1/dashboards", { name });
16
+ }
17
+ async function updateDashboard({
18
+ dashboardId,
19
+ ...changes
20
+ }) {
21
+ return makeRequest("PATCH", dashboardPath(dashboardId), changes);
22
+ }
23
+ async function deleteDashboard({
24
+ dashboardId
25
+ }) {
26
+ return makeRequest("DELETE", dashboardPath(dashboardId));
27
+ }
28
+ async function listWidgetsOnDashboard({
29
+ dashboardId
30
+ }) {
31
+ return makeRequest("GET", `${dashboardPath(dashboardId)}/widgets`);
32
+ }
33
+ async function createWidgetOnDashboard({
34
+ dashboardId,
35
+ ...data
36
+ }) {
37
+ return makeRequest(
38
+ "POST",
39
+ `${dashboardPath(dashboardId)}/widgets`,
40
+ data
41
+ );
42
+ }
43
+ async function getWidgetOnDashboard({
44
+ dashboardId,
45
+ widgetId
46
+ }) {
47
+ return makeRequest("GET", widgetPath(dashboardId, widgetId));
48
+ }
49
+ async function updateWidgetOnDashboard({
50
+ dashboardId,
51
+ widgetId,
52
+ ...changes
53
+ }) {
54
+ return makeRequest(
55
+ "PATCH",
56
+ widgetPath(dashboardId, widgetId),
57
+ changes
58
+ );
59
+ }
60
+ async function deleteWidgetOnDashboard({
61
+ dashboardId,
62
+ widgetId
63
+ }) {
64
+ await makeRequest("DELETE", widgetPath(dashboardId, widgetId));
65
+ }
66
+
67
+ export {
68
+ listDashboards,
69
+ getDashboard,
70
+ createDashboard,
71
+ updateDashboard,
72
+ deleteDashboard,
73
+ listWidgetsOnDashboard,
74
+ createWidgetOnDashboard,
75
+ getWidgetOnDashboard,
76
+ updateWidgetOnDashboard,
77
+ deleteWidgetOnDashboard
78
+ };
79
+ //# sourceMappingURL=chunk-2RLDGMPZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-UWLE5T2F.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-test-suites.ts
6
6
  async function listTestSuites() {
@@ -54,4 +54,4 @@ export {
54
54
  archiveTestSuite,
55
55
  runTestSuite
56
56
  };
57
- //# sourceMappingURL=chunk-VMWJD732.js.map
57
+ //# sourceMappingURL=chunk-3GVTJ7NK.js.map
@@ -0,0 +1,36 @@
1
+ // src/tools/dashboard-widget-queries.ts
2
+ function withLists({
3
+ queries,
4
+ sources,
5
+ projects
6
+ }) {
7
+ if (sources === void 0 && projects === void 0) return [...queries];
8
+ return queries.map((query) => ({
9
+ ...query,
10
+ ...sources === void 0 ? {} : { sources },
11
+ ...projects === void 0 ? {} : { projects }
12
+ }));
13
+ }
14
+ var MAX_DASHBOARD_WIDGET_QUERIES = 8;
15
+ function normalizeDashboardWidgetQueries({
16
+ queries
17
+ }) {
18
+ const normalized = Array.isArray(queries) ? queries : Object.entries(queries).map(([name, sql]) => ({ name, sql }));
19
+ if (normalized.length === 0) {
20
+ throw new Error(
21
+ "Provide at least one named LWQL query in `queries`. Validate each query's SQL first with run_query."
22
+ );
23
+ }
24
+ if (normalized.length > MAX_DASHBOARD_WIDGET_QUERIES) {
25
+ throw new Error(
26
+ `A widget may declare at most ${MAX_DASHBOARD_WIDGET_QUERIES} queries, got ${normalized.length}.`
27
+ );
28
+ }
29
+ return normalized;
30
+ }
31
+
32
+ export {
33
+ withLists,
34
+ normalizeDashboardWidgetQueries
35
+ };
36
+ //# sourceMappingURL=chunk-6DF65T3B.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-UWLE5T2F.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-evaluators.ts
6
6
  function getEvaluatorType(evaluator) {
@@ -38,4 +38,4 @@ export {
38
38
  updateEvaluator,
39
39
  deleteEvaluator
40
40
  };
41
- //# sourceMappingURL=chunk-3OCG3QPU.js.map
41
+ //# sourceMappingURL=chunk-6OLI3LFY.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-UWLE5T2F.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-projects.ts
6
6
  async function listProjects(params) {
@@ -16,9 +16,6 @@ async function getProject(id) {
16
16
  `/api/v1/projects/${encodeURIComponent(id)}`
17
17
  );
18
18
  }
19
- async function getCurrentProject() {
20
- return makeRequest("GET", "/api/v1/me/project");
21
- }
22
19
  async function createProject(data) {
23
20
  return makeRequest("POST", "/api/v1/projects", data);
24
21
  }
@@ -37,9 +34,8 @@ async function archiveProject(id) {
37
34
  export {
38
35
  listProjects,
39
36
  getProject,
40
- getCurrentProject,
41
37
  createProject,
42
38
  updateProject,
43
39
  archiveProject
44
40
  };
45
- //# sourceMappingURL=chunk-B4J3PJLX.js.map
41
+ //# sourceMappingURL=chunk-7HJSQOSZ.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  getConfig,
3
3
  requireApiKey
4
- } from "./chunk-H6WGMG2T.js";
4
+ } from "./chunk-DULFP3MK.js";
5
5
 
6
6
  // package.json
7
7
  var package_default = {
8
8
  name: "@langwatch/mcp-server",
9
- version: "2.2.0",
9
+ version: "3.1.0",
10
10
  description: "An MCP server for Langwatch.",
11
11
  license: "MIT",
12
12
  author: "",
@@ -88,6 +88,8 @@ var MCP_IDENTITY_HEADERS = {
88
88
  "X-LangWatch-SDK-Language": "typescript",
89
89
  "X-LangWatch-SDK-Version": package_default.version
90
90
  };
91
+ var LANGWATCH_API_VERSION = "2026-10-26";
92
+ var HOSTED_MCP_HEADER = "X-LangWatch-MCP-Host";
91
93
  var LangWatchApiError = class extends Error {
92
94
  constructor(message, status, responseBody, options = {}) {
93
95
  super(message);
@@ -113,6 +115,10 @@ var LangWatchApiError = class extends Error {
113
115
  */
114
116
  reasons;
115
117
  };
118
+ function detailsOf(meta) {
119
+ const { reasons: _reasons, target: _target, fields: _fields, ...details } = meta;
120
+ return Object.keys(details).length > 0 ? details : void 0;
121
+ }
116
122
  var VALID_FAULTS = [
117
123
  "customer",
118
124
  "platform",
@@ -135,8 +141,10 @@ function parseErrorBody(responseBody) {
135
141
  const tips = readStringArray(body.tips);
136
142
  const docsUrl = typeof body.docsUrl === "string" ? body.docsUrl : void 0;
137
143
  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 };
144
+ const meta = isRecord(body.meta) ? body.meta : {};
145
+ const rawReasons = Array.isArray(body.reasons) ? body.reasons : meta.reasons;
146
+ const reasons = Array.isArray(rawReasons) && rawReasons.every((r) => !!r && typeof r === "object") ? rawReasons : void 0;
147
+ return { code, message, tips, docsUrl, fault, reasons, meta: detailsOf(meta) };
140
148
  } catch {
141
149
  return {};
142
150
  }
@@ -170,16 +178,46 @@ function describeReason(reason) {
170
178
  }
171
179
  return parts.join(" \u2014 ");
172
180
  }
181
+ function apiErrorOf({
182
+ status,
183
+ responseBody
184
+ }) {
185
+ const parsed = parseErrorBody(responseBody);
186
+ const lines = [`LangWatch API error ${status}: ${parsed.message ?? responseBody}`];
187
+ if (parsed.code) lines.push(`Code: ${parsed.code}`);
188
+ if (parsed.meta) lines.push(`Details: ${JSON.stringify(parsed.meta)}`);
189
+ const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
190
+ if (reasonLines.length > 0) {
191
+ lines.push("Rejected fields:", ...reasonLines);
192
+ }
193
+ if (parsed.tips && parsed.tips.length > 0) {
194
+ lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
195
+ }
196
+ if (parsed.docsUrl) {
197
+ lines.push(`Docs: ${parsed.docsUrl}`);
198
+ }
199
+ return new LangWatchApiError(lines.join("\n"), status, responseBody, {
200
+ code: parsed.code,
201
+ tips: parsed.tips,
202
+ docsUrl: parsed.docsUrl,
203
+ fault: parsed.fault,
204
+ reasons: parsed.reasons
205
+ });
206
+ }
173
207
  async function makeRequest(method, path, body) {
174
208
  const config = getConfig();
175
209
  const url = config.endpoint + path;
176
210
  const headers = {
177
211
  ...MCP_IDENTITY_HEADERS,
212
+ "X-API-Version": LANGWATCH_API_VERSION,
178
213
  "X-Auth-Token": requireApiKey()
179
214
  };
180
215
  if (config.projectId) {
181
216
  headers["X-Project-Id"] = config.projectId;
182
217
  }
218
+ if (config.hosted) {
219
+ headers[HOSTED_MCP_HEADER] = "hosted";
220
+ }
183
221
  if (body !== void 0) {
184
222
  headers["Content-Type"] = "application/json";
185
223
  }
@@ -188,28 +226,8 @@ async function makeRequest(method, path, body) {
188
226
  headers,
189
227
  ...body !== void 0 ? { body: JSON.stringify(body) } : {}
190
228
  });
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
- }
229
+ if (!response.ok)
230
+ throw apiErrorOf({ status: response.status, responseBody: await response.text() });
213
231
  if (response.status === 204 || response.headers?.get("content-length") === "0") {
214
232
  return null;
215
233
  }
@@ -293,6 +311,7 @@ async function deletePromptTag(tag) {
293
311
 
294
312
  export {
295
313
  package_default,
314
+ LANGWATCH_API_VERSION,
296
315
  LangWatchApiError,
297
316
  makeRequest,
298
317
  searchTraces,
@@ -309,4 +328,4 @@ export {
309
328
  renamePromptTag,
310
329
  deletePromptTag
311
330
  };
312
- //# sourceMappingURL=chunk-UWLE5T2F.js.map
331
+ //# sourceMappingURL=chunk-7MNQDTKJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-UWLE5T2F.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-scenarios.ts
6
6
  async function listScenarios() {
@@ -37,4 +37,4 @@ export {
37
37
  updateScenario,
38
38
  archiveScenario
39
39
  };
40
- //# sourceMappingURL=chunk-I7ATIZED.js.map
40
+ //# sourceMappingURL=chunk-BHCYKMRH.js.map
@@ -78,4 +78,4 @@ export {
78
78
  requireApiKey,
79
79
  runWithConfig
80
80
  };
81
- //# sourceMappingURL=chunk-H6WGMG2T.js.map
81
+ //# sourceMappingURL=chunk-DULFP3MK.js.map