Protocols¶
Jarvis adopts an open protocol stack to guarantee interoperability with third-party tools, agents and UIs without vendor lock-in.
The three agent protocols¶
| Protocol | Origin | Purpose | Jarvis example |
|---|---|---|---|
| MCP | Anthropic, Dec 2024 | Agent → tool / external resources | the Dev Agent exposes repo.search, gh.create_pr |
| A2A | Google, Apr 2025 (now Linux Foundation) | Agent → agent | the orchestrator delegates to the Medical Agent |
| AG-UI | CopilotKit | Agent → reactive UI | dashboards generated on-the-fly from specs |
Model Context Protocol (MCP)¶
Open standard introduced by Anthropic to let LLMs access external tools and resources in a structured, safe way.
flowchart LR
AGENT[Agent / LLM] -->|MCP request| SERVER[MCP Server]
SERVER --> TOOL1[tool: file_search]
SERVER --> TOOL2[tool: gh.create_pr]
SERVER --> RES1[resource: repo files]
SERVER --> RES2[resource: docs] In Jarvis every specialised agent exposes its own MCP server. Examples:
agents/medical-agent/mcp_server.py→ toolsoura.fetch_sleep,whoop.recovery,fhir.observation_queryagents/scraping-agent/mcp_server.py→ toolscrawl.fetch,firecrawl.crawl,jina.readagents/maker-agent/mcp_server.py→ toolsprinter.start,slicer.slice,blender.export_stl
Apple at WWDC 2025 integrated MCP as the protocol for Siri/App Intents.
Agent-to-Agent (A2A)¶
Standard introduced by Google and later moved under the Linux Foundation for neutrality. Specifies how heterogeneous agents can communicate and delegate tasks.
flowchart LR
ORCH[Orchestrator Agent] -->|A2A delegate| MED[Medical Agent]
ORCH -->|A2A delegate| FIN[Finance Agent]
ORCH -->|A2A delegate| WEB[Scraping Agent]
MED -->|A2A response| ORCH
FIN -->|A2A response| ORCH
WEB -->|A2A response| ORCH LangGraph v1.0 supports A2A natively as transport. Google ADK and Pydantic AI ship A2A SDKs.
Agent-UI Protocol (AG-UI)¶
Lets agents project reactive UIs directly to the frontend, without pre-compiled pages.
In Jarvis: the agent can generate on-the-fly a biometric dashboard widget, a filtered transaction table, a chart — all via AG-UI.
Layered transport stack¶
┌──────────────────────────────────────────────────┐
│ Application protocols │
│ MCP · A2A · AG-UI │
├──────────────────────────────────────────────────┤
│ Transport │
│ HTTPS · WebSocket · gRPC · MQTT │
├──────────────────────────────────────────────────┤
│ Auth & identity │
│ OAuth 2.0 / OIDC · JWT · FIDO2 · passkey │
├──────────────────────────────────────────────────┤
│ Smart-home transport │
│ Matter · Thread · Zigbee · BLE │
├──────────────────────────────────────────────────┤
│ Health interop │
│ HL7 FHIR · SMART on FHIR · IEEE 11073 │
└──────────────────────────────────────────────────┘
Data schemas¶
Conversation turn¶
{
"turn_id": "uuid",
"user_id": "uuid",
"device_id": "uuid",
"timestamp": "2026-05-09T12:00:00Z",
"message": "How long did I sleep yesterday?",
"language": "en",
"context": {
"location": "home",
"modality": "voice",
"active_focus": null
}
}
Device registration¶
{
"device_id": "uuid",
"owner_id": "user_id",
"device_type": "watch",
"model": "PineTime",
"capabilities": ["heartrate", "notifications", "haptic", "wakeword"],
"trust_level": "primary",
"paired_at": "2026-05-09T12:00:00Z"
}
Memory record¶
{
"id": "uuid",
"user_id": "uuid",
"scope": "user|agent|session|org",
"type": "fact|preference|event",
"text": "Birthday: March 15",
"embedding": [0.012, ...],
"metadata": {"source": "conversation", "ttl": null}
}
Federated identity¶
For multi-instance environments (a user with a home server + work server):
- OIDC Federation between instances
- WebAuthn as portable second factor
- Passkeys synced via iCloud Keychain / Google Password Manager