@inspectr/mcplab-mcp-server 1.8.0 → 1.8.1

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.
@@ -65,6 +65,41 @@ describe('mcp tool contracts', () => {
65
65
  expect(parsed.success).toBe(true);
66
66
  expect(parsed.data.name).toBe('Named scenario');
67
67
  });
68
+ it('accepts full evaluation rules in scenario authoring tools', async () => {
69
+ const tools = setupTools();
70
+ const schema = asSchema(tools.get('mcplab_generate_scenario_entry').config.inputSchema);
71
+ const parsed = schema.safeParse({
72
+ id: 'full-evaluation-rules',
73
+ servers: ['mcp-lab'],
74
+ prompt: 'Run the complete evaluation check.',
75
+ eval: {
76
+ response_assertions: [{ type: 'contains', value: 'Paris' }],
77
+ tool_input_assertions: [{ type: 'jsonpath', tool: 'fetch', path: '$.days', equals: 5 }],
78
+ agent_assertions: [{ label: 'Complete', prompt: 'Is the answer complete?' }]
79
+ }
80
+ });
81
+ expect(parsed.success).toBe(true);
82
+ expect(parsed.data.eval).toEqual({
83
+ response_assertions: [{ type: 'contains', value: 'Paris' }],
84
+ tool_input_assertions: [{ type: 'jsonpath', tool: 'fetch', path: '$.days', equals: 5 }],
85
+ agent_assertions: [{ label: 'Complete', prompt: 'Is the answer complete?' }]
86
+ });
87
+ });
88
+ it('describes evaluation assertion types and exposes them in scenario output', () => {
89
+ const tools = setupTools();
90
+ const generateTool = tools.get('mcplab_generate_scenario_entry').config;
91
+ expect(generateTool.description).toContain('eval object');
92
+ expect(generateTool.inputSchema.required_tools.description).toContain('Simple shorthand');
93
+ expect(generateTool.inputSchema.eval.description).toContain('Full evaluation-rule object');
94
+ const outputScenario = asSchema(tools.get('mcplab_generate_scenario_entry').config.outputSchema.scenario);
95
+ const parsed = outputScenario.safeParse({
96
+ id: 'typed-output',
97
+ mcp_servers: [{ ref: 'mcp-lab' }],
98
+ prompt: 'Run the typed output check.',
99
+ eval: { response_assertions: [{ type: 'contains', value: 'Paris' }] }
100
+ });
101
+ expect(parsed.success).toBe(true);
102
+ });
68
103
  it('generates scenario-owned MCP server refs', async () => {
69
104
  const tool = setupTools().get('mcplab_generate_scenario_entry');
70
105
  const result = await tool.cb({
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.contracts.test.js","sourceRoot":"","sources":["../src/runtime.contracts.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.contracts.test.js","sourceRoot":"","sources":["../src/runtime.contracts.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAUA,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEpF,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAolBnG,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,6BAA6B,CAAC;IACzC,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAoDjC;AAED,wBAAgB,oCAAoC,IAAI,sBAAsB,CAM7E;AAED,wBAAgB,sBAAsB,IAAI,SAAS,CAalD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0oErD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0EvD;AAwsCD,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EACrC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAEf"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAUA,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEpF,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AA4tBnG,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,6BAA6B,CAAC;IACzC,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAoDjC;AAED,wBAAgB,oCAAoC,IAAI,sBAAsB,CAM7E;AAED,wBAAgB,sBAAsB,IAAI,SAAS,CAalD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4vErD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0EvD;AAwsCD,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EACrC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAEf"}
package/dist/runtime.js CHANGED
@@ -164,13 +164,148 @@ const ServerEntrySchema = z.object({
164
164
  url: z.string(),
165
165
  auth: ServerAuthSchema.optional()
166
166
  });
167
+ const ResponseAssertionSchema = z
168
+ .discriminatedUnion('type', [
169
+ z.object({
170
+ type: z.literal('regex').describe('Match the final response against a regular expression.'),
171
+ pattern: z.string().describe('JavaScript regex pattern; matching is case-insensitive.')
172
+ }),
173
+ z.object({
174
+ type: z.literal('contains').describe('Require literal text in the final response.'),
175
+ value: z.string().describe('Case-insensitive text that must appear.')
176
+ }),
177
+ z.object({
178
+ type: z
179
+ .literal('not_contains')
180
+ .describe('Require literal text to be absent from the final response.'),
181
+ value: z.string().describe('Case-insensitive text that must not appear.')
182
+ }),
183
+ z.object({
184
+ type: z
185
+ .literal('starts_with')
186
+ .describe('Require the final response to start with literal text.'),
187
+ value: z.string().describe('Case-insensitive prefix.')
188
+ }),
189
+ z.object({
190
+ type: z.literal('ends_with').describe('Require the final response to end with literal text.'),
191
+ value: z.string().describe('Case-insensitive suffix.')
192
+ }),
193
+ z.object({
194
+ type: z
195
+ .literal('equals')
196
+ .describe('Require the entire final response to equal literal text.'),
197
+ value: z.string().describe('Case-insensitive expected response.')
198
+ }),
199
+ z.object({
200
+ type: z.literal('jsonpath').describe('Inspect a value in a JSON final response.'),
201
+ path: z.string().describe('JSONPath expression.'),
202
+ equals: z
203
+ .union([z.string(), z.number(), z.boolean()])
204
+ .optional()
205
+ .describe('Optional primitive value that must match.')
206
+ }),
207
+ z.object({
208
+ type: z
209
+ .literal('jsonpath_exists')
210
+ .describe('Require a JSONPath to exist in a JSON final response.'),
211
+ path: z.string().describe('JSONPath expression.')
212
+ }),
213
+ z.object({
214
+ type: z
215
+ .literal('jsonpath_not_exists')
216
+ .describe('Require a JSONPath to be absent from a JSON final response.'),
217
+ path: z.string().describe('JSONPath expression.')
218
+ })
219
+ ])
220
+ .describe('Assertions evaluated against the final response text or JSON.');
221
+ const ToolInputAssertionSchema = z
222
+ .discriminatedUnion('type', [
223
+ z.object({
224
+ type: z.literal('contains').describe('Require text in serialized tool arguments.'),
225
+ tool: z.string().describe('Raw MCP tool name.'),
226
+ value: z.string().describe('Case-insensitive text that must appear in arguments.')
227
+ }),
228
+ z.object({
229
+ type: z.literal('regex').describe('Match serialized tool arguments with a regex.'),
230
+ tool: z.string().describe('Raw MCP tool name.'),
231
+ pattern: z.string().describe('JavaScript regex pattern.')
232
+ }),
233
+ z.object({
234
+ type: z.literal('jsonpath').describe('Inspect a value in tool arguments.'),
235
+ tool: z.string().describe('Raw MCP tool name.'),
236
+ path: z.string().describe('JSONPath expression over the tool arguments.'),
237
+ equals: z
238
+ .union([z.string(), z.number(), z.boolean()])
239
+ .optional()
240
+ .describe('Optional primitive value that must match.')
241
+ })
242
+ ])
243
+ .describe('Assertions evaluated against calls to a named MCP tool.');
244
+ const AgentAssertionSchema = z
245
+ .object({
246
+ label: z.string().describe('Stable name for the semantic check.'),
247
+ prompt: z.string().describe('Question the judge should answer about the scenario result.')
248
+ })
249
+ .describe('Semantic checks for requirements that are not reliably deterministic.');
250
+ const AgentContextSchema = z
251
+ .object({
252
+ include_prompt: z
253
+ .boolean()
254
+ .optional()
255
+ .describe('Include the scenario prompt in judge context.'),
256
+ include_tool_sequence: z
257
+ .boolean()
258
+ .optional()
259
+ .describe('Include called raw MCP tool names in judge context.'),
260
+ include_tool_inputs: z
261
+ .boolean()
262
+ .optional()
263
+ .describe('Include raw MCP tool arguments in judge context.')
264
+ })
265
+ .describe('Shared context sent to every agent assertion.');
266
+ const EvalRulesSchema = z
267
+ .object({
268
+ tool_constraints: z
269
+ .object({
270
+ required_tools: z
271
+ .array(z.string())
272
+ .optional()
273
+ .describe('Raw MCP tools that must be called.'),
274
+ forbidden_tools: z
275
+ .array(z.string())
276
+ .optional()
277
+ .describe('Raw MCP tools that must not be called.')
278
+ })
279
+ .strict()
280
+ .describe('Deterministic MCP tool-usage constraints.')
281
+ .optional(),
282
+ tool_sequence: z
283
+ .array(z.string())
284
+ .optional()
285
+ .describe('Flat ordered list of raw MCP tool names that must be called.'),
286
+ tool_input_assertions: z
287
+ .array(ToolInputAssertionSchema)
288
+ .optional()
289
+ .describe('Checks over MCP tool arguments.'),
290
+ response_assertions: z
291
+ .array(ResponseAssertionSchema)
292
+ .optional()
293
+ .describe('Checks over the final response.'),
294
+ agent_assertions: z
295
+ .array(AgentAssertionSchema)
296
+ .optional()
297
+ .describe('Semantic checks judged by an evaluation agent.'),
298
+ agent_context: AgentContextSchema.optional()
299
+ })
300
+ .strict()
301
+ .describe('Full MCPLab evaluation rules. Use this object for all supported assertion types.');
167
302
  const ScenarioEntrySchema = z.object({
168
303
  id: z.string(),
169
304
  name: z.string().optional(),
170
305
  agent: z.string().optional(),
171
306
  mcp_servers: z.array(z.object({ ref: z.string() })),
172
307
  prompt: z.string(),
173
- eval: GenericObjectSchema.optional(),
308
+ eval: EvalRulesSchema.optional(),
174
309
  extract: z
175
310
  .array(z.object({
176
311
  name: z.string(),
@@ -998,24 +1133,50 @@ export function registerTools(server) {
998
1133
  });
999
1134
  });
1000
1135
  registerTool('mcplab_create_test_case', {
1001
- description: 'Create one reviewed MCPLab Test Case in mcplab/test-cases/. This is a scoped YAML write and refuses duplicate IDs.',
1136
+ description: 'Create one reviewed MCPLab Test Case in mcplab/test-cases/. Put evaluation checks in the eval object for full support of response, tool-input, and agent assertions. Simple shorthand fields are supported for basic cases; do not provide a shorthand field together with its equivalent eval field. This is a scoped YAML write and refuses duplicate IDs.',
1002
1137
  outputSchema: { id: z.string(), path: z.string(), test_case: ScenarioEntrySchema },
1003
1138
  inputSchema: {
1004
- id: z.string().min(1),
1005
- name: z.string().optional(),
1006
- servers: z.array(z.string()).min(1),
1007
- prompt: z.string().min(1).max(4000),
1008
- required_tools: z.array(z.string()).optional(),
1009
- forbidden_tools: z.array(z.string()).optional(),
1139
+ id: z
1140
+ .string()
1141
+ .min(1)
1142
+ .describe('Stable Test Case id; letters, numbers, hyphens, and underscores.'),
1143
+ name: z
1144
+ .string()
1145
+ .optional()
1146
+ .describe('Human-readable Test Case label; defaults to id when blank.'),
1147
+ servers: z.array(z.string()).min(1).describe('MCP server ids available to this Test Case.'),
1148
+ prompt: z
1149
+ .string()
1150
+ .min(1)
1151
+ .max(4000)
1152
+ .describe('Task prompt executed by the evaluation agent.'),
1153
+ required_tools: z
1154
+ .array(z.string())
1155
+ .optional()
1156
+ .describe('Simple shorthand for eval.tool_constraints.required_tools. Use for basic checks only; put new or advanced rules under eval. Do not provide both.'),
1157
+ forbidden_tools: z
1158
+ .array(z.string())
1159
+ .optional()
1160
+ .describe('Simple shorthand for eval.tool_constraints.forbidden_tools. Use for basic checks only; put new or advanced rules under eval. Do not provide both.'),
1010
1161
  tool_sequence: z
1011
1162
  .array(z.string())
1012
1163
  .min(1)
1013
1164
  .optional()
1014
- .describe('Required tool calls in order.'),
1015
- extract_rules: z.array(z.object({ name: z.string(), regex: z.string() })).optional(),
1016
- response_regex_patterns: z.array(z.string()).optional()
1165
+ .describe('Simple shorthand for eval.tool_sequence: a flat ordered list of raw MCP tool names. Use eval for new or advanced rules. Do not provide both.'),
1166
+ extract_rules: z
1167
+ .array(z.object({
1168
+ name: z.string().describe('Extracted field name.'),
1169
+ regex: z.string().describe('Regex applied to final_text.')
1170
+ }))
1171
+ .optional()
1172
+ .describe('Extract values from the final response for trend analysis.'),
1173
+ response_regex_patterns: z
1174
+ .array(z.string())
1175
+ .optional()
1176
+ .describe('Simple shorthand for response regex checks. Use eval.response_assertions for new or advanced checks; choose type=contains for literal text. Do not provide both.'),
1177
+ eval: EvalRulesSchema.optional().describe('Full evaluation-rule object. Use this for new authoring or whenever you need more than one rule type; do not combine it with equivalent shorthand fields.')
1017
1178
  }
1018
- }, async ({ id, name, servers, prompt, required_tools, forbidden_tools, tool_sequence, extract_rules, response_regex_patterns }) => withToolHandling(async () => {
1179
+ }, async ({ id, name, servers, prompt, required_tools, forbidden_tools, tool_sequence, extract_rules, response_regex_patterns, eval: evalRules }) => withToolHandling(async () => {
1019
1180
  const bundleRoot = resolveBundleRoot();
1020
1181
  const library = readLibrary(bundleRoot, false);
1021
1182
  const created = createTestCaseFile({
@@ -1030,7 +1191,8 @@ export function registerTools(server) {
1030
1191
  forbiddenTools: forbidden_tools,
1031
1192
  toolSequence: tool_sequence,
1032
1193
  extractRules: extract_rules,
1033
- responseRegexPatterns: response_regex_patterns
1194
+ responseRegexPatterns: response_regex_patterns,
1195
+ eval: evalRules
1034
1196
  }
1035
1197
  });
1036
1198
  return ok(`Created Test Case '${created.id}'`, {
@@ -1051,7 +1213,7 @@ export function registerTools(server) {
1051
1213
  });
1052
1214
  }));
1053
1215
  registerTool('mcplab_update_test_case', {
1054
- description: 'Replace one existing MCPLab test case in place. Requires confirm=true and never creates a new file.',
1216
+ description: 'Replace one existing MCPLab test case in place. Put evaluation checks in the eval object for full support of response, tool-input, and agent assertions. Simple shorthand fields are supported for basic cases; do not provide a shorthand field together with its equivalent eval field. Requires confirm=true and never creates a new file.',
1055
1217
  inputSchema: {
1056
1218
  file_path: z
1057
1219
  .string()
@@ -1059,18 +1221,48 @@ export function registerTools(server) {
1059
1221
  confirm: z
1060
1222
  .literal(true)
1061
1223
  .describe('Required confirmation that the existing file should be overwritten.'),
1062
- id: z.string().min(1),
1063
- name: z.string().optional(),
1064
- servers: z.array(z.string()).min(1),
1065
- prompt: z.string().min(1).max(4000),
1066
- required_tools: z.array(z.string()).optional(),
1067
- forbidden_tools: z.array(z.string()).optional(),
1068
- tool_sequence: z.array(z.string()).min(1).optional(),
1069
- extract_rules: z.array(z.object({ name: z.string(), regex: z.string() })).optional(),
1070
- response_regex_patterns: z.array(z.string()).optional()
1224
+ id: z
1225
+ .string()
1226
+ .min(1)
1227
+ .describe('Stable Test Case id; letters, numbers, hyphens, and underscores.'),
1228
+ name: z
1229
+ .string()
1230
+ .optional()
1231
+ .describe('Human-readable Test Case label; defaults to id when blank.'),
1232
+ servers: z.array(z.string()).min(1).describe('MCP server ids available to this Test Case.'),
1233
+ prompt: z
1234
+ .string()
1235
+ .min(1)
1236
+ .max(4000)
1237
+ .describe('Task prompt executed by the evaluation agent.'),
1238
+ required_tools: z
1239
+ .array(z.string())
1240
+ .optional()
1241
+ .describe('Simple shorthand for eval.tool_constraints.required_tools. Use for basic checks only; put new or advanced rules under eval. Do not provide both.'),
1242
+ forbidden_tools: z
1243
+ .array(z.string())
1244
+ .optional()
1245
+ .describe('Simple shorthand for eval.tool_constraints.forbidden_tools. Use for basic checks only; put new or advanced rules under eval. Do not provide both.'),
1246
+ tool_sequence: z
1247
+ .array(z.string())
1248
+ .min(1)
1249
+ .optional()
1250
+ .describe('Simple shorthand for eval.tool_sequence: a flat ordered list of raw MCP tool names. Use eval for new or advanced rules. Do not provide both.'),
1251
+ extract_rules: z
1252
+ .array(z.object({
1253
+ name: z.string().describe('Extracted field name.'),
1254
+ regex: z.string().describe('Regex applied to final_text.')
1255
+ }))
1256
+ .optional()
1257
+ .describe('Extract values from the final response for trend analysis.'),
1258
+ response_regex_patterns: z
1259
+ .array(z.string())
1260
+ .optional()
1261
+ .describe('Simple shorthand for response regex checks. Use eval.response_assertions for new or advanced checks; choose type=contains for literal text. Do not provide both.'),
1262
+ eval: EvalRulesSchema.optional().describe('Full evaluation-rule object. Use this for new authoring or whenever you need more than one rule type; do not combine it with equivalent shorthand fields.')
1071
1263
  },
1072
1264
  outputSchema: { id: z.string(), path: z.string(), test_case: ScenarioEntrySchema }
1073
- }, async ({ file_path, confirm: _confirm, id, name, servers, prompt, required_tools, forbidden_tools, tool_sequence, extract_rules, response_regex_patterns }) => withToolHandling(() => {
1265
+ }, async ({ file_path, confirm: _confirm, id, name, servers, prompt, required_tools, forbidden_tools, tool_sequence, extract_rules, response_regex_patterns, eval: evalRules }) => withToolHandling(() => {
1074
1266
  const library = readLibrary(resolveBundleRoot(), false);
1075
1267
  const updated = updateTestCaseFile({
1076
1268
  librariesDir: resolveBundleRoot(),
@@ -1085,7 +1277,8 @@ export function registerTools(server) {
1085
1277
  forbiddenTools: forbidden_tools,
1086
1278
  toolSequence: tool_sequence,
1087
1279
  extractRules: extract_rules,
1088
- responseRegexPatterns: response_regex_patterns
1280
+ responseRegexPatterns: response_regex_patterns,
1281
+ eval: evalRules
1089
1282
  }
1090
1283
  });
1091
1284
  return ok(`Updated Test Case '${updated.id}'`, {
@@ -1095,7 +1288,7 @@ export function registerTools(server) {
1095
1288
  });
1096
1289
  }));
1097
1290
  registerTool('mcplab_create_evaluation_config', {
1098
- description: 'Create one reviewed MCPLab evaluation configuration in mcplab/evals/. This is a scoped YAML write with automatic filename normalization and collision handling.',
1291
+ description: 'Create one reviewed MCPLab evaluation configuration in mcplab/evals/. This is a scoped YAML write with automatic filename normalization and collision handling. In scenario eval blocks, use the full evaluation rules for response, tool-input, and agent checks: tool_constraints, flat tool_sequence, response_assertions (contains, equals, regex, and JSONPath variants), tool_input_assertions, agent_assertions, and agent_context. Use contains for literal text; use regex only for patterns. Do not combine eval rules with equivalent shorthand fields.',
1099
1292
  outputSchema: {
1100
1293
  file_name: z.string(),
1101
1294
  path: z.string(),
@@ -1103,8 +1296,11 @@ export function registerTools(server) {
1103
1296
  config: GenericObjectSchema
1104
1297
  },
1105
1298
  inputSchema: {
1106
- file_name: z.string().min(1),
1107
- config: GenericObjectSchema.describe('Complete MCPLab evaluation configuration.')
1299
+ file_name: z
1300
+ .string()
1301
+ .min(1)
1302
+ .describe('Destination YAML filename under mcplab/evals/. Extension is added if omitted.'),
1303
+ config: GenericObjectSchema.describe('Complete MCPLab evaluation configuration. Scenario eval blocks support tool_constraints, a flat tool_sequence, response_assertions (contains, not_contains, starts_with, ends_with, equals, regex, and JSONPath variants), tool_input_assertions, agent_assertions, and agent_context. Use contains for literal response text; use regex only when pattern matching is required.')
1108
1304
  }
1109
1305
  }, async ({ file_name, config }) => withToolHandling(async () => {
1110
1306
  const created = createEvaluationConfigFile({
@@ -1120,11 +1316,11 @@ export function registerTools(server) {
1120
1316
  });
1121
1317
  }));
1122
1318
  registerTool('mcplab_get_evaluation_config', {
1123
- description: 'Read one existing MCPLab evaluation config, including its full parsed YAML content.',
1319
+ description: 'Read one existing MCPLab evaluation config, including its full parsed YAML content. Returned scenario eval blocks may use full tool constraints, flat tool sequences, response/tool-input assertions, agent assertions, and agent context.',
1124
1320
  inputSchema: {
1125
1321
  config_path: z
1126
1322
  .string()
1127
- .describe('Path to an existing eval YAML, relative to the MCPLab evals directory.')
1323
+ .describe('Path to an existing eval YAML, relative to the MCPLab evals directory. Invalid, missing, or out-of-root paths return an error; the tool never silently coerces them.')
1128
1324
  },
1129
1325
  outputSchema: z.object({
1130
1326
  path: z.string(),
@@ -1143,12 +1339,12 @@ export function registerTools(server) {
1143
1339
  });
1144
1340
  }));
1145
1341
  registerTool('mcplab_update_evaluation_config', {
1146
- description: 'Replace one existing MCPLab evaluation config in place after normalization. Requires confirm=true; refuses missing or out-of-root paths and never creates a new file.',
1342
+ description: 'Replace one existing MCPLab evaluation config in place after normalization. Requires confirm=true; refuses missing or out-of-root paths and never creates a new file. In scenario eval blocks, use the full evaluation rules for response, tool-input, and agent checks: tool_constraints, flat tool_sequence, response_assertions (contains, equals, regex, and JSONPath variants), tool_input_assertions, agent_assertions, and agent_context. Use contains for literal text; use regex only for patterns. Do not combine eval rules with equivalent shorthand fields.',
1147
1343
  inputSchema: {
1148
1344
  config_path: z
1149
1345
  .string()
1150
- .describe('Path to an existing eval YAML, relative to the MCPLab evals directory.'),
1151
- config: GenericObjectSchema.describe('Complete replacement evaluation configuration.'),
1346
+ .describe('Path to an existing eval YAML, relative to the MCPLab evals directory. Invalid, missing, or out-of-root paths return an error; the tool never silently coerces them.'),
1347
+ config: GenericObjectSchema.describe('Complete replacement evaluation configuration. Scenario eval blocks support tool_constraints, a flat tool_sequence, response_assertions (contains, not_contains, starts_with, ends_with, equals, regex, and JSONPath variants), tool_input_assertions, agent_assertions, and agent_context. Use contains for literal response text; use regex only when pattern matching is required.'),
1152
1348
  confirm: z
1153
1349
  .literal(true)
1154
1350
  .describe('Required confirmation that the existing file should be overwritten.')
@@ -1175,7 +1371,7 @@ export function registerTools(server) {
1175
1371
  });
1176
1372
  }));
1177
1373
  registerTool('mcplab_generate_scenario_entry', {
1178
- description: 'Generate a MCPLab scenario YAML snippet with prompt, server links, and optional evaluation/extract rules. Optimized for scenario authoring workflows.',
1374
+ description: 'Generate a MCPLab scenario YAML snippet with prompt, server links, and optional evaluation/extract rules. Put checks in the eval object for full assertion support; simple shorthand fields are supported for basic cases and must not be combined with equivalent eval fields.',
1179
1375
  outputSchema: {
1180
1376
  scenario: ScenarioEntrySchema,
1181
1377
  yaml: z.string(),
@@ -1206,17 +1402,24 @@ export function registerTools(server) {
1206
1402
  .min(1)
1207
1403
  .max(4000)
1208
1404
  .describe('The task prompt the evaluation agent should execute (1-4000 chars).'),
1209
- required_tools: z.array(z.string()).optional().describe('Tools that must be called.'),
1210
- forbidden_tools: z.array(z.string()).optional().describe('Tools that must not be called.'),
1405
+ required_tools: z
1406
+ .array(z.string())
1407
+ .optional()
1408
+ .describe('Simple shorthand for eval.tool_constraints.required_tools. Use for basic checks only; put new or advanced rules under eval. Do not provide both.'),
1409
+ forbidden_tools: z
1410
+ .array(z.string())
1411
+ .optional()
1412
+ .describe('Simple shorthand for eval.tool_constraints.forbidden_tools. Use for basic checks only; put new or advanced rules under eval. Do not provide both.'),
1211
1413
  tool_sequence: z
1212
1414
  .array(z.string())
1213
1415
  .min(1)
1214
1416
  .optional()
1215
- .describe('Required tool calls in this exact order.'),
1417
+ .describe('Simple shorthand for eval.tool_sequence: a flat ordered list of raw MCP tool names. Use eval for new or advanced rules. Do not provide both.'),
1216
1418
  response_regex_patterns: z
1217
1419
  .array(z.string())
1218
1420
  .optional()
1219
- .describe('Regex patterns that must match the final response text.'),
1421
+ .describe('Simple shorthand for response regex checks. Use eval.response_assertions for new or advanced checks; choose type=contains for literal text. Do not provide both.'),
1422
+ eval: EvalRulesSchema.optional().describe('Full evaluation-rule object. Use this for new authoring or whenever you need more than one rule type; do not combine it with equivalent shorthand fields.'),
1220
1423
  extract_rules: z
1221
1424
  .array(z.object({
1222
1425
  name: z.string().describe('Extracted field name.'),