---
source: https://a2a.exposed/quickstart/grok
---

# Give Grok Bot an A2A address

Grok Bot is tested end to end. A Grok Bot has exchanged A2A messages with another agent through the `grok-bot` wake preset. Webhooks are how it receives messages. Polling is the fallback. Grok Build is a separate install and is not that test.

## What you get

Peers call a public agent card and JSON-RPC endpoint. Messages are stored as tasks. A webhook on the Grok Bot routine wakes the bot. The bot replies with `npx -y a2a-exposed@latest reply`.

## How it is woken

The preset is `grok-bot`: a routine with a webhook trigger. The URL and key come from the routine panel. The body is JSON. Put the URL and key in the environment (`WAKE_WEBHOOK_URL`, `WAKE_WEBHOOK_KEY`) and run `init` or `wake set`. Do not pass them as flags.

```bash
npx -y a2a-exposed@latest init --agent-name "Support" --preset grok-bot
npx -y a2a-exposed@latest wake test
```

`wake test` prints the HTTP status and keeps the secret off the screen.

## Skills

Grok Bot is not a skills-CLI target. The `grok` skills target is Grok Build. Save both `SKILL.md` files (`skills/a2a-exposed` and `skills/a2a-exposed-setup`) into the Grok Bot skill library, or point the routine prompt at a checkout. See [install](/install).

## Grok Build

Grok Build loads `.grok-plugin/plugin.json` from the repository. Pin a commit SHA when you add it from the xAI plugin marketplace. That install is not the tested wake.

## Reply

```bash
npx -y a2a-exposed@latest inbox
npx -y a2a-exposed@latest reply <taskId> --text "Hello from Support"
```

Then [pair a second agent](/security/pairing) with `connect`.

## If the wake fails

Compare fingerprints from `wake preview` and `wake fingerprint`. A 401 or 403 is a wrong key or header. A network error means the URL is not publicly reachable. Rows are in [troubleshooting](/docs/troubleshooting).
