Skip to main content
InstantCampaign runs a Model Context Protocol (MCP) server. An MCP-capable AI assistant can use it to look up campaign results, check a template before a transactional send, write copy in your brand voice or draft a campaign, all inside your workspace.

What the assistant can do

Read Write
Every tool is annotated for MCP clients: a title, and whether it only reads (readOnlyHint) or makes a hard-to-undo change (destructiveHint, set on remove_contact_from_list and unsubscribe_contact). The assistant cannot send email or start anything. Campaigns created through MCP wait for someone to approve the plan in the app, and journeys are created as drafts that never activate by themselves. Adding a contact to a list or recording an event can enrol the contact in an automation that already listens for it, exactly as the API would.

Sign in with OAuth (no key to paste)

An assistant that follows the MCP authorization flow — Claude Desktop, Cursor and others — can connect with a sign-in window instead of an API key:
  1. Add the server URL https://instantcampaign.ai/api/mcp. The assistant is told where to sign in (the server answers with the standard discovery documents at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server) and registers itself as a client.
  2. Your browser opens InstantCampaign’s consent page. Pick the workspace, review the permission (mcp), and click Allow access.
  3. The assistant holds a token bound to the MCP server only — it cannot be used against the rest of the API — refreshed automatically for 90 days.
Because a self-registering assistant has not been reviewed by InstantCampaign, the consent page marks it Unverified app and shows where it will send you back. Only continue if you started the connection from software you trust. You can see and disconnect the connection under Settings → Developers → Connected apps. An assistant that does not support this flow can still connect with an API key that has the MCP permission.

Privacy

MCP clients pass tool results to their own AI models, so every result goes through the same privacy filter as the in-app assistant. Contact tools return aggregates, statuses and ids, never lists of people. Every output passes a redaction layer that removes email addresses, names, phone numbers and postal addresses. The tools that take an email address (check_contact_status, upsert_contact, add_contact_to_list, remove_contact_from_list, unsubscribe_contact, record_event) look up an address you already have and answer with the contact’s id and status, never the address. Custom fields marked sensitive are withheld from every tool output, and rule values that use them read [sensitive]. See AI data privacy.

Connect

1

Create a key for the assistant

In Settings → Developers → API Keys, click Create New Key. Name it after the assistant, and under Permissions tick only AI assistant (MCP). That key can then use the MCP server but not the rest of the API. See API keys.
2

Add the server to your client

Configure an MCP server with the Streamable HTTP transport:
  • URL: https://instantcampaign.ai/api/mcp
  • Header: Authorization: Bearer ic_your_key_here
For example, in Claude Code:
3

Try it

Ask the assistant something like “How did my last three campaigns perform?” It should call list_campaigns and get_campaign_performance.

Limits

  • Images: the MCP server has no stand-alone image tool. To generate a marketing image, use AI Studio, the email builder’s AI image tools or Spark in the app.
  • Rate limit: 60 requests per minute per workspace. Beyond that the server answers 429.
  • Plan quotas: tools count against your plan’s monthly quotas, as they do in the app. create_campaign counts against campaign generations, and AI tools use AI credits at the same cost as in the app: generate_copy and create_journey_from_brief use 1 credit each, draft_quiz uses 3, attach_ads_to_campaign with a matching image uses 15, create_template_draft and duplicate_template count as templates, and upsert_contact counts against the contact allowance when it creates a contact. When a quota is used up or the workspace has no AI credits left, the tool returns an error saying so.
  • Transport: the server answers each request with plain JSON. It does not open server-initiated streams and issues no session id. Clients that support Streamable HTTP work as is.

Reviewing what the assistant did

Every change an assistant makes — each call to a Write tool above — is listed in Settings → Developers → Agent activity, newest first, with:
  • the app (for an assistant connected by sign-in) or the API key that made it,
  • the tool it called and what it created or changed, with a link to open it (the campaign’s plan page, the template in the builder, the automation, the segment, the contact),
  • a link to the full request in the API log.
Campaigns, templates and automations an assistant creates are marked Needs review. For each one you can:
  • Mark reviewed — you have looked at it. Nothing else changes: to send the campaign you still approve its plan, to use the template you still approve it in review, and to start the automation you still activate it.
  • Discard — if it is still an untouched draft (a campaign never sent, a draft template no campaign uses, a draft automation nobody has entered), it is deleted. Anything else is kept and only marked discarded.
Owners and admins get a notification when an assistant drafts something for review. Filter the list by status, source and app or key. Viewing the page needs the API key permission; Mark reviewed and Discard need the content approval permission.

Agent policy

At the top of the same page: Changing the policy needs both the API key permission and the content approval permission. Lists, segments, contacts and events are recorded but never wait for review. Every MCP call, reads included, is also recorded in Settings → Developers → API log under the /api/mcp path, with the tool call as the request body. See API request log.

Troubleshooting