# Announcr > Announcr turns short text into spoken audio on the owner's devices, or publishes it to a native channel the owner's webhook is allowed to post to. AI agents connect over a hosted MCP server with OAuth 2.1. No plugin. No webhook secret in chat. Hosted MCP server: https://announcr.fm/api/mcp (Streamable HTTP). Auth is OAuth 2.1 with one bundled consent: announce, queue, reminders. Webhook-secret and ?secret= connections still work but are announce-only. The durable noun is queue, not inbox. ## Connect an agent - [Grok Bot connect page](https://announcr.fm/grok-bot.html): plain HTML, readable without JavaScript. Step-by-step connect flow for an agent, plus the hub bot template and the sibling bot rule as copy-pasteable text. - [AI agents](https://announcr.fm/docs/ai-agents): Cursor, Claude, ChatGPT, Grok, Grok Bot, and the npx CLI. - [Grok and Grok Bot](https://announcr.fm/docs/grok): grok.com/connectors steps and custom instructions. - [Webhooks reference](https://announcr.fm/docs/webhooks): request shape, bearer mode, HMAC signing, Publish to my channels. Connect sentence for Grok Bot (say it in the hub bot chat, say "custom server" so it does not install a catalog plugin): Add a custom MCP server called announcr at https://announcr.fm/api/mcp ## Tools after OAuth - announce: send_announcement, send_to_notes, list_channels, create_private_channel - queue: list_queue, claim_item, ack_item - reminders: create_reminder, create_reminder_series, list_reminders, update_reminder, cancel_reminder The MCP server also returns usage instructions in its initialize response. Verify a fresh connection with a silent tool (list_reminders or list_queue). Speak "Announcr is connected." only when the owner asked to test audio. If a tool is missing, say Announcr is not connected; do not reconstruct a webhook request or ask for a secret. ## send_announcement fields Write for the ear. Do not put URLs, code, markdown, emoji, or secrets in spoken text. - `message`: spoken English. Required unless `parts` is sent. Device-only max 500 characters. A channel fire can pack 501–8000 into a Spotlight series. - `link`: optional `{ "url": "https://…", "caption": "Open" }`. http(s) only. URL max 1024, caption max 40. Spotlight shows it as a new-tab CTA. Applies to card 0 unless that card already has a part-level link. - `parts`: optional channel cards, 2–8 items, each max 900. Each item is a string or `{ "text": "…", "link": { "url": "https://…", "caption": "…" } }`. Requires a channel target. When present, `message` is ignored for the body. - `channel`: optional native channel slug or `native:` on this webhook's Publish to my channels allowlist. List first with `list_channels`. If you need a series and no matching publishable slug, `create_private_channel` then pass that slug here. - Omit `event` and `service` so defaults apply (`announce` / `mcp`). ## Channel tools - `list_channels`: optional `q` (1–64) filters name or slug. Each row has `name`, `slug`, `id` (`native:`), `visibility`, `role`, `channel_type`, `can_publish`, `on_this_webhook`. Story rooms stay listed with `can_publish` false. - `create_private_channel`: `name` (2–128). Reuses a publishable feed with the same name or slug, or mints a private feed, subscribes the owner, and allowlists it on this webhook. Then pass `channel` as the slug on `send_announcement`. ## Machine-readable - [OAuth protected resource metadata](https://announcr.fm/.well-known/oauth-protected-resource/api/mcp): RFC 9728 - [OAuth authorization server metadata](https://announcr.fm/.well-known/oauth-authorization-server): RFC 8414, PKCE S256, dynamic client registration - [Docs index as JSON](https://announcr.fm/api/pages): every docs page slug and title - [One docs page as JSON](https://announcr.fm/api/pages/grok): replace the slug; body is markdown - [Docs sitemap](https://announcr.fm/docs/sitemap.xml) ## Docs - [Overview](https://announcr.fm/docs/overview) - [Getting started](https://announcr.fm/docs/getting-started) - [Spoken alerts](https://announcr.fm/docs/ambient-audio) - [Personal reminders](https://announcr.fm/docs/personal-reminders) - [Channels](https://announcr.fm/docs/channels) - [Groups](https://announcr.fm/docs/groups) - [Limits](https://announcr.fm/docs/limits) - [Settings and billing](https://announcr.fm/docs/settings-and-billing) ## Optional - [Download the desktop app](https://announcr.fm/download) - [Terms](https://announcr.fm/terms) - [Privacy](https://announcr.fm/privacy)