Less boo. More booked. Halloween offer: 30 days free on any paid plan. Claim 30 days freeEvery new account gets one free mailbox for warmup and replies. No domain to buy. See how it works

Skip to content

Use Warmerly with AI (MCP)

Using Warmerly10 min read8 sections

Warmerly runs a Model Context Protocol server, so an AI assistant you already use (Claude, ChatGPT, Claude Code, Cursor, or any other MCP client) can look things up in your Warmerly workspace directly: your mailboxes and their health, campaigns, leads, inbox conversations, and deliverability checks, all without you copy-pasting data back and forth. You sign in once with your normal Warmerly login; after that the assistant asks Warmerly, not you.

Available on every plan, including Free. There's no separate API key or add-on required to connect, just your Warmerly account.

Using Warmerly

#Server URL

text
https://app.warmerly.com/api/mcp

Every client below connects to this one URL.

Using Warmerly

#Connect

#claude.ai

  1. Go to Settings → Connectors → Add custom connector.
  2. Paste https://app.warmerly.com/api/mcp as the server URL.
  3. Sign in with your Warmerly account when prompted.

#ChatGPT

  1. Go to Settings → Apps & Connectors, and turn on Advanced (or Developer mode) if you don't already see an option to add an MCP server.
  2. Add a new MCP server and paste https://app.warmerly.com/api/mcp as the URL.
  3. Sign in with your Warmerly account when prompted.

Connector availability depends on your ChatGPT plan, if you don't see the option, it isn't enabled on your current plan.

#Claude Code

bash
claude mcp add --transport http warmerly https://app.warmerly.com/api/mcp

Then run /mcp inside Claude Code and follow the prompt to sign in with your Warmerly account.

#Cursor

Add this to ~/.cursor/mcp.json:

json
{
  "mcpServers": {
    "warmerly": {
      "url": "https://app.warmerly.com/api/mcp"
    }
  }
}

Cursor will prompt you to sign in with your Warmerly account the first time it calls a tool.

Using Warmerly

#Claude plugin and skills

The connection gives an assistant Warmerly's tools; skills teach it how to use them well. Warmerly publishes four, each a workflow rather than a list of tools:

  • launch-outreach-campaign: from your ideal customer to a verified lead list, a sequence that follows cold-email best practice, a readiness check and a launch.
  • deliverability-doctor: why mail lands in spam or bounces (mailbox health, SPF, DKIM, DMARC, MX, blocklists, placement tests) and exactly what to fix.
  • reply-triage: separate real replies from autoresponders and unsubscribes, draft answers, and suppress anyone who asked to be left alone.

Every skill asks before bulk sends, launches or replies unless you tell it it may act on its own, and your plan limits and suppression list apply exactly as in the dashboard.

The plugin is open source at github.com/WarmerlyApp/claude-plugin.

Claude Code installs the server and all four skills as one plugin:

bash
/plugin marketplace add WarmerlyApp/claude-plugin
/plugin install warmerly@warmerly

Then run /mcp and sign in. (Already connected with claude mcp add? The plugin adds the same server, so you can remove the manual one.)

claude.ai: add the connector as above, then upload each skill's .zip under Settings → Capabilities → Skills. To build the zips, clone the plugin repo and run node build-skill-zips.mjs (Node 18+, no dependencies); they land in dist/.

Ready-to-paste configs for every other MCP client (VS Code, Windsurf, Codex CLI, Gemini CLI and more) are in github.com/WarmerlyApp/mcp.

Using Warmerly

#What happens when you sign in

Signing in opens the normal Warmerly login (or lets you use an existing session), then a consent screen where you choose how much of your account that connection gets:

  • One workspace (the default). Every tool call from that assistant is scoped to the workspace you picked. It can't see or touch your other workspaces.
  • All my workspaces. The assistant can list every workspace you belong to and switch between them (list_workspaces, switch_workspace). It acts in one workspace at a time, starting in the one you picked, and the name of the workspace is in every switch reply so it can check before it writes. New workspaces you create later are included. The screen only offers this when you have more than one workspace.

You can see which kind each connection is, and revoke it, under Settings, Connected apps.

Using Warmerly

#Tools

Agents can read your workspace and act in it: create and edit draft campaigns, add leads, reply to your inbox, verify and find email addresses, and manage suppression. The same guardrails below apply to every one of those actions. No tool can start or resume a campaign's sending: you do that yourself in the Warmerly dashboard.

ToolWhat it does
search_docsSearch the Warmerly documentation for pages relevant to a question.
read_docRead the full content of a Warmerly docs page by slug.
get_account_overviewSnapshot of the workspace: plan, quota usage, mailbox/campaign counts, setup gaps.
list_workspacesThe workspaces this connection can act in, and which one it is acting in now.
switch_workspaceMove a connection made for all your workspaces to another one. A single-workspace connection refuses.
get_connect_mailbox_linkGet the URL to connect a mailbox yourself (mailbox credentials never pass through an MCP client).
list_mailboxesList the workspace's connected mailboxes, their status and health.
get_mailbox_healthA mailbox's daily health history plus its latest SPF/DKIM/DMARC/MX check.
set_warmupTurn warmup on or off for a mailbox. Turning it off is refused for the free sandbox mailbox.
update_mailbox_settingsChange a mailbox's sending capacity: its daily campaign-send cap (the ceiling a campaign's ramp can never exceed), the minimum wait between sends and the daily warmup send volume. Only the fields you pass change. Refused on the free sandbox mailbox.
check_domainRun a live SPF/DKIM/DMARC/MX check against any domain.
run_placement_testSend a placement test from a mailbox and score where it landed.
search_leadsSearch Warmerly's lead database with a natural-language query or structured filters (up to 25 companies per call). Returns company details and whether each has a contact email, not the address itself, use add_leads_from_search to put them in a campaign.
count_leadsCount how many leads match a search, without fetching rows.
verify_emailCheck whether an email address is likely to be deliverable.
find_emailStart a job to find an email address for a person or company.
get_find_email_resultPoll a find_email job for its result.
suppress_emailsAdd addresses to the workspace's suppression list.
list_campaignsList the workspace's campaigns with status and send/reply counts.
get_campaignGet one campaign's settings, sequence steps and readiness to start.
create_campaignCreate a new draft campaign.
set_campaign_sequenceSet a campaign's sequence of send steps. Custom merge tags (anything beyond the built-in name, company and sender tags) must already exist on the campaign's leads, so add leads first. Editing a running campaign keeps leads on their current step, and removing a step that leads are sitting on is refused.
update_campaign_settingsChange a campaign's sending schedule and volume ramp (daily limit, sending days, hours and timezone, minimum wait, stop-on-reply behaviour, tracking options, ramp, reply and lead targets). Only the fields you pass change. It does not change the campaign's status, name or AI-opener brief, and never starts sending.
add_leadsAdd up to 1,000 leads you supply (your own list, a CRM export) to a campaign. Addresses already in the campaign are skipped.
add_leads_from_searchAdd the leads matching a lead-database search to a campaign (up to 500 per call, 50 by default); companies with no contact email are skipped, and each lead added counts against your lead-export allowance.
prepare_campaign_launchCheck a campaign is ready to send and get the link where you press Launch or Resume yourself. It never starts sending.
pause_campaignPause a running campaign.
get_campaign_statsGet a campaign's send/open/reply/bounce numbers.
list_conversationsList inbox conversations (email/LinkedIn), newest activity first.
get_conversationGet one conversation's message timeline and any draft reply.
draft_replyGenerate and autosave an AI-drafted reply, without sending it.
send_replyReply to an existing conversation over email or LinkedIn, only after you have approved the exact message: the call must carry confirm: true. It cannot start a new conversation. Leave out the subject to reply in the thread ("Re: …").
categorize_messageSet an inbox message's category: lead, not_relevant or spam.
Using Warmerly

#Guardrails

Every action a connected assistant takes goes through the exact same checks as the dashboard, there is no separate, looser path for AI:

  • Same plan limits, quotas and capacity as the dashboard. A tool call is refused under the identical conditions a dashboard click would be, through the same underlying function, and spends the allowance of the workspace the connection belongs to.
  • The billing lock applies. If the workspace is locked (a payment is overdue, it's over its plan's limits, its plan is paused, or no plan is chosen), every action that sends or changes something is refused. Reading still works, and so do the actions that help you get back under your limits: pausing a campaign, turning warmup off, suppressing addresses and categorising messages. A deleted workspace allows no actions until it is restored.
  • The suppression list is enforced. An AI-sent reply or campaign send never reaches an address that unsubscribed or bounced, the same as a human-sent one.
  • Replies respect your mailbox's health. send_reply won't send from a mailbox that is paused, needs reconnecting, or has campaign sending paused while its reputation recovers, and each sending account can send at most 50 replies a day through connected apps.
  • An assistant can never start sending. prepare_campaign_launch checks readiness (no leads, no senders, an unsupported channel on the current plan) and returns a link; you review the campaign and press Launch or Resume in Warmerly. Nothing is mailed to anyone until you do.
  • Rate limited. 60 tool calls per minute per connection; sends (a reply) additionally share a tighter 20-per-minute budget per connection and 40 per minute across all your connections, so a runaway assistant can't blow through your sending reputation even if it can call tools freely.
  • Every action is logged. Everything that sends or changes something is recorded to the workspace's audit log with the connected app's name, so "what did the AI do" is always answerable. Reads are not logged.
  • No passwords ever pass through the AI. Connecting a mailbox, or anything else that needs a password or OAuth grant, always happens in the Warmerly dashboard itself. The assistant can at most hand you a link to open.
  • Revocable any time. Every connection shows up under Settings → Connected apps, where you can revoke it, the assistant loses access immediately.
  • Scoped to what you chose. A connection made for one workspace can only ever see and act in that workspace. A connection made for All my workspaces acts in one workspace at a time and can switch between the workspaces you belong to.
Using Warmerly

#Documentation for LLMs

If you are building on the REST API with an AI coding assistant, or want a model to answer questions about Warmerly, give it the docs in a form it can read in one go:

URLWhat it is
warmerly.com/docs/llms.txtAn index of every docs page, with a one-line summary and a link to its Markdown
warmerly.com/docs/llms-full.txtThe entire documentation (guides and the full API reference) as one Markdown file
warmerly.com/docs/<page>.mdAny single page as Markdown, e.g. /campaigns.md or /authentication.md

They are generated from these pages, so they are always current. Paste the llms-full.txt URL into Claude, ChatGPT or Cursor (or save the file into your project) and ask it to write your integration.

Using Warmerly

#Troubleshooting

  • The assistant says it got a 401 / lost access. The connection was revoked or its token expired, reconnect using the steps above.
  • The assistant is looking at the wrong workspace. A connection made for one workspace stays in it. Reconnect and choose All my workspaces at the consent screen, then ask the assistant to switch workspace. Or reconnect and pick the other workspace, and keep both connections.

ChatGPT and Claude

Connect your AI assistant.

Connect Claude or ChatGPT, sign in once, and ask about your campaigns in plain words.

Was this page helpful?