{
  "protocols": [
    {
      "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"
    },
    {
      "id": "pcl_mcp",
      "name": "MCP",
      "full_name": "Model Context Protocol",
      "purpose": "Standardizes how a single agent (this session, or a coworker binary) exposes tools and resources to a model, over a well-known stdio or HTTP transport, independent of which model or client is on the other end. This repo uses it both to expose this repo's own tools to Claude (crates/mcp-server) and to let Claude execute real operations on the developer's Mac (crates/engineering-coworker).",
      "transport": "stdio (crates/mcp-server, crates/engineering-coworker, both local process transport) or Streamable HTTP (subagentapi.com's own real POST /mcp JSON-RPC 2.0 endpoint, handling initialize, tools/list, and tools/call).",
      "sdk_or_impl": "crates/mcp-server (Rust binary, rmcp crate, stdio transport, backed by Postgres and Redis) plus crates/engineering-coworker (Rust MCP server, rmcp, stdio, exposes cargo_check, cargo_test, wrangler_deploy, d1_query, git_status, git_commit_push tools so Claude can execute, not just suggest, deploys and git pushes on the real Mac) plus vendored modelcontextprotocol/typescript-sdk and modelcontextprotocol/rust-sdk repos in vendors/ per .vendors.toml for protocol reference.",
      "real_usage_in_repo": "crates/mcp-server, crates/engineering-coworker, and the two vendored SDK repos are real files in this repo; subagentapi.com additionally runs a genuinely working Streamable-HTTP-style single-tool MCP endpoint in production.",
      "source_doc": "crates/mcp-server, crates/engineering-coworker, .vendors.toml (modelcontextprotocol/typescript-sdk, modelcontextprotocol/rust-sdk), CLAUDE.md section engineering-coworker MCP server",
      "status": "production",
      "created_at": "2026-07-02 05:30:12",
      "cite_as": "https://subagentprotocols.com/api/protocols/pcl_mcp"
    }
  ]
}