{
  "title": "MCP Apps Architecture 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": 9,
  "records": [
    {
      "Component": "User",
      "Primary responsibility": "Interacts with the embedded interface and conversation",
      "Trust boundary": "Human intent and informed consent",
      "Typical data": "Selections, form input, approvals",
      "id": "R9-ARCH001",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Component": "MCP Host",
      "Primary responsibility": "Runs the conversation, model integration, policy, permissions and app container",
      "Trust boundary": "Trusted product boundary",
      "Typical data": "Conversation, host context, tool definitions, authorization state",
      "id": "R9-ARCH002",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Component": "MCP Client",
      "Primary responsibility": "Communicates with the MCP server",
      "Trust boundary": "Protocol boundary",
      "Typical data": "tools/call, resources/read, results and errors",
      "id": "R9-ARCH003",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Component": "MCP Server",
      "Primary responsibility": "Publishes tools and UI resources; executes or delegates operations",
      "Trust boundary": "External code/service boundary",
      "Typical data": "Tool schemas, HTML bundle, structuredContent, application data",
      "id": "R9-ARCH004",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Component": "UI Resource",
      "Primary responsibility": "Supplies the View HTML/JavaScript/CSS",
      "Trust boundary": "Untrusted active content",
      "Typical data": "text/html;profile=mcp-app and _meta.ui policy",
      "id": "R9-ARCH005",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Component": "Sandbox Proxy",
      "Primary responsibility": "Provides an isolated web origin for web hosts when used",
      "Trust boundary": "Host-enforced browser isolation",
      "Typical data": "Sandbox-ready and resource-ready notifications",
      "id": "R9-ARCH006",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Component": "View / iframe",
      "Primary responsibility": "Renders the interface and handles direct user interaction",
      "Trust boundary": "Sandboxed third-party execution",
      "Typical data": "Tool input/result, local UI state, postMessage JSON-RPC",
      "id": "R9-ARCH007",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Component": "AppBridge",
      "Primary responsibility": "Mediates View-to-Host communication and tool proxies",
      "Trust boundary": "Host-side policy enforcement",
      "Typical data": "ui/* methods, tools/call, resources/read",
      "id": "R9-ARCH008",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Component": "Underlying system",
      "Primary responsibility": "Enforces final business permissions and stores data",
      "Trust boundary": "API/database/SaaS security boundary",
      "Typical data": "Records, files, transactions, analytics",
      "id": "R9-ARCH009",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    }
  ]
}