<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 820" width="900" height="820" font-family="Helvetica, Arial, sans-serif">
  <defs>
    <linearGradient id="mcpGrad" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:#E8EAF6"/>
      <stop offset="100%" style="stop-color:#C5CAE9"/>
    </linearGradient>
    <linearGradient id="agentGrad" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:#F3E5F5"/>
      <stop offset="100%" style="stop-color:#E1BEE7"/>
    </linearGradient>
    <linearGradient id="engineGrad" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:#E0F2F1"/>
      <stop offset="100%" style="stop-color:#B2DFDB"/>
    </linearGradient>
    <filter id="shadow" x="-4%" y="-4%" width="110%" height="115%">
      <feDropShadow dx="2" dy="2" stdDeviation="2.5" flood-color="#000" flood-opacity="0.15"/>
    </filter>
    <marker id="arr-p" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto" markerUnits="strokeWidth">
      <polygon points="0 0,8 3,0 6" fill="#6A1B9A"/>
    </marker>
    <marker id="arr-pr" markerWidth="8" markerHeight="6" refX="1" refY="3" orient="auto" markerUnits="strokeWidth">
      <polygon points="8 0,0 3,8 6" fill="#6A1B9A"/>
    </marker>
    <marker id="arr-i" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto" markerUnits="strokeWidth">
      <polygon points="0 0,8 3,0 6" fill="#1A237E"/>
    </marker>
    <marker id="arr-ir" markerWidth="8" markerHeight="6" refX="1" refY="3" orient="auto" markerUnits="strokeWidth">
      <polygon points="8 0,0 3,8 6" fill="#1A237E"/>
    </marker>
  </defs>

  <!-- Background -->
  <rect width="900" height="820" fill="#FAFAFA" rx="6"/>

  <!-- TITLE -->
  <text x="450" y="28" text-anchor="middle" font-size="18" font-weight="bold" fill="#1A237E">MCP as the Agentic Bridge — AI-Enabled Process Collaboration</text>
  <text x="450" y="48" text-anchor="middle" font-size="12" fill="#666" font-style="italic">How Model Context Protocol transforms process engines into AI-native orchestration infrastructure</text>

  <!-- ====== TOP LAYER: AI AGENT ARCHITECTURE ====== -->
  <rect x="20" y="62" width="860" height="172" rx="8" fill="url(#agentGrad)" stroke="#6A1B9A" stroke-width="2.5" filter="url(#shadow)"/>
  <text x="450" y="83" text-anchor="middle" font-size="15" font-weight="bold" fill="#4A148C">Inside the AI-Enabled Process Agent</text>
  <line x1="36" y1="91" x2="864" y2="91" stroke="#6A1B9A" stroke-width="0.6" opacity="0.4"/>

  <!-- Inner Box 1: LLM Reasoning Core -->
  <rect x="36" y="99" width="258" height="124" rx="6" fill="#fff" stroke="#7B1FA2" stroke-width="1.5" opacity="0.95"/>
  <text x="165" y="118" text-anchor="middle" font-size="14" font-weight="bold" fill="#6A1B9A">LLM Reasoning Core</text>
  <line x1="48" y1="125" x2="282" y2="125" stroke="#CE93D8" stroke-width="0.5"/>
  <text font-size="12" fill="#333">
    <tspan x="48" y="141">&#x2022; Natural language understanding</tspan>
    <tspan x="48" dy="16">&#x2022; Multi-step planning</tspan>
    <tspan x="48" dy="16">&#x2022; Context-aware decisions</tspan>
    <tspan x="48" dy="16">&#x2022; Domain-specific inference</tspan>
  </text>

  <!-- Inner Box 2: Domain Ontology -->
  <rect x="310" y="99" width="258" height="124" rx="6" fill="#fff" stroke="#00897B" stroke-width="1.5" opacity="0.95"/>
  <text x="439" y="118" text-anchor="middle" font-size="14" font-weight="bold" fill="#00695C">Domain Ontology</text>
  <line x1="322" y1="125" x2="556" y2="125" stroke="#80CBC4" stroke-width="0.5"/>
  <text font-size="12" fill="#333">
    <tspan x="322" y="141">&#x2022; Shared vocabulary contracts</tspan>
    <tspan x="322" dy="16">&#x2022; SALT / MUCC / ICS semantics</tspan>
    <tspan x="322" dy="16">&#x2022; Context-dependent meaning</tspan>
    <tspan x="322" dy="16">&#x2022; Cross-process interoperability</tspan>
  </text>

  <!-- Inner Box 3: MCP Client Interface -->
  <rect x="584" y="99" width="280" height="124" rx="6" fill="#fff" stroke="#283593" stroke-width="1.5" opacity="0.95"/>
  <text x="724" y="118" text-anchor="middle" font-size="14" font-weight="bold" fill="#1A237E">MCP Client Interface</text>
  <line x1="596" y1="125" x2="852" y2="125" stroke="#9FA8DA" stroke-width="0.5"/>
  <text font-size="12" fill="#333">
    <tspan x="596" y="141">&#x2022; Dynamic tool discovery</tspan>
    <tspan x="596" dy="16">&#x2022; Schema-guided invocation</tspan>
    <tspan x="596" dy="16">&#x2022; Authorized operations only</tspan>
    <tspan x="596" dy="16">&#x2022; JSON-RPC 2.0 over stdio / SSE</tspan>
  </text>

  <!-- Connecting arrows: Agent → MCP Bridge (bidirectional) -->
  <line x1="165" y1="234" x2="165" y2="268" stroke="#6A1B9A" stroke-width="2.5" marker-end="url(#arr-p)" marker-start="url(#arr-pr)"/>
  <line x1="450" y1="234" x2="450" y2="268" stroke="#6A1B9A" stroke-width="2.5" marker-end="url(#arr-p)" marker-start="url(#arr-pr)"/>
  <line x1="724" y1="234" x2="724" y2="268" stroke="#6A1B9A" stroke-width="2.5" marker-end="url(#arr-p)" marker-start="url(#arr-pr)"/>

  <!-- Arrow labels -->
  <rect x="116" y="243" width="98" height="16" rx="3" fill="#fff" opacity="0.88"/>
  <text x="165" y="255" text-anchor="middle" font-size="10" font-weight="bold" fill="#6A1B9A">reasons about</text>
  <rect x="404" y="243" width="92" height="16" rx="3" fill="#fff" opacity="0.88"/>
  <text x="450" y="255" text-anchor="middle" font-size="10" font-weight="bold" fill="#6A1B9A">interprets as</text>
  <rect x="690" y="243" width="68" height="16" rx="3" fill="#fff" opacity="0.88"/>
  <text x="724" y="255" text-anchor="middle" font-size="10" font-weight="bold" fill="#6A1B9A">invokes</text>

  <!-- ====== MIDDLE: MCP PROTOCOL BRIDGE ====== -->
  <rect x="20" y="268" width="860" height="92" rx="6" fill="url(#mcpGrad)" stroke="#1A237E" stroke-width="3" filter="url(#shadow)"/>
  <text x="450" y="292" text-anchor="middle" font-size="16" font-weight="bold" fill="#1A237E">MCP PROTOCOL BRIDGE  &#x2014;  CAMUNDA 8.9 GATEWAY</text>

  <!-- 4 Pillar dividers -->
  <line x1="235" y1="300" x2="235" y2="352" stroke="#1A237E" stroke-width="0.8" opacity="0.3"/>
  <line x1="450" y1="300" x2="450" y2="352" stroke="#1A237E" stroke-width="0.8" opacity="0.3"/>
  <line x1="665" y1="300" x2="665" y2="352" stroke="#1A237E" stroke-width="0.8" opacity="0.3"/>

  <!-- Pillar 1: DISCOVER -->
  <text x="127" y="318" text-anchor="middle" font-size="13" font-weight="bold" fill="#1A237E">DISCOVER</text>
  <text x="127" y="334" text-anchor="middle" font-size="11" fill="#333">searchProcessInstances</text>
  <text x="127" y="348" text-anchor="middle" font-size="11" fill="#333">Process Definition Tools</text>

  <!-- Pillar 2: GOVERN -->
  <text x="342" y="318" text-anchor="middle" font-size="13" font-weight="bold" fill="#1A237E">GOVERN</text>
  <text x="342" y="334" text-anchor="middle" font-size="11" fill="#333">Schema-as-Governance</text>
  <text x="342" y="348" text-anchor="middle" font-size="11" fill="#333">Role-based Authorization</text>

  <!-- Pillar 3: ACT -->
  <text x="557" y="318" text-anchor="middle" font-size="13" font-weight="bold" fill="#1A237E">ACT</text>
  <text x="557" y="334" text-anchor="middle" font-size="11" fill="#333">writeVariable</text>
  <text x="557" y="348" text-anchor="middle" font-size="11" fill="#333">createProcessInstance</text>

  <!-- Pillar 4: OBSERVE -->
  <text x="772" y="318" text-anchor="middle" font-size="13" font-weight="bold" fill="#1A237E">OBSERVE</text>
  <text x="772" y="334" text-anchor="middle" font-size="11" fill="#333">Conditional Events</text>
  <text x="772" y="348" text-anchor="middle" font-size="11" fill="#333">Cluster Variables</text>

  <!-- Connecting arrows: MCP Bridge → Engine (bidirectional) -->
  <line x1="165" y1="360" x2="165" y2="394" stroke="#1A237E" stroke-width="2.5" marker-end="url(#arr-i)" marker-start="url(#arr-ir)"/>
  <line x1="450" y1="360" x2="450" y2="394" stroke="#1A237E" stroke-width="2.5" marker-end="url(#arr-i)" marker-start="url(#arr-ir)"/>
  <line x1="724" y1="360" x2="724" y2="394" stroke="#1A237E" stroke-width="2.5" marker-end="url(#arr-i)" marker-start="url(#arr-ir)"/>

  <!-- ====== BOTTOM LAYER: PROCESS ENGINE ====== -->
  <rect x="20" y="394" width="860" height="122" rx="8" fill="url(#engineGrad)" stroke="#00695C" stroke-width="2.5" filter="url(#shadow)"/>
  <text x="450" y="415" text-anchor="middle" font-size="15" font-weight="bold" fill="#004D40">Camunda 8.9 Process Engine  &#x2014;  Cluster State</text>
  <line x1="36" y1="423" x2="864" y2="423" stroke="#00695C" stroke-width="0.6" opacity="0.4"/>

  <!-- Quadrant 1: Running Instances -->
  <rect x="36" y="431" width="194" height="72" rx="5" fill="#fff" stroke="#00897B" stroke-width="1" opacity="0.92"/>
  <text x="133" y="451" text-anchor="middle" font-size="12" font-weight="bold" fill="#00695C">Running Instances</text>
  <text font-size="11" fill="#444">
    <tspan x="48" y="467">All active workflows</tspan>
    <tspan x="48" dy="14">across the cluster</tspan>
  </text>

  <!-- Quadrant 2: BPMN Definitions -->
  <rect x="246" y="431" width="194" height="72" rx="5" fill="#fff" stroke="#00897B" stroke-width="1" opacity="0.92"/>
  <text x="343" y="451" text-anchor="middle" font-size="12" font-weight="bold" fill="#00695C">BPMN Definitions</text>
  <text font-size="11" fill="#444">
    <tspan x="258" y="467">Deployed process models</tspan>
    <tspan x="258" dy="14">available for discovery</tspan>
  </text>

  <!-- Quadrant 3: Cluster Variables -->
  <rect x="456" y="431" width="194" height="72" rx="5" fill="#fff" stroke="#00897B" stroke-width="1" opacity="0.92"/>
  <text x="553" y="451" text-anchor="middle" font-size="12" font-weight="bold" fill="#00695C">Cluster Variables</text>
  <text font-size="11" fill="#444">
    <tspan x="468" y="467">Shared state readable</tspan>
    <tspan x="468" dy="14">by any process instance</tspan>
  </text>

  <!-- Quadrant 4: Authorization -->
  <rect x="666" y="431" width="198" height="72" rx="5" fill="#fff" stroke="#00897B" stroke-width="1" opacity="0.92"/>
  <text x="765" y="451" text-anchor="middle" font-size="12" font-weight="bold" fill="#00695C">Authorization</text>
  <text font-size="11" fill="#444">
    <tspan x="678" y="467">Role-based access &#x2014;</tspan>
    <tspan x="678" dy="14">same rules as human ops</tspan>
  </text>

  <!-- ====== CALLOUT 1: THE AGENTIC SHIFT ====== -->
  <rect x="20" y="536" width="415" height="138" rx="7" fill="#FFF8E1" stroke="#F57F17" stroke-width="2" stroke-dasharray="5 4"/>
  <text x="38" y="558" font-size="14" font-weight="bold" fill="#E65100">The Agentic Shift</text>
  <line x1="38" y1="566" x2="419" y2="566" stroke="#F57F17" stroke-width="0.5" opacity="0.5"/>
  <text font-size="12" fill="#333">
    <tspan x="38" y="582" font-weight="bold" fill="#831311">Before MCP:</tspan>
    <tspan x="38" dy="15">Human coordinator fills the gap between processes</tspan>
    <tspan x="38" dy="15">Phone calls, spreadsheets, undocumented decisions</tspan>
    <tspan x="38" dy="21" font-weight="bold" fill="#205022">With MCP + AI Agents:</tspan>
    <tspan x="38" dy="15">Agents discover, reason about, and operate across</tspan>
    <tspan x="38" dy="15">process boundaries through a governed protocol</tspan>
  </text>

  <!-- ====== CALLOUT 2: RESEARCH ECOSYSTEM ====== -->
  <rect x="462" y="536" width="418" height="138" rx="7" fill="#E8F5E9" stroke="#2E7D32" stroke-width="2" stroke-dasharray="5 4"/>
  <text x="480" y="558" font-size="14" font-weight="bold" fill="#1B5E20">Research Ecosystem (2026)</text>
  <line x1="480" y1="566" x2="864" y2="566" stroke="#2E7D32" stroke-width="0.5" opacity="0.5"/>
  <text font-size="12" fill="#333">
    <tspan x="480" y="582">Srinivasan &#x2014; MCP production design patterns</tspan>
    <tspan x="480" dy="15">Zhu &amp; Wang &#x2014; Trust-as-a-Service via MCP agentic AI</tspan>
    <tspan x="480" dy="15">Schlapbach (SBB) &#x2014; Schema-guided dialogue + MCP</tspan>
    <tspan x="480" dy="15">Dobriy et al. &#x2014; SPARQL-MCP agents on knowledge graphs</tspan>
    <tspan x="480" dy="15">Stein &#x2014; 177K MCP tools empirical study</tspan>
    <tspan x="480" dy="15">Stratis &#x2014; <tspan font-style="italic">AI Agents with MCP</tspan> (O&#x2019;Reilly, Aug 2026)</tspan>
  </text>

  <!-- ====== VERTICAL FLOW ANNOTATION (left side) ====== -->
  <text transform="translate(12,420) rotate(-90)" text-anchor="middle" font-size="11" fill="#999" font-style="italic">Agent &#x2192; Protocol &#x2192; Engine</text>

  <!-- VERTICAL FLOW ANNOTATION (right side) -->
  <text transform="translate(893,420) rotate(-90)" text-anchor="middle" font-size="11" fill="#999" font-style="italic">State &#x2192; Schema &#x2192; Reasoning</text>

  <!-- ====== FOOTER ====== -->
  <text x="450" y="770" text-anchor="middle" font-size="11" fill="#666" font-style="italic">Three layers: AI reasoning (top) flows through MCP (middle) to reach process engine state (bottom) &#x2014; and back</text>
  <text x="450" y="810" text-anchor="middle" font-size="10" fill="#999">Figure 2 &#x2014; MCP as the Agentic Bridge: AI-Enabled Process Collaboration  |  S7-MCI  |  April 2026</text>
</svg>
