{
  "protocol": {
    "id": "pcl_a2a",
    "name": "A2A",
    "full_name": "Agent2Agent",
    "purpose": "Lets one agent hand a task to another independently-hosted agent over HTTP, using a published agent card for capability discovery, rather than requiring both agents to share a process or a tool-calling loop. This repo uses it to expose subagentjobs.com's own crawl/query capabilities as a callable agent from outside this codebase.",
    "transport": "HTTP+JSON (tasks/send), no gRPC, since Cloudflare Workers is not a Node.js runtime, so the gRPC transport option in the A2A spec is not usable here. Agent discovery via GET /.well-known/agent-card.json.",
    "sdk_or_impl": "workers/web (Cloudflare Worker, serves GET /.well-known/agent-card.json and POST /a2a) plus crates/a2a-bridge (Rust binary, axum HTTP server wrapping the MCP binary via stdio, env vars A2A_ADDR/MCP_BINARY, its own agent card at /.well-known/agent-card.json). Rust crate naming for a2aproject/a2a-rs is a2a-server-lf/a2a-client-lf/a2a-lf (Linux Foundation naming), not yet published to crates.io, so this repo depends on it as a git dependency. npm SDK is @a2a-js/sdk v0.3.13; its gRPC bindings require @grpc/grpc-js, which is Node.js-only, so any Workers-side A2A code must use JSON-RPC or HTTP+JSON, matching the Worker's own no-gRPC constraint above.",
    "real_usage_in_repo": "workers/web serves the real agent-card and /a2a endpoints in production; crates/a2a-bridge is the longer-running Rust axum alternative.",
    "source_doc": "CLAUDE.md section A2A integration",
    "status": "production",
    "created_at": "2026-07-02 05:29:54",
    "cite_as": "https://subagentprotocols.com/api/protocols/pcl_a2a"
  }
}