Connect your Wave workspace to any AI assistant supporting the Model Context Protocol (MCP).
Once connected, your AI assistant can inspect outreach campaigns, query connected Instagram sender accounts, analyze lead audience lists, and review live reply performance KPIs directly within your chat or IDE.MCP Server Endpoint
Authentication Methods
Wave supports two authentication methods for connecting AI assistants:- Option 1: Direct OAuth 2.1 (Recommended)
- Option 2: Developer REST API Key
Native OAuth 2.1 (Zero-Config)
Claude Code CLI
Run the following command in your terminal:- Your browser will automatically open Wave’s authorization consent screen.
- Sign in with your Wave credentials (or Google OAuth).
- Click Authorize Claude — your terminal session will connect immediately.
Claude Desktop & Claude.ai (Web Connectors)
- Open Claude and navigate to Settings → Connectors / MCP Servers.
- Add a new server named
Wavewith the URL: - Click Connect. When prompted, log in to your Wave account to complete authorization.
Cursor IDE
- Open Cursor Settings (
Ctrl + Shift + JorCmd + Shift + J) → Features → MCP. - Click + Add New MCP Server.
- Fill in:
- Name:
wave - Type:
sseorhttp - URL:
https://api.usewave.co/mcp
- Name:
- Follow the interactive browser prompt to sign in and authorize.
Windsurf / Codeium
In your~/.codeium/windsurf/mcp_config.json (or IDE Settings → MCP):Available Tools Reference
Wave MCP exposes 14 production tools across 5 distinct outreach domains:1. Outreach Campaigns
list_campaigns — List all outreach campaigns
list_campaigns — List all outreach campaigns
- Input Parameters:
status(string, optional) — Filter by status:PENDING,IN_PROGRESS,PAUSED, orCOMPLETED.active(boolean, optional) — Filter by active toggle (true/false).
- Returns: Campaign ID, title, status, daily limit, connected sender accounts count, total leads, DMs sent, and reply counts.
get_campaign — Get campaign details & live metrics
get_campaign — Get campaign details & live metrics
- Input Parameters:
campaign_id(string, required) — The unique identifier of the campaign.
- Returns: Attached sender Instagram accounts, linked audience lead lists, assigned message sequences, dispatch schedule (working hours, active days), and granular reply conversion rates.
create_campaign — Create and initialize a new campaign
create_campaign — Create and initialize a new campaign
- Input Parameters:
title(string, required) — Descriptive title of the campaign.account_ids(array of strings, required) — List of connected sender account IDs.audience_id(string, required) — ID of the target audience list.sequence_id(string, required) — ID of the message sequence to dispatch.daily_limit(integer, optional, default: 20) — Maximum outreach DMs per account per day.dry_run(boolean, optional, default: false) — When true, validates configuration and sender health without creating the campaign.
- Returns: Created campaign summary or validation confirmation.
control_campaign — Pause, resume, or adjust campaign settings
control_campaign — Pause, resume, or adjust campaign settings
- Input Parameters:
campaign_id(string, required) — Target campaign ID.action(string, required) — One of:pause,resume, orupdate_settings.daily_limit(integer, optional) — Updated daily sending quota.active_days(array of strings, optional) — Days of week to run outreach.
2. Target Audiences & Lead Lists
list_audiences — List all audience lead lists
list_audiences — List all audience lead lists
- Input Parameters:
type(string, optional) — Filter by list type:FOLLOWERSorPOSTS.
- Returns: List ID, name, list type, total leads scraped, leads passed AI filtration, and status (
READY,PROCESSING,FAILED).
create_audience — Create new audience & trigger AI filtration
create_audience — Create new audience & trigger AI filtration
- Input Parameters:
name(string, required) — Name for the audience list.type(string, required) —FOLLOWERS(scrapes followers of target accounts) orPOSTS(scrapes commenters/likers of target posts).targets(array of strings, required) — Target Instagram usernames or post URLs.filter_criteria(object, optional) — AI filtering rules (e.g. min/max followers, required keywords, language, verified accounts only).
3. Message Sequences & Templates
list_sequences — List outreach sequences
list_sequences — List outreach sequences
- Returns: Sequence ID, name, initial message count (spintax variants), follow-up step count, and actions (
FOLLOW_FIRST,LIKE_LAST_POSTS).
get_sequence — Get sequence details and message variants
get_sequence — Get sequence details and message variants
- Input Parameters:
sequence_id(string, required) — Sequence ID.
create_sequence — Create a new multi-step sequence
create_sequence — Create a new multi-step sequence
- Input Parameters:
name(string, required) — Descriptive name.messages(array of strings, required) — Initial message templates (supports spintax:{Hi|Hey|Hello}).follow_ups(array of objects, optional) — Follow-up steps with delay days and conditions.follow_first(boolean, optional) — Follow the lead before sending DM.like_posts(integer, optional) — Number of recent posts to like before DMing.
update_sequence — Update sequence copy and actions
update_sequence — Update sequence copy and actions
- Input Parameters:
sequence_id(string, required) — Sequence ID to update.messages(array of strings, optional) — Updated message variations.follow_ups(array of objects, optional) — Updated follow-up schedules.
4. Instagram Sender Accounts
list_accounts — List connected Instagram senders
list_accounts — List connected Instagram senders
- Input Parameters:
status(string, optional) — Filter by connection status:READY,WARMING_UP,CHALLENGE, orSUSPENDED.
- Returns: Account ID, username, status, warm-up day count, and daily dispatched count.
get_account_health — Deep health check on sender account
get_account_health — Deep health check on sender account
- Input Parameters:
account_id(string, required) — Account ID.
- Returns: Session status, challenge flag details, warmup health score, and recommended daily sending limit.
5. Analytics & Workspace KPIs
get_workspace_overview — Lifetime performance KPIs
get_workspace_overview — Lifetime performance KPIs
- Returns: Total campaigns, total initial DMs sent, follow-ups sent, total replies received, aggregate reply rate percentage, and active accounts.
get_daily_analytics — Daily outreach timeline breakdown
get_daily_analytics — Daily outreach timeline breakdown
- Input Parameters:
start_date(string, optional) — Start date (YYYY-MM-DD). Defaults to 30 days ago.end_date(string, optional) — End date (YYYY-MM-DD). Defaults to today.campaign_id(string, optional) — Filter metrics by specific campaign.
- Returns: Array of daily timeline data points with
date,dms_sent,follow_ups_sent,replies, andreply_rate.
Security, Rate Limits & Tokens
- OAuth Token Lifetime: Access tokens issued via OAuth 2.1 are valid for 30 days and include an automatic refresh token valid for 90 days.
- Rate Limits: MCP endpoints are protected with per-account rate limiters. Standard accounts receive up to 60 requests/minute.
- Subscription Requirement: Access to Wave MCP tools requires an active Wave Pro subscription or valid trial.
- Granular Scope Control: All actions respect workspace permissions and sender safety limits to prevent Instagram action blocks.
Troubleshooting
Error: 403 Subscription Required
Error: 403 Subscription Required