{
  "title": "Local vs Remote MCP Visual Specifications",
  "schemaVersion": "1.0",
  "researchFreeze": "2026-08-26",
  "protocolRevision": "MCP 2026-07-28",
  "sourcePackage": "research/10",
  "integrityNote": "All 108 listed ordinary archive payloads verify. The package contains two incompatible numeric source namespaces; public records preserve an explicit archive namespace and never resolve IDs across families.",
  "evidencePolicy": "Only manually curated build_context source groups appear in sourceIds. Raw row tokens are preserved under archive and are not treated as publication citations.",
  "checkedAt": "2026-08-26",
  "count": 18,
  "records": [
    {
      "Title": "Local MCP Architecture",
      "Purpose": "Show host, client, stdio subprocess, local OS resources and credential boundary.",
      "Underlying data": "Current stdio spec; local product patterns",
      "Protocol version": "2026-07-28",
      "Uncertainty notes": "Label process authority and stderr/stdout separation.",
      "Caption": "A local MCP server launched as a subprocess over stdio.",
      "Accessible alt text": "Diagram showing an AI host launching a local MCP server and reaching files and tools.",
      "id": "R10-VIS001",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 1,
        "sourceIds": [],
        "raw": {
          "Title": "Local MCP Architecture",
          "Purpose": "Show host, client, stdio subprocess, local OS resources and credential boundary.",
          "Underlying data": "Current stdio spec; local product patterns",
          "Protocol version": "2026-07-28",
          "Uncertainty notes": "Label process authority and stderr/stdout separation.",
          "Caption": "A local MCP server launched as a subprocess over stdio.",
          "Accessible alt text": "Diagram showing an AI host launching a local MCP server and reaching files and tools."
        }
      },
      "publicationStatus": "implemented",
      "asset": "/visuals/local-remote-deployment-map.svg",
      "adaptationNote": "The reader diagram adds remote and hybrid panels so deployment boundaries can be compared in one accessible figure."
    },
    {
      "Title": "Remote MCP Architecture",
      "Purpose": "Show HTTPS endpoint, gateway/load balancer, replicas, identity and upstream SaaS.",
      "Underlying data": "Current Streamable HTTP and authorization specs",
      "Protocol version": "2026-07-28",
      "Uncertainty notes": "Do not include Mcp-Session-Id in modern diagram.",
      "Caption": "Modern remote MCP uses independent HTTP requests and ordinary infrastructure.",
      "Accessible alt text": "Diagram of a host connecting through HTTPS and OAuth to replicated MCP servers.",
      "id": "R10-VIS002",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 2,
        "sourceIds": [],
        "raw": {
          "Title": "Remote MCP Architecture",
          "Purpose": "Show HTTPS endpoint, gateway/load balancer, replicas, identity and upstream SaaS.",
          "Underlying data": "Current Streamable HTTP and authorization specs",
          "Protocol version": "2026-07-28",
          "Uncertainty notes": "Do not include Mcp-Session-Id in modern diagram.",
          "Caption": "Modern remote MCP uses independent HTTP requests and ordinary infrastructure.",
          "Accessible alt text": "Diagram of a host connecting through HTTPS and OAuth to replicated MCP servers."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Hybrid Host",
      "Purpose": "One host connected to local files/IDE and remote SaaS servers.",
      "Underlying data": "Host and deployment matrices",
      "Protocol version": "Current",
      "Uncertainty notes": "Mark separate trust zones.",
      "Caption": "A capable host can combine local and remote servers.",
      "Accessible alt text": "Diagram of one AI host connected to both local and remote MCP servers.",
      "id": "R10-VIS003",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 3,
        "sourceIds": [],
        "raw": {
          "Title": "Hybrid Host",
          "Purpose": "One host connected to local files/IDE and remote SaaS servers.",
          "Underlying data": "Host and deployment matrices",
          "Protocol version": "Current",
          "Uncertainty notes": "Mark separate trust zones.",
          "Caption": "A capable host can combine local and remote servers.",
          "Accessible alt text": "Diagram of one AI host connected to both local and remote MCP servers."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "stdio Message Flow",
      "Purpose": "Process spawn, newline messages, stderr logging, cancellation and shutdown.",
      "Underlying data": "S003",
      "Protocol version": "2026-07-28",
      "Uncertainty notes": "No server-to-client JSON-RPC requests in current core.",
      "Caption": "Current stdio lifecycle and framing.",
      "Accessible alt text": "Sequence diagram for stdio MCP messages.",
      "id": "R10-VIS004",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 4,
        "sourceIds": [],
        "raw": {
          "Title": "stdio Message Flow",
          "Purpose": "Process spawn, newline messages, stderr logging, cancellation and shutdown.",
          "Underlying data": "S003",
          "Protocol version": "2026-07-28",
          "Uncertainty notes": "No server-to-client JSON-RPC requests in current core.",
          "Caption": "Current stdio lifecycle and framing.",
          "Accessible alt text": "Sequence diagram for stdio MCP messages."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Streamable HTTP Flow",
      "Purpose": "POST, JSON or SSE, MRTR, subscriptions/listen.",
      "Underlying data": "S004",
      "Protocol version": "2026-07-28",
      "Uncertainty notes": "Distinguish request-scoped from long-lived subscription streams.",
      "Caption": "Current Streamable HTTP message flow.",
      "Accessible alt text": "Sequence diagram for modern Streamable HTTP.",
      "id": "R10-VIS005",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 5,
        "sourceIds": [],
        "raw": {
          "Title": "Streamable HTTP Flow",
          "Purpose": "POST, JSON or SSE, MRTR, subscriptions/listen.",
          "Underlying data": "S004",
          "Protocol version": "2026-07-28",
          "Uncertainty notes": "Distinguish request-scoped from long-lived subscription streams.",
          "Caption": "Current Streamable HTTP message flow.",
          "Accessible alt text": "Sequence diagram for modern Streamable HTTP."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Remote Architecture by Era",
      "Purpose": "Compare 2024 HTTP+SSE, 2025 session Streamable HTTP and 2026 stateless core.",
      "Underlying data": "S009 S010 S004",
      "Protocol version": "2024-2026",
      "Uncertainty notes": "Keep each frozen.",
      "Caption": "Remote MCP architecture changed in three major transport eras.",
      "Accessible alt text": "Timeline comparing three remote MCP architectures.",
      "id": "R10-VIS006",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 6,
        "sourceIds": [],
        "raw": {
          "Title": "Remote Architecture by Era",
          "Purpose": "Compare 2024 HTTP+SSE, 2025 session Streamable HTTP and 2026 stateless core.",
          "Underlying data": "S009 S010 S004",
          "Protocol version": "2024-2026",
          "Uncertainty notes": "Keep each frozen.",
          "Caption": "Remote MCP architecture changed in three major transport eras.",
          "Accessible alt text": "Timeline comparing three remote MCP architectures."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Local Security Boundary",
      "Purpose": "Package/config → process → files/env/network.",
      "Underlying data": "Security matrix",
      "Protocol version": "Current",
      "Uncertainty notes": "Show sandbox as optional control, not guarantee.",
      "Caption": "Local server risk centers on code authority.",
      "Accessible alt text": "Threat diagram for a local MCP process.",
      "id": "R10-VIS007",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 7,
        "sourceIds": [],
        "raw": {
          "Title": "Local Security Boundary",
          "Purpose": "Package/config → process → files/env/network.",
          "Underlying data": "Security matrix",
          "Protocol version": "Current",
          "Uncertainty notes": "Show sandbox as optional control, not guarantee.",
          "Caption": "Local server risk centers on code authority.",
          "Accessible alt text": "Threat diagram for a local MCP process."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Remote Security Boundary",
      "Purpose": "Client/token → endpoint → tenant service → upstream system.",
      "Underlying data": "Authorization and security matrices",
      "Protocol version": "Current",
      "Uncertainty notes": "Show object authorization at upstream.",
      "Caption": "Remote risk centers on identity, tenancy and service operation.",
      "Accessible alt text": "Threat diagram for a remote MCP service.",
      "id": "R10-VIS008",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 8,
        "sourceIds": [],
        "raw": {
          "Title": "Remote Security Boundary",
          "Purpose": "Client/token → endpoint → tenant service → upstream system.",
          "Underlying data": "Authorization and security matrices",
          "Protocol version": "Current",
          "Uncertainty notes": "Show object authorization at upstream.",
          "Caption": "Remote risk centers on identity, tenancy and service operation.",
          "Accessible alt text": "Threat diagram for a remote MCP service."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "OAuth Flow",
      "Purpose": "Protected resource metadata, authorization server, PKCE, token and MCP request.",
      "Underlying data": "S005 S052-S057",
      "Protocol version": "2026-07-28",
      "Uncertainty notes": "OAuth authorizes HTTP; not stdio.",
      "Caption": "Remote delegated authorization flow.",
      "Accessible alt text": "OAuth sequence for an MCP remote server.",
      "id": "R10-VIS009",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 9,
        "sourceIds": [],
        "raw": {
          "Title": "OAuth Flow",
          "Purpose": "Protected resource metadata, authorization server, PKCE, token and MCP request.",
          "Underlying data": "S005 S052-S057",
          "Protocol version": "2026-07-28",
          "Uncertainty notes": "OAuth authorizes HTTP; not stdio.",
          "Caption": "Remote delegated authorization flow.",
          "Accessible alt text": "OAuth sequence for an MCP remote server."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Secret Locations",
      "Purpose": "Map local env/keychain and remote vault/token store.",
      "Underlying data": "Secret matrix",
      "Protocol version": "Current",
      "Uncertainty notes": "Do not include actual secrets.",
      "Caption": "Secret placement differs by deployment.",
      "Accessible alt text": "Diagram showing where credentials are stored in local and remote MCP.",
      "id": "R10-VIS010",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 10,
        "sourceIds": [],
        "raw": {
          "Title": "Secret Locations",
          "Purpose": "Map local env/keychain and remote vault/token store.",
          "Underlying data": "Secret matrix",
          "Protocol version": "Current",
          "Uncertainty notes": "Do not include actual secrets.",
          "Caption": "Secret placement differs by deployment.",
          "Accessible alt text": "Diagram showing where credentials are stored in local and remote MCP."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Single User vs Multi-Tenant",
      "Purpose": "Compare one local process, single-tenant remote and multi-tenant remote.",
      "Underlying data": "Deployment taxonomy",
      "Protocol version": "Current",
      "Uncertainty notes": "Avoid implying all remote is multi-tenant.",
      "Caption": "User population is separate from network location.",
      "Accessible alt text": "Three-column deployment comparison.",
      "id": "R10-VIS011",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 11,
        "sourceIds": [],
        "raw": {
          "Title": "Single User vs Multi-Tenant",
          "Purpose": "Compare one local process, single-tenant remote and multi-tenant remote.",
          "Underlying data": "Deployment taxonomy",
          "Protocol version": "Current",
          "Uncertainty notes": "Avoid implying all remote is multi-tenant.",
          "Caption": "User population is separate from network location.",
          "Accessible alt text": "Three-column deployment comparison."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Enterprise Gateway",
      "Purpose": "Approved servers, identity broker, policy, DLP, audit.",
      "Underlying data": "Enterprise architectures",
      "Protocol version": "Current",
      "Uncertainty notes": "Show gateway cannot replace downstream auth.",
      "Caption": "Gateway centralizes policy but not business authorization.",
      "Accessible alt text": "Enterprise MCP gateway architecture.",
      "id": "R10-VIS012",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 12,
        "sourceIds": [],
        "raw": {
          "Title": "Enterprise Gateway",
          "Purpose": "Approved servers, identity broker, policy, DLP, audit.",
          "Underlying data": "Enterprise architectures",
          "Protocol version": "Current",
          "Uncertainty notes": "Show gateway cannot replace downstream auth.",
          "Caption": "Gateway centralizes policy but not business authorization.",
          "Accessible alt text": "Enterprise MCP gateway architecture."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Serverless Remote MCP",
      "Purpose": "Request routed to function/worker, external state and upstream API.",
      "Underlying data": "Serverless matrix",
      "Protocol version": "2026-07-28",
      "Uncertainty notes": "Show cold start/state externalization.",
      "Caption": "Stateless protocol fits serverless but applications still keep state.",
      "Accessible alt text": "Serverless MCP deployment diagram.",
      "id": "R10-VIS013",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 13,
        "sourceIds": [],
        "raw": {
          "Title": "Serverless Remote MCP",
          "Purpose": "Request routed to function/worker, external state and upstream API.",
          "Underlying data": "Serverless matrix",
          "Protocol version": "2026-07-28",
          "Uncertainty notes": "Show cold start/state externalization.",
          "Caption": "Stateless protocol fits serverless but applications still keep state.",
          "Accessible alt text": "Serverless MCP deployment diagram."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "MCPB Local Distribution",
      "Purpose": "Bundle manifest, install review, config, local stdio process.",
      "Underlying data": "S020 S049",
      "Protocol version": "Current product",
      "Uncertainty notes": "Host-specific distribution, not core protocol.",
      "Caption": "MCPB packages local servers for easier installation.",
      "Accessible alt text": "MCP bundle installation and execution lifecycle.",
      "id": "R10-VIS014",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 14,
        "sourceIds": [],
        "raw": {
          "Title": "MCPB Local Distribution",
          "Purpose": "Bundle manifest, install review, config, local stdio process.",
          "Underlying data": "S020 S049",
          "Protocol version": "Current product",
          "Uncertainty notes": "Host-specific distribution, not core protocol.",
          "Caption": "MCPB packages local servers for easier installation.",
          "Accessible alt text": "MCP bundle installation and execution lifecycle."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Cost Responsibility Map",
      "Purpose": "Place packaging/support on local and hosting/identity/SLO on remote.",
      "Underlying data": "Cost framework",
      "Protocol version": "Current",
      "Uncertainty notes": "No invented dollar amounts.",
      "Caption": "Costs shift rather than disappear.",
      "Accessible alt text": "Cost responsibility comparison for local and remote MCP.",
      "id": "R10-VIS015",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 15,
        "sourceIds": [],
        "raw": {
          "Title": "Cost Responsibility Map",
          "Purpose": "Place packaging/support on local and hosting/identity/SLO on remote.",
          "Underlying data": "Cost framework",
          "Protocol version": "Current",
          "Uncertainty notes": "No invented dollar amounts.",
          "Caption": "Costs shift rather than disappear.",
          "Accessible alt text": "Cost responsibility comparison for local and remote MCP."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Decision Tree",
      "Purpose": "Resource location → host support → users → credentials → availability.",
      "Underlying data": "Decision framework",
      "Protocol version": "Current",
      "Uncertainty notes": "Include hybrid outcome.",
      "Caption": "Choose deployment from constraints, not ideology.",
      "Accessible alt text": "Decision tree for choosing local, remote or hybrid MCP.",
      "id": "R10-VIS016",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 16,
        "sourceIds": [],
        "raw": {
          "Title": "Decision Tree",
          "Purpose": "Resource location → host support → users → credentials → availability.",
          "Underlying data": "Decision framework",
          "Protocol version": "Current",
          "Uncertainty notes": "Include hybrid outcome.",
          "Caption": "Choose deployment from constraints, not ideology.",
          "Accessible alt text": "Decision tree for choosing local, remote or hybrid MCP."
        }
      },
      "publicationStatus": "implemented",
      "asset": "/visuals/local-remote-decision.svg",
      "adaptationNote": "The reader diagram implements the supplied nine-question deployment framework."
    },
    {
      "Title": "Host Support Heat Map",
      "Purpose": "Hosts vs local stdio, remote HTTP, OAuth and private bridge.",
      "Underlying data": "Host compatibility audit",
      "Protocol version": "Snapshot 2026-08-26",
      "Uncertainty notes": "Mark live-check required.",
      "Caption": "Current hosts support different deployment forms.",
      "Accessible alt text": "Heat map of MCP host transport support.",
      "id": "R10-VIS017",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 17,
        "sourceIds": [],
        "raw": {
          "Title": "Host Support Heat Map",
          "Purpose": "Hosts vs local stdio, remote HTTP, OAuth and private bridge.",
          "Underlying data": "Host compatibility audit",
          "Protocol version": "Snapshot 2026-08-26",
          "Uncertainty notes": "Mark live-check required.",
          "Caption": "Current hosts support different deployment forms.",
          "Accessible alt text": "Heat map of MCP host transport support."
        }
      },
      "publicationStatus": "not-produced"
    },
    {
      "Title": "Failure Domains",
      "Purpose": "Local device/process/fleet vs remote service/region/IdP.",
      "Underlying data": "Cost and security matrices",
      "Protocol version": "Current",
      "Uncertainty notes": "Show common-mode vs isolated failures.",
      "Caption": "Deployment changes the failure blast radius.",
      "Accessible alt text": "Diagram comparing local and remote MCP failure domains.",
      "id": "R10-VIS018",
      "sourceIds": [
        "S121",
        "S057",
        "S132",
        "S131",
        "S133"
      ],
      "evidenceStatus": "curated-dataset-level-evidence; not an archive row-level citation mapping",
      "archive": {
        "namespace": "research/10/visual_specifications.json",
        "row": 18,
        "sourceIds": [],
        "raw": {
          "Title": "Failure Domains",
          "Purpose": "Local device/process/fleet vs remote service/region/IdP.",
          "Underlying data": "Cost and security matrices",
          "Protocol version": "Current",
          "Uncertainty notes": "Show common-mode vs isolated failures.",
          "Caption": "Deployment changes the failure blast radius.",
          "Accessible alt text": "Diagram comparing local and remote MCP failure domains."
        }
      },
      "publicationStatus": "not-produced"
    }
  ]
}