subagentprotocols

.com a2a · mcp · e2m
grounding: CLAUDE.md § A2A integration, § Sister repo: knowledge-engineering, crates/mcp-server

A2A vs. MCP vs. e2m, side by side

These three protocols solve three genuinely different coordination problems, and this repo/ecosystem uses all three at once rather than picking one:

ProtocolSolvesTransportWho talks to whom
A2A (Agent2Agent)One agent delegates a task to a different, independently-hosted agentHTTP+JSON (tasks/send) — no gRPC, since Cloudflare Workers isn't Node.jsagent ↔ agent, across process/deployment boundaries
MCP (Model Context Protocol)A model gets tools/resources from a server, or executes real actions on a machinestdio (local process) or Streamable HTTPmodel ↔ tool server, typically same machine or same session
e2m (envelope-to-mailbox)Multiple domain coworkers coordinate asynchronously without being online simultaneouslyJSONL mailbox/queue files — not a network wire protocolcoworker ↔ coworker, via a durable file-based envelope

Where each one actually runs in this ecosystem

  • A2A: workers/web serves GET /.well-known/agent-card.json and POST /a2a using the tasks/send HTTP+JSON transport (no gRPC bindings, since @a2a-js/sdk's gRPC support needs @grpc/grpc-js, which is Node.js-only and unusable in a Cloudflare Worker). crates/a2a-bridge is a separate Rust axum server wrapping the MCP binary over stdio for a longer-running use case, with its own agent card.
  • MCP: crates/mcp-server (Rust, rmcp, stdio, Postgres+Redis-backed) exposes this repo's own tools to Claude; crates/engineering-coworker (also Rust, rmcp, stdio) is the more consequential instance — it lets Claude actually execute cargo/wrangler/git/D1 operations on the developer's real Mac, not just suggest code. subagentapi.com additionally runs a real Streamable-HTTP-style MCP endpoint (POST /mcp) as a genuinely working single-tool JSON-RPC 2.0 server, not a stub.
  • e2m: lives in the polyrepo sibling knowledge-engineering's coworkers/ monorepo as 6 language packages (e2m-ts/e2m-tf/e2m-rs/e2m-py/e2m-cli/e2m-swift). This repo references the envelope/DurableTask-mailbox convention in apps/coworkers-desktop-buddy/COWORKERS-PLATFORM.md as a design RFC, but does not implement e2m itself — the two repos are related via the documented env-var-abstraction polyrepo-sibling pattern, not a git submodule.

Full per-protocol detail: the live catalog.