Grow with GhostDocs

MCP campaigns

Let Claude or ChatGPT choose the people and write every message in a Ghost campaign, while Ghost handles sending, daily limits, reply detection and the not-accepted email route.

An MCP campaign is a campaign where your AI assistant picks the people and writes every message for each person. Ghost does the sending, with the same daily limits, pacing, warm-up, health checks, reply detection and auto-stop as any other campaign.

Use one when each message should be researched and written individually, for example invites to an event, or outreach that references each prospect's own posts or company news.

How it works

  1. Your assistant creates the campaign as a draft with create_mcp_campaign, listing the steps in order.
  2. It adds people with add_mcp_contacts, each with their own text for each step.
  3. It starts the campaign with start_mcp_campaign. Nothing sends while it's a draft.
  4. It checks progress with get_mcp_campaign_status and fills in any missing messages with set_contact_messages.

Rules

  • Messages are sent exactly as written. Merge tags like {{first_name}} are not filled in, so the assistant must write the final text.
  • Missing text means waiting, not sending. If a message step has no text for someone, they wait ("Waiting for message") until text is supplied, then carry on automatically.
  • A connection request with no note is sent as an invite without a note.
  • Length limits: invite notes 300 characters, messages 8,000. Text over the limit is rejected, not cut short.
  • Sent messages are locked and can't be edited.
  • One active campaign per person. Anyone already in another active campaign, blacklisted or excluded is skipped. People already connected skip the invite step.
  • A reply stops the sequence. It appears in your Inbox and Pipeline.
  • MCP campaigns share each LinkedIn profile's daily allowance with your other campaigns. They don't get extra sends.

Steps

Up to 12 steps, each with a step_type and delay_days (days after the previous step):

connection_request, message, follow_up, email, profile_view, like_post

Steps are numbered from 1. Messages are keyed by step number:

{
  "linkedin_url": "https://www.linkedin.com/in/jane-doe",
  "first_name": "Jane",
  "messages": {
    "1": "Hi Jane, saw your talk on RevOps hiring. Would be good to connect.",
    "2": "Thanks for connecting, Jane. Quick question on how you're handling...",
    "3": { "text": "Hi Jane, ...", "subject": "Following up" }
  }
}

Email steps need a work_email for the person and a connected mailbox. Add more steps later with add_mcp_campaign_steps.

The not-accepted email route

Some people never accept your invite. Add not_accepted_steps to give them an email-only route:

  • After auto_withdraw_days (7, 14, 21 or 28; default 14), Ghost withdraws the unaccepted invite and starts the email route.
  • Those steps are keyed E1, E2 and so on. E1's delay counts from the withdrawal (minimum 1 day).
  • These emails must read as standalone cold emails and never mention LinkedIn, since the person never connected.
  • The route only sends if you have a mailbox connected.

In the app

MCP campaigns show an MCP badge in Campaigns. Click the badge to see each person's messages and edit any that haven't been sent.

Example prompt

"Create an MCP campaign called 'Masterclass invites': an invite, a message 2 days after acceptance, and a follow-up 5 days later. Research each of these 40 people's last three posts and write messages that reference them. Show me five examples before you start the campaign."