Ballast - Cold Email
OfficialConnect AI agents to Ballast to manage cold email campaigns, domains, mailboxes, leads, deliverability, and inbox replies.
Check workspace/user/billing details and aggregate outreach performance (
whoami,get_overview,get_billing).Diagnose, list, and connect sending domains with DNS/deliverability checks (
check_domain,list_domains,add_domain).List and connect sending mailboxes, including Google app-password and custom SMTP/IMAP setup (
list_mailboxes,add_mailbox).Import, list, filter, and suppress leads; manage lead lists and add leads to campaigns (
import_leads,list_leads,list_lead_lists,add_suppressions,add_leads_to_campaign).Create, list, update, preview, launch, pause, and analyze campaigns; manage schedules, mailboxes, quotas, and sequence steps (
list_campaigns,create_campaign,get_campaign,update_campaign,set_sequence,preview_campaign,launch_campaign,pause_campaign,get_campaign_stats,get_campaign_analytics).Use AI to draft or rewrite sequence copy and check launch readiness (
write_sequence,get_launch_checklist).Manage the unified inbox: filter/count threads, read threads, send replies, and apply sentiment labels (
get_unibox_filters,list_threads,get_thread,send_reply,label_thread).Rely on safe-by-default confirmations for destructive actions like launching campaigns or sending replies.
Enables connecting and managing Google Workspace mailboxes for cold email outreach through Ballast, including listing connected mailboxes with daily sending limits and adding new Google Workspace mailboxes via app password authentication.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Ballast MCP Server
Official Model Context Protocol (MCP) server implementation for Ballast — connect AI agents to manage cold email campaigns, deliverability warmup, lead lists, and inbox replies.
This repository contains the standalone MCP server package that runs locally via standard I/O (stdio) and connects AI assistants (Claude Desktop, Cursor, Claude Code, Zed, etc.) to your Ballast workspace.
Features
Deliverability & DNS Diagnostics: Inspect secondary domains for SPF, DKIM, DMARC alignment, MX configuration, and blacklist health.
Campaign & Sequence Management: Build multi-step outbound sequences, set A/B variants, configure sending delays, and verify launch checklists.
Automated Bounce Circuit Breakers: Monitor campaign placement rates and pause sends if bounce rate thresholds are crossed.
Unified Inbox (Unibox): Read and summarize customer email threads, check sentiment classification, and draft human-confirmed replies.
Safe by Default: Destructive operations (launching campaigns, sending emails, deleting data) require explicit two-step confirmation with a 10-minute HMAC token.
Related MCP server: Smartlead MCP Server
Installation & Setup
Requirements
Node.js >= 18.0.0
A Ballast workspace API key from Settings > API Keys (starts with
bl_).
Run via npx (Recommended)
You can run the server directly without manual installation:
BALLAST_API_KEY="bl_your_key_here" npx -y ballast-mcpInstall from Source
git clone https://github.com/useballast/ballast-mcp.git
cd ballast-mcp
npm install
npm startClient Configuration
Claude Desktop
Add Ballast to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ballast": {
"command": "npx",
"args": ["-y", "ballast-mcp"],
"env": {
"BALLAST_API_KEY": "bl_your_api_key_here"
}
}
}
}Cursor
Add to ~/.cursor/mcp.json (or your project's .cursor/mcp.json):
{
"mcpServers": {
"ballast": {
"command": "npx",
"args": ["-y", "ballast-mcp"],
"env": {
"BALLAST_API_KEY": "bl_your_api_key_here"
}
}
}
}Claude Code
claude mcp add --transport stdio ballast -- npx -y ballast-mcp --key=bl_your_api_key_here(Note: For clients that support remote Streamable HTTP directly, you can also use --transport http ballast https://ballast.to/api/mcp --header "Authorization: Bearer bl_...")
Tools Reference
The server implements 30 core tools organized by functional area:
Tool | Category | Description |
| Workspace | Get authenticated user, active workspace, and permission role. |
| Workspace | Workspace-wide aggregate totals and trends across all campaigns (sends, replies, sentiment, bounces). |
| Workspace | Plan details, sending allowances, dedicated IPs, and usage limits. |
| Domains | Live DNS & deliverability diagnostics on any domain without adding it. |
| Domains | List connected sending domains with deliverability scores and verification status. |
| Domains | Connect and register a new sending domain to the workspace. |
| Mailboxes | List connected Google Workspace and Microsoft 365 mailboxes with daily limits. |
| Mailboxes | Connect an external mailbox for outbound outreach. |
| Leads | Search and filter contacts in your workspace. |
| Leads | Import lead contacts with custom variables and tag assignment. |
| Leads | List organized lead segments and member counts. |
| Leads | Add email addresses or root domains to workspace-wide do-not-contact lists. |
| Campaigns | List outbound sequences with sending schedules and statuses. |
| Campaigns | Create a new cold email campaign. |
| Campaigns | Retrieve campaign settings, step variants, and assigned mailboxes. |
| Campaigns | Update campaign schedule, daily quotas, or track settings. |
| Campaigns | Configure sequence steps, delays, subject lines, and body copy. |
| Campaigns | Generate or polish multi-step sequence copy using AI. |
| Campaigns | Enroll lead segments into an active sequence. |
| Campaigns | Preview lead send distribution across mailboxes and first send timings. |
| Campaigns | Check domain alignment, sender warmup, and lead hygiene before launch. |
| Campaigns | Launch sequence sending (requires confirm token). |
| Campaigns | Immediately pause sending for a campaign. |
| Campaigns | Daily time-series email metrics for a campaign or all campaigns over time. |
| Campaigns | Granular performance breakdown across email providers (Google, Microsoft), mailboxes, and sentiment. |
| Unibox | Retrieve unified inbox filter presets and label counts. |
| Unibox | List incoming recipient replies and conversation threads. |
| Unibox | Inspect full thread message history, headers, and lead details. |
| Unibox | Send an email reply from the thread's assigned mailbox (requires confirm token). |
| Unibox | Apply sentiment labels (Interested, Meeting Booked, Not Interested, Out of Office). |
Safety: Two-Step Confirmations
To prevent inadvertent mass sends or data deletion:
When calling
launch_campaign,send_reply, or deletion tools without aconfirm_token, the server generates a dry-run preview describing the exact outcome (e.g. "Will send 320 emails across 6 mailboxes") and issues an HMAC token.The AI presents the preview to the user.
The action executes only when the user approves and the AI passes the
confirm_token.
Development
git clone https://github.com/useballast/ballast-mcp.git
cd ballast-mcp
npm install
npm test # or npm startLicense
MIT © Ballast
Available Tools
30 toolsadd_domainAInspect
Connect a new sending domain to the workspace and verify DNS. Registers a new sending domain under the workspace, saves it, and immediately initiates DNS and deliverability verification (MX, SPF, DKIM, DMARC, blacklists). USE THIS when setting up a new custom domain to send cold emails from Ballast. DO NOT use to test an external or unverified domain without adding it to the workspace (use check_domain instead) or to list existing domains (use list_domains instead).
Inputs: domain (required).
add_leads_to_campaignBInspect
Add leads from lists (or by id) to a campaign Skips leads already in the campaign, unsubscribed, bounced or suppressed leads, and addresses verification found invalid.
Inputs: id (required), leadIds, listIds, allLeads.
add_mailboxAInspect
Connect a mailbox Tests SMTP and IMAP login first and saves only when both pass. Google needs an app password. Microsoft 365 connects with OAuth from the dashboard.
add_suppressionsAInspect
Suppress addresses or whole domains Up to 10,000 values per call: emails, or domains written as @acme.com. Matching leads are marked suppressed.
Inputs: values (required), reason.
check_domainAInspect
Inspect DNS and deliverability health of any domain without adding it. Performs a live, read-only diagnostic check on any domain name (MX, SPF, DKIM, DMARC records, blacklist status, and domain age) with actionable DNS fix instructions. Results are cached for 10 minutes. USE THIS to test or grade arbitrary prospect or candidate domains without saving or connecting them. DO NOT use to configure a domain for sending in Ballast (use add_domain instead) or to view already configured sending domains (use list_domains instead).
Inputs: domain (required), selector.
create_campaignAInspect
Create a draft campaign Starts with one empty email. Use set_sequence to write the emails, then add leads and mailboxes.
Inputs: name.
get_billingBInspect
Plan, subscription status, emails and AI drafts used this period
Inputs: no named parameters.
get_campaignBInspect
Get a campaign with its sequence, schedule and settings
Inputs: id (required).
get_campaign_analyticsAInspect
Multi-dimensional performance breakdown by provider, mailbox, and sentiment. Returns granular aggregate performance metrics broken down across email providers (Google Workspace, Microsoft 365, etc.), individual sending mailboxes, and reply sentiment classifications. USE THIS to diagnose deliverability issues across providers or compare mailbox performance. DO NOT use for day-by-day time-series data (use get_campaign_stats instead) or macro workspace KPI totals (use get_overview instead).
Inputs: days.
get_campaign_statsAInspect
Daily time-series email metrics for a campaign or all campaigns. Returns daily time-series counts (day-by-day sent, replied, opened, bounced, positive) for a specific campaign (pass campaignId) or all campaigns combined over the last N days. USE THIS to plot charts or view daily performance trends over time. DO NOT use for high-level workspace summary totals (use get_overview instead) or for multi-dimensional breakdowns by ESP provider, mailbox, or step (use get_campaign_analytics instead).
Inputs: days, campaignId.
get_launch_checklistCInspect
What has to be fixed before launch Required items block the launch; warnings are advice.
Inputs: id (required).
get_overviewAInspect
Workspace-wide aggregate email outreach totals and trends. Returns macro-level aggregate counts (total sends, replies, positive replies, bounces, won deals) across the entire workspace for the last 7, 30, or 90 days, comparing against the prior period for trend analysis. USE THIS for high-level workspace executive summaries. DO NOT use for a single campaign (use get_campaign_stats instead) or for provider/mailbox breakdowns (use get_campaign_analytics instead).
Inputs: days.
get_threadCInspect
A thread with every message, the campaign emails and the lead
Inputs: id (required).
get_unibox_filtersCInspect
Unibox counts by label, mailbox and campaign
Inputs: no named parameters.
import_leadsAInspect
Import leads in chunks Send up to 5,000 rows per call. The first call creates the import and returns its id; pass importId with every next chunk and final: true with the last. Addresses are deduped, suppressed ones skipped, invalid ones counted. ESP detection and verification run in the background after the final chunk.
Inputs: rows (required), list, final, verify, +5 more.
label_threadAInspect
Set or clear a thread's label The lead gets the label for the thread's campaign and the label's triggers run (suppress, stop in campaign, pause campaign, move to list). null clears it.
Inputs: id (required), labelId (required).
launch_campaignAInspect
Launch or resume a campaign Runs the launch checklist first and refuses when a required item fails. The worker then sends inside the schedule window.
Inputs: id (required).
list_campaignsCInspect
List campaigns Newest first, with lead counts by progress.
Inputs: status.
list_domainsAInspect
List all connected sending domains and their verification status. Returns all custom sending domains currently registered in the workspace, including their mailbox count, latest deliverability scores, and verification history. USE THIS to review existing sending infrastructure. DO NOT use to register a new domain (use add_domain instead) or to test an external domain without adding it (use check_domain instead).
Inputs: no named parameters.
list_lead_listsCInspect
Lead lists with counts
Inputs: no named parameters.
list_leadsBInspect
List leads Paged, newest first by default. Filter by list, label, status, verification and ESP, or search email, name and company.
Inputs: dir, esp, page, sort, +6 more.
list_mailboxesBInspect
List mailboxes Connected sending mailboxes with today's limit, ramp-up and the DNS health of their domain.
Inputs: no named parameters.
list_threadsBInspect
Reply threads, newest first Filter by unread, label, mailbox or campaign. Page with cursor from the previous answer.
Inputs: view, cursor, search, labelId, +2 more.
pause_campaignBInspect
Pause a running campaign Nothing more is sent until it is launched again. Emails already handed to the provider still arrive.
Inputs: id (required).
preview_campaignAInspect
Render every step and variant for one lead Shows the emails exactly as that lead would get them, with spintax resolved the way it will be for them. Defaults to the first lead in the campaign.
Inputs: id (required), leadId.
send_replyBInspect
Answer a thread Sends from the mailbox the conversation is on, in the same thread (In-Reply-To and References), to whoever wrote last. The previous message is quoted below.
Inputs: id (required), text (required).
set_sequenceAInspect
Replace the whole sequence Steps in order, each with 1 to 5 variants. Bodies may be plain text (blank lines split paragraphs) or simple HTML. Use {{first_name}} style variables, {{first_name|there}} for a fallback, {Hi|Hello} spintax, and put {{unsubscribe}} in the first email. Only drafts and paused campaigns.
Inputs: id (required), steps (required).
update_campaignCInspect
Rename a campaign or change its schedule, mailboxes and options
Inputs: id (required), days, name, endOn, +13 more.
whoamiAInspect
Who am I: the user, workspace and plan behind this key or session
Inputs: no named parameters.
write_sequenceAInspect
Write emails with AI from the offer profile. Drafts a whole sequence (mode sequence) or a new version of one variant (rewrite, shorter, angle), using only facts from the workspace offer profile and lead fields. Results are saved as new variants and never overwrite existing text; an empty campaign gets the drafted steps. Each email is checked against the content checklist; anything still failing comes back in problems. Requires that the workspace offer profile is configured in Ballast settings (or updated via update_offer_profile).
Inputs: id (required), mode, angle, steps, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 30 tools
Tools are largely distinct and descriptions explicitly cross-reference siblings with USE THIS/DO NOT patterns (stats vs analytics vs overview, add/check/list domain). Minor overlap remains between set_sequence and write_sequence (both author sequences) and between get_campaign and get_campaign_stats, but boundaries are mostly clear.
Nearly every tool follows a consistent snake_case verb_noun pattern (list_campaigns, add_domain, create_campaign, send_reply, update_campaign). The only deviation is the single 'whoami', which is idiomatic and harmless.
30 tools is heavy and sits at the top of the acceptable range, but the surface spans genuinely broad sub-domains (domains, mailboxes, campaigns, sequences, leads, threads, analytics, billing). Each tool maps to a distinct area, though consolidation is possible.
Coverage is strong across the cold-email lifecycle: leads, campaigns, sequences, domains, mailboxes, analytics, threads, billing and suppressions. Gaps are the lack of delete/remove operations (campaign, mailbox, domain) and a referenced-but-absent update_offer_profile tool, which agents must work around.
Maintenance
Related MCP Connectors
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
MailBeast.ai is a cold email outreach platform. This server lets AI assistants create and launch campaigns with multi-step A/B sequences, manage leads and sending mailboxes (health, warmup, limits), read and answer replies from a unified inbox, and pull campaign analytics. OAuth 2.1 sign-in with read-only or read-and-write access; an API key header is also supported. Website: https://mailbeast.ai
Model Context Protocol server for Studex tools, notifications, and profile integrations
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that provides AI coding assistants (Claude, Cursor, etc.) with access to SmartLead's cold email automation platform through 116+ API endpoints for campaign management, lead tracking, and email delivery.1,133 npm20MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to manage email campaigns, leads, email accounts, and analytics through the Smartlead API, providing 28 tools for automated email outreach and campaign management.30272 npmMIT
- FlicenseNot gradedqualityDmaintenanceMailgo Campaign Suite MCP Server AI-powered cold email campaign management through Model Context Protocol (MCP). Overview Mailgo Campaign Suite MCP Server connects your AI assistant directly to the Mailgo cold email platform. Through natural conversation, you can verify email addresses, claim pre-warmed mailboxes, launch campaigns, manage their lifecycle, and pull5-
- AlicenseAqualityBmaintenanceA Model Context Protocol server for Plunk, the open-source self-hosted email platform. Provides 84 tools for transactional email, contacts, campaigns, segments, templates, workflows, events, and analytics through the Plunk API.9416 npm2MIT