Ballast - Cold Email
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BALLAST_API_KEY | Yes | Your Ballast workspace API key from Settings > API Keys (starts with bl_). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| add_domainA | 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). |
| add_leads_to_campaignB | 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. |
| add_mailboxA | 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_suppressionsA | Suppress addresses or whole domains Up to 10,000 values per call: emails, or domains written as @acme.com. Matching leads are marked suppressed. |
| check_domainA | 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). |
| create_campaignA | Create a draft campaign Starts with one empty email. Use set_sequence to write the emails, then add leads and mailboxes. |
| get_billingB | Plan, subscription status, emails and AI drafts used this period |
| get_campaignB | Get a campaign with its sequence, schedule and settings |
| get_campaign_analyticsA | 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). |
| get_campaign_statsA | 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). |
| get_launch_checklistC | What has to be fixed before launch Required items block the launch; warnings are advice. |
| get_overviewA | 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). |
| get_threadC | A thread with every message, the campaign emails and the lead |
| get_unibox_filtersC | Unibox counts by label, mailbox and campaign |
| import_leadsA | 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. |
| label_threadA | 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. |
| launch_campaignA | 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. |
| list_campaignsC | List campaigns Newest first, with lead counts by progress. |
| list_domainsA | 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). |
| list_lead_listsC | Lead lists with counts |
| list_leadsB | List leads Paged, newest first by default. Filter by list, label, status, verification and ESP, or search email, name and company. |
| list_mailboxesB | List mailboxes Connected sending mailboxes with today's limit, ramp-up and the DNS health of their domain. |
| list_threadsB | Reply threads, newest first Filter by unread, label, mailbox or campaign. Page with |
| pause_campaignB | Pause a running campaign Nothing more is sent until it is launched again. Emails already handed to the provider still arrive. |
| preview_campaignA | 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. |
| send_replyB | 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. |
| set_sequenceA | 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. |
| update_campaignC | Rename a campaign or change its schedule, mailboxes and options |
| whoamiA | Who am I: the user, workspace and plan behind this key or session |
| write_sequenceA | 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). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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.