Build the whole campaign
Create the campaign, write the sequence, set the send window and enroll an audience — one graph, one call.
campaign_createcampaign_set_flowcampaign_schedulecampaign_enroll_leadsMailjinn exposes campaigns, audiences, mailboxes, replies and CRM as MCP tools. Connect Claude, ChatGPT, Claude Code or Cursor and run outreach from chat — with the same limits and confirmations a human gets.
https://api.mailjinn.com/mcp Start an outreach campaign for the 240 leads in leads.csv. Keep it plain.
Imported 240 → 231 valid after verification. 4 were on your suppression list. Drafted a 3-email sequence, spam score 1.2/10. Two warmed mailboxes can cover this at 60/day.
Show me email 1 for one real lead.
Rendered for maria@northwind.io — subject and body below. Ready to launch; I need your confirmation to send.
Confirmed. Launch.
Paste one URL into the client you already use, sign in with Google, approve the connector.
Not a wrapper around a form. The agent works against structured campaign objects and gets structured errors back.
Create the campaign, write the sequence, set the send window and enroll an audience — one graph, one call.
campaign_createcampaign_set_flowcampaign_schedulecampaign_enroll_leadsImport CSVs, verify every address, and check that {{ variables }} actually have data before anything sends.
audience_import_csvemail_validate_batchcontent_validate_variablesSpam-score the copy, check SPF / DMARC, see mailbox health and daily capacity, and dry-run before launch.
email_content_check_spamdns_check_recordssmtp_health_checkcampaign_dry_runSending is a separate scope. Launch, test sends and replies always ask you to confirm; the model cannot bypass it.
campaign_launchemail_send_testcampaign_pausecampaign_resumeReplies land in the Unibox, get classified by intent, and the agent can draft or send the follow-up.
unibox_thread_listunibox_update_categoryunibox_reply_emailMove pipeline stages, add notes and tasks, and keep the do-not-email list current — all from chat.
crm_lead_update_stagecrm_lead_create_tasksuppression_addOAuth 2.1 with PKCE. Every tool executes as the signed-in user; data never crosses tenants.
read / write / send scopes. Launch, test sends and replies require an explicit confirmation — enforced server-side.
At enrollment and again inside the send worker. Agents can add to the list but cannot bypass it.
Daily and hourly caps and warmup limits are enforced in SMTP selection. Over-limit sends wait; they never skip the cap.
Your agent chooses these for you. Listed here so you know exactly what it can touch.
system_get_info—Workspace health, connected mailboxes, daily limits, active campaigns. Call this first.campaign_listreadList campaigns.campaign_get_detailsreadFull details, schedule and flow graph metadata.campaign_get_analyticsreadSent / open / click / reply / bounce counts and rates.campaign_createwriteCreate a campaign.campaign_set_flowwriteUpsert the whole sequence graph (emails, waits, conditions) in one call.campaign_schedulewriteSet the send window and move to scheduled.campaign_check_enrollmentreadPreview who would enroll, with per-reason exclusions.campaign_enroll_leadswriteEnroll an audience into a campaign.campaign_preview_renderreadRender the email against one real recipient.campaign_dry_runreadRecipients, suppressed count, healthy mailboxes and a spam score — run before launch.campaign_launchsendLaunch. Always asks you to confirm.campaign_pausewritePause a running campaign.campaign_resumewriteResume a paused campaign.audience_listreadList audiences.audience_get_detailsreadField schema, member count, sample contacts.audience_createwriteCreate an audience.audience_import_csvwriteImport CSV text; extra columns become custom fields.audience_add_itemwriteAdd or update one contact.audience_bulk_updatewriteBulk add/update contacts.content_validate_variablesreadCheck {{ variables }} against real audience data; reports empty rates.email_validate_batchwriteStart email verification for an audience (returns task_id).email_validate_statusreadVerification progress and verdict counts.email_content_check_spamreadSpam score 0–10 with per-trigger rewrite hints.dns_check_recordsreadSPF / DMARC / MX check.smtp_account_listreadConnected mailboxes with health and limits.smtp_health_checkreadHealth, rate limits and today's volume for one mailbox.email_send_testsendSend a one-off test email. Asks to confirm.unibox_get_summaryreadUnread count and breakdown by classification.unibox_thread_listreadList reply threads — start here for "any replies?".unibox_thread_getreadFull message history of a thread.unibox_update_categorywriteReclassify (interested, not_interested, auto_reply, …).unibox_reply_emailsendSend a reply in-thread. Asks to confirm.crm_pipeline_listreadPipelines and their stages.crm_lead_listreadList leads.crm_lead_getreadOne lead with stage, score, engagement.crm_lead_update_stagewriteMove a lead.crm_lead_add_notewriteAdd a timeline note.crm_lead_create_taskwriteCreate a follow-up task.suppression_addwriteAdd addresses (unsubscribed, bounced, complaint, manual). Enforced at every send.suppression_checkreadAre these addresses suppressed?suppression_listreadList suppressed addresses.No. Paste the server URL into Claude, ChatGPT, Claude Code, Cursor or any MCP-capable client, sign in with Google, and talk to it in plain words. The agent picks the tools.
Talk to us about your sending stack and where agents fit.