@langwatch/mcp-server 0.3.3 → 0.5.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 (78) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +97 -25
  3. package/dist/archive-scenario-GAE4XVFM.js +19 -0
  4. package/dist/archive-scenario-GAE4XVFM.js.map +1 -0
  5. package/dist/chunk-AAQNA53E.js +28 -0
  6. package/dist/chunk-AAQNA53E.js.map +1 -0
  7. package/dist/chunk-JVWDWL3J.js +91 -0
  8. package/dist/chunk-JVWDWL3J.js.map +1 -0
  9. package/dist/chunk-K2YFPOSD.js +40 -0
  10. package/dist/chunk-K2YFPOSD.js.map +1 -0
  11. package/dist/chunk-ZXKLPC2E.js +27 -0
  12. package/dist/chunk-ZXKLPC2E.js.map +1 -0
  13. package/dist/config-FIQWQRUB.js +11 -0
  14. package/dist/config-FIQWQRUB.js.map +1 -0
  15. package/dist/create-prompt-P35POKBW.js +22 -0
  16. package/dist/create-prompt-P35POKBW.js.map +1 -0
  17. package/dist/create-scenario-3YRZVDYF.js +26 -0
  18. package/dist/create-scenario-3YRZVDYF.js.map +1 -0
  19. package/dist/discover-scenario-schema-MEEEVND7.js +65 -0
  20. package/dist/discover-scenario-schema-MEEEVND7.js.map +1 -0
  21. package/dist/discover-schema-3T52ORPB.js +446 -0
  22. package/dist/discover-schema-3T52ORPB.js.map +1 -0
  23. package/dist/get-analytics-BAVXTAPB.js +55 -0
  24. package/dist/get-analytics-BAVXTAPB.js.map +1 -0
  25. package/dist/get-prompt-LKCPT26O.js +48 -0
  26. package/dist/get-prompt-LKCPT26O.js.map +1 -0
  27. package/dist/get-scenario-3SCDW4Z6.js +33 -0
  28. package/dist/get-scenario-3SCDW4Z6.js.map +1 -0
  29. package/dist/get-trace-QFDWJ5D4.js +50 -0
  30. package/dist/get-trace-QFDWJ5D4.js.map +1 -0
  31. package/dist/index.js +22114 -8786
  32. package/dist/index.js.map +1 -1
  33. package/dist/list-prompts-UQPBCUYA.js +33 -0
  34. package/dist/list-prompts-UQPBCUYA.js.map +1 -0
  35. package/dist/list-scenarios-573YOUKC.js +40 -0
  36. package/dist/list-scenarios-573YOUKC.js.map +1 -0
  37. package/dist/search-traces-RSMYCAN7.js +72 -0
  38. package/dist/search-traces-RSMYCAN7.js.map +1 -0
  39. package/dist/update-prompt-G2Y5EBQY.js +31 -0
  40. package/dist/update-prompt-G2Y5EBQY.js.map +1 -0
  41. package/dist/update-scenario-SSGVOBJO.js +27 -0
  42. package/dist/update-scenario-SSGVOBJO.js.map +1 -0
  43. package/package.json +3 -3
  44. package/src/__tests__/config.unit.test.ts +89 -0
  45. package/src/__tests__/date-parsing.unit.test.ts +78 -0
  46. package/src/__tests__/discover-schema.unit.test.ts +118 -0
  47. package/src/__tests__/integration.integration.test.ts +313 -0
  48. package/src/__tests__/langwatch-api.unit.test.ts +309 -0
  49. package/src/__tests__/scenario-tools.integration.test.ts +286 -0
  50. package/src/__tests__/scenario-tools.unit.test.ts +185 -0
  51. package/src/__tests__/schemas.unit.test.ts +85 -0
  52. package/src/__tests__/tools.unit.test.ts +729 -0
  53. package/src/config.ts +31 -0
  54. package/src/index.ts +383 -0
  55. package/src/langwatch-api-scenarios.ts +67 -0
  56. package/src/langwatch-api.ts +266 -0
  57. package/src/schemas/analytics-groups.ts +78 -0
  58. package/src/schemas/analytics-metrics.ts +179 -0
  59. package/src/schemas/filter-fields.ts +119 -0
  60. package/src/schemas/index.ts +3 -0
  61. package/src/tools/archive-scenario.ts +19 -0
  62. package/src/tools/create-prompt.ts +29 -0
  63. package/src/tools/create-scenario.ts +30 -0
  64. package/src/tools/discover-scenario-schema.ts +71 -0
  65. package/src/tools/discover-schema.ts +106 -0
  66. package/src/tools/get-analytics.ts +71 -0
  67. package/src/tools/get-prompt.ts +56 -0
  68. package/src/tools/get-scenario.ts +36 -0
  69. package/src/tools/get-trace.ts +61 -0
  70. package/src/tools/list-prompts.ts +35 -0
  71. package/src/tools/list-scenarios.ts +47 -0
  72. package/src/tools/search-traces.ts +91 -0
  73. package/src/tools/update-prompt.ts +44 -0
  74. package/src/tools/update-scenario.ts +32 -0
  75. package/src/utils/date-parsing.ts +31 -0
  76. package/tests/evaluations.ipynb +634 -634
  77. package/tests/scenario-openai.test.ts +3 -1
  78. package/uv.lock +1788 -1322
@@ -0,0 +1,50 @@
1
+ import {
2
+ getTraceById
3
+ } from "./chunk-JVWDWL3J.js";
4
+ import "./chunk-AAQNA53E.js";
5
+
6
+ // src/tools/get-trace.ts
7
+ async function handleGetTrace(params) {
8
+ const format = params.format ?? "digest";
9
+ const result = await getTraceById(params.traceId, format);
10
+ if (format === "json") {
11
+ return JSON.stringify(result, null, 2);
12
+ }
13
+ const lines = [];
14
+ lines.push(`# Trace: ${params.traceId}
15
+ `);
16
+ if (result.timestamps) {
17
+ lines.push(`**Started**: ${result.timestamps.started_at}`);
18
+ if (result.timestamps.updated_at)
19
+ lines.push(`**Updated**: ${result.timestamps.updated_at}`);
20
+ }
21
+ if (result.metadata) {
22
+ const meta = result.metadata;
23
+ if (meta.user_id) lines.push(`**User**: ${meta.user_id}`);
24
+ if (meta.thread_id) lines.push(`**Thread**: ${meta.thread_id}`);
25
+ if (meta.customer_id) lines.push(`**Customer**: ${meta.customer_id}`);
26
+ if (meta.labels?.length) lines.push(`**Labels**: ${meta.labels.join(", ")}`);
27
+ }
28
+ if (result.evaluations && result.evaluations.length > 0) {
29
+ lines.push("\n## Evaluations");
30
+ for (const evaluation of result.evaluations) {
31
+ const status = evaluation.passed === true ? "PASSED" : evaluation.passed === false ? "FAILED" : "N/A";
32
+ lines.push(
33
+ `- **${evaluation.name || evaluation.evaluator_id}**: ${status}${evaluation.score != null ? ` (score: ${evaluation.score})` : ""}${evaluation.label ? ` [${evaluation.label}]` : ""}`
34
+ );
35
+ }
36
+ }
37
+ if (result.formatted_trace) {
38
+ lines.push(`
39
+ ## Trace Details
40
+ ${result.formatted_trace}`);
41
+ }
42
+ lines.push(
43
+ '\n> Tip: Use `get_trace` with `format: "json"` to get the full raw trace data.'
44
+ );
45
+ return lines.join("\n");
46
+ }
47
+ export {
48
+ handleGetTrace
49
+ };
50
+ //# sourceMappingURL=get-trace-QFDWJ5D4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools/get-trace.ts"],"sourcesContent":["import { getTraceById as apiGetTraceById } from \"../langwatch-api.js\";\n\n/**\n * Handles the get_trace MCP tool invocation.\n *\n * Retrieves a single trace by ID. In digest mode (default), returns the\n * AI-readable formatted digest. In json mode, returns the full raw JSON.\n */\nexport async function handleGetTrace(params: {\n traceId: string;\n format?: \"digest\" | \"json\";\n}): Promise<string> {\n const format = params.format ?? \"digest\";\n const result = await apiGetTraceById(params.traceId, format);\n\n if (format === \"json\") {\n return JSON.stringify(result, null, 2);\n }\n\n const lines: string[] = [];\n lines.push(`# Trace: ${params.traceId}\\n`);\n\n if (result.timestamps) {\n lines.push(`**Started**: ${result.timestamps.started_at}`);\n if (result.timestamps.updated_at)\n lines.push(`**Updated**: ${result.timestamps.updated_at}`);\n }\n\n if (result.metadata) {\n const meta = result.metadata;\n if (meta.user_id) lines.push(`**User**: ${meta.user_id}`);\n if (meta.thread_id) lines.push(`**Thread**: ${meta.thread_id}`);\n if (meta.customer_id) lines.push(`**Customer**: ${meta.customer_id}`);\n if (meta.labels?.length) lines.push(`**Labels**: ${meta.labels.join(\", \")}`);\n }\n\n if (result.evaluations && result.evaluations.length > 0) {\n lines.push(\"\\n## Evaluations\");\n for (const evaluation of result.evaluations) {\n const status =\n evaluation.passed === true\n ? \"PASSED\"\n : evaluation.passed === false\n ? \"FAILED\"\n : \"N/A\";\n lines.push(\n `- **${evaluation.name || evaluation.evaluator_id}**: ${status}${evaluation.score != null ? ` (score: ${evaluation.score})` : \"\"}${evaluation.label ? ` [${evaluation.label}]` : \"\"}`\n );\n }\n }\n\n if (result.formatted_trace) {\n lines.push(`\\n## Trace Details\\n${result.formatted_trace}`);\n }\n\n lines.push(\n '\\n> Tip: Use `get_trace` with `format: \"json\"` to get the full raw trace data.'\n );\n\n return lines.join(\"\\n\");\n}\n"],"mappings":";;;;;;AAQA,eAAsB,eAAe,QAGjB;AAClB,QAAM,SAAS,OAAO,UAAU;AAChC,QAAM,SAAS,MAAM,aAAgB,OAAO,SAAS,MAAM;AAE3D,MAAI,WAAW,QAAQ;AACrB,WAAO,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA,EACvC;AAEA,QAAM,QAAkB,CAAC;AACzB,QAAM,KAAK,YAAY,OAAO,OAAO;AAAA,CAAI;AAEzC,MAAI,OAAO,YAAY;AACrB,UAAM,KAAK,gBAAgB,OAAO,WAAW,UAAU,EAAE;AACzD,QAAI,OAAO,WAAW;AACpB,YAAM,KAAK,gBAAgB,OAAO,WAAW,UAAU,EAAE;AAAA,EAC7D;AAEA,MAAI,OAAO,UAAU;AACnB,UAAM,OAAO,OAAO;AACpB,QAAI,KAAK,QAAS,OAAM,KAAK,aAAa,KAAK,OAAO,EAAE;AACxD,QAAI,KAAK,UAAW,OAAM,KAAK,eAAe,KAAK,SAAS,EAAE;AAC9D,QAAI,KAAK,YAAa,OAAM,KAAK,iBAAiB,KAAK,WAAW,EAAE;AACpE,QAAI,KAAK,QAAQ,OAAQ,OAAM,KAAK,eAAe,KAAK,OAAO,KAAK,IAAI,CAAC,EAAE;AAAA,EAC7E;AAEA,MAAI,OAAO,eAAe,OAAO,YAAY,SAAS,GAAG;AACvD,UAAM,KAAK,kBAAkB;AAC7B,eAAW,cAAc,OAAO,aAAa;AAC3C,YAAM,SACJ,WAAW,WAAW,OAClB,WACA,WAAW,WAAW,QACpB,WACA;AACR,YAAM;AAAA,QACJ,OAAO,WAAW,QAAQ,WAAW,YAAY,OAAO,MAAM,GAAG,WAAW,SAAS,OAAO,YAAY,WAAW,KAAK,MAAM,EAAE,GAAG,WAAW,QAAQ,KAAK,WAAW,KAAK,MAAM,EAAE;AAAA,MACrL;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,iBAAiB;AAC1B,UAAM,KAAK;AAAA;AAAA,EAAuB,OAAO,eAAe,EAAE;AAAA,EAC5D;AAEA,QAAM;AAAA,IACJ;AAAA,EACF;AAEA,SAAO,MAAM,KAAK,IAAI;AACxB;","names":[]}