The json-schema-2020-12 server scenario now exercises three SEP-2106 keyword-preservation checks at 2026-07-28 that fail against the conformance server:
sep-2106-composition-keywords-preserved — "allOf keyword missing from inputSchema"
sep-2106-conditional-keywords-preserved — "Conditional keywords missing (if/then/else)"
sep-2106-anchor-keyword-preserved — "$anchor missing from $defs.address"
The #977 baseline (2026-07-13) recorded this scenario as 4/4 because the run exercised fewer checks; at current main (and at pre-#973 839922d) it is 4/7, so this is a pre-existing gap, not a regression from the 2026-07-16 merges.
The json_schema_2020_12_tool in conformance/src/bin/server.rs declares $schema, $defs, $ref, and additionalProperties, but no allOf/anyOf composition, no if/then/else, and no $anchor inside $defs.address. The checks verify rmcp does not strip these keywords, so the tool's input schema needs to include them (and, if anything in the model layer does strip them, that needs fixing — Tool::input_schema is a raw JsonObject, so this is most likely just the fixture).
Repro:
cargo build -p mcp-conformance
STATELESS=1 PORT=8002 ./target/debug/conformance-server &
npx -y @modelcontextprotocol/conformance@0.2.0-alpha.9 server \
--url http://127.0.0.1:8002/mcp --scenario json-schema-2020-12 --spec-version 2026-07-28
Part of #977.
The
json-schema-2020-12server scenario now exercises three SEP-2106 keyword-preservation checks at 2026-07-28 that fail against the conformance server:sep-2106-composition-keywords-preserved— "allOf keyword missing from inputSchema"sep-2106-conditional-keywords-preserved— "Conditional keywords missing (if/then/else)"sep-2106-anchor-keyword-preserved— "$anchor missing from $defs.address"The #977 baseline (2026-07-13) recorded this scenario as 4/4 because the run exercised fewer checks; at current main (and at pre-#973 839922d) it is 4/7, so this is a pre-existing gap, not a regression from the 2026-07-16 merges.
The
json_schema_2020_12_toolinconformance/src/bin/server.rsdeclares$schema,$defs,$ref, andadditionalProperties, but noallOf/anyOfcomposition, noif/then/else, and no$anchorinside$defs.address. The checks verify rmcp does not strip these keywords, so the tool's input schema needs to include them (and, if anything in the model layer does strip them, that needs fixing —Tool::input_schemais a rawJsonObject, so this is most likely just the fixture).Repro:
cargo build -p mcp-conformance STATELESS=1 PORT=8002 ./target/debug/conformance-server & npx -y @modelcontextprotocol/conformance@0.2.0-alpha.9 server \ --url http://127.0.0.1:8002/mcp --scenario json-schema-2020-12 --spec-version 2026-07-28Part of #977.