Running client scenario 'json-schema-2020-12' against server: http://127.0.0.1:3954/mcp
Checks:
2026-07-29T03:32:26.303Z [json-schema-2020-12-tool-found          ] SUCCESS Server advertises tool 'json_schema_2020_12_tool'
2026-07-29T03:32:26.304Z [json-schema-2020-12-$schema             ] SUCCESS inputSchema.$schema field preserved with value 'https://json-schema.org/draft/2020-12/schema'
2026-07-29T03:32:26.304Z [json-schema-2020-12-$defs               ] SUCCESS inputSchema.$defs field preserved with expected structure
2026-07-29T03:32:26.304Z [json-schema-2020-12-additionalProperties] FAILURE inputSchema.additionalProperties field preserved
2026-07-29T03:32:26.304Z [sep-2106-composition-keywords-preserved ] FAILURE inputSchema composition keywords (allOf/anyOf) preserved (SEP-2106)
2026-07-29T03:32:26.304Z [sep-2106-conditional-keywords-preserved ] FAILURE inputSchema conditional keywords (if/then/else) preserved (SEP-2106)
2026-07-29T03:32:26.304Z [sep-2106-anchor-keyword-preserved       ] FAILURE inputSchema reference keyword ($anchor) preserved in $defs (SEP-2106)

Test Results:
Passed: 3/7, 4 failed, 0 warnings

=== Failed Checks ===

  - JsonSchema2020_12AdditionalProperties: inputSchema.additionalProperties field preserved
    Error: additionalProperties field missing from inputSchema - field was likely stripped

Validates JSON Schema 2020-12 keyword preservation (SEP-1613, SEP-2106).

Server Implementation Requirements:

Implement tool json_schema_2020_12_tool with inputSchema containing JSON Schema 2020-12 features, including the broader vocabulary permitted by SEP-2106 (an $anchor inside $defs, composition keywords allOf/anyOf, and conditional keywords if/then/else):

``json
{
  "name": "json_schema_2020_12_tool",
  "description": "Tool with JSON Schema 2020-12 features",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "$defs": {
      "address": {
        "$anchor": "addressDef",
        "type": "object",
        "properties": {
          "street": { "type": "string" },
          "city": { "type": "string" }
        }
      }
    },
    "properties": {
      "name": { "type": "string" },
      "address": { "$ref": "#/$defs/address" },
      "contactMethod": { "type": "string", "enum": ["phone", "email"] },
      "phone": { "type": "string" },
      "email": { "type": "string" }
    },
    "allOf": [
      { "anyOf": [{ "required": ["phone"] }, { "required": ["email"] }] }
    ],
    "if": {
      "properties": { "contactMethod": { "const": "phone" } },
      "required": ["contactMethod"]
    },
    "then": { "required": ["phone"] },
    "else": { "required": ["email"] },
    "additionalProperties": false
  }
}
`

Verification: The test verifies that $schema, $defs, and additionalProperties are preserved (SEP-1613), and that the composition (allOf/anyOf), conditional (if/then/else), and $anchor` keywords are preserved (SEP-2106), in the tool listing response.

  - JsonSchema2020_12CompositionKeywords: inputSchema composition keywords (allOf/anyOf) preserved (SEP-2106)
    Error: nested anyOf missing from allOf - composition keyword was likely stripped

Validates JSON Schema 2020-12 keyword preservation (SEP-1613, SEP-2106).

Server Implementation Requirements:

Implement tool json_schema_2020_12_tool with inputSchema containing JSON Schema 2020-12 features, including the broader vocabulary permitted by SEP-2106 (an $anchor inside $defs, composition keywords allOf/anyOf, and conditional keywords if/then/else):

``json
{
  "name": "json_schema_2020_12_tool",
  "description": "Tool with JSON Schema 2020-12 features",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "$defs": {
      "address": {
        "$anchor": "addressDef",
        "type": "object",
        "properties": {
          "street": { "type": "string" },
          "city": { "type": "string" }
        }
      }
    },
    "properties": {
      "name": { "type": "string" },
      "address": { "$ref": "#/$defs/address" },
      "contactMethod": { "type": "string", "enum": ["phone", "email"] },
      "phone": { "type": "string" },
      "email": { "type": "string" }
    },
    "allOf": [
      { "anyOf": [{ "required": ["phone"] }, { "required": ["email"] }] }
    ],
    "if": {
      "properties": { "contactMethod": { "const": "phone" } },
      "required": ["contactMethod"]
    },
    "then": { "required": ["phone"] },
    "else": { "required": ["email"] },
    "additionalProperties": false
  }
}
`

Verification: The test verifies that $schema, $defs, and additionalProperties are preserved (SEP-1613), and that the composition (allOf/anyOf), conditional (if/then/else), and $anchor` keywords are preserved (SEP-2106), in the tool listing response.

  - JsonSchema2020_12ConditionalKeywords: inputSchema conditional keywords (if/then/else) preserved (SEP-2106)
    Error: Conditional keywords missing (if=false, then=false, else=false) - likely stripped

Validates JSON Schema 2020-12 keyword preservation (SEP-1613, SEP-2106).

Server Implementation Requirements:

Implement tool json_schema_2020_12_tool with inputSchema containing JSON Schema 2020-12 features, including the broader vocabulary permitted by SEP-2106 (an $anchor inside $defs, composition keywords allOf/anyOf, and conditional keywords if/then/else):

``json
{
  "name": "json_schema_2020_12_tool",
  "description": "Tool with JSON Schema 2020-12 features",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "$defs": {
      "address": {
        "$anchor": "addressDef",
        "type": "object",
        "properties": {
          "street": { "type": "string" },
          "city": { "type": "string" }
        }
      }
    },
    "properties": {
      "name": { "type": "string" },
      "address": { "$ref": "#/$defs/address" },
      "contactMethod": { "type": "string", "enum": ["phone", "email"] },
      "phone": { "type": "string" },
      "email": { "type": "string" }
    },
    "allOf": [
      { "anyOf": [{ "required": ["phone"] }, { "required": ["email"] }] }
    ],
    "if": {
      "properties": { "contactMethod": { "const": "phone" } },
      "required": ["contactMethod"]
    },
    "then": { "required": ["phone"] },
    "else": { "required": ["email"] },
    "additionalProperties": false
  }
}
`

Verification: The test verifies that $schema, $defs, and additionalProperties are preserved (SEP-1613), and that the composition (allOf/anyOf), conditional (if/then/else), and $anchor` keywords are preserved (SEP-2106), in the tool listing response.

  - JsonSchema2020_12AnchorKeyword: inputSchema reference keyword ($anchor) preserved in $defs (SEP-2106)
    Error: $anchor missing from $defs.address - reference keyword was likely stripped

Validates JSON Schema 2020-12 keyword preservation (SEP-1613, SEP-2106).

Server Implementation Requirements:

Implement tool json_schema_2020_12_tool with inputSchema containing JSON Schema 2020-12 features, including the broader vocabulary permitted by SEP-2106 (an $anchor inside $defs, composition keywords allOf/anyOf, and conditional keywords if/then/else):

``json
{
  "name": "json_schema_2020_12_tool",
  "description": "Tool with JSON Schema 2020-12 features",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "$defs": {
      "address": {
        "$anchor": "addressDef",
        "type": "object",
        "properties": {
          "street": { "type": "string" },
          "city": { "type": "string" }
        }
      }
    },
    "properties": {
      "name": { "type": "string" },
      "address": { "$ref": "#/$defs/address" },
      "contactMethod": { "type": "string", "enum": ["phone", "email"] },
      "phone": { "type": "string" },
      "email": { "type": "string" }
    },
    "allOf": [
      { "anyOf": [{ "required": ["phone"] }, { "required": ["email"] }] }
    ],
    "if": {
      "properties": { "contactMethod": { "const": "phone" } },
      "required": ["contactMethod"]
    },
    "then": { "required": ["phone"] },
    "else": { "required": ["email"] },
    "additionalProperties": false
  }
}
`

Verification: The test verifies that $schema, $defs, and additionalProperties are preserved (SEP-1613), and that the composition (allOf/anyOf), conditional (if/then/else), and $anchor` keywords are preserved (SEP-2106), in the tool listing response.
