@langwatch/mcp-server 0.10.0 → 1.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 (122) hide show
  1. package/.release-please-shim +1 -1
  2. package/CHANGELOG.md +62 -0
  3. package/README.md +9 -17
  4. package/dist/{archive-project-HZBRPR2S.js → archive-project-MK3673A7.js} +4 -3
  5. package/dist/{archive-scenario-P5RRITRM.js → archive-scenario-KATSXRIN.js} +4 -3
  6. package/dist/{archive-suite-NUUFD2EM.js → archive-suite-C3KX6IIZ.js} +4 -3
  7. package/dist/{assign-prompt-tag-FKCCZPML.js → assign-prompt-tag-E3C5W6PI.js} +3 -2
  8. package/dist/chunk-37SMPMQS.js +12 -0
  9. package/dist/{chunk-42ZHHHIJ.js → chunk-5UWY24RP.js} +79 -4
  10. package/dist/chunk-BJ7B4R26.js +42 -0
  11. package/dist/chunk-CE6QMZOP.js +432 -0
  12. package/dist/{chunk-X2SEURT2.js → chunk-DAIQKS27.js} +2 -2
  13. package/dist/{chunk-R7C7OUVG.js → chunk-EU22L52K.js} +2 -2
  14. package/dist/{chunk-TROIWSEQ.js → chunk-J45SVWPR.js} +2 -2
  15. package/dist/{chunk-CCM4ZFGF.js → chunk-O3LWVN67.js} +2 -2
  16. package/dist/{chunk-BB7EOKHR.js → chunk-RYRB2YVJ.js} +2 -2
  17. package/dist/{chunk-HKY3GW45.js → chunk-T7WJVS2N.js} +2 -2
  18. package/dist/{chunk-JHOSVOHT.js → chunk-UXXA4D6K.js} +2 -2
  19. package/dist/{chunk-FVDAZ4XG.js → chunk-VYPSKRPN.js} +219 -137
  20. package/dist/{chunk-CHKCEZBP.js → chunk-WDH5P5RF.js} +2 -2
  21. package/dist/{chunk-BBJ5WAJB.js → chunk-WWMDHZZV.js} +2 -2
  22. package/dist/{chunk-ADSJ2FDA.js → chunk-XY4STOBE.js} +2 -2
  23. package/dist/{chunk-BYWYM2RP.js → chunk-Y3HDZ6OW.js} +2 -2
  24. package/dist/config.js +1 -0
  25. package/dist/{create-agent-K5Q7BFGZ.js → create-agent-7W57J7MT.js} +4 -3
  26. package/dist/{create-annotation-KN3GE3DK.js → create-annotation-W2XELBCQ.js} +4 -3
  27. package/dist/{create-api-key-OQI5PUNQ.js → create-api-key-MKRXKFJM.js} +4 -3
  28. package/dist/{create-dashboard-G4QA5AXP.js → create-dashboard-QGL7IODC.js} +4 -3
  29. package/dist/{create-dataset-WQSC37N7.js → create-dataset-3PH7A4HG.js} +4 -3
  30. package/dist/{create-dataset-records-B4RL3FLC.js → create-dataset-records-4DZS3VRL.js} +4 -3
  31. package/dist/{create-evaluator-YFFQIR7E.js → create-evaluator-YWH6NC4M.js} +4 -3
  32. package/dist/create-mcp-server.js +3 -2
  33. package/dist/{create-project-CUVQ67VN.js → create-project-BOBQ32C5.js} +4 -3
  34. package/dist/{create-prompt-NGXKSP4X.js → create-prompt-FLCFGITE.js} +3 -2
  35. package/dist/{create-prompt-tag-IUKYPVHH.js → create-prompt-tag-EMPNIKEA.js} +3 -2
  36. package/dist/{create-scenario-FNBXALH3.js → create-scenario-BSBIHUL6.js} +4 -3
  37. package/dist/{create-suite-DJEPD4ZB.js → create-suite-TWF6BBR4.js} +4 -3
  38. package/dist/{delete-agent-TJI5XBBM.js → delete-agent-7MSYNY5E.js} +4 -3
  39. package/dist/{delete-annotation-KRP53TUU.js → delete-annotation-ZT5IGN24.js} +4 -3
  40. package/dist/{delete-dashboard-N5SZJIR3.js → delete-dashboard-BTIY5S3L.js} +4 -3
  41. package/dist/{delete-dataset-KDUOHL2P.js → delete-dataset-U45HQHPR.js} +4 -3
  42. package/dist/{delete-dataset-records-DM4W3PAW.js → delete-dataset-records-R43IMAWB.js} +4 -3
  43. package/dist/{delete-evaluator-7ZATLJOA.js → delete-evaluator-U6JMQ6C7.js} +4 -3
  44. package/dist/{delete-prompt-tag-I6HNMSVJ.js → delete-prompt-tag-4EV4TDHB.js} +3 -2
  45. package/dist/{delete-workflow-QEO74JQR.js → delete-workflow-5QYALXEL.js} +4 -3
  46. package/dist/discover-evaluator-schema-MRGHVNTT.js +2175 -0
  47. package/dist/{discover-scenario-schema-MEEEVND7.js → discover-scenario-schema-UPBTCWPG.js} +3 -1
  48. package/dist/{discover-schema-3T52ORPB.js → discover-schema-ICGXPHUW.js} +3 -1
  49. package/dist/{get-agent-3KDWCP5N.js → get-agent-7QJVPH72.js} +4 -3
  50. package/dist/{get-analytics-GPVJX7SF.js → get-analytics-PVERWOA5.js} +3 -2
  51. package/dist/{get-dashboard-YPTIE5YY.js → get-dashboard-ZZPC3WMD.js} +4 -3
  52. package/dist/{get-dataset-6DQFYITM.js → get-dataset-25TB2LQH.js} +4 -3
  53. package/dist/{get-evaluator-PCM6XQAU.js → get-evaluator-3FTRQKEC.js} +4 -3
  54. package/dist/{get-project-JCMWXVLU.js → get-project-5OAXYC57.js} +4 -3
  55. package/dist/{get-prompt-5XAGWWBG.js → get-prompt-I753LZKZ.js} +3 -2
  56. package/dist/{get-scenario-7XBCDZWX.js → get-scenario-DSSTR6FI.js} +4 -3
  57. package/dist/{get-simulation-run-AV24FJWI.js → get-simulation-run-RQPMS2MC.js} +4 -3
  58. package/dist/{get-suite-4DBVHFEM.js → get-suite-GTOCY5PL.js} +4 -3
  59. package/dist/{get-trace-MRBDS3HJ.js → get-trace-O5VT3NAC.js} +7 -9
  60. package/dist/{get-workflow-UR4Y6UFX.js → get-workflow-3EZDOEIF.js} +4 -3
  61. package/dist/http-server-2ACJ3CXW.js +24366 -0
  62. package/dist/index.js +23374 -3140
  63. package/dist/{langwatch-api-annotations-ZJDRB4JH.js → langwatch-api-annotations-E65MI3WZ.js} +4 -3
  64. package/dist/{langwatch-api-dashboards-WARLI6NF.js → langwatch-api-dashboards-QCDECRCY.js} +4 -3
  65. package/dist/{langwatch-api-monitors-4XKXHYCG.js → langwatch-api-monitors-UIO2KTDV.js} +3 -2
  66. package/dist/{langwatch-api-secrets-6SHK5G7Q.js → langwatch-api-secrets-4T2EKSJ7.js} +3 -2
  67. package/dist/{langwatch-api-triggers-5SX6R2WU.js → langwatch-api-triggers-MPOEKPUY.js} +3 -2
  68. package/dist/{langwatch-api-workflows-NLJENNXE.js → langwatch-api-workflows-5HRZ7HR4.js} +4 -3
  69. package/dist/{list-agents-NECO7MPI.js → list-agents-TIJTP566.js} +4 -3
  70. package/dist/{list-annotations-3OJEO774.js → list-annotations-CGX5BT7E.js} +4 -3
  71. package/dist/{list-api-keys-AWW7ROLB.js → list-api-keys-JLWJPFRX.js} +4 -3
  72. package/dist/{list-dashboards-DVPVVVKW.js → list-dashboards-RNIWX3TX.js} +4 -3
  73. package/dist/{list-dataset-records-I4BYORF5.js → list-dataset-records-B5MHZR66.js} +4 -3
  74. package/dist/{list-datasets-WUAE5HGX.js → list-datasets-BVCAMQCP.js} +4 -3
  75. package/dist/{list-evaluators-B6OSVAM2.js → list-evaluators-65FBTL2U.js} +4 -3
  76. package/dist/{list-model-providers-NL6IP4UZ.js → list-model-providers-GRK3I3VV.js} +4 -3
  77. package/dist/{list-projects-5FHMJ4PQ.js → list-projects-JLMBFMW3.js} +4 -3
  78. package/dist/{list-prompt-tags-Z2DD6FLQ.js → list-prompt-tags-UHNWDGQI.js} +3 -2
  79. package/dist/{list-prompts-VNXKHK7T.js → list-prompts-7254B3U7.js} +3 -2
  80. package/dist/{list-scenarios-CFZHXL76.js → list-scenarios-46YNICKM.js} +4 -3
  81. package/dist/{list-simulation-runs-AM2BXLBW.js → list-simulation-runs-LGNEFNPN.js} +4 -3
  82. package/dist/{list-suites-ZDOHAAXF.js → list-suites-5VK4HXEK.js} +4 -3
  83. package/dist/{list-workflows-WBRBKLIT.js → list-workflows-MLQDM6CP.js} +4 -3
  84. package/dist/{rename-prompt-tag-A4RJUK7Z.js → rename-prompt-tag-RHQMNEQL.js} +3 -2
  85. package/dist/report-issue-DXJ6TPTC.js +412 -0
  86. package/dist/{revoke-api-key-ZSPSPF5G.js → revoke-api-key-3Y35EMBT.js} +4 -3
  87. package/dist/{run-agent-JFNDY7MR.js → run-agent-RBSIFKRT.js} +4 -3
  88. package/dist/{run-suite-TH7LO5TJ.js → run-suite-K3DNQ3SE.js} +4 -3
  89. package/dist/{run-workflow-CK3JP5U2.js → run-workflow-5LVBZYLS.js} +4 -3
  90. package/dist/{search-traces-3BBVYPC3.js → search-traces-U4HLOCZ2.js} +9 -2
  91. package/dist/{set-model-provider-WOC5FNMV.js → set-model-provider-V3M5CDIY.js} +4 -3
  92. package/dist/{update-agent-YMEV5MTL.js → update-agent-47RZIHS7.js} +4 -3
  93. package/dist/{update-dataset-EYT5POFM.js → update-dataset-G6QJJGS5.js} +4 -3
  94. package/dist/{update-dataset-record-VFF5JTX4.js → update-dataset-record-RMWLSWCS.js} +4 -3
  95. package/dist/{update-evaluator-6IJHFG2E.js → update-evaluator-SFRRI5Q3.js} +4 -3
  96. package/dist/{update-project-OIT4WPFI.js → update-project-PI5DWBVK.js} +4 -3
  97. package/dist/{update-prompt-ZU2DD6KM.js → update-prompt-RQFTEO7Y.js} +3 -2
  98. package/dist/{update-scenario-3VUTPDRU.js → update-scenario-G3IU2UIB.js} +4 -3
  99. package/dist/{update-suite-C6JFDQHL.js → update-suite-TRGGLNR7.js} +4 -3
  100. package/package.json +20 -18
  101. package/pnpm-workspace.yaml +27 -2
  102. package/pyproject.toml +9 -1
  103. package/src/__tests__/all-tools.integration.test.ts +56 -120
  104. package/src/__tests__/documentation-fetch-security.integration.test.ts +176 -0
  105. package/src/__tests__/langwatch-api.unit.test.ts +206 -0
  106. package/src/__tests__/public-http-request-security.integration.test.ts +118 -0
  107. package/src/__tests__/report-issue.integration.test.ts +147 -0
  108. package/src/__tests__/tools.unit.test.ts +24 -0
  109. package/src/create-mcp-server.ts +43 -29
  110. package/src/documentation-fetch.ts +111 -0
  111. package/src/langwatch-api-agents.ts +2 -2
  112. package/src/langwatch-api.ts +138 -8
  113. package/src/public-http-request.ts +242 -0
  114. package/src/tools/get-trace.ts +2 -12
  115. package/src/tools/report-issue.ts +150 -0
  116. package/src/tools/search-traces.ts +4 -0
  117. package/src/utils/format-evaluations.ts +20 -0
  118. package/tsconfig.json +8 -1
  119. package/uv.lock +259 -205
  120. package/dist/chunk-XC62KJIT.js +0 -71
  121. package/dist/discover-evaluator-schema-H23XCLNE.js +0 -1402
  122. package/dist/http-server-XUQLIFE7.js +0 -226
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  LangWatchApiError,
3
3
  makeRequest
4
- } from "./chunk-42ZHHHIJ.js";
4
+ } from "./chunk-5UWY24RP.js";
5
5
  import {
6
6
  requireApiKey
7
7
  } from "./chunk-KOO5733S.js";
@@ -13,7 +13,7 @@ import { z as z2 } from "zod";
13
13
  // package.json
14
14
  var package_default = {
15
15
  name: "@langwatch/mcp-server",
16
- version: "0.10.0",
16
+ version: "1.0.0",
17
17
  description: "An MCP server for Langwatch.",
18
18
  type: "module",
19
19
  main: "./dist/index.js",
@@ -55,46 +55,128 @@ var package_default = {
55
55
  },
56
56
  devDependencies: {
57
57
  "@ai-sdk/anthropic": "^3.0.44",
58
- "@anthropic-ai/claude-code": "^2.1.119",
58
+ "@anthropic-ai/claude-code": "2.1.202",
59
59
  "@eslint/js": "^10.0.1",
60
+ "@langwatch/handled-error": "workspace:*",
61
+ "@langwatch/redaction": "workspace:*",
60
62
  "@langwatch/scenario": "^0.4.6",
61
- "@types/debug": "^4.1.12",
62
- "@types/eslint__js": "^8.42.3",
63
+ "@langwatch/ssrf": "workspace:*",
64
+ "@opentelemetry/context-async-hooks": "^2.1.0",
65
+ "@opentelemetry/sdk-node": "^0.219.0",
66
+ "@types/debug": "^4.1.13",
63
67
  "@types/express": "^5.0.6",
64
68
  "@types/node": "^25.6.0",
65
69
  "@types/yargs": "^17.0.33",
66
- "@typescript/native-preview": "7.0.0-dev.20250911.1",
70
+ "@typescript/native-preview": "7.0.0-dev.20260705.1",
67
71
  ai: "^6.0.161",
72
+ chalk: "^5.6.2",
73
+ "date-fns": "^4.1.0",
68
74
  dotenv: "^17.2.2",
69
- esbuild: "^0.25.0",
75
+ esbuild: "^0.28.1",
70
76
  eslint: "^10.2.1",
77
+ express: "^5.2.1",
78
+ "node-pty": "^1.0.0",
71
79
  tsup: "^8.1.0",
72
80
  tsx: "^4.20.5",
73
81
  typescript: "^5.0.0",
74
- "typescript-eslint": "^8.55.0"
82
+ "typescript-eslint": "^8.55.0",
83
+ vitest: "^4.1.8",
84
+ yargs: "^18.0.0",
85
+ "zod-validation-error": "^5.0.0"
75
86
  },
76
87
  dependencies: {
77
- "@modelcontextprotocol/sdk": "^1.26.0",
78
- "@opentelemetry/context-async-hooks": "^2.1.0",
79
- "@opentelemetry/sdk-node": "^0.217.0",
80
- chalk: "^5.6.2",
81
- "date-fns": "^4.1.0",
82
- express: "^5.2.1",
83
- "node-pty": "^1.0.0",
84
- vitest: "^3.2.4",
85
- yargs: "^17.7.2",
86
- zod: "^4.3.6",
87
- "zod-validation-error": "^5.0.0"
88
+ "@modelcontextprotocol/sdk": "^1.29.0",
89
+ zod: "^4.3.6"
88
90
  },
89
91
  bin: {
90
92
  "langwatch-mcp-server": "./dist/index.js"
93
+ }
94
+ };
95
+
96
+ // src/documentation-fetch.ts
97
+ var TRUSTED_DOCUMENTATION_ORIGIN = "https://langwatch.ai";
98
+ var MAX_DOCUMENTATION_BYTES = 2 * 1024 * 1024;
99
+ var DOCUMENTATION_TIMEOUT_MS = 3e4;
100
+ var DOCUMENTATION_CONTENT_TYPES = /* @__PURE__ */ new Set(["text/markdown", "text/plain"]);
101
+ var DOCUMENTATION_CONFIG = {
102
+ langwatch: {
103
+ defaultPath: "/docs/llms.txt",
104
+ namespace: "/docs"
91
105
  },
92
- pnpm: {
93
- overrides: {
94
- liquidjs: ">=10.26.0"
95
- }
106
+ scenario: {
107
+ defaultPath: "/scenario/llms.txt",
108
+ namespace: "/scenario"
96
109
  }
97
110
  };
111
+ function documentationUrlError(namespace) {
112
+ return new Error(
113
+ `Only a trusted LangWatch documentation URL under ${TRUSTED_DOCUMENTATION_ORIGIN}${namespace}/ may be fetched`
114
+ );
115
+ }
116
+ function resolveDocumentationUrl(kind, input) {
117
+ const { defaultPath, namespace } = DOCUMENTATION_CONFIG[kind];
118
+ const value = input?.trim();
119
+ let url;
120
+ try {
121
+ if (!value) {
122
+ url = new URL(defaultPath, TRUSTED_DOCUMENTATION_ORIGIN);
123
+ } else if (/^[a-zA-Z][a-zA-Z\d+.-]*:/.test(value) || value.startsWith("//")) {
124
+ url = new URL(value, TRUSTED_DOCUMENTATION_ORIGIN);
125
+ } else {
126
+ const relativePath = value.replace(/^\/+/, "");
127
+ const namespacePath = namespace.slice(1);
128
+ const path = relativePath === namespacePath || relativePath.startsWith(`${namespacePath}/`) ? `/${relativePath}` : `${namespace}/${relativePath}`;
129
+ url = new URL(path, TRUSTED_DOCUMENTATION_ORIGIN);
130
+ }
131
+ } catch {
132
+ throw documentationUrlError(namespace);
133
+ }
134
+ if (url.protocol !== "https:" || url.hostname !== "langwatch.ai" || url.port !== "" || url.username !== "" || url.password !== "" || !url.pathname.startsWith(`${namespace}/`)) {
135
+ throw documentationUrlError(namespace);
136
+ }
137
+ const lowerPath = url.pathname.toLowerCase();
138
+ if (!lowerPath.endsWith(".md") && !lowerPath.endsWith(".txt")) {
139
+ url.pathname += ".md";
140
+ }
141
+ return url;
142
+ }
143
+ async function fetchDocumentation(kind, input, fetchImplementation = fetch) {
144
+ const url = resolveDocumentationUrl(kind, input);
145
+ const response = await fetchImplementation(url, {
146
+ redirect: "error",
147
+ signal: AbortSignal.timeout(DOCUMENTATION_TIMEOUT_MS)
148
+ });
149
+ if (!response.ok) {
150
+ throw new Error(`Documentation request failed with status ${response.status}`);
151
+ }
152
+ const contentType = response.headers.get("content-type")?.split(";", 1)[0]?.trim() ?? "";
153
+ if (!DOCUMENTATION_CONTENT_TYPES.has(contentType)) {
154
+ throw new Error("Documentation response has an unexpected content type");
155
+ }
156
+ const contentLength = Number(response.headers.get("content-length"));
157
+ if (Number.isFinite(contentLength) && contentLength > MAX_DOCUMENTATION_BYTES) {
158
+ throw new Error("Documentation response is too large");
159
+ }
160
+ if (!response.body) {
161
+ return "";
162
+ }
163
+ const reader = response.body.getReader();
164
+ const decoder = new TextDecoder();
165
+ let receivedBytes = 0;
166
+ let text = "";
167
+ for (; ; ) {
168
+ const { done, value } = await reader.read();
169
+ if (done) {
170
+ return text + decoder.decode();
171
+ }
172
+ receivedBytes += value.byteLength;
173
+ if (receivedBytes > MAX_DOCUMENTATION_BYTES) {
174
+ await reader.cancel();
175
+ throw new Error("Documentation response is too large");
176
+ }
177
+ text += decoder.decode(value, { stream: true });
178
+ }
179
+ }
98
180
 
99
181
  // src/schemas/create-dataset.ts
100
182
  import { z } from "zod";
@@ -634,19 +716,31 @@ function registerTools(server) {
634
716
  )
635
717
  },
636
718
  withToolLogging("fetch_langwatch_docs", async ({ url }) => {
637
- let urlToFetch = url || "https://langwatch.ai/docs/llms.txt";
638
- if (url && !urlToFetch.endsWith(".md") && !urlToFetch.endsWith(".txt")) {
639
- urlToFetch += ".md";
640
- }
641
- if (!urlToFetch.startsWith("http")) {
642
- if (!urlToFetch.startsWith("/")) {
643
- urlToFetch = "/" + urlToFetch;
644
- }
645
- urlToFetch = "https://langwatch.ai/docs" + urlToFetch;
646
- }
647
- const response = await fetch(urlToFetch);
719
+ const text = await fetchDocumentation("langwatch", url);
720
+ return { content: [{ type: "text", text }] };
721
+ })
722
+ );
723
+ server.tool(
724
+ "report_issue",
725
+ "Report an issue to the LangWatch team: anything that did not work, confused you, or took trial and error while using LangWatch (docs, MCP tools, CLI, SDKs, the platform). Use it whenever you struggled, it is how rough edges get fixed for every agent. Ask the user for permission first, then call with user_approved=true. Works without an API key. Put VERBATIM error messages in the summary; optionally attach raw session content. Secrets, API keys, emails and phone numbers are redacted locally before anything is sent.",
726
+ {
727
+ user_approved: z2.boolean().describe(
728
+ "Must be true, and only after the user explicitly agreed to send this report to LangWatch"
729
+ ),
730
+ title: z2.string().max(300).describe("One-line description of the issue"),
731
+ summary: z2.string().optional().describe(
732
+ "What you were trying to do, what went wrong (verbatim errors), and what you had to figure out the hard way"
733
+ ),
734
+ session_content: z2.string().optional().describe(
735
+ "Optional raw session transcript or log excerpt (JSONL or plain text); redacted locally before sending"
736
+ ),
737
+ contact_email: z2.string().optional().describe("Optional contact email for follow-up"),
738
+ agent: z2.string().optional().describe("Which coding agent this is, e.g. claude-code, codex, cursor")
739
+ },
740
+ withToolLogging("report_issue", async (params) => {
741
+ const { handleReportIssue } = await import("./report-issue-DXJ6TPTC.js");
648
742
  return {
649
- content: [{ type: "text", text: await response.text() }]
743
+ content: [{ type: "text", text: await handleReportIssue(params) }]
650
744
  };
651
745
  })
652
746
  );
@@ -659,20 +753,8 @@ function registerTools(server) {
659
753
  )
660
754
  },
661
755
  withToolLogging("fetch_scenario_docs", async ({ url }) => {
662
- let urlToFetch = url || "https://langwatch.ai/scenario/llms.txt";
663
- if (url && !urlToFetch.endsWith(".md") && !urlToFetch.endsWith(".txt")) {
664
- urlToFetch += ".md";
665
- }
666
- if (!urlToFetch.startsWith("http")) {
667
- if (!urlToFetch.startsWith("/")) {
668
- urlToFetch = "/" + urlToFetch;
669
- }
670
- urlToFetch = "https://langwatch.ai" + urlToFetch;
671
- }
672
- const response = await fetch(urlToFetch);
673
- return {
674
- content: [{ type: "text", text: await response.text() }]
675
- };
756
+ const text = await fetchDocumentation("scenario", url);
757
+ return { content: [{ type: "text", text }] };
676
758
  })
677
759
  );
678
760
  server.tool(
@@ -689,30 +771,30 @@ function registerTools(server) {
689
771
  "all"
690
772
  ]).describe("Which schema category to discover"),
691
773
  evaluatorType: z2.string().optional().describe(
692
- "When category is 'evaluators', provide a specific evaluator type (e.g. 'langevals/llm_judge') to get its full schema details"
774
+ "When category is 'evaluators', provide a specific evaluator type (e.g. 'langevals/llm_boolean') to get its full schema details"
693
775
  )
694
776
  },
695
777
  async ({ category, evaluatorType }) => {
696
778
  if (category === "scenarios") {
697
- const { formatScenarioSchema } = await import("./discover-scenario-schema-MEEEVND7.js");
779
+ const { formatScenarioSchema } = await import("./discover-scenario-schema-UPBTCWPG.js");
698
780
  return {
699
781
  content: [{ type: "text", text: formatScenarioSchema() }]
700
782
  };
701
783
  }
702
784
  if (category === "evaluators") {
703
- const { formatEvaluatorSchema } = await import("./discover-evaluator-schema-H23XCLNE.js");
785
+ const { formatEvaluatorSchema } = await import("./discover-evaluator-schema-MRGHVNTT.js");
704
786
  return {
705
787
  content: [
706
788
  { type: "text", text: formatEvaluatorSchema(evaluatorType) }
707
789
  ]
708
790
  };
709
791
  }
710
- const { formatSchema } = await import("./discover-schema-3T52ORPB.js");
792
+ const { formatSchema } = await import("./discover-schema-ICGXPHUW.js");
711
793
  let text = formatSchema(category);
712
794
  if (category === "all") {
713
- const { formatScenarioSchema } = await import("./discover-scenario-schema-MEEEVND7.js");
795
+ const { formatScenarioSchema } = await import("./discover-scenario-schema-UPBTCWPG.js");
714
796
  text += "\n\n" + formatScenarioSchema();
715
- const { formatEvaluatorSchema } = await import("./discover-evaluator-schema-H23XCLNE.js");
797
+ const { formatEvaluatorSchema } = await import("./discover-evaluator-schema-MRGHVNTT.js");
716
798
  text += "\n\n" + formatEvaluatorSchema();
717
799
  }
718
800
  return { content: [{ type: "text", text }] };
@@ -738,7 +820,7 @@ function registerTools(server) {
738
820
  },
739
821
  withToolLogging("search_traces", async (params) => {
740
822
  requireApiKey();
741
- const { handleSearchTraces } = await import("./search-traces-3BBVYPC3.js");
823
+ const { handleSearchTraces } = await import("./search-traces-U4HLOCZ2.js");
742
824
  return {
743
825
  content: [{ type: "text", text: await handleSearchTraces(params) }]
744
826
  };
@@ -755,7 +837,7 @@ function registerTools(server) {
755
837
  },
756
838
  withToolLogging("get_trace", async (params) => {
757
839
  requireApiKey();
758
- const { handleGetTrace } = await import("./get-trace-MRBDS3HJ.js");
840
+ const { handleGetTrace } = await import("./get-trace-O5VT3NAC.js");
759
841
  return {
760
842
  content: [{ type: "text", text: await handleGetTrace(params) }]
761
843
  };
@@ -781,7 +863,7 @@ function registerTools(server) {
781
863
  },
782
864
  withToolLogging("get_analytics", async (params) => {
783
865
  requireApiKey();
784
- const { handleGetAnalytics } = await import("./get-analytics-GPVJX7SF.js");
866
+ const { handleGetAnalytics } = await import("./get-analytics-PVERWOA5.js");
785
867
  return {
786
868
  content: [{ type: "text", text: await handleGetAnalytics(params) }]
787
869
  };
@@ -815,7 +897,7 @@ NOTE: Prompts can be managed two ways. Determine which approach the user needs:
815
897
  },
816
898
  withToolLogging("platform_create_prompt", async (params) => {
817
899
  requireApiKey();
818
- const { handleCreatePrompt } = await import("./create-prompt-NGXKSP4X.js");
900
+ const { handleCreatePrompt } = await import("./create-prompt-FLCFGITE.js");
819
901
  return {
820
902
  content: [{ type: "text", text: await handleCreatePrompt(params) }]
821
903
  };
@@ -827,7 +909,7 @@ NOTE: Prompts can be managed two ways. Determine which approach the user needs:
827
909
  {},
828
910
  withToolLogging("platform_list_prompts", async () => {
829
911
  requireApiKey();
830
- const { handleListPrompts } = await import("./list-prompts-VNXKHK7T.js");
912
+ const { handleListPrompts } = await import("./list-prompts-7254B3U7.js");
831
913
  return {
832
914
  content: [{ type: "text", text: await handleListPrompts() }]
833
915
  };
@@ -851,7 +933,7 @@ NOTE: Prompts can be managed two ways. Determine which approach the user needs:
851
933
  };
852
934
  }
853
935
  requireApiKey();
854
- const { handleGetPrompt } = await import("./get-prompt-5XAGWWBG.js");
936
+ const { handleGetPrompt } = await import("./get-prompt-I753LZKZ.js");
855
937
  return {
856
938
  content: [{ type: "text", text: await handleGetPrompt(params) }]
857
939
  };
@@ -876,7 +958,7 @@ NOTE: Prompts can be managed two ways. Determine which approach the user needs:
876
958
  },
877
959
  withToolLogging("platform_update_prompt", async (params) => {
878
960
  requireApiKey();
879
- const { handleUpdatePrompt } = await import("./update-prompt-ZU2DD6KM.js");
961
+ const { handleUpdatePrompt } = await import("./update-prompt-RQFTEO7Y.js");
880
962
  return {
881
963
  content: [{ type: "text", text: await handleUpdatePrompt(params) }]
882
964
  };
@@ -892,7 +974,7 @@ NOTE: Prompts can be managed two ways. Determine which approach the user needs:
892
974
  },
893
975
  withToolLogging("platform_assign_prompt_tag", async (params) => {
894
976
  requireApiKey();
895
- const { handleAssignPromptTag } = await import("./assign-prompt-tag-FKCCZPML.js");
977
+ const { handleAssignPromptTag } = await import("./assign-prompt-tag-E3C5W6PI.js");
896
978
  return {
897
979
  content: [{ type: "text", text: await handleAssignPromptTag(params) }]
898
980
  };
@@ -904,7 +986,7 @@ NOTE: Prompts can be managed two ways. Determine which approach the user needs:
904
986
  {},
905
987
  withToolLogging("platform_list_prompt_tags", async () => {
906
988
  requireApiKey();
907
- const { handleListPromptTags } = await import("./list-prompt-tags-Z2DD6FLQ.js");
989
+ const { handleListPromptTags } = await import("./list-prompt-tags-UHNWDGQI.js");
908
990
  return {
909
991
  content: [{ type: "text", text: await handleListPromptTags() }]
910
992
  };
@@ -918,7 +1000,7 @@ NOTE: Prompts can be managed two ways. Determine which approach the user needs:
918
1000
  },
919
1001
  withToolLogging("platform_create_prompt_tag", async (params) => {
920
1002
  requireApiKey();
921
- const { handleCreatePromptTag } = await import("./create-prompt-tag-IUKYPVHH.js");
1003
+ const { handleCreatePromptTag } = await import("./create-prompt-tag-EMPNIKEA.js");
922
1004
  return {
923
1005
  content: [{ type: "text", text: await handleCreatePromptTag(params) }]
924
1006
  };
@@ -933,7 +1015,7 @@ NOTE: Prompts can be managed two ways. Determine which approach the user needs:
933
1015
  },
934
1016
  withToolLogging("platform_rename_prompt_tag", async (params) => {
935
1017
  requireApiKey();
936
- const { handleRenamePromptTag } = await import("./rename-prompt-tag-A4RJUK7Z.js");
1018
+ const { handleRenamePromptTag } = await import("./rename-prompt-tag-RHQMNEQL.js");
937
1019
  return {
938
1020
  content: [{ type: "text", text: await handleRenamePromptTag(params) }]
939
1021
  };
@@ -947,7 +1029,7 @@ NOTE: Prompts can be managed two ways. Determine which approach the user needs:
947
1029
  },
948
1030
  withToolLogging("platform_delete_prompt_tag", async (params) => {
949
1031
  requireApiKey();
950
- const { handleDeletePromptTag } = await import("./delete-prompt-tag-I6HNMSVJ.js");
1032
+ const { handleDeletePromptTag } = await import("./delete-prompt-tag-4EV4TDHB.js");
951
1033
  return {
952
1034
  content: [{ type: "text", text: await handleDeletePromptTag(params) }]
953
1035
  };
@@ -975,7 +1057,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
975
1057
  },
976
1058
  withToolLogging("platform_create_scenario", async (params) => {
977
1059
  requireApiKey();
978
- const { handleCreateScenario } = await import("./create-scenario-FNBXALH3.js");
1060
+ const { handleCreateScenario } = await import("./create-scenario-BSBIHUL6.js");
979
1061
  return {
980
1062
  content: [
981
1063
  { type: "text", text: await handleCreateScenario(params) }
@@ -993,7 +1075,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
993
1075
  },
994
1076
  withToolLogging("platform_list_scenarios", async (params) => {
995
1077
  requireApiKey();
996
- const { handleListScenarios } = await import("./list-scenarios-CFZHXL76.js");
1078
+ const { handleListScenarios } = await import("./list-scenarios-46YNICKM.js");
997
1079
  return {
998
1080
  content: [
999
1081
  { type: "text", text: await handleListScenarios(params) }
@@ -1012,7 +1094,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1012
1094
  },
1013
1095
  withToolLogging("platform_get_scenario", async (params) => {
1014
1096
  requireApiKey();
1015
- const { handleGetScenario } = await import("./get-scenario-7XBCDZWX.js");
1097
+ const { handleGetScenario } = await import("./get-scenario-DSSTR6FI.js");
1016
1098
  return {
1017
1099
  content: [{ type: "text", text: await handleGetScenario(params) }]
1018
1100
  };
@@ -1030,7 +1112,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1030
1112
  },
1031
1113
  withToolLogging("platform_update_scenario", async (params) => {
1032
1114
  requireApiKey();
1033
- const { handleUpdateScenario } = await import("./update-scenario-3VUTPDRU.js");
1115
+ const { handleUpdateScenario } = await import("./update-scenario-G3IU2UIB.js");
1034
1116
  return {
1035
1117
  content: [
1036
1118
  { type: "text", text: await handleUpdateScenario(params) }
@@ -1046,7 +1128,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1046
1128
  },
1047
1129
  withToolLogging("platform_archive_scenario", async (params) => {
1048
1130
  requireApiKey();
1049
- const { handleArchiveScenario } = await import("./archive-scenario-P5RRITRM.js");
1131
+ const { handleArchiveScenario } = await import("./archive-scenario-KATSXRIN.js");
1050
1132
  return {
1051
1133
  content: [
1052
1134
  { type: "text", text: await handleArchiveScenario(params) }
@@ -1062,7 +1144,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1062
1144
  },
1063
1145
  withToolLogging("platform_list_suites", async (params) => {
1064
1146
  requireApiKey();
1065
- const { handleListSuites } = await import("./list-suites-ZDOHAAXF.js");
1147
+ const { handleListSuites } = await import("./list-suites-5VK4HXEK.js");
1066
1148
  return {
1067
1149
  content: [{ type: "text", text: await handleListSuites(params) }]
1068
1150
  };
@@ -1077,7 +1159,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1077
1159
  },
1078
1160
  withToolLogging("platform_get_suite", async (params) => {
1079
1161
  requireApiKey();
1080
- const { handleGetSuite } = await import("./get-suite-4DBVHFEM.js");
1162
+ const { handleGetSuite } = await import("./get-suite-GTOCY5PL.js");
1081
1163
  return {
1082
1164
  content: [{ type: "text", text: await handleGetSuite(params) }]
1083
1165
  };
@@ -1096,7 +1178,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1096
1178
  },
1097
1179
  withToolLogging("platform_create_suite", async (params) => {
1098
1180
  requireApiKey();
1099
- const { handleCreateSuite } = await import("./create-suite-DJEPD4ZB.js");
1181
+ const { handleCreateSuite } = await import("./create-suite-TWF6BBR4.js");
1100
1182
  return {
1101
1183
  content: [{ type: "text", text: await handleCreateSuite(params) }]
1102
1184
  };
@@ -1116,7 +1198,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1116
1198
  },
1117
1199
  withToolLogging("platform_update_suite", async (params) => {
1118
1200
  requireApiKey();
1119
- const { handleUpdateSuite } = await import("./update-suite-C6JFDQHL.js");
1201
+ const { handleUpdateSuite } = await import("./update-suite-TRGGLNR7.js");
1120
1202
  return {
1121
1203
  content: [{ type: "text", text: await handleUpdateSuite(params) }]
1122
1204
  };
@@ -1130,7 +1212,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1130
1212
  },
1131
1213
  withToolLogging("platform_run_suite", async (params) => {
1132
1214
  requireApiKey();
1133
- const { handleRunSuite } = await import("./run-suite-TH7LO5TJ.js");
1215
+ const { handleRunSuite } = await import("./run-suite-K3DNQ3SE.js");
1134
1216
  return {
1135
1217
  content: [{ type: "text", text: await handleRunSuite(params) }]
1136
1218
  };
@@ -1144,7 +1226,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1144
1226
  },
1145
1227
  withToolLogging("platform_archive_suite", async (params) => {
1146
1228
  requireApiKey();
1147
- const { handleArchiveSuite } = await import("./archive-suite-NUUFD2EM.js");
1229
+ const { handleArchiveSuite } = await import("./archive-suite-C3KX6IIZ.js");
1148
1230
  return {
1149
1231
  content: [{ type: "text", text: await handleArchiveSuite(params) }]
1150
1232
  };
@@ -1161,7 +1243,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1161
1243
  },
1162
1244
  withToolLogging("platform_list_simulation_runs", async (params) => {
1163
1245
  requireApiKey();
1164
- const { handleListSimulationRuns } = await import("./list-simulation-runs-AM2BXLBW.js");
1246
+ const { handleListSimulationRuns } = await import("./list-simulation-runs-LGNEFNPN.js");
1165
1247
  return {
1166
1248
  content: [{ type: "text", text: await handleListSimulationRuns(params) }]
1167
1249
  };
@@ -1176,7 +1258,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1176
1258
  },
1177
1259
  withToolLogging("platform_get_simulation_run", async (params) => {
1178
1260
  requireApiKey();
1179
- const { handleGetSimulationRun } = await import("./get-simulation-run-AV24FJWI.js");
1261
+ const { handleGetSimulationRun } = await import("./get-simulation-run-RQPMS2MC.js");
1180
1262
  return {
1181
1263
  content: [{ type: "text", text: await handleGetSimulationRun(params) }]
1182
1264
  };
@@ -1193,7 +1275,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1193
1275
  },
1194
1276
  withToolLogging("platform_create_evaluator", async (params) => {
1195
1277
  requireApiKey();
1196
- const { handleCreateEvaluator } = await import("./create-evaluator-YFFQIR7E.js");
1278
+ const { handleCreateEvaluator } = await import("./create-evaluator-YWH6NC4M.js");
1197
1279
  return {
1198
1280
  content: [
1199
1281
  { type: "text", text: await handleCreateEvaluator(params) }
@@ -1207,7 +1289,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1207
1289
  {},
1208
1290
  withToolLogging("platform_list_evaluators", async () => {
1209
1291
  requireApiKey();
1210
- const { handleListEvaluators } = await import("./list-evaluators-B6OSVAM2.js");
1292
+ const { handleListEvaluators } = await import("./list-evaluators-65FBTL2U.js");
1211
1293
  return {
1212
1294
  content: [{ type: "text", text: await handleListEvaluators() }]
1213
1295
  };
@@ -1221,7 +1303,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1221
1303
  },
1222
1304
  withToolLogging("platform_get_evaluator", async (params) => {
1223
1305
  requireApiKey();
1224
- const { handleGetEvaluator } = await import("./get-evaluator-PCM6XQAU.js");
1306
+ const { handleGetEvaluator } = await import("./get-evaluator-3FTRQKEC.js");
1225
1307
  return {
1226
1308
  content: [{ type: "text", text: await handleGetEvaluator(params) }]
1227
1309
  };
@@ -1239,7 +1321,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1239
1321
  },
1240
1322
  withToolLogging("platform_update_evaluator", async (params) => {
1241
1323
  requireApiKey();
1242
- const { handleUpdateEvaluator } = await import("./update-evaluator-6IJHFG2E.js");
1324
+ const { handleUpdateEvaluator } = await import("./update-evaluator-SFRRI5Q3.js");
1243
1325
  return {
1244
1326
  content: [
1245
1327
  { type: "text", text: await handleUpdateEvaluator(params) }
@@ -1255,7 +1337,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1255
1337
  },
1256
1338
  withToolLogging("platform_delete_evaluator", async (params) => {
1257
1339
  requireApiKey();
1258
- const { handleDeleteEvaluator } = await import("./delete-evaluator-7ZATLJOA.js");
1340
+ const { handleDeleteEvaluator } = await import("./delete-evaluator-U6JMQ6C7.js");
1259
1341
  return {
1260
1342
  content: [{ type: "text", text: await handleDeleteEvaluator(params) }]
1261
1343
  };
@@ -1276,7 +1358,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1276
1358
  },
1277
1359
  withToolLogging("platform_set_model_provider", async (params) => {
1278
1360
  requireApiKey();
1279
- const { handleSetModelProvider } = await import("./set-model-provider-WOC5FNMV.js");
1361
+ const { handleSetModelProvider } = await import("./set-model-provider-V3M5CDIY.js");
1280
1362
  return {
1281
1363
  content: [
1282
1364
  { type: "text", text: await handleSetModelProvider(params) }
@@ -1290,7 +1372,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1290
1372
  {},
1291
1373
  withToolLogging("platform_list_model_providers", async () => {
1292
1374
  requireApiKey();
1293
- const { handleListModelProviders } = await import("./list-model-providers-NL6IP4UZ.js");
1375
+ const { handleListModelProviders } = await import("./list-model-providers-GRK3I3VV.js");
1294
1376
  return {
1295
1377
  content: [{ type: "text", text: await handleListModelProviders() }]
1296
1378
  };
@@ -1302,7 +1384,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1302
1384
  {},
1303
1385
  withToolLogging("platform_list_agents", async () => {
1304
1386
  requireApiKey();
1305
- const { handleListAgents } = await import("./list-agents-NECO7MPI.js");
1387
+ const { handleListAgents } = await import("./list-agents-TIJTP566.js");
1306
1388
  return {
1307
1389
  content: [{ type: "text", text: await handleListAgents() }]
1308
1390
  };
@@ -1316,7 +1398,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1316
1398
  },
1317
1399
  withToolLogging("platform_get_agent", async (params) => {
1318
1400
  requireApiKey();
1319
- const { handleGetAgent } = await import("./get-agent-3KDWCP5N.js");
1401
+ const { handleGetAgent } = await import("./get-agent-7QJVPH72.js");
1320
1402
  return {
1321
1403
  content: [{ type: "text", text: await handleGetAgent(params) }]
1322
1404
  };
@@ -1332,7 +1414,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1332
1414
  },
1333
1415
  withToolLogging("platform_create_agent", async (params) => {
1334
1416
  requireApiKey();
1335
- const { handleCreateAgent } = await import("./create-agent-K5Q7BFGZ.js");
1417
+ const { handleCreateAgent } = await import("./create-agent-7W57J7MT.js");
1336
1418
  const parsedConfig = params.config ? JSON.parse(params.config) : void 0;
1337
1419
  return {
1338
1420
  content: [{ type: "text", text: await handleCreateAgent({ ...params, config: parsedConfig }) }]
@@ -1350,7 +1432,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1350
1432
  },
1351
1433
  withToolLogging("platform_update_agent", async (params) => {
1352
1434
  requireApiKey();
1353
- const { handleUpdateAgent } = await import("./update-agent-YMEV5MTL.js");
1435
+ const { handleUpdateAgent } = await import("./update-agent-47RZIHS7.js");
1354
1436
  const parsedConfig = params.config ? JSON.parse(params.config) : void 0;
1355
1437
  return {
1356
1438
  content: [{ type: "text", text: await handleUpdateAgent({ ...params, config: parsedConfig }) }]
@@ -1365,7 +1447,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1365
1447
  },
1366
1448
  withToolLogging("platform_delete_agent", async (params) => {
1367
1449
  requireApiKey();
1368
- const { handleDeleteAgent } = await import("./delete-agent-TJI5XBBM.js");
1450
+ const { handleDeleteAgent } = await import("./delete-agent-7MSYNY5E.js");
1369
1451
  return {
1370
1452
  content: [{ type: "text", text: await handleDeleteAgent(params) }]
1371
1453
  };
@@ -1380,7 +1462,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1380
1462
  },
1381
1463
  withToolLogging("platform_run_agent", async (params) => {
1382
1464
  requireApiKey();
1383
- const { handleRunAgent } = await import("./run-agent-JFNDY7MR.js");
1465
+ const { handleRunAgent } = await import("./run-agent-RBSIFKRT.js");
1384
1466
  return {
1385
1467
  content: [{ type: "text", text: await handleRunAgent(params) }]
1386
1468
  };
@@ -1392,7 +1474,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1392
1474
  {},
1393
1475
  withToolLogging("platform_list_dashboards", async () => {
1394
1476
  requireApiKey();
1395
- const { handleListDashboards } = await import("./list-dashboards-DVPVVVKW.js");
1477
+ const { handleListDashboards } = await import("./list-dashboards-RNIWX3TX.js");
1396
1478
  return {
1397
1479
  content: [{ type: "text", text: await handleListDashboards() }]
1398
1480
  };
@@ -1406,7 +1488,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1406
1488
  },
1407
1489
  withToolLogging("platform_get_dashboard", async (params) => {
1408
1490
  requireApiKey();
1409
- const { handleGetDashboard } = await import("./get-dashboard-YPTIE5YY.js");
1491
+ const { handleGetDashboard } = await import("./get-dashboard-ZZPC3WMD.js");
1410
1492
  return {
1411
1493
  content: [{ type: "text", text: await handleGetDashboard(params) }]
1412
1494
  };
@@ -1420,7 +1502,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1420
1502
  },
1421
1503
  withToolLogging("platform_create_dashboard", async (params) => {
1422
1504
  requireApiKey();
1423
- const { handleCreateDashboard } = await import("./create-dashboard-G4QA5AXP.js");
1505
+ const { handleCreateDashboard } = await import("./create-dashboard-QGL7IODC.js");
1424
1506
  return {
1425
1507
  content: [{ type: "text", text: await handleCreateDashboard(params) }]
1426
1508
  };
@@ -1434,7 +1516,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1434
1516
  },
1435
1517
  withToolLogging("platform_delete_dashboard", async (params) => {
1436
1518
  requireApiKey();
1437
- const { handleDeleteDashboard } = await import("./delete-dashboard-N5SZJIR3.js");
1519
+ const { handleDeleteDashboard } = await import("./delete-dashboard-BTIY5S3L.js");
1438
1520
  return {
1439
1521
  content: [{ type: "text", text: await handleDeleteDashboard(params) }]
1440
1522
  };
@@ -1449,7 +1531,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1449
1531
  },
1450
1532
  withToolLogging("platform_rename_dashboard", async (params) => {
1451
1533
  requireApiKey();
1452
- const { renameDashboard } = await import("./langwatch-api-dashboards-WARLI6NF.js");
1534
+ const { renameDashboard } = await import("./langwatch-api-dashboards-QCDECRCY.js");
1453
1535
  const result = await renameDashboard(params.id, { name: params.name });
1454
1536
  return {
1455
1537
  content: [{ type: "text", text: `Dashboard "${result.name}" renamed successfully (ID: ${result.id}).` }]
@@ -1462,7 +1544,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1462
1544
  {},
1463
1545
  withToolLogging("platform_list_workflows", async () => {
1464
1546
  requireApiKey();
1465
- const { handleListWorkflows } = await import("./list-workflows-WBRBKLIT.js");
1547
+ const { handleListWorkflows } = await import("./list-workflows-MLQDM6CP.js");
1466
1548
  return {
1467
1549
  content: [{ type: "text", text: await handleListWorkflows() }]
1468
1550
  };
@@ -1476,7 +1558,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1476
1558
  },
1477
1559
  withToolLogging("platform_get_workflow", async (params) => {
1478
1560
  requireApiKey();
1479
- const { handleGetWorkflow } = await import("./get-workflow-UR4Y6UFX.js");
1561
+ const { handleGetWorkflow } = await import("./get-workflow-3EZDOEIF.js");
1480
1562
  return {
1481
1563
  content: [{ type: "text", text: await handleGetWorkflow(params) }]
1482
1564
  };
@@ -1490,7 +1572,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1490
1572
  },
1491
1573
  withToolLogging("platform_delete_workflow", async (params) => {
1492
1574
  requireApiKey();
1493
- const { handleDeleteWorkflow } = await import("./delete-workflow-QEO74JQR.js");
1575
+ const { handleDeleteWorkflow } = await import("./delete-workflow-5QYALXEL.js");
1494
1576
  return {
1495
1577
  content: [{ type: "text", text: await handleDeleteWorkflow(params) }]
1496
1578
  };
@@ -1505,7 +1587,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1505
1587
  },
1506
1588
  withToolLogging("platform_run_workflow", async (params) => {
1507
1589
  requireApiKey();
1508
- const { handleRunWorkflow } = await import("./run-workflow-CK3JP5U2.js");
1590
+ const { handleRunWorkflow } = await import("./run-workflow-5LVBZYLS.js");
1509
1591
  return {
1510
1592
  content: [{ type: "text", text: await handleRunWorkflow(params) }]
1511
1593
  };
@@ -1519,7 +1601,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1519
1601
  },
1520
1602
  withToolLogging("platform_list_annotations", async (params) => {
1521
1603
  requireApiKey();
1522
- const { handleListAnnotations } = await import("./list-annotations-3OJEO774.js");
1604
+ const { handleListAnnotations } = await import("./list-annotations-CGX5BT7E.js");
1523
1605
  return {
1524
1606
  content: [{ type: "text", text: await handleListAnnotations(params) }]
1525
1607
  };
@@ -1536,7 +1618,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1536
1618
  },
1537
1619
  withToolLogging("platform_create_annotation", async (params) => {
1538
1620
  requireApiKey();
1539
- const { handleCreateAnnotation } = await import("./create-annotation-KN3GE3DK.js");
1621
+ const { handleCreateAnnotation } = await import("./create-annotation-W2XELBCQ.js");
1540
1622
  return {
1541
1623
  content: [{ type: "text", text: await handleCreateAnnotation(params) }]
1542
1624
  };
@@ -1550,7 +1632,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1550
1632
  },
1551
1633
  withToolLogging("platform_delete_annotation", async (params) => {
1552
1634
  requireApiKey();
1553
- const { handleDeleteAnnotation } = await import("./delete-annotation-KRP53TUU.js");
1635
+ const { handleDeleteAnnotation } = await import("./delete-annotation-ZT5IGN24.js");
1554
1636
  return {
1555
1637
  content: [{ type: "text", text: await handleDeleteAnnotation(params) }]
1556
1638
  };
@@ -1564,7 +1646,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1564
1646
  },
1565
1647
  withToolLogging("platform_get_annotation", async (params) => {
1566
1648
  requireApiKey();
1567
- const { getAnnotation } = await import("./langwatch-api-annotations-ZJDRB4JH.js");
1649
+ const { getAnnotation } = await import("./langwatch-api-annotations-E65MI3WZ.js");
1568
1650
  const annotation = await getAnnotation(params.id);
1569
1651
  const lines = [
1570
1652
  `**ID**: ${annotation.id}`,
@@ -1586,7 +1668,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1586
1668
  },
1587
1669
  withToolLogging("platform_list_triggers", async (params) => {
1588
1670
  requireApiKey();
1589
- const { listTriggers } = await import("./langwatch-api-triggers-5SX6R2WU.js");
1671
+ const { listTriggers } = await import("./langwatch-api-triggers-MPOEKPUY.js");
1590
1672
  const triggers = await listTriggers();
1591
1673
  if (params.format === "json") {
1592
1674
  return { content: [{ type: "text", text: JSON.stringify(triggers, null, 2) }] };
@@ -1619,7 +1701,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1619
1701
  },
1620
1702
  withToolLogging("platform_create_trigger", async (params) => {
1621
1703
  requireApiKey();
1622
- const { createTrigger } = await import("./langwatch-api-triggers-5SX6R2WU.js");
1704
+ const { createTrigger } = await import("./langwatch-api-triggers-MPOEKPUY.js");
1623
1705
  let filters = {};
1624
1706
  if (params.filters) {
1625
1707
  try {
@@ -1650,7 +1732,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1650
1732
  },
1651
1733
  withToolLogging("platform_update_trigger", async (params) => {
1652
1734
  requireApiKey();
1653
- const { updateTrigger } = await import("./langwatch-api-triggers-5SX6R2WU.js");
1735
+ const { updateTrigger } = await import("./langwatch-api-triggers-MPOEKPUY.js");
1654
1736
  const trigger = await updateTrigger(params);
1655
1737
  return { content: [{ type: "text", text: `Trigger "${trigger.name}" updated (active: ${trigger.active}).` }] };
1656
1738
  })
@@ -1663,7 +1745,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1663
1745
  },
1664
1746
  withToolLogging("platform_delete_trigger", async (params) => {
1665
1747
  requireApiKey();
1666
- const { deleteTrigger } = await import("./langwatch-api-triggers-5SX6R2WU.js");
1748
+ const { deleteTrigger } = await import("./langwatch-api-triggers-MPOEKPUY.js");
1667
1749
  const result = await deleteTrigger(params.id);
1668
1750
  return { content: [{ type: "text", text: `Trigger ${result.id} deleted.` }] };
1669
1751
  })
@@ -1674,7 +1756,7 @@ NOTE: Scenarios can be created two ways. Determine which approach the user needs
1674
1756
  {},
1675
1757
  withToolLogging("platform_list_monitors", async () => {
1676
1758
  requireApiKey();
1677
- const { listMonitors } = await import("./langwatch-api-monitors-4XKXHYCG.js");
1759
+ const { listMonitors } = await import("./langwatch-api-monitors-UIO2KTDV.js");
1678
1760
  const monitors = await listMonitors();
1679
1761
  if (monitors.length === 0) {
1680
1762
  return { content: [{ type: "text", text: "No monitors found." }] };
@@ -1701,7 +1783,7 @@ ${lines.join("\n")}`
1701
1783
  },
1702
1784
  withToolLogging("platform_get_monitor", async (params) => {
1703
1785
  requireApiKey();
1704
- const { getMonitor } = await import("./langwatch-api-monitors-4XKXHYCG.js");
1786
+ const { getMonitor } = await import("./langwatch-api-monitors-UIO2KTDV.js");
1705
1787
  const m = await getMonitor(params.id);
1706
1788
  const lines = [
1707
1789
  `**${m.name}** (${m.id})`,
@@ -1728,7 +1810,7 @@ ${lines.join("\n")}`
1728
1810
  },
1729
1811
  withToolLogging("platform_create_monitor", async (params) => {
1730
1812
  requireApiKey();
1731
- const { createMonitor } = await import("./langwatch-api-monitors-4XKXHYCG.js");
1813
+ const { createMonitor } = await import("./langwatch-api-monitors-UIO2KTDV.js");
1732
1814
  const monitor = await createMonitor(params);
1733
1815
  return {
1734
1816
  content: [
@@ -1752,7 +1834,7 @@ ${lines.join("\n")}`
1752
1834
  },
1753
1835
  withToolLogging("platform_update_monitor", async (params) => {
1754
1836
  requireApiKey();
1755
- const { updateMonitor } = await import("./langwatch-api-monitors-4XKXHYCG.js");
1837
+ const { updateMonitor } = await import("./langwatch-api-monitors-UIO2KTDV.js");
1756
1838
  const monitor = await updateMonitor(params);
1757
1839
  return {
1758
1840
  content: [
@@ -1772,7 +1854,7 @@ ${lines.join("\n")}`
1772
1854
  },
1773
1855
  withToolLogging("platform_delete_monitor", async (params) => {
1774
1856
  requireApiKey();
1775
- const { deleteMonitor } = await import("./langwatch-api-monitors-4XKXHYCG.js");
1857
+ const { deleteMonitor } = await import("./langwatch-api-monitors-UIO2KTDV.js");
1776
1858
  const result = await deleteMonitor(params.id);
1777
1859
  return {
1778
1860
  content: [
@@ -1787,7 +1869,7 @@ ${lines.join("\n")}`
1787
1869
  {},
1788
1870
  withToolLogging("platform_list_secrets", async () => {
1789
1871
  requireApiKey();
1790
- const { listSecrets } = await import("./langwatch-api-secrets-6SHK5G7Q.js");
1872
+ const { listSecrets } = await import("./langwatch-api-secrets-4T2EKSJ7.js");
1791
1873
  const secrets = await listSecrets();
1792
1874
  if (secrets.length === 0) {
1793
1875
  return { content: [{ type: "text", text: "No secrets found." }] };
@@ -1815,7 +1897,7 @@ ${lines.join("\n")}`
1815
1897
  },
1816
1898
  withToolLogging("platform_create_secret", async (params) => {
1817
1899
  requireApiKey();
1818
- const { createSecret } = await import("./langwatch-api-secrets-6SHK5G7Q.js");
1900
+ const { createSecret } = await import("./langwatch-api-secrets-4T2EKSJ7.js");
1819
1901
  const secret = await createSecret({ name: params.name, value: params.value });
1820
1902
  return {
1821
1903
  content: [
@@ -1836,7 +1918,7 @@ ${lines.join("\n")}`
1836
1918
  },
1837
1919
  withToolLogging("platform_update_secret", async (params) => {
1838
1920
  requireApiKey();
1839
- const { updateSecret } = await import("./langwatch-api-secrets-6SHK5G7Q.js");
1921
+ const { updateSecret } = await import("./langwatch-api-secrets-4T2EKSJ7.js");
1840
1922
  const secret = await updateSecret({ id: params.id, value: params.value });
1841
1923
  return {
1842
1924
  content: [
@@ -1856,7 +1938,7 @@ ${lines.join("\n")}`
1856
1938
  },
1857
1939
  withToolLogging("platform_delete_secret", async (params) => {
1858
1940
  requireApiKey();
1859
- const { deleteSecret } = await import("./langwatch-api-secrets-6SHK5G7Q.js");
1941
+ const { deleteSecret } = await import("./langwatch-api-secrets-4T2EKSJ7.js");
1860
1942
  const result = await deleteSecret(params.id);
1861
1943
  return { content: [{ type: "text", text: `Secret ${result.id} deleted.` }] };
1862
1944
  })
@@ -1959,7 +2041,7 @@ ${lines.join("\n")}`
1959
2041
  async (params) => {
1960
2042
  const { requireApiKey: requireApiKey2 } = await import("./config.js");
1961
2043
  requireApiKey2();
1962
- const { handleListDatasets } = await import("./list-datasets-WUAE5HGX.js");
2044
+ const { handleListDatasets } = await import("./list-datasets-BVCAMQCP.js");
1963
2045
  return {
1964
2046
  content: [{ type: "text", text: await handleListDatasets(params) }]
1965
2047
  };
@@ -1977,7 +2059,7 @@ ${lines.join("\n")}`
1977
2059
  async (params) => {
1978
2060
  const { requireApiKey: requireApiKey2 } = await import("./config.js");
1979
2061
  requireApiKey2();
1980
- const { handleGetDataset } = await import("./get-dataset-6DQFYITM.js");
2062
+ const { handleGetDataset } = await import("./get-dataset-25TB2LQH.js");
1981
2063
  return {
1982
2064
  content: [{ type: "text", text: await handleGetDataset(params) }]
1983
2065
  };
@@ -1990,7 +2072,7 @@ ${lines.join("\n")}`
1990
2072
  async (params) => {
1991
2073
  const { requireApiKey: requireApiKey2 } = await import("./config.js");
1992
2074
  requireApiKey2();
1993
- const { handleCreateDataset } = await import("./create-dataset-WQSC37N7.js");
2075
+ const { handleCreateDataset } = await import("./create-dataset-3PH7A4HG.js");
1994
2076
  return {
1995
2077
  content: [{ type: "text", text: await handleCreateDataset(params) }]
1996
2078
  };
@@ -2007,7 +2089,7 @@ ${lines.join("\n")}`
2007
2089
  async (params) => {
2008
2090
  const { requireApiKey: requireApiKey2 } = await import("./config.js");
2009
2091
  requireApiKey2();
2010
- const { handleUpdateDataset } = await import("./update-dataset-EYT5POFM.js");
2092
+ const { handleUpdateDataset } = await import("./update-dataset-G6QJJGS5.js");
2011
2093
  return {
2012
2094
  content: [{ type: "text", text: await handleUpdateDataset(params) }]
2013
2095
  };
@@ -2022,7 +2104,7 @@ ${lines.join("\n")}`
2022
2104
  async (params) => {
2023
2105
  const { requireApiKey: requireApiKey2 } = await import("./config.js");
2024
2106
  requireApiKey2();
2025
- const { handleDeleteDataset } = await import("./delete-dataset-KDUOHL2P.js");
2107
+ const { handleDeleteDataset } = await import("./delete-dataset-U45HQHPR.js");
2026
2108
  return {
2027
2109
  content: [{ type: "text", text: await handleDeleteDataset(params) }]
2028
2110
  };
@@ -2040,7 +2122,7 @@ ${lines.join("\n")}`
2040
2122
  async (params) => {
2041
2123
  const { requireApiKey: requireApiKey2 } = await import("./config.js");
2042
2124
  requireApiKey2();
2043
- const { handleListDatasetRecords } = await import("./list-dataset-records-I4BYORF5.js");
2125
+ const { handleListDatasetRecords } = await import("./list-dataset-records-B5MHZR66.js");
2044
2126
  return {
2045
2127
  content: [
2046
2128
  { type: "text", text: await handleListDatasetRecords(params) }
@@ -2058,7 +2140,7 @@ ${lines.join("\n")}`
2058
2140
  async (params) => {
2059
2141
  const { requireApiKey: requireApiKey2 } = await import("./config.js");
2060
2142
  requireApiKey2();
2061
- const { handleCreateDatasetRecords } = await import("./create-dataset-records-B4RL3FLC.js");
2143
+ const { handleCreateDatasetRecords } = await import("./create-dataset-records-4DZS3VRL.js");
2062
2144
  return {
2063
2145
  content: [
2064
2146
  { type: "text", text: await handleCreateDatasetRecords(params) }
@@ -2077,7 +2159,7 @@ ${lines.join("\n")}`
2077
2159
  async (params) => {
2078
2160
  const { requireApiKey: requireApiKey2 } = await import("./config.js");
2079
2161
  requireApiKey2();
2080
- const { handleUpdateDatasetRecord } = await import("./update-dataset-record-VFF5JTX4.js");
2162
+ const { handleUpdateDatasetRecord } = await import("./update-dataset-record-RMWLSWCS.js");
2081
2163
  return {
2082
2164
  content: [
2083
2165
  { type: "text", text: await handleUpdateDatasetRecord(params) }
@@ -2095,7 +2177,7 @@ ${lines.join("\n")}`
2095
2177
  async (params) => {
2096
2178
  const { requireApiKey: requireApiKey2 } = await import("./config.js");
2097
2179
  requireApiKey2();
2098
- const { handleDeleteDatasetRecords } = await import("./delete-dataset-records-DM4W3PAW.js");
2180
+ const { handleDeleteDatasetRecords } = await import("./delete-dataset-records-R43IMAWB.js");
2099
2181
  return {
2100
2182
  content: [
2101
2183
  { type: "text", text: await handleDeleteDatasetRecords(params) }
@@ -2112,7 +2194,7 @@ ${lines.join("\n")}`
2112
2194
  },
2113
2195
  withToolLogging("platform_list_projects", async (params) => {
2114
2196
  requireApiKey();
2115
- const { handleListProjects } = await import("./list-projects-5FHMJ4PQ.js");
2197
+ const { handleListProjects } = await import("./list-projects-JLMBFMW3.js");
2116
2198
  return {
2117
2199
  content: [{ type: "text", text: await handleListProjects(params) }]
2118
2200
  };
@@ -2126,7 +2208,7 @@ ${lines.join("\n")}`
2126
2208
  },
2127
2209
  withToolLogging("platform_get_project", async (params) => {
2128
2210
  requireApiKey();
2129
- const { handleGetProject } = await import("./get-project-JCMWXVLU.js");
2211
+ const { handleGetProject } = await import("./get-project-5OAXYC57.js");
2130
2212
  return {
2131
2213
  content: [{ type: "text", text: await handleGetProject(params) }]
2132
2214
  };
@@ -2146,7 +2228,7 @@ You must provide either teamId (to add the project to an existing team) or newTe
2146
2228
  },
2147
2229
  withToolLogging("platform_create_project", async (params) => {
2148
2230
  requireApiKey();
2149
- const { handleCreateProject } = await import("./create-project-CUVQ67VN.js");
2231
+ const { handleCreateProject } = await import("./create-project-BOBQ32C5.js");
2150
2232
  return {
2151
2233
  content: [{ type: "text", text: await handleCreateProject(params) }]
2152
2234
  };
@@ -2164,7 +2246,7 @@ You must provide either teamId (to add the project to an existing team) or newTe
2164
2246
  },
2165
2247
  withToolLogging("platform_update_project", async (params) => {
2166
2248
  requireApiKey();
2167
- const { handleUpdateProject } = await import("./update-project-OIT4WPFI.js");
2249
+ const { handleUpdateProject } = await import("./update-project-PI5DWBVK.js");
2168
2250
  return {
2169
2251
  content: [{ type: "text", text: await handleUpdateProject(params) }]
2170
2252
  };
@@ -2178,7 +2260,7 @@ You must provide either teamId (to add the project to an existing team) or newTe
2178
2260
  },
2179
2261
  withToolLogging("platform_archive_project", async (params) => {
2180
2262
  requireApiKey();
2181
- const { handleArchiveProject } = await import("./archive-project-HZBRPR2S.js");
2263
+ const { handleArchiveProject } = await import("./archive-project-MK3673A7.js");
2182
2264
  return {
2183
2265
  content: [{ type: "text", text: await handleArchiveProject(params) }]
2184
2266
  };
@@ -2190,7 +2272,7 @@ You must provide either teamId (to add the project to an existing team) or newTe
2190
2272
  {},
2191
2273
  withToolLogging("platform_list_api_keys", async () => {
2192
2274
  requireApiKey();
2193
- const { handleListApiKeys } = await import("./list-api-keys-AWW7ROLB.js");
2275
+ const { handleListApiKeys } = await import("./list-api-keys-JLWJPFRX.js");
2194
2276
  return {
2195
2277
  content: [{ type: "text", text: await handleListApiKeys() }]
2196
2278
  };
@@ -2218,7 +2300,7 @@ The token is returned once and cannot be retrieved again.`,
2218
2300
  },
2219
2301
  withToolLogging("platform_create_api_key", async (params) => {
2220
2302
  requireApiKey();
2221
- const { handleCreateApiKey } = await import("./create-api-key-OQI5PUNQ.js");
2303
+ const { handleCreateApiKey } = await import("./create-api-key-MKRXKFJM.js");
2222
2304
  return {
2223
2305
  content: [{ type: "text", text: await handleCreateApiKey(params) }]
2224
2306
  };
@@ -2232,7 +2314,7 @@ The token is returned once and cannot be retrieved again.`,
2232
2314
  },
2233
2315
  withToolLogging("platform_revoke_api_key", async (params) => {
2234
2316
  requireApiKey();
2235
- const { handleRevokeApiKey } = await import("./revoke-api-key-ZSPSPF5G.js");
2317
+ const { handleRevokeApiKey } = await import("./revoke-api-key-3Y35EMBT.js");
2236
2318
  return {
2237
2319
  content: [{ type: "text", text: await handleRevokeApiKey(params) }]
2238
2320
  };
@@ -2243,4 +2325,4 @@ The token is returned once and cannot be retrieved again.`,
2243
2325
  export {
2244
2326
  createMcpServer
2245
2327
  };
2246
- //# sourceMappingURL=chunk-FVDAZ4XG.js.map
2328
+ //# sourceMappingURL=chunk-VYPSKRPN.js.map