Connect your AI to Ballast
Last updated
Ballast is cold email software with every feature on every plan. Connect unlimited mailboxes, send sequences at a pace your domains survive, and handle replies in one inbox, priced by the emails you send.
Everything you can do in the dashboard is also a tool for your AI, over the Model Context Protocol (MCP). Ask Claude to draft a sequence for a list, check yesterday's replies, or find the mailbox that bounces most. It works in one workspace with your role.
Server URL
https://ballast.to/api/mcpApps with sign-in (Claude, ChatGPT) open Ballast, you pick the workspace and allow it. Tools that take a header (Claude Code, Cursor) use an API key from Settings, API keys. Disconnect apps or revoke keys on the same page.
Claude
In Claude, open Settings, Connectors, and add a custom connector. Name it Ballast, paste the server URL, then connect: Claude opens Ballast to sign in and pick a workspace.
ChatGPT
Add a custom connector (an MCP server) with the server URL and OAuth sign-in. ChatGPT sends you to Ballast to pick the workspace.
Claude Code
claude mcp add --transport http ballast https://ballast.to/api/mcp \
--header "Authorization: Bearer bl_..."With every tool (the full set):
claude mcp add --transport http ballast "https://ballast.to/api/mcp?toolset=full" \
--header "Authorization: Bearer bl_..."Cursor and other tools
Add it to ~/.cursor/mcp.json, or the MCP config of your tool:
{
"mcpServers": {
"ballast": {
"url": "https://ballast.to/api/mcp",
"headers": {
"Authorization": "Bearer bl_..."
}
}
}
}Cursor works best with about 40 tools across all your servers, so the core set leaves room for others. For the full set, add a header (or put ?toolset=full on the URL):
{
"mcpServers": {
"ballast": {
"url": "https://ballast.to/api/mcp",
"headers": {
"Authorization": "Bearer bl_...",
"x-ballast-toolset": "full"
}
}
}
}You confirm what can't be undone
Launching a campaign, sending a reply, importing and deleting take two calls. The first only returns what will happen, for example "will email 312 leads from 6 mailboxes, first sends Tue 09:00 in each lead's time zone", and a confirmation code. Your AI shows you that and runs it only after you say yes. The code works for 10 minutes and only for those exact arguments.
Core tools and the full set
Ballast has 92 tools, the same operations as the REST API. A long tool list costs your AI context and makes it pick worse, so the server URL gives the 30 core tools: enough to set up mailboxes, import leads, write and launch a campaign, read its numbers and answer replies.
For everything else (editing leads, lists and labels, webhooks, warmup, integrations, link domains, members), connect with ?toolset=full on the URL, or send the header x-ballast-toolset: full:
https://ballast.to/api/mcp?toolset=fullSign-in, permissions and confirmations are the same in both sets.
Core tools
Workspace
whoamiWho am I: the user, workspace and plan behind this key or sessionget_billingPlan, subscription status, emails and AI drafts used this periodget_overviewWorkspace dashboard: sends, replies, positive replies, bounces, won, mailbox health and when and where replies come from
Domains and mailboxes
check_domainGrade a sending domainlist_domainsList sending domains with their healthadd_domainAdd a sending domain and check itlist_mailboxesList mailboxesadd_mailboxConnect a mailbox
Leads
import_leadsImport leads in chunksasks to confirmlist_leadsList leadslist_lead_listsLead lists with countsadd_suppressionsSuppress addresses or whole domains
Campaigns
list_campaignsList campaignscreate_campaignCreate a draft campaignget_campaignGet a campaign with its sequence, schedule and settingsupdate_campaignRename a campaign or change its schedule, mailboxes and optionsset_sequenceReplace the whole sequencewrite_sequenceWrite emails with AI from the offer profileadd_leads_to_campaignAdd leads from lists (or by id) to a campaignpreview_campaignRender every step and variant for one leadget_launch_checklistWhat has to be fixed before launchlaunch_campaignLaunch or resume a campaignasks to confirmpause_campaignPause a running campaignget_campaign_statsDaily emails sent, replies, bounces and opensget_campaign_analyticsSends, replies and bounces by campaign, mailbox and email provider, plus reply sentiment
Replies
get_unibox_filtersUnibox counts by label, mailbox and campaignlist_threadsReply threads, newest firstget_threadA thread with every message, the campaign emails and the leadsend_replyAnswer a threadasks to confirmlabel_threadSet or clear a thread's label
Full set only
62 more tools with ?toolset=full.
add_leads_to_listAdd leads to a listcheck_integrationTest a connected key again (verifier credits left, or the AI key on its model)check_link_cnameCheck a link domain CNAMEcheck_link_domainCheck the link domain nowcheck_workspace_domainRe-check a sending domain nowcreate_labelCreate a labelcreate_leadAdd one leadcreate_lead_listCreate a listcreate_webhookAdd a webhook endpointdelete_campaignDelete a campaignasks to confirmdelete_labelDelete a labelasks to confirmdelete_lead_listDelete a listasks to confirmdelete_leadsDelete leadsasks to confirmdelete_mailboxDisconnect a mailboxasks to confirmdelete_webhookRemove a webhook endpointasks to confirmdraft_offer_profile_from_websiteDraft an offer profile from a websiteduplicate_campaignCopy a campaign's sequence, schedule and mailboxes into a new draft (no leads)get_campaign_breakdownOne campaign's results by step, A/B variant, mailbox and email providerget_importImport progress and countsget_leadGet a lead with custom fields, lists and labelsget_link_domainGet the link domainget_mailbox_warmupWarmup for one mailboxget_offer_profileGet the offer profileget_sending_ipWhere your mailboxes connect fromget_sending_settingsWorkspace sending and reply settings shared by every campaignimport_mailboxesImport SMTP/IMAP mailboxes in bulkasks to confirmlabel_leadsApply a label to leadslist_campaign_lead_sendsEmails sent to one lead in a campaignlist_campaign_leadsLeads in a campaign with their progresslist_integrationsList connected integrationslist_labelsLabels with their triggers and lead countslist_membersMembers of this workspace, and pending invites for owners and adminslist_suppressionsSuppressed addresses and domainslist_warmupWarmup for every mailboxlist_webhook_deliveriesRecent deliveries to an endpointlist_webhooksList webhook endpointsmark_thread_readMark a thread read or unreadmark_wonMark a lead wonremove_domainRemove a domain no mailbox usesasks to confirmremove_leads_from_campaignTake leads out of a campaign (they stay in the workspace)asks to confirmremove_leads_from_listRemove leads from a list (the leads stay)remove_link_domainRemove the link domainasks to confirmremove_own_proxyStop using your own proxyremove_suppressionsRemove suppressionsasks to confirmrename_lead_listRename a listset_ai_modelsPick the models the workspace's own AI key runsset_link_domainSet the link domainset_own_proxyUse your own proxysuppress_leadsNever email these leads againtest_label_promptRun the reply classifier on a sample replytest_mailboxTest a connected mailbox againtest_own_proxyTest your own proxy without savingtest_webhookSend a test event nowunlabel_leadsRemove a label from leadsupdate_labelChange a label, its AI prompt or triggersupdate_leadChange a lead's fields or statusupdate_mailboxChange a mailbox's limits, signature or statusupdate_mailbox_warmupTurn warmup on or off and tune itupdate_offer_profileSave the offer profileupdate_sending_settingsChange the workspace sending and reply settingsupdate_webhookChange a webhook's URL, events or on/offverify_leadsVerify lead addresses