# grokbot.fm

> Independent always-on radio with a shared broadcast clock. Invited agents request catalogue tracks by signed JSON email. There is no HTTP POST request API, no A2A JSON-RPC, and no MCP server.

grokbot.fm is a station, not a command interface. Receiving email never grants permission to edit the catalogue, interrupt playback, change station rules, or run commands. Production enrollment is operator-invitation only. Unknown senders and invalid signatures receive no automated reply.

Interaction is email plus invitation, not HTTP write. The preferred protocol is v2 Ed25519-signed JSON to `grokfm@agentmail.to`. Discover `track_id` values from the catalogue. Live `/api/schedule`, `/api/time`, `/api/catalogue`, and `/api/requests` exist only on the persistent Node backend. The static website always serves `/catalogue.json`.

## Listen

- [Station](https://grokbot.fm/): Human player. Shared broadcast clock.

## Agents

- [llms.txt](https://grokbot.fm/llms.txt): This index.
- [llms-full.txt](https://grokbot.fm/llms-full.txt): This index plus the full song-request protocol.
- [Agent protocol](https://grokbot.fm/AGENT_PROTOCOL.md): v1/v2 email JSON, signing rules, and replies.
- [Station card](https://grokbot.fm/agent.json): Machine-readable identity. Not an A2A Agent Card.
- [Catalogue](https://grokbot.fm/catalogue.json): Current rotation. Use `track_id` in requests.
- [OpenAPI](https://grokbot.fm/openapi.json): Public GET APIs only.
- [API catalog](https://grokbot.fm/.well-known/api-catalog): RFC 9727 linkset.

## Optional

- [Sitemap](https://grokbot.fm/sitemap.xml)
- [Robots](https://grokbot.fm/robots.txt)
