{
  "title": "MCP Apps Progressive Enhancement Matrix",
  "schemaVersion": "1.0",
  "researchFreeze": "2026-08-26",
  "protocolRevision": "MCP Apps 2026-01-26 / ext-apps SDK v1.7.5 / MCP core 2026-07-28",
  "sourcePackage": "research/9",
  "integrityNote": "The 93 ordinary archive entries verify. Two self-referential bookkeeping entries have disclosed stale final rows; public corrections do not modify the raw archive.",
  "count": 6,
  "records": [
    {
      "Host condition": "Supports core MCP only",
      "Expected behavior": "Run the tool and display content/structuredContent without rendering the UI resource",
      "Server requirement": "Return a useful non-UI fallback",
      "User consequence": "Task remains possible, but without direct manipulation",
      "Sources": "S004 S006 S008",
      "id": "R9-PROG001",
      "packageSourceIds": [
        "S004",
        "S006",
        "S008"
      ],
      "sourceIds": [
        "S390",
        "S136",
        "S393"
      ]
    },
    {
      "Host condition": "Supports MCP Apps extension",
      "Expected behavior": "Fetch referenced ui:// resource, render the View, deliver tool input/result and retain fallback content",
      "Server requirement": "Advertise extension and link tool metadata correctly",
      "User consequence": "Interactive workflow inside the host",
      "Sources": "S004 S006",
      "id": "R9-PROG002",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Host condition": "Supports Apps but not requested display mode",
      "Expected behavior": "Decline or retain an allowed mode",
      "Server requirement": "Do not assume fullscreen or PiP",
      "User consequence": "UI remains available in a supported mode",
      "Sources": "S004 S021",
      "id": "R9-PROG003",
      "packageSourceIds": [
        "S004",
        "S021"
      ],
      "sourceIds": [
        "S390",
        "S406"
      ]
    },
    {
      "Host condition": "Blocks a requested permission",
      "Expected behavior": "Render without that browser feature",
      "Server requirement": "Feature-detect and provide an alternate path",
      "User consequence": "Reduced functionality rather than silent failure",
      "Sources": "S004 S066",
      "id": "R9-PROG004",
      "packageSourceIds": [
        "S004",
        "S066"
      ],
      "sourceIds": [
        "S390",
        "S442"
      ]
    },
    {
      "Host condition": "Cannot load a declared external origin",
      "Expected behavior": "CSP/CORS error or blocked request",
      "Server requirement": "Bundle assets or declare and configure origins accurately",
      "User consequence": "App may partially render; fallback remains important",
      "Sources": "S010",
      "id": "R9-PROG005",
      "packageSourceIds": [
        "S010"
      ],
      "sourceIds": [
        "S395"
      ]
    },
    {
      "Host condition": "Does not implement draft app-provided tools",
      "Expected behavior": "Ignore or reject draft feature",
      "Server requirement": "Keep stable server tools as the interoperable path",
      "User consequence": "No loss of core stable functionality",
      "Sources": "S005 S079",
      "id": "R9-PROG006",
      "packageSourceIds": [
        "S005",
        "S079"
      ],
      "sourceIds": [
        "S391",
        "S455"
      ]
    }
  ]
}