proxy_test_rule_match
Test which proxy interception rules match a specific HTTP request, providing detailed pass/fail diagnostics and identifying the winning rule by priority.
Instructions
Test which interception rules would match a request, with detailed per-field pass/fail diagnostics and effective winner by priority.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | simulate: test a synthetic request, exchange: test an existing captured exchange | simulate |
| request | No | Synthetic request (required when mode=simulate) | |
| exchange_id | No | Exchange ID from proxy_list_traffic (required when mode=exchange) | |
| include_disabled | No | Include disabled rules in diagnostics (default: true); disabled rules never win | |
| limit_rules | No | Optional limit on number of priority-sorted rules evaluated |
Implementation Reference
- src/tools/rules.ts:160-210 (handler)The handler function for the `proxy_test_rule_match` tool, which delegates to `proxyManager.testRulesAgainstExchange` or `proxyManager.testRulesAgainstRequest`.
async ({ mode, request, exchange_id, include_disabled, limit_rules }) => { try { const options = { includeDisabled: include_disabled, limitRules: limit_rules, }; if (mode === "exchange") { if (!exchange_id) { return { content: [{ type: "text", text: JSON.stringify({ status: "error", error: "exchange_id is required when mode='exchange'" }), }], }; } const result = proxyManager.testRulesAgainstExchange(exchange_id, options); return { content: [{ type: "text", text: truncateResult({ status: "success", mode, exchange_id, result, }), }], }; } if (!request) { return { content: [{ type: "text", text: JSON.stringify({ status: "error", error: "request is required when mode='simulate'" }), }], }; } const result = proxyManager.testRulesAgainstRequest(request, options); return { content: [{ type: "text", text: truncateResult({ status: "success", mode, result, }), }], }; } catch (e) { - src/tools/rules.ts:148-159 (registration)Tool registration for `proxy_test_rule_match` including the schema definition.
server.tool( "proxy_test_rule_match", "Test which interception rules would match a request, with detailed per-field pass/fail diagnostics and effective winner by priority.", { mode: z.enum(["simulate", "exchange"]).optional().default("simulate") .describe("simulate: test a synthetic request, exchange: test an existing captured exchange"), request: testRequestSchema.optional().describe("Synthetic request (required when mode=simulate)"), exchange_id: z.string().optional().describe("Exchange ID from proxy_list_traffic (required when mode=exchange)"), include_disabled: z.boolean().optional().default(true) .describe("Include disabled rules in diagnostics (default: true); disabled rules never win"), limit_rules: z.number().optional().describe("Optional limit on number of priority-sorted rules evaluated"), },