{
  "title": "MCP Apps Visual Specifications",
  "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": 18,
  "records": [
    {
      "Visual ID": "V01",
      "Title": "Complete MCP Apps Architecture",
      "Purpose": "Show Server, Host, Model, AppBridge, sandboxed View and backing systems.",
      "Underlying data": "Stable 2026-01-26 architecture",
      "Protocol/extension version": "Stable 2026-01-26 architecture",
      "Source IDs": "S004 S006 S008",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "Complete MCP Apps Architecture, current through August 26, 2026.",
      "Accessible alt text": "Show Server, Host, Model, AppBridge, sandboxed View and backing systems.",
      "id": "R9-V01",
      "packageVisualId": "V01",
      "packageSourceIds": [
        "S004",
        "S006",
        "S008"
      ],
      "sourceIds": [
        "S390",
        "S136",
        "S393"
      ],
      "alt": "Architecture showing an MCP server exposing a tool and UI resource to an AI host, which renders the app in a sandboxed View through AppBridge while mediating model, user, and backing-system access.",
      "packageAlt": "Show Server, Host, Model, AppBridge, sandboxed View and backing systems.",
      "publicationStatus": "implemented",
      "asset": "/visuals/mcp-apps-architecture.svg"
    },
    {
      "Visual ID": "V02",
      "Title": "Tool-to-UI Resource Linkage",
      "Purpose": "Show tools/list metadata pointing to ui:// resource and resources/read.",
      "Underlying data": "Stable linkage",
      "Protocol/extension version": "Stable linkage",
      "Source IDs": "S004",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "Tool-to-UI Resource Linkage, current through August 26, 2026.",
      "Accessible alt text": "Show tools/list metadata pointing to ui:// resource and resources/read.",
      "id": "R9-V02",
      "packageVisualId": "V02",
      "packageSourceIds": [
        "S004"
      ],
      "sourceIds": [
        "S390"
      ],
      "alt": "Show tools/list metadata pointing to ui:// resource and resources/read.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V03",
      "Title": "MCP App Rendering Lifecycle",
      "Purpose": "Sequence from tool discovery through teardown.",
      "Underlying data": "Stable lifecycle",
      "Protocol/extension version": "Stable lifecycle",
      "Source IDs": "S004",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "MCP App Rendering Lifecycle, current through August 26, 2026.",
      "Accessible alt text": "Sequence from tool discovery through teardown.",
      "id": "R9-V03",
      "packageVisualId": "V03",
      "packageSourceIds": [
        "S004"
      ],
      "sourceIds": [
        "S390"
      ],
      "alt": "Sequence from tool discovery through teardown.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V04",
      "Title": "App–Host postMessage Bridge",
      "Purpose": "Explain JSON-RPC over postMessage and source validation.",
      "Underlying data": "Stable transport",
      "Protocol/extension version": "Stable transport",
      "Source IDs": "S004 S015 S061",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "App–Host postMessage Bridge, current through August 26, 2026.",
      "Accessible alt text": "Explain JSON-RPC over postMessage and source validation.",
      "id": "R9-V04",
      "packageVisualId": "V04",
      "packageSourceIds": [
        "S004",
        "S015",
        "S061"
      ],
      "sourceIds": [
        "S390",
        "S400",
        "S437"
      ],
      "alt": "Explain JSON-RPC over postMessage and source validation.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V05",
      "Title": "UI-Initiated Tool Call",
      "Purpose": "Show user click, App request, Host policy, MCP call and result.",
      "Underlying data": "Stable tools/call bridge",
      "Protocol/extension version": "Stable tools/call bridge",
      "Source IDs": "S004",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "UI-Initiated Tool Call, current through August 26, 2026.",
      "Accessible alt text": "Show user click, App request, Host policy, MCP call and result.",
      "id": "R9-V05",
      "packageVisualId": "V05",
      "packageSourceIds": [
        "S004"
      ],
      "sourceIds": [
        "S390"
      ],
      "alt": "Show user click, App request, Host policy, MCP call and result.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V06",
      "Title": "Progressive Enhancement",
      "Purpose": "Compare Apps-capable and non-Apps hosts.",
      "Underlying data": "Stable design principle",
      "Protocol/extension version": "Stable design principle",
      "Source IDs": "S004 S008",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "Progressive Enhancement, current through August 26, 2026.",
      "Accessible alt text": "Compare Apps-capable and non-Apps hosts.",
      "id": "R9-V06",
      "packageVisualId": "V06",
      "packageSourceIds": [
        "S004",
        "S008"
      ],
      "sourceIds": [
        "S390",
        "S393"
      ],
      "alt": "Compare Apps-capable and non-Apps hosts.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V07",
      "Title": "Sandboxed Security Boundary",
      "Purpose": "Map DOM, storage, cookies, CSP, permissions and server authority.",
      "Underlying data": "Stable security model",
      "Protocol/extension version": "Stable security model",
      "Source IDs": "S004 S060 S064",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "Sandboxed Security Boundary, current through August 26, 2026.",
      "Accessible alt text": "Map DOM, storage, cookies, CSP, permissions and server authority.",
      "id": "R9-V07",
      "packageVisualId": "V07",
      "packageSourceIds": [
        "S004",
        "S060",
        "S064"
      ],
      "sourceIds": [
        "S390",
        "S436",
        "S440"
      ],
      "alt": "Security boundary showing a sandboxed MCP App View constrained by CSP, CORS, permission policy, postMessage validation, host mediation, and independent server-side authorization.",
      "packageAlt": "Map DOM, storage, cookies, CSP, permissions and server authority.",
      "publicationStatus": "implemented",
      "asset": "/visuals/mcp-apps-security-boundary.svg"
    },
    {
      "Visual ID": "V08",
      "Title": "CSP vs CORS",
      "Purpose": "Show App request passing CSP but failing or succeeding CORS.",
      "Underlying data": "Web-platform controls",
      "Protocol/extension version": "Web-platform controls",
      "Source IDs": "S010 S062 S063",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "CSP vs CORS, current through August 26, 2026.",
      "Accessible alt text": "Show App request passing CSP but failing or succeeding CORS.",
      "id": "R9-V08",
      "packageVisualId": "V08",
      "packageSourceIds": [
        "S010",
        "S062",
        "S063"
      ],
      "sourceIds": [
        "S395",
        "S438",
        "S439"
      ],
      "alt": "Show App request passing CSP but failing or succeeding CORS.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V09",
      "Title": "Permissions Decision Flow",
      "Purpose": "App declaration → host policy → browser prompt → user decision.",
      "Underlying data": "Stable permissions metadata",
      "Protocol/extension version": "Stable permissions metadata",
      "Source IDs": "S004 S066",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "Permissions Decision Flow, current through August 26, 2026.",
      "Accessible alt text": "App declaration → host policy → browser prompt → user decision.",
      "id": "R9-V09",
      "packageVisualId": "V09",
      "packageSourceIds": [
        "S004",
        "S066"
      ],
      "sourceIds": [
        "S390",
        "S442"
      ],
      "alt": "App declaration → host policy → browser prompt → user decision.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V10",
      "Title": "Display Modes",
      "Purpose": "Compare inline, fullscreen and PiP with host control.",
      "Underlying data": "Stable 2026-01-26",
      "Protocol/extension version": "Stable 2026-01-26",
      "Source IDs": "S004 S021",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "Display Modes, current through August 26, 2026.",
      "Accessible alt text": "Compare inline, fullscreen and PiP with host control.",
      "id": "R9-V10",
      "packageVisualId": "V10",
      "packageSourceIds": [
        "S004",
        "S021"
      ],
      "sourceIds": [
        "S390",
        "S406"
      ],
      "alt": "Compare inline, fullscreen and PiP with host control.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V11",
      "Title": "MCP Apps History Timeline",
      "Purpose": "Proposal, repo, stable launch, SDK releases and current issues.",
      "Underlying data": "2025-2026 chronology",
      "Protocol/extension version": "2025-2026 chronology",
      "Source IDs": "S001 S002 S017 S020",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "MCP Apps History Timeline, current through August 26, 2026.",
      "Accessible alt text": "Proposal, repo, stable launch, SDK releases and current issues.",
      "id": "R9-V11",
      "packageVisualId": "V11",
      "packageSourceIds": [
        "S001",
        "S002",
        "S017",
        "S020"
      ],
      "sourceIds": [
        "S388",
        "S059",
        "S402",
        "S405"
      ],
      "alt": "Proposal, repo, stable launch, SDK releases and current issues.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V12",
      "Title": "MCP Apps vs MCP-UI",
      "Purpose": "Show historical influence and current implementation relationship.",
      "Underlying data": "Historical/current",
      "Protocol/extension version": "Historical/current",
      "Source IDs": "S001 S032 S033",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "MCP Apps vs MCP-UI, current through August 26, 2026.",
      "Accessible alt text": "Show historical influence and current implementation relationship.",
      "id": "R9-V12",
      "packageVisualId": "V12",
      "packageSourceIds": [
        "S001",
        "S032",
        "S033"
      ],
      "sourceIds": [
        "S388",
        "S412",
        "S413"
      ],
      "alt": "Show historical influence and current implementation relationship.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V13",
      "Title": "MCP Apps vs OpenAI Apps SDK",
      "Purpose": "Compare standard extension and product SDK.",
      "Underlying data": "Historical/current",
      "Protocol/extension version": "Historical/current",
      "Source IDs": "S004 S034 S035",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "MCP Apps vs OpenAI Apps SDK, current through August 26, 2026.",
      "Accessible alt text": "Compare standard extension and product SDK.",
      "id": "R9-V13",
      "packageVisualId": "V13",
      "packageSourceIds": [
        "S004",
        "S034",
        "S035"
      ],
      "sourceIds": [
        "S390",
        "S414",
        "S415"
      ],
      "alt": "Compare standard extension and product SDK.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V14",
      "Title": "MCP App vs Web App vs Plugin",
      "Purpose": "Compare container, authority, communication and portability.",
      "Underlying data": "Conceptual comparison",
      "Protocol/extension version": "Conceptual comparison",
      "Source IDs": "S004 S060",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "MCP App vs Web App vs Plugin, current through August 26, 2026.",
      "Accessible alt text": "Compare container, authority, communication and portability.",
      "id": "R9-V14",
      "packageVisualId": "V14",
      "packageSourceIds": [
        "S004",
        "S060"
      ],
      "sourceIds": [
        "S390",
        "S436"
      ],
      "alt": "Compare container, authority, communication and portability.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V15",
      "Title": "Client Support Heat Map",
      "Purpose": "Show verified Apps hosts and unverified/partial features by date.",
      "Underlying data": "Current snapshot",
      "Protocol/extension version": "Current snapshot",
      "Source IDs": "S007 S041 S044 S046 S048 S081",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Current product-support visuals require live recheck.",
      "Caption": "Client Support Heat Map, current through August 26, 2026.",
      "Accessible alt text": "Show verified Apps hosts and unverified/partial features by date.",
      "id": "R9-V15",
      "packageVisualId": "V15",
      "packageSourceIds": [
        "S007",
        "S041",
        "S044",
        "S046",
        "S048",
        "S081"
      ],
      "sourceIds": [
        "S392",
        "S420",
        "S143",
        "S422",
        "S424",
        "S269"
      ],
      "alt": "Show verified Apps hosts and unverified/partial features by date.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V16",
      "Title": "Analytics Dashboard Case Study",
      "Purpose": "Data tool returns interactive filters and updates context.",
      "Underlying data": "Use case",
      "Protocol/extension version": "Use case",
      "Source IDs": "S006 S041",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "Analytics Dashboard Case Study, current through August 26, 2026.",
      "Accessible alt text": "Data tool returns interactive filters and updates context.",
      "id": "R9-V16",
      "packageVisualId": "V16",
      "packageSourceIds": [
        "S006",
        "S041"
      ],
      "sourceIds": [
        "S136",
        "S420"
      ],
      "alt": "Data tool returns interactive filters and updates context.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V17",
      "Title": "Document Review Workflow",
      "Purpose": "PDF/doc resource, selection, app-only tools and concise model context.",
      "Underlying data": "Reference/use case",
      "Protocol/extension version": "Reference/use case",
      "Source IDs": "S022 S006",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "Document Review Workflow, current through August 26, 2026.",
      "Accessible alt text": "PDF/doc resource, selection, app-only tools and concise model context.",
      "id": "R9-V17",
      "packageVisualId": "V17",
      "packageSourceIds": [
        "S022",
        "S006"
      ],
      "sourceIds": [
        "S407",
        "S136"
      ],
      "alt": "PDF/doc resource, selection, app-only tools and concise model context.",
      "publicationStatus": "not-produced"
    },
    {
      "Visual ID": "V18",
      "Title": "Accessibility Responsibility Map",
      "Purpose": "Split focus, keyboard, semantics, announcements and mode transitions across host/App.",
      "Underlying data": "WCAG/APG",
      "Protocol/extension version": "WCAG/APG",
      "Source IDs": "S057 S058 S059 S068",
      "Required labels": "Server; Host; View; user/model boundary as applicable",
      "Uncertainty note": "Separate stable behavior from draft proposals.",
      "Caption": "Accessibility Responsibility Map, current through August 26, 2026.",
      "Accessible alt text": "Split focus, keyboard, semantics, announcements and mode transitions across host/App.",
      "id": "R9-V18",
      "packageVisualId": "V18",
      "packageSourceIds": [
        "S057",
        "S058",
        "S059",
        "S068"
      ],
      "sourceIds": [
        "S433",
        "S434",
        "S435",
        "S444"
      ],
      "alt": "Split focus, keyboard, semantics, announcements and mode transitions across host/App.",
      "publicationStatus": "not-produced"
    }
  ]
}