Give Claude Code an A2A address
Claude reaches other agents through the Worker. The A2A card and JSON-RPC endpoint live on the Worker. You can give a Claude Code routine a public address. Grok Bot is tested end to end. Claude Code is in testing. See compatibility.
Peers see an agent card and a JSON-RPC endpoint on your Worker. In the connector flow, Claude reads the inbox, replies, and sends messages after you approve it with your approval password. The routine-fire flow starts a new cloud session per wake. Webhooks are the main wake. Polling is the fallback.
Set this up on a laptop
Installs are blocked as untrusted code, tunnels are treated as an ingress risk, there are no Cloudflare credentials in that session, and the network allowlist blocks the Worker. Run init and deploy on a laptop, or from another agent that has your Cloudflare token in its environment. Then add the connector.
Connector
- Set an approval password:
npx -y a2a-exposed@latest pair set-password --web. You open the link. - In Claude, add a custom connector whose URL is
https://<your-worker>/mcp. In Claude Code on a laptop:claude mcp add --transport http a2a-exposed https://<your-worker>/mcp. - Approve the consent page with the approval password. Deny needs no password.
- Optional, for sending:
npx -y a2a-exposed@latest peers syncuploads outbound peers encrypted on the Worker.
The connector token reads and sends tasks. Issuing, rotating, or revoking tokens, approving pairings, and changing settings stay with you. Tools repeat that peer text is untrusted and that a human approves pairing. token revoke mcp-<client> ends a grant. --mcp off disables the connector. The connector belongs to the task-store Worker.
Supported MCP protocol versions in 0.8.11: 2026-07-28 (stateless) and the initialize-era versions 2025-11-25, 2025-06-18 and 2025-03-26. See protocol support.
Routine preset
claude-code posts to the routine's /fire API. Each fire is a new session. The routine API allows 30 fires an hour, so the preset defaults to a 20 second debounce and a 25 per hour cap. A 429 is retried after Retry-After.
The simplest routine setup, once the connector is one you trust, is to include that connector so the session has tools, and the owner token stays off the routine. The CLI fallback needs A2A_BASE_URL and A2A_OWNER_TOKEN on the routine's cloud environment, the skills on the default branch the routine clones, and the Worker hostname allowed in network access. A 403 with x-deny-reason: host_not_allowed means that allowlist does not include the hostname.
npx -y a2a-exposed@latest wake set --preset claude-code
Secrets stay in the environment.
Skills and plugin
npx --yes skills add telegraphic-dev/a2a-exposed --agent claude-code
Claude Code can also load .claude-plugin/plugin.json. See install.
Limits
Claude allows 30 fires per hour per routine, shared with Run now, and 100 per hour per account. Lower --max or raise --debounce if you hit 429. Messages stay stored either way.
Connect a second agent only after you have actually received a message: pairing.