SuperSend MCP
SuperSend MCP connects your AI assistant (Cursor, Claude, Windsurf) to SuperSend’s outreach and email platform.
What it can do
- Get Health: Check SuperSend API health and connectivity
- List Teams: List teams the user has access to
- Get Team: Get a single team by ID
What data it sees
Do you need an account
No: the server works without sign-in
SuperSend MCP connects your AI assistant (Cursor, Claude, Windsurf) to SuperSend’s outreach and email platform. Manage contacts, campaigns, and senders; analyze deliverability, bounce rates, and placement; run capacity planning; and handle domains and mailboxes. Tools cover teams, contacts, campaigns, conversations, events, webhooks, blacklists, and placement tests—everything needed to run and optimize enterprise outreach at scale.
How to connect
How to connect SuperSend MCP to Claude
The server address to paste into Claude settings:
https://supersend--supersend.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect SuperSend MCP to ChatGPT
The server address to paste into ChatGPT settings:
https://supersend--supersend.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect SuperSend MCP to Cursor
The server address to paste into Cursor settings:
https://supersend--supersend.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (48)
Raw names from tools/list. Only developers need these.
| get_health | Check SuperSend API health and connectivity |
| list_teams | List teams the user has access to |
| get_team | Get a single team by ID |
| analyze_capacity_and_schedule | Get capacity planning and campaign completion forecasts for a team. Returns when campaigns will finish, allocated capacity, and whether more infrastructure is needed. Run list_teams first to get teamId. |
| diagnose_deliverability | Get deliverability diagnosis for a team. Use when the user asks about reply rate, bounce rate, why campaigns underperform, deliverability, spam placement, or email performance. Returns sends, replies, bounces, placement test results, target mix (Gmail/Outlook/corporate), and actionable recommendations. |
| analyze_sender_health | Get sender health for a team. Use when the user asks which senders are at risk, sender bounce rates, or sender performance. Returns per-sender metrics (sends, bounces, bounce rate) and flags at-risk senders. |
| get_outbound_summary | Get outbound summary for a team. Use when the user asks how their outreach is performing, overall send/reply stats, or top campaigns by volume. Returns team-level sends, replies, bounce rate, reply rate, and top campaigns. |
| analyze_domain_health | Get domain health for a team. Use when the user asks which domains have DNS issues, SPF/DKIM/DMARC problems, or deliverability concerns. Returns per-domain status (SPF, DKIM, DMARC, MX), blacklist status, and at-risk flags. |
| list_contacts | List contacts in a team. Run list_teams first to get TeamId, then pass the team id (UUID) here. |
| get_contact | Get a single contact by ID |
| create_contact | Create or update a contact (upsert by email). Requires TeamId, CampaignId, and at least one of email, linkedin_url, or twitter. |
| update_contact | Update a contact. Only provided fields are updated. |
| delete_contact | Delete a contact by ID (soft delete) |
| create_campaign | Create a new campaign in a team. Run list_teams first to get TeamId. Campaign starts inactive/draft. Creates ContactConfig with default fields. Use update_campaign_sequence to add nodes and edges (startNode, emailNode, waitNode, etc.). Optionally assign to a category from list_campaign_categories. |
| list_campaigns | List campaigns in a team. Run list_teams first to get TeamId. Use status to filter: "active" (1) or "inactive" (2). |
| get_campaign | Get a single campaign by ID |
| activate_campaign | Activate a campaign (turn it on). Campaign will start sending. Requires campaign to have a sequence. Get campaign ID from list_campaigns. |
| deactivate_campaign | Deactivate a campaign (turn it off / pause). Campaign will stop sending. Get campaign ID from list_campaigns. |
| get_campaign_sequence | Get the campaign sequence (nodes and edges) for a campaign. Nodes are steps like start, email, wait, if, switch; edges connect them. |
| update_campaign_sequence | Update campaign sequence nodes and/or edges. Pass nodes array (steps: startNode, emailNode, waitNode, ifNode, etc.) and/or edges array (connections between nodes). Each node needs id, type, data, position; each edge needs id, source, target. |
| list_campaign_categories | List campaign categories (folders) for a team. Categories organize campaigns. Run list_teams first to get teamId. |
| create_campaign_category | Create a campaign category (folder) for organizing campaigns. Run list_teams first to get TeamId. Category names must be unique per team. |
| update_campaign_category | Rename a campaign category. Get category ID from list_campaign_categories. |
| delete_campaign_category | Delete a campaign category. Campaigns in this category become uncategorized. Get category ID from list_campaign_categories. |
| list_senders | List email senders. Optionally filter by team (get TeamId from list_teams). |
| get_sender | Get a sender by ID |
| update_sender | Update a sender. Pass only fields to change (disabled, max_per_day, signature, etc.). |
| list_events | List events (sends, opens, clicks, replies, bounces). Get TeamId from list_teams. |
| get_event | Get a single event by ID |
| list_conversations | List conversations from email inbox or LinkedIn inbox. Use channel to pick inbox: "email" or "linkedin". Use last_message_direction: "inbound" for replies from contacts (needs response), "outbound" for our sent messages. Get team_id from list_teams. |
| get_conversation | Get a conversation by ID |
| get_conversation_messages | Get messages in a conversation |
| send_conversation_message | Send a message in a conversation. For email, include sender_id and subject. |
| bulk_import_contacts | Bulk import contacts. Requires TeamId and CampaignId (from list_teams, list_campaigns). Each contact needs at least one of email, linkedin_url, or twitter. |
| list_labels | List conversation labels. Requires team_id from list_teams. |
| list_blacklist | List blacklisted emails, domains, or LinkedIn URLs. |
| add_to_blacklist | Add email, domain, or LinkedIn URL to blacklist. |
| remove_from_blacklist | Remove an item from the blacklist by ID |
| list_webhooks | List webhooks. Requires team_id from list_teams. |
| create_webhook | Create a webhook. Requires team_id from list_teams. |
| list_domains | List managed domains. |
| get_domain | Get a domain by ID with health and sender info |
| purchase_domain | ⚠️ CHARGES REAL MONEY. Always confirm with the user before calling. Only proceed when they explicitly say "yes, purchase" or "go ahead." Do not call based on vague intent like "I need domains." Ask: "This will charge your payment method for [domains]. Confirm purchase?" Purchase one or more domains. Requires Stripe payment method. Domains are processed asynchronously. Run list_domains to check status. |
| purchase_mailbox | ⚠️ CHARGES REAL MONEY. Always confirm with the user before calling. Only proceed when they explicitly say "yes, purchase" or "go ahead." Do not call based on vague intent like "I need mailboxes." Ask: "This will charge your payment method for [N] mailbox(es). Confirm purchase?" Purchase mailboxes for existing domains. Requires Stripe payment method. Domains must already exist (use purchase_domain first). Mailboxes are processed asynchronously. Provider: google, outlook, or smtp. |
| purchase_domains_and_mailboxes | ⚠️ CHARGES REAL MONEY. Always confirm with the user before calling. Only proceed when they explicitly say "yes, purchase" or "go ahead." Do not call based on vague intent like "I need more capacity." Ask: "This will charge your payment method for [domains/mailboxes]. Confirm purchase?" Purchase domains and mailboxes in one transaction. Use domains for domains-only, mailboxes for mailboxes on existing domains, or both. domainsWithProviders links domains to providers (google/outlook/smtp). |
| list_placement_tests | List placement tests (deliverability tests). |
| get_sender_bounce_insights | Get AI-categorized bounce breakdown for a sender (invalid_email, seg_block, reputation_block, etc.). Get sender ID from list_senders. |
| get_domain_bounce_insights | Get AI-categorized bounce breakdown for a domain. Requires V2 domain bounce-insights endpoint. |