{
  "title": "MCP Client and Server Version Interoperability Matrix",
  "schemaVersion": "1.0",
  "researchFreeze": "2026-08-26",
  "protocolRevision": "2026-07-28",
  "limitation": "Documentation establishes expected paths; production compatibility still requires wire-level testing.",
  "count": 12,
  "records": [
    {
      "id": "R7-INT01",
      "scenario": "Modern client ↔ modern server",
      "expectedPath": "server/discover or pin; self-describing requests",
      "likelyOutcome": "Works if a shared 2026 revision, transport, auth and required capabilities exist",
      "failureMode": "Unsupported version, missing capability, auth or extension mismatch",
      "recommendedTest": "Discover; invoke tools/list; verify result envelope and caching fields",
      "packageSourceIds": [
        "S004",
        "S005",
        "S053",
        "S056"
      ],
      "sourceIds": [
        "S056",
        "S127",
        "S253",
        "S166"
      ]
    },
    {
      "id": "R7-INT02",
      "scenario": "Modern auto client ↔ legacy handshake server",
      "expectedPath": "server/discover probe fails or is classified as legacy; client falls back to initialize",
      "likelyOutcome": "Works if client implements fallback and shares an older revision",
      "failureMode": "Probe timeout, stdio process behavior, no shared legacy version",
      "recommendedTest": "Exercise HTTP and stdio separately; record negotiated version",
      "packageSourceIds": [
        "S053",
        "S056"
      ],
      "sourceIds": [
        "S253",
        "S166"
      ]
    },
    {
      "id": "R7-INT03",
      "scenario": "Modern pinned client ↔ legacy-only server",
      "expectedPath": "No legacy fallback",
      "likelyOutcome": "Fails by design",
      "failureMode": "Era/version negotiation failure",
      "recommendedTest": "Confirm typed failure and no accidental initialize fallback",
      "packageSourceIds": [
        "S053",
        "S054",
        "S056"
      ],
      "sourceIds": [
        "S253",
        "S168",
        "S166"
      ]
    },
    {
      "id": "R7-INT04",
      "scenario": "Legacy client ↔ dual-era server",
      "expectedPath": "initialize without modern version envelope; server routes to legacy transport",
      "likelyOutcome": "Works, often with session/sticky-routing cost",
      "failureMode": "Server disabled legacy path, no shared revision, lost session routing",
      "recommendedTest": "Initialize; preserve Mcp-Session-Id; test multiple workers",
      "packageSourceIds": [
        "S057"
      ],
      "sourceIds": [
        "S323"
      ]
    },
    {
      "id": "R7-INT05",
      "scenario": "Legacy client ↔ modern-only server",
      "expectedPath": "Client sends initialize; server rejects unsupported method/era",
      "likelyOutcome": "Fails unless a compatibility layer is present",
      "failureMode": "Method not supported or no shared protocol version",
      "recommendedTest": "Explicit modern-only configuration and expected error",
      "packageSourceIds": [
        "S053",
        "S054"
      ],
      "sourceIds": [
        "S253",
        "S168"
      ]
    },
    {
      "id": "R7-INT06",
      "scenario": "Same revision, required capability missing",
      "expectedPath": "Wire negotiation succeeds",
      "likelyOutcome": "Partial interoperability only",
      "failureMode": "Host expects resources/prompts/elicitation/tasks not offered by server/client",
      "recommendedTest": "Compare capabilities and method-level support",
      "packageSourceIds": [
        "S003",
        "S005",
        "S050"
      ],
      "sourceIds": [
        "S121",
        "S127",
        "S073"
      ]
    },
    {
      "id": "R7-INT07",
      "scenario": "Same revision, transport mismatch",
      "expectedPath": "No connection",
      "likelyOutcome": "Fails before protocol exchange",
      "failureMode": "Client supports stdio only while server is remote HTTP, or vice versa",
      "recommendedTest": "Enumerate transport matrix before capability tests",
      "packageSourceIds": [
        "S007",
        "S008",
        "S009"
      ],
      "sourceIds": [
        "S057",
        "S132",
        "S131"
      ]
    },
    {
      "id": "R7-INT08",
      "scenario": "Same revision, authorization mismatch",
      "expectedPath": "HTTP/auth layer rejects or cannot complete discovery",
      "likelyOutcome": "Fails despite wire compatibility",
      "failureMode": "Issuer, client registration, scopes, token audience or redirect behavior",
      "recommendedTest": "OAuth metadata, scope step-up, token audience and issuer tests",
      "packageSourceIds": [
        "S010"
      ],
      "sourceIds": [
        "S133"
      ]
    },
    {
      "id": "R7-INT09",
      "scenario": "Core-compatible peers, extension mismatch",
      "expectedPath": "Core calls work; extension negotiation absent or rejected",
      "likelyOutcome": "Partial interoperability",
      "failureMode": "Apps/Tasks extension unsupported by one side",
      "recommendedTest": "Negotiate extension identifiers separately from core version",
      "packageSourceIds": [
        "S024",
        "S025"
      ],
      "sourceIds": [
        "S137",
        "S318"
      ]
    },
    {
      "id": "R7-INT10",
      "scenario": "Modern client ↔ dual-era server over stdio",
      "expectedPath": "SDK-dependent probe strategy; some use disposable sibling process",
      "likelyOutcome": "Works when client protects the session child from a pre-initialize probe",
      "failureMode": "Legacy server exits or hangs on unknown pre-initialize request",
      "recommendedTest": "Test process lifetime, timeout and stderr behavior",
      "packageSourceIds": [
        "S053"
      ],
      "sourceIds": [
        "S253"
      ]
    },
    {
      "id": "R7-INT11",
      "scenario": "Dual-era server behind multiple HTTP workers",
      "expectedPath": "Modern requests any worker; legacy sessions require stickiness unless stateless legacy mode",
      "likelyOutcome": "Mixed topology works with explicit routing policy",
      "failureMode": "Legacy Mcp-Session-Id reaches wrong worker",
      "recommendedTest": "Load-balanced reconnect and session-affinity tests",
      "packageSourceIds": [
        "S057"
      ],
      "sourceIds": [
        "S323"
      ]
    },
    {
      "id": "R7-INT12",
      "scenario": "Same protocol version, host behavior differs",
      "expectedPath": "Both hosts connect",
      "likelyOutcome": "Different tool filtering, approval, context, errors and rendering",
      "failureMode": "Assuming wire compatibility implies identical user experience",
      "recommendedTest": "Cross-host scenario suite and screenshots",
      "packageSourceIds": [
        "S073",
        "S075",
        "S077",
        "S078",
        "S081"
      ],
      "sourceIds": [
        "S145",
        "S140",
        "S141",
        "S265",
        "S274"
      ]
    }
  ]
}