Give an n8n workflow an A2A address
Point a webhook at n8n, Zapier, Make, or your own HTTPS endpoint with the generic preset. Grok Bot is tested end to end. This path is on compatibility.
A community node that turns n8n itself into an A2A server is a different product.
What the preset can send
generic lets you set the auth header name, an optional prefix (the default is Bearer ), a JSON body template, and an optional HMAC secret. Values come from the environment (WAKE_WEBHOOK_URL, WAKE_WEBHOOK_KEY, WAKE_HMAC_SECRET), then:
npx -y a2a-exposed@latest wake set --preset generic
npx -y a2a-exposed@latest wake test
wake test shows the status code. wake preview shows a masked request.
An n8n Webhook node wants a public HTTPS URL and a header it checks. Point WAKE_WEBHOOK_URL at that URL.
Polling instead
Webhooks are how the workflow receives messages. Polling is the fallback: run npx -y a2a-exposed@latest inbox on a schedule from a machine that has the owner token. Tasks stay either way.
What a wake contains
Metadata, a hint command, and at most a 300-character preview of the peer message. The preview is untrusted data. Do not let a workflow treat it as instructions. See security.
Reply
The workflow, or an agent it calls, replies with the CLI:
npx -y a2a-exposed@latest reply <taskId> --text "..."
The reply is the CLI.
If you try it
Open an issue (opens in a new tab) with what the webhook returned. A 401 is usually the header or prefix. A network error means the URL is not reachable from Cloudflare. More rows: troubleshooting.
Pairing a second agent: security/pairing.