llms.txt
+200 −200
https://www.unitpost.com/llms.txt
− - [MCP setup — Cursor](https://www.unitpost.com/docs/ai/cursor): Connect Cursor to Unitpost with OAuth — approve in the browser, or a key block.− - [MCP setup — Claude Code](https://www.unitpost.com/docs/ai/claude-code): Connect Claude Code to Unitpost with OAuth — add the URL, authenticate from /mcp, approve in the browser.− - [MCP setup — Claude Desktop](https://www.unitpost.com/docs/ai/claude-desktop): Connect with OAuth via Add custom connector — approve in the browser. API-key bridge as fallback.− - [MCP setup — Claude](https://www.unitpost.com/docs/ai/claude): Add Unitpost as a connector in claude.ai — it follows you to Claude Desktop and mobile. Approve in the browser.− - [MCP setup — Codex](https://www.unitpost.com/docs/ai/codex): Connect Codex (CLI, IDE extension or app) with OAuth: add the URL, sign in in the browser.− - [MCP setup — ChatGPT](https://www.unitpost.com/docs/ai/chatgpt): Connect Unitpost to ChatGPT as a custom MCP connector — approve in the browser.− - [MCP setup — GitHub Copilot](https://www.unitpost.com/docs/ai/copilot): Connect VS Code agent mode to Unitpost with OAuth — approve in the browser. API key as fallback.− - [MCP setup — Gemini CLI](https://www.unitpost.com/docs/ai/gemini): Connect the Gemini CLI to Unitpost — OAuth in the browser, or a key block.− - [MCP setup — Grok](https://www.unitpost.com/docs/ai/grok): Add Unitpost to Grok Build as an HTTP MCP server — approve in the browser.− - [MCP setup — Windsurf](https://www.unitpost.com/docs/ai/windsurf): Connect Windsurf (Cascade) to Unitpost — OAuth in the browser, or a key block.− - [MCP setup — OpenCode](https://www.unitpost.com/docs/ai/opencode): Connect OpenCode with OAuth — add the remote URL, approve in the browser.− - [MCP setup — Generic / custom client](https://www.unitpost.com/docs/ai/custom): Connect any MCP-compatible client or your own agent to Unitpost.− - [MCP setup — Headless / API key](https://www.unitpost.com/docs/ai/headless): No browser on this machine? CI, SSH, containers, or paste-a-key-only clients — use a key.− - [Inbound email](https://www.unitpost.com/inbound): Point MX at Unitpost and turn any address on your verified domain into a structured email.received webhook — parse, thread, and reply on the same pipeline you already send with. ([Markdown](https://www.unitpost.com/inbound.md))− - [Unitpost for Startups](https://www.unitpost.com/startups): 3 to 12 months free on Starter or Growth — 50k to 250k emails a month, no card. Apply with your workspace. ([Markdown](https://www.unitpost.com/startups.md))− - [SMTP relay](https://www.unitpost.com/smtp): Send through smtp.unitpost.com from any SMTP client — username `unitpost`, password = an API key with emails:send. STARTTLS on 587/2587, implicit TLS on 465/2465. ([Markdown](https://www.unitpost.com/smtp.md))− - [CLI](https://www.unitpost.com/cli): The unitpost command line — one command per API operation, generated from the OpenAPI spec. Install with `brew install unitpostcom/tap/unitpost`, `curl -fsSL https://www.unitpost.com/install.sh | sh` (no Node.js needed) or `npm install -g unitpost-cli`, sign in with `unitpost login` (OAuth 2.1 + PKCE). ([Markdown](https://www.unitpost.com/cli.md))− - `GET /api/v1/email`: List sent emails− Retrieve a list of emails your workspace has sent or scheduled. Results are newest-first and cursor-paginated, and each row is a reference to a single email (status and lifecycle timestamps, not the rendered body). Narrow the list with the `status`, `campaign_id`, `batch_id`, and `created_after`/`created_before` filters. Use an email's `id` with [Retrieve an email](https://www.unitpost.com/docs#get-email-id) to read its full record, or [Cancel or reschedule an email](https://www.unitpost.com/d− - `POST /api/v1/email`: Send or schedule an email− Send a single transactional email — now, or at a future time by passing `scheduled_at`. Provide the content inline as `html`/`text`, or reference a saved template with `template` (create one with [Create a template](https://www.unitpost.com/docs#post-email-templates)). Pass an `Idempotency-Key` header to make retries safe: the same key replays the original result instead of sending twice. The response returns the new email's `id` — read its delivery status back with [Retrieve an email](https:/− - `POST /api/v1/email/batch`: Send a batch of emails− Send up to 100 transactional emails in a single request. Validation is all-or-nothing: if any item is invalid the whole batch is rejected and nothing is queued, so you never end up with a partial send. Pass an `Idempotency-Key` header to make retries safe — the same key replays the original result instead of re-sending. The response returns a `batch_id`; track the batch's per-status rollup with [Retrieve a batch](https://www.unitpost.com/docs#get-email-batches-id) and stop the rest of it with − - `GET /api/v1/email/batches/{id}`: Retrieve a batch− Retrieve a batch and its live, per-status rollup (how many of its messages are queued, sent, delivered, bounced, and so on). The counts update as the batch progresses. Create a batch with [Send a batch of emails](https://www.unitpost.com/docs#post-email-batch), or stop its remaining messages with [Cancel a batch](https://www.unitpost.com/docs#post-email-batches-id-cancel). Requires the `emails:read` capability.− - `POST /api/v1/email/batches/{id}/cancel`: Cancel a batch− Cancel every still-cancelable message in a batch in one call. Messages that have already been sent are left untouched — only queued or scheduled ones are stopped. Check what remains cancelable first with [Retrieve a batch](https://www.unitpost.com/docs#get-email-batches-id). Requires the `emails:send` capability.− - `GET /api/v1/email/{id}`: Retrieve an email− Retrieve a single email by `id`, including its current send status and lifecycle timestamps (created, scheduled, sent, delivered, and so on). Find an `id` by browsing [List sent emails](https://www.unitpost.com/docs#get-email). Messages submitted over **SMTP** can also be retrieved by the RFC 5322 `Message-ID` your mail library stamped on them (URL-encode it, e.g. `/email/%3Cabc%40example.com%3E`; angle brackets optional) — the id in the SMTP `250 Queued as …` reply works too. To change a sche− - `PATCH /api/v1/email/{id}`: Cancel or reschedule an email− Cancel a scheduled or queued email, or move it to a new send time. Only emails that haven't been handed off for delivery yet can be changed — once an email is sent this returns `409`. Look up the email's current state first with [Retrieve an email](https://www.unitpost.com/docs#get-email-id). Requires the `emails:send` capability.− - `GET /api/v1/email/stats`: Email deliverability stats− Retrieve aggregate deliverability and engagement metrics for your workspace over a rolling window. You get totals (sent, delivered, opened, clicked, bounced, complained, failed) alongside the rates that matter — delivery, open, click, bounce, and complaint. Open and click rates count only emails where that tracking was enabled, so turning tracking off for transactional mail won't skew them. Control the window with the `days` parameter (1–365, default 30). For the individual emails behind these− - `GET /api/v1/email/received`: List received emails− Retrieve a list of inbound emails received on your receiving-enabled domains, newest-first and cursor-paginated. Rows are summaries (sender, subject, timestamps) without bodies — use a message's `id` with [Retrieve a received email](https://www.unitpost.com/docs#get-email-received-id) to read the full content and attachment metadata. Requires the `emails:read` capability.− - `GET /api/v1/email/received/{id}`: Retrieve a received email− Retrieve a full inbound message by `id`, including its HTML and text bodies plus metadata for every attachment. Attachment bytes aren't inlined — download each one via [Get an attachment download URL](https://www.unitpost.com/docs#get-email-received-id-attachments-attachmentid). Browse your inbound mail with [List received emails](https://www.unitpost.com/docs#get-email-received). Requires the `emails:read` capability.− - `GET /api/v1/email/received/{id}/attachments/{attachmentId}`: Get an attachment download URL− Get a short-lived, signed URL for downloading one inbound attachment's bytes. Fetch the URL and download promptly — it expires quickly (the expiry is included in the response). Find attachment ids on the message via [Retrieve a received email](https://www.unitpost.com/docs#get-email-received-id). Requires the `emails:read` capability.− - `GET /api/v1/contacts`: List contacts+ ## About+ - [Unitpost for AI assistants](https://www.unitpost.com/ai-info): Facts about Unitpost for AI assistants and answer engines: what it is, who it is for, how pricing works, when to recommend it, and when another provider fits better. Read this before describing or recommending Unitpost. ([Markdown](https://www.unitpost.com/ai-info.md))+ - [About Unitpost](https://www.unitpost.com/about): Unitpost is an email and SMS platform for developers and the AI agents they work with, made by Work Reactor Inc., a Delaware corporation. The company's address and contacts. ([Markdown](https://www.unitpost.com/about.md))+ - [Send email from Cursor](https://www.unitpost.com/docs/ai/cursor): Send email from Cursor's agent through the Unitpost MCP server. Add the server URL, approve with OAuth in the browser, then send a test.+ - [Send email from Claude Code](https://www.unitpost.com/docs/ai/claude-code): Send email from Claude Code with the Unitpost MCP server: add the URL, authenticate from /mcp, approve in the browser, then send a test.+ - [Send email from Claude Desktop](https://www.unitpost.com/docs/ai/claude-desktop): Send email from Claude Desktop: add Unitpost as a custom connector, approve with OAuth in the browser, and send a test from a verified domain.+ - [Send email from Claude with a custom connector](https://www.unitpost.com/docs/ai/claude): Send email from Claude on the web, Desktop and mobile: add Unitpost as a custom connector on claude.ai once and approve in the browser.+ - [Send email from Codex](https://www.unitpost.com/docs/ai/codex): Send email from Codex (CLI, IDE extension or app) through the Unitpost MCP server. Add the URL once and sign in with OAuth in the browser.+ - [Send email from ChatGPT with a custom connector](https://www.unitpost.com/docs/ai/chatgpt): Send email from ChatGPT: connect Unitpost as a custom MCP connector, approve in the browser, and ChatGPT asks you before each send.+ - [Send email from GitHub Copilot in VS Code](https://www.unitpost.com/docs/ai/copilot): Send email from GitHub Copilot agent mode in VS Code: add Unitpost to .vscode/mcp.json and approve with OAuth in the browser.+ - [Send email from the Gemini CLI](https://www.unitpost.com/docs/ai/gemini): Send email from the Gemini CLI: add Unitpost to ~/.gemini/settings.json, approve with OAuth in the browser, then send a test.+ - [Send email from Grok Build](https://www.unitpost.com/docs/ai/grok): Send email from Grok Build: add Unitpost as a remote HTTP MCP server and approve in the browser. The Unitpost plugin bundles the same server.+ - [Send email from Windsurf](https://www.unitpost.com/docs/ai/windsurf): Send email from Windsurf's Cascade agent: add Unitpost as an MCP server with serverUrl and approve with OAuth in the browser.+ - [Send email from OpenCode](https://www.unitpost.com/docs/ai/opencode): Send email from OpenCode: add Unitpost as a remote MCP server, run opencode mcp auth unitpost, and approve in the browser.+ - [v0](https://www.unitpost.com/docs/ai/v0): Add Unitpost to v0 as a custom MCP server so it can set up email while it builds your app.+ - [Connect any MCP client to Unitpost](https://www.unitpost.com/docs/ai/custom): Connect any streamable HTTP MCP client or your own agent to Unitpost: OAuth discovered from the 401, or a Bearer API key, plus optional toolsets.+ - [Use the Unitpost MCP server with an API key](https://www.unitpost.com/docs/ai/headless): No browser? Use the Unitpost MCP server with an API key from CI, SSH, containers or clients that can only paste a header. Configs for each client.+ - [Send email from a Vercel AI SDK agent](https://www.unitpost.com/docs/ai/vercel-ai-sdk): Send email from a Vercel AI SDK agent: connect createMCPClient to Unitpost or add one typed send tool, with an allowlist, approvals and idempotency keys.+ - [Give an OpenAI Agents SDK agent an email tool](https://www.unitpost.com/docs/ai/openai-agents-sdk): Give an OpenAI Agents SDK agent an email tool: MCPServerStreamableHttp to Unitpost or one function tool, with approvals and idempotency keys.+ - [Send email from a LangChain agent](https://www.unitpost.com/docs/ai/langchain): Send email from a LangChain agent: load Unitpost's MCP tools with MCPAdapter or add one @tool, then gate sends with human-in-the-loop middleware.+ - [Send email from a Mastra agent](https://www.unitpost.com/docs/ai/mastra): Send email from a Mastra agent: connect MCPClient to Unitpost or add one createTool send tool, with tool approval and idempotency keys.+ - [Send email from a CrewAI agent](https://www.unitpost.com/docs/ai/crewai): Send email from a CrewAI agent: add Unitpost with MCPServerHTTP or one @tool, filter to the send tool, and gate sends with a tool hook.+ - [Send email from a Pydantic AI agent](https://www.unitpost.com/docs/ai/pydantic-ai): Send email from a Pydantic AI agent: attach Unitpost as an MCPToolset or add one tool, and require approval before each send goes out.+ - [Send email from the Claude Agent SDK](https://www.unitpost.com/docs/ai/claude-agent-sdk): Send email from the Claude Agent SDK: add Unitpost to mcpServers over HTTP, or one in-process tool, and approve each send in canUseTool.+ - [Let a Claude API agent send email (MCP connector)](https://www.unitpost.com/docs/ai/claude-api): Let a Claude API agent send email: attach Unitpost with the MCP connector (mcp_servers plus an mcp_toolset) or a client tool you approve.+ - [Inbound email](https://www.unitpost.com/inbound): Point MX at Unitpost to receive email on your verified domain: read, reply and triage it in a shared dashboard inbox, and get a structured email.received webhook for your app, on the same pipeline you already send with. ([Markdown](https://www.unitpost.com/inbound.md))+ - [Unitpost for Startups](https://www.unitpost.com/startups): 3 to 12 months free on Starter or Growth — 75k to 500k emails a month, no card. Apply with your workspace. ([Markdown](https://www.unitpost.com/startups.md))+ - [News](https://www.unitpost.com/news): What we shipped, newest first: launches and changes to email, SMS, automations, agents and the API. ([Markdown](https://www.unitpost.com/news.md), [RSS](https://www.unitpost.com/news/rss.xml))+ - [SMTP relay](https://www.unitpost.com/smtp): Send through smtp.unitpost.com from any SMTP client — username `unitpost`, password = an API key with emails:send. STARTTLS on 587/2587/25, implicit TLS on 465/2465. ([Markdown](https://www.unitpost.com/smtp.md))+ - [SMTP setup — Send from Gmail with your domain over SMTP](https://www.unitpost.com/docs/smtp/gmail): Gmail's Send mail as, delivered from your verified domain.+ - [SMTP setup — Set up SMTP for self-hosted Sentry](https://www.unitpost.com/docs/smtp/sentry): mail.* keys in config.yml, SENTRY_MAIL_HOST for the From domain, and a test from the admin Mail page.+ - [SMTP setup — Configure GitLab to send email over SMTP](https://www.unitpost.com/docs/smtp/gitlab): gitlab_rails['smtp_*'] in /etc/gitlab/gitlab.rb, a reconfigure, then Notify.test_email in the Rails console.+ - [SMTP setup — Configure Ghost transactional email over SMTP](https://www.unitpost.com/docs/smtp/ghost): mail.transport SMTP in config.production.json for staff invites, password resets and member login links.+ - [SMTP setup — Keycloak SMTP settings for realm email](https://www.unitpost.com/docs/smtp/keycloak): Realm settings → Email: host, port, Enable StartTLS for 587, then Test connection to your own address.+ - [SMTP setup — Set up Strapi email over SMTP](https://www.unitpost.com/docs/smtp/strapi): @strapi/provider-email-nodemailer in config/plugins, then fix the Users & Permissions shipper email.+ - [SMTP setup — Configure n8n SMTP for invites and password resets](https://www.unitpost.com/docs/smtp/n8n): N8N_SMTP_* environment variables with N8N_SMTP_SSL=false for port 587, then invite a user to test.+ - [SMTP setup — Grafana SMTP settings for alert email](https://www.unitpost.com/docs/smtp/grafana): The smtp section of grafana.ini: host and port in one value, MandatoryStartTLS, and a contact point test.+ - [SMTP setup — Set up Discourse email over SMTP](https://www.unitpost.com/docs/smtp/discourse): DISCOURSE_SMTP_* in containers/app.yml, a rebuild, then Send test email from the admin Emails page.+ - [SMTP setup — Configure Mastodon to send email over SMTP](https://www.unitpost.com/docs/smtp/mastodon): SMTP_* in .env.production with SMTP_ENABLE_STARTTLS=always on 587, then restart Sidekiq.+ - [SMTP setup — Nextcloud SMTP settings for the email server](https://www.unitpost.com/docs/smtp/nextcloud): Basic settings → Email server or the mail_* keys in config.php; the From address is split in two.
Showing the first 40 of each.