# correspond > A channel facade for AI agents: read, listen, write and identify the sender over GitHub, email, push notifications, Telegram and a web inbox. ## Pages - [correspond](index.html.md): A channel facade for AI agents: read, listen, write and identify the sender over GitHub, email, push... - [API reference](api.html.md): | `correspond` | correspond: a channel facade for AI agents. | - [correspond](_autosummary/correspond.html.md): correspond: a channel facade for AI agents. - [correspond.authored](_autosummary/correspond.authored.html.md): What the sender of an email actually wrote: their text, apart from quoted replies, forwarded blocks,... - [correspond.channel](_autosummary/correspond.channel.html.md): Serve listeners as a Claude Code channel: new messages pushed into a running session, replies throug... - [correspond.channels](_autosummary/correspond.channels.html.md): The built-in channel adapters, one module each. - [correspond.channels.apprise](_autosummary/correspond.channels.apprise.html.md): Apprise: send-only notifications to the long tail of services (about 155), each named by an alias. - [correspond.channels.discord](_autosummary/correspond.channels.discord.html.md): Discord: a bot reading and posting in channels over REST, through discorddol. - [correspond.channels.gdrive](_autosummary/correspond.channels.gdrive.html.md): Google Drive: a shared folder, read only, where files that a conversation announces arrive. - [correspond.channels.github](_autosummary/correspond.channels.github.html.md): GitHub: issues, pull request conversations and discussions, through the `gh` CLI. - [correspond.channels.github_webhook](_autosummary/correspond.channels.github_webhook.html.md): GitHub webhook receiver: `discussion_comment` deliveries, so listen sees every discussion reply. - [correspond.channels.macos](_autosummary/correspond.channels.macos.html.md): macOS Notification Centre: a banner on this Mac (send only). - [correspond.channels.mail](_autosummary/correspond.channels.mail.html.md): Email: IMAP to read and listen, SMTP to send, with the standard library. - [correspond.channels.ntfy](_autosummary/correspond.channels.ntfy.html.md): ntfy: push notifications to a phone or a desktop through an ntfy server (send only). - [correspond.channels.signal](_autosummary/correspond.channels.signal.html.md): Signal through `signal-cli-rest-api` (JSON-RPC mode): listen, read what was logged, send. - [correspond.channels.slack](_autosummary/correspond.channels.slack.html.md): Slack: drafts in Slack’s own formatting; reading, polling and posting with a token; posting through ... - [correspond.channels.slack_events](_autosummary/correspond.channels.slack_events.html.md): Slack Events API receiver: Slack pushes a channel’s messages, edits and deletions, so listen need no... - [correspond.channels.telegram](_autosummary/correspond.channels.telegram.html.md): Telegram: a bot over the Bot API, with the standard library. - [correspond.channels.webinbox](_autosummary/correspond.channels.webinbox.html.md): The web inbox: a small ASGI collector web pages post reports to, and the channel that reads them. - [correspond.errors](_autosummary/correspond.errors.html.md): What correspond raises, and the vocabulary a failed write reports. - [correspond.idempotency](_autosummary/correspond.idempotency.html.md): Idempotent sends: an `idempotency_key` keeps a message from going out twice. - [correspond.mcp](_autosummary/correspond.mcp.html.md): MCP over stdio: the same tools, for Claude Desktop and other local MCP clients. - [correspond.model](_autosummary/correspond.model.html.md): The data model every channel is described in. - [correspond.notify](_autosummary/correspond.notify.html.md): Make a draft’s `notify` list a property of sending, not a rule a sender can forget. - [correspond.ops](_autosummary/correspond.ops.html.md): The operations: small protocols an adapter implements a subset of, and the verbs that call them. - [correspond.outbound](_autosummary/correspond.outbound.html.md): The `before_send` check: what every write runs, with the conversation’s audience, before anything le... - [correspond.registry](_autosummary/correspond.registry.html.md): Which channels exist: the built-in channel table, the registry built from it, and what each channel ... - [correspond.render](_autosummary/correspond.render.html.md): Turning a tool’s result into terminal output: `(stdout, stderr, exit code)`. - [correspond.routing](_autosummary/correspond.routing.html.md): Deciding what a message is about: a transparent rule chain. - [correspond.settings](_autosummary/correspond.settings.html.md): Where correspond keeps state and reads configuration, and how it finds a secret. - [correspond.stores](_autosummary/correspond.stores.html.md): The state stores: listen cursors, the web inbox’s reports and blobs, the Telegram log. - [correspond.testing](_autosummary/correspond.testing.html.md): An in-memory channel for tests and rehearsals, and `python -m correspond.testing`: the CLI with it r... - [correspond.tools](_autosummary/correspond.tools.html.md): The single source of truth for every surface: plain functions, flat arguments in, JSON-ready dicts o... - [For AI agents](ai-agents.html.md): `correspond` ships artifacts for coding agents alongside its code. This page lists - [About this build](about-this-build.html.md): This documentation was built on **2026-10-20 18:35 UTC** from commit <a href="https://github.com/tho... ## Optional - [correspond.md](correspond.md): Complete documentation in a single file. ## Build - [build_info.json](build_info.json): build provenance (commit, version, tool versions, whether the docs match the package)