---
title: MCP tools
description: Every tool Sendoff's MCP server gives your agent, grouped by what it's for.
sidebar:
  icon: wrench
---

You don't call these yourself: your agent picks them from what you ask. This page is for knowing what's possible, and for reading what the agent did. Issues are addressed by id or slug, and every tool that changes data returns a summary the agent can relay.

## Settings

| Tool | What it does |
| --- | --- |
| `get_settings` | Shows the name, sender, postal address, accent color, logo, footer links and tracking. |
| `update_settings` | Changes any of them. Pass only the fields to change; `null` clears an optional one. See [Settings](/docs/reference/settings). |
| `doctor` | Runs the [preflight checks](/docs/help/troubleshooting): settings, SES access and quota, domain verification, DMARC, bounce and delivery reports, and subscribers. |

## Drafts

| Tool | What it does |
| --- | --- |
| `create_draft` | Starts an issue from a subject, optional preheader and Markdown body, and returns the live preview URL. |
| `get_draft` | Returns an issue's subject, preheader, body, version and preview URL. For an imported issue, it returns the plain-text version. |
| `edit_draft` | Applies exact find-and-replace edits, in order and all or nothing, or replaces the whole body. Takes an optional `expectedVersion` so two agents can't overwrite each other. |
| `set_draft_meta` | Changes the subject, preheader or slug. An imported issue's slug can change too. |
| `list_issues` | Lists issues, most recently updated first, optionally by status (`draft`, `sending`, `sent`, `cancelled`). |
| `preview_draft` | Returns the preview URL and the plain-text version, so the agent can proofread. |
| `delete_draft` | Deletes a draft, or an imported issue. Issues sent with Sendoff can't be deleted. |
| `import_issue` | Keeps a past issue sent with another provider, exactly as it went out: HTML, plain text, subject, preview text and send date. For many issues, the agent uses the [REST API](/docs/reference/rest-api#import-past-issues) instead. See [Importing past issues](/docs/guides/past-issues). |

Drafts are saved even when the Markdown has problems; each result lists them by line so the agent can fix them.

## Sending

| Tool | What it does |
| --- | --- |
| `send_test` | Emails the current version, with `[Test]` in the subject, to the reply-to address, the sender, or up to five addresses. |
| `prepare_send` | Checks the draft is ready to go, without sending: it renders, the last test matches this exact version, `doctor` passes, and, with no postal address, it doesn't read as commercial. Returns a summary and a confirmation that expires in 15 minutes. |
| `check_promotion` | Checks whether a draft reads as commercial email, the same way `prepare_send` does without a postal address. See [When you need a postal address](/docs/guides/deliverability#when-you-need-a-postal-address). |
| `confirm_send` | Sends to every active subscriber. Agents are told to call it only after you've seen the summary and said to send. |
| `send_status` | Shows a send's progress (sent, failed, skipped, remaining), deliveries, bounces, complaints, unsubscribes, and why it stopped, if it did. |
| `cancel_send` | Stops a send in progress. Everyone not yet sent to is skipped. |
| `resume_send` | Continues a send that stopped on an error, after rerunning the preflight checks. |

See [Sending an issue](/docs/guides/sending) for how these fit together.

## Stats

| Tool | What it does |
| --- | --- |
| `issue_stats` | Reports how an issue is doing (the latest sent, by default): deliveries, bounces, suppressed addresses, complaints, clicks, opens if tracked, unsubscribes and clicks for every link, counted in people, compared with earlier issues at the same point after sending. See [Issue stats](/docs/guides/stats). |

## Subscribers

| Tool | What it does |
| --- | --- |
| `search_subscribers` | Counts subscribers by status, and lists them newest first, filtered by part of an address or by status. |
| `add_subscriber` | Adds one person and sends them a confirmation email, unless `skipConfirmation` is set because they asked to be added. |
| `import_csv` | Imports a CSV export from any provider, with `dryRun` and an optional status for the whole file. See [Importing your list](/docs/guides/importing). |
| `import_subscribers` | Imports up to 5,000 subscribers given as a list, each with an optional status. |
| `unsubscribe_subscriber` | Unsubscribes someone, such as when they reply asking to be removed. |

Imports never reactivate anyone who unsubscribed, bounced or complained, and no tool re-adds them.

## API keys

| Tool | What it does |
| --- | --- |
| `create_api_key` | Creates a [REST API](/docs/reference/rest-api) key with a name and scopes. The key is shown once. |
| `list_api_keys` | Lists keys by name, prefix and scopes, with when each was last used. |
| `revoke_api_key` | Revokes a key by id or prefix. Anything using it stops working immediately. |
