How to integrate Instantly MCP with Claude Code

Trusted by
AWS
Glean
Zoom
Airtable

30 min · no commitment · see it on your stack

Instantly logo
Claude Code logo
divider

Introduction

Manage your Instantly directly from Claude Code with zero worries about OAuth hassles, API-breaking issues, or reliability and security concerns.

You can do this in two different ways:

  1. Via Composio Connect - Direct and easiest approach
  2. Via Composio SDK - Programmatic approach with more control

Also integrate Instantly with

Why use Composio?

  • Only one MCP URL to connect multiple apps with Claude Code with zero auth hassles.
  • Programmatic tool calling allows LLMs to write its code in a remote workbench to handle complex tool chaining. Reduces to-and-fro with LLMs for frequent tool calling.
  • Handling Large tool responses out of LLM context to minimize context rot.
  • Dynamic just-in-time access to 20,000 tools across 1000+ other Apps for cross-app workflows. It loads the tools you need, so LLMs aren't overwhelmed by tools you don't need.

Connecting Instantly to Claude Code using Composio

1. Add the Composio MCP to Claude

Terminal

2. Start Claude Code

bash
claude

3. Open your MCP list

bash
/mcp

4. Select Composio and click on Authenticate

Select Composio and click Authenticate

5. This will redirect you to the Composio OAuth page. Complete the flow by authorizing Composio and you're all set.

Composio OAuth authorization page
Composio authorization complete
Ask Claude to connect to your account and authenticate via the link

Supported Tools & Triggers

Tools
Check Custom Tracking Domain StatusTool to check Custom Tracking Domain (CTD) status for email accounts.
Activate CampaignTool to activate or resume a paused campaign.
Add Leads in BulkTool to add multiple leads in bulk to a campaign or list.
Get API KeysTool to retrieve paginated list of API keys for organization.
Bulk Assign LeadsTool to bulk assign leads to organization users.
Get Campaigns Analytics OverviewTool to get analytics overview for one or multiple campaigns.
Import Campaign from ExportTool to import a campaign from exported data.
Check DFY Email Account Order DomainsTool to check domain availability for DFY email account orders.
Check Email Verification StatusTool to check status of an email verification job.
Count Launched CampaignsTool to retrieve the count of launched campaigns.
Count Leads from SuperSearchTool to count leads matching supersearch filter criteria.
Count Unread EmailsTool to retrieve the count of unread emails.
Create AI EnrichmentTool to create an AI enrichment job for a campaign or lead list.
Create API KeyCreates a new API key with specified permissions for the Instantly API.
Create Block List EntryTool to create a new block list entry for a specific email or domain.
Create CampaignTool to create a new campaign.
Create Custom TagTool to create a new custom tag for organizing accounts and campaigns.
Create Inbox Placement TestTool to create an inbox placement test.
Create LeadTool to create a new lead.
Create Lead ListTool to create a new lead list.
Create SubsequenceCreates an automated follow-up subsequence for a campaign.
Create SuperSearch EnrichmentTool to create a supersearch enrichment job for a list or campaign.
Create WebhookTool to create a new webhook endpoint.
Delete API KeyTool to delete an API key.
Delete Block List EntryTool to delete a blocked email or domain entry by its ID.
Delete CampaignTool to delete a campaign.
Delete Custom TagTool to delete a custom tag by its ID.
Delete LeadTool to delete a lead by its ID.
Delete Lead LabelTool to delete a lead label by ID.
Delete Lead ListTool to delete a lead list by ID.
Delete SubsequenceDelete a subsequence from a campaign by its UUID.
Delete WebhookTool to delete a webhook.
Delete Whitelabel DomainTool to delete the whitelabel domain from current workspace.
List Pre-warmed Up DFY DomainsTool to retrieve a list of pre-warmed up domains ready for DFY email account orders.
Disable Account WarmupTool to disable the warm-up process for email accounts.
Duplicate CampaignTool to duplicate an existing campaign.
Duplicate SubsequenceTool to duplicate an existing subsequence to a specified parent campaign.
Enable Account WarmupTool to enable the warm-up process for email accounts.
Export CampaignTool to export campaign data to JSON format.
Get Account Campaign MappingsTool to retrieve campaigns associated with an email account.
Get Daily Account AnalyticsTool to retrieve daily account analytics showing emails sent per day for each account.
Get Accounts Warmup AnalyticsTool to retrieve warmup analytics for specified email accounts.
Get Audit LogsTool to retrieve audit log records for tracking system activities.
Get Block List EntryTool to retrieve a specific blocked email or domain entry by its ID.
Get CampaignTool to retrieve campaign details.
Get Campaign AnalyticsTool to retrieve analytics for campaigns.
Get Campaign Sending StatusTool to retrieve campaign sending status diagnostics explaining why a campaign may not be sending emails or is sending slower than expected.
Get Campaign Steps AnalyticsTool to retrieve analytics data broken down by campaign steps and variants.
Get Current WorkspaceTool to retrieve current workspace details based on API key.
Get Custom TagTool to retrieve a specific custom tag by ID.
Get Custom Tag MappingsTool to retrieve custom tag mappings that connect tags to resources like campaigns and email accounts.
Get Daily Campaign AnalyticsTool to retrieve daily analytics for a campaign.
Get DFY Email Account Order AccountsTool to retrieve DFY (Done-For-You) email account order accounts.
Get Email Service Provider OptionsTool to retrieve email service provider options for inbox placement tests.
Get Inbox Placement Analytics Stats By DateTool to retrieve time-series statistics for inbox placement test results by date.
Get Inbox Placement TestTool to retrieve inbox placement test results.
Get LeadTool to retrieve details of a specific lead by its ID.
Get Lead LabelTool to retrieve a specific lead label by ID.
Get Lead ListTool to retrieve details of a specific lead list by its ID.
Get CRM Phone NumbersTool to retrieve all phone numbers associated with your organization.
Get Similar DFY Email Account Order DomainsTool to generate similar available domain suggestions for DFY email account orders.
Get SubsequenceTool to retrieve a specific subsequence by its ID.
Get SuperSearch EnrichmentTool to retrieve supersearch enrichment configuration and status for a list or campaign.
Get Lead List Verification StatsTool to retrieve verification statistics for a lead list.
Get WebhookTool to retrieve details of a specific webhook subscription.
Get Webhook EventTool to retrieve details of a specific webhook event.
Get Webhook Events SummaryTool to retrieve webhook events summary with success and failure statistics.
Get Webhook Events Summary By DateTool to retrieve webhook event summaries grouped by date.
Get Webhook Event TypesTool to retrieve all available webhook event types.
Get Workspace Billing Plan DetailsTool to retrieve workspace billing plan details.
Get Inbox Placement Deliverability InsightsTool to retrieve deliverability insights for inbox placement tests.
Get Inbox Placement Analytics Stats By Test IDTool to retrieve aggregated inbox placement analytics statistics for specified test IDs.
Create Lead LabelTool to create a custom lead label for categorizing leads.
List Email AccountsTool to list all email accounts for the authenticated user.
List Block List EntriesTool to list blocked emails or domains from blocklist.
List CampaignsTool to list all campaigns.
List Custom TagsTool to list custom tags.
List DFY Email Account OrdersTool to list DFY email account orders.
List EmailsTool to list emails.
List Inbox Placement Blacklist & SpamAssassin ReportsTool to list inbox placement blacklist & SpamAssassin reports.
List Inbox Placement TestsTool to list inbox placement tests.
List Lead ListsTool to list all lead lists.
List LeadsTool to list leads.
List Webhook EventsTool to list webhook events.
List WebhooksTool to list configured webhooks.
Mark Thread As ReadTool to mark all emails in a specific thread as read.
Merge LeadsTool to merge multiple leads into a single lead.
Move LeadsTool to move leads from one campaign to another.
Update Lead LabelTool to update an existing lead label by ID.
Patch SuperSearch Enrichment SettingsTool to update auto-update and skip settings for SuperSearch enrichment.
Patch WebhookTool to update an existing webhook configuration.
Pause CampaignTool to pause an active campaign.
Pause SubsequenceTool to pause an active campaign subsequence.
Remove Lead From SubsequenceTool to remove a lead from a campaign subsequence.
Resume SubsequenceTool to resume a paused campaign subsequence.
Search Campaigns by Lead EmailTool to search campaigns by a lead's email address.
Set Whitelabel DomainTool to set whitelabel agency domain for current workspace.
Share CampaignTool to share a campaign.
Run SuperSearch EnrichmentTool to run all enrichments for resource leads or unenriched leads.
Test Accounts VitalsTool to test IMAP/SMTP connectivity and account vitals for email accounts.
Test WebhookTool to send a test payload to verify a webhook is working.
Toggle ResourceTool to assign or unassign custom tags to resources like accounts and campaigns.
Update Block List EntryTool to update a blocked email or domain entry.
Update CampaignTool to update details of a campaign.
Update Custom TagTool to update an existing custom tag's label or description.
Update Inbox Placement TestTool to update an inbox placement test.
Update LeadTool to update a lead's details.
Update Lead Interest StatusTool to update a lead's interest status.
Update Lead ListTool to update details of a specific lead list by its ID.
Update SubsequenceTool to update a campaign subsequence entity.
Update Current WorkspaceTool to update the current workspace details.
Verify EmailTool to initiate email verification.
Get Admin Workspace Group MemberTool to retrieve admin workspace details for the current sub workspace.
Get Workspace Member by IDTool to retrieve details of a specific workspace member by ID.
Add Workspace MemberTool to add a new member to workspace with email and role.

What is the Instantly MCP server, and what's possible with it?

The Instantly MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Instantly account. It provides structured and secure access to your campaigns, leads, and outreach tools, so your agent can perform actions like launching new campaigns, managing leads, tracking inbox statistics, and handling API credentials on your behalf.

  • Automated campaign creation and management: Ask your agent to launch new cold email campaigns or update existing ones, streamlining your outreach workflow without manual setup.
  • Lead and lead list management: Let your agent add new leads, organize them into lists, or enrich them with AI-driven insights to maximize your campaign effectiveness.
  • Email verification and deliverability tracking: Direct your agent to check the verification status of email addresses or run inbox placement tests to monitor and improve deliverability across providers.
  • Inbox activity monitoring: Fetch unread email counts or campaign engagement metrics, helping you stay on top of your outreach performance in real time.
  • API key and webhook automation: Have your agent create or delete API keys for secure integrations, or set up webhooks to receive instant notifications about important Instantly events.

Connecting Instantly via Composio SDK

Composio SDK is the underlying tech that powers Rube. It's a universal gateway that does everything Rube does but with much more programmatic control. You can programmatically generate an MCP URL with the app you need (here Instantly) for even more tool search precision. It's secure and reliable.

How the Composio SDK works

The Composio SDK follows a three-phase workflow:

  1. Discovery: Searches for tools matching your task and returns relevant toolkits with their details.
  2. Authentication: Checks for active connections. If missing, creates an auth config and returns a connection URL via Auth Link.
  3. Execution: Executes the action using the authenticated connection.

Step-by-step Guide

Prerequisites

Before starting, make sure you have:
  • Claude Pro, Max, or API billing enabled Anthropic account
  • Composio API Key
  • A Instantly account
  • Basic knowledge of Python or TypeScript

Install Claude Code

bash
# macOS, Linux, WSL
curl -fsSL https://claude.ai/install.sh | bash

# Windows PowerShell
irm https://claude.ai/install.ps1 | iex

# Windows CMD
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

To install Claude Code, use one of the following methods based on your operating system:

Set up Claude Code

bash
cd your-project-folder
claude

Open a terminal, go to your project folder, and start Claude Code:

  • Claude Code will open in your terminal
  • Follow the prompts to sign in with your Anthropic account
  • Complete the authentication flow
  • Once authenticated, you can start using Claude Code
Claude Code initial setup showing sign-in prompt
Claude Code terminal after successful login

Set up environment variables

bash
COMPOSIO_API_KEY=your_composio_api_key_here
USER_ID=your_user_id_here

Create a .env file in your project root with the following variables:

  • COMPOSIO_API_KEY authenticates with Composio (get it from Composio dashboard)
  • USER_ID identifies the user for session management (use any unique identifier)

Install Composio library

pip install composio-core python-dotenv

Install the Composio Python library to create MCP sessions.

  • composio-core provides the core Composio functionality
  • python-dotenv loads environment variables from your .env file

Generate Composio MCP URL

import os
from composio import Composio
from dotenv import load_dotenv

load_dotenv()

COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
USER_ID = os.getenv("USER_ID")

composio_client = Composio(api_key=COMPOSIO_API_KEY)

composio_session = composio_client.create(
    user_id=USER_ID,
    toolkits=["instantly"],
)

COMPOSIO_MCP_URL = composio_session.mcp.url

print(f"MCP URL: {COMPOSIO_MCP_URL}")
print(f"\nUse this command to add to Claude Code:")
print(f'claude mcp add --transport http instantly-composio "{COMPOSIO_MCP_URL}" --headers "X-API-Key:{COMPOSIO_API_KEY}"')

Create a script to generate a Composio MCP URL for Instantly. This URL will be used to connect Claude Code to Instantly.

What's happening:

  • We import the Composio client and load environment variables
  • Create a Composio instance with your API key
  • Call create() to create a Tool Router session for Instantly
  • The returned mcp.url is the MCP server URL that Claude Code will use
  • The script prints this URL so you can copy it

Run the script and copy the MCP URL

python generate_mcp_url.py

Run your Python script to generate the MCP URL.

  • The script connects to Composio and creates a Tool Router session
  • It prints the MCP URL and the exact command you need to run
  • Copy the entire claude mcp add command from the output

Add Instantly MCP to Claude Code

bash
claude mcp add --transport http instantly-composio "YOUR_MCP_URL_HERE" --headers "X-API-Key:YOUR_COMPOSIO_API_KEY"

# Then restart Claude Code
exit
claude

In your terminal, add the MCP server using the command from the previous step. The command format is:

  • claude mcp add registers a new MCP server with Claude Code
  • --transport http specifies that this is an HTTP-based MCP server
  • The server name (instantly-composio) is how you'll reference it
  • The URL points to your Composio Tool Router session
  • --headers includes your Composio API key for authentication

After running the command, close the current Claude Code session and start a new one for the changes to take effect.

Verify the installation

bash
claude mcp list

Check that your Instantly MCP server is properly configured.

  • This command lists all MCP servers registered with Claude Code
  • You should see your instantly-composio entry in the list
  • This confirms that Claude Code can now access Instantly tools

If everything is wired up, you should see your instantly-composio entry listed:

Claude Code MCP list showing the toolkit MCP server

Authenticate Instantly

The first time you try to use Instantly tools, you'll be prompted to authenticate.

  • Claude Code will detect that you need to authenticate with Instantly
  • It will show you an authentication link
  • Open the link in your browser (or copy/paste it)
  • Complete the Instantly authorization flow
  • Return to the terminal and start using Instantly through Claude Code

Once authenticated, you can ask Claude Code to perform Instantly operations in natural language. For example:

  • "Create a new cold email campaign"
  • "Add a new lead to my campaign"
  • "Check unread emails in my inbox"

Complete Code

Here's the complete code to get you started with Instantly and Claude Code:

import os
from composio import Composio
from dotenv import load_dotenv

load_dotenv()

COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
USER_ID = os.getenv("USER_ID")

composio_client = Composio(api_key=COMPOSIO_API_KEY)

composio_session = composio_client.create(
    user_id=USER_ID,
    toolkits=["instantly"],
)

COMPOSIO_MCP_URL = composio_session.mcp.url

print(f"MCP URL: {COMPOSIO_MCP_URL}")
print(f"\nUse this command to add to Claude Code:")
print(f'claude mcp add --transport http instantly-composio "{COMPOSIO_MCP_URL}" --headers "X-API-Key:{COMPOSIO_API_KEY}"')

Conclusion

You've successfully integrated Instantly with Claude Code using Composio's MCP server. Now you can interact with Instantly directly from your terminal using natural language commands.

Key features of this setup:

  • Terminal-native experience without switching contexts
  • Natural language commands for Instantly operations
  • Secure authentication through Composio's managed MCP
  • Tool Router for dynamic tool discovery and execution

Next steps:

  • Try asking Claude Code to perform various Instantly operations
  • Add more toolkits to your Tool Router session for multi-app workflows
  • Integrate this setup into your development workflow for increased productivity

You can extend this by adding more toolkits, implementing custom workflows, or building automation scripts that leverage Claude Code's capabilities.

How to build Instantly MCP Agent with another framework

FAQ

What are the differences in Tool Router MCP and Instantly MCP?

With a standalone Instantly MCP server, the agents and LLMs can only access a fixed set of Instantly tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Instantly and many other apps based on the task at hand, all through a single MCP endpoint.

Can I use Tool Router MCP with Claude Code?

Yes, you can. Claude Code fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Instantly tools.

Can I manage the permissions and scopes for Instantly while using Tool Router?

Yes, absolutely. You can configure which Instantly scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Instantly data and credentials are handled as safely as possible.

Used by agents from

Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai

Never worry about agent reliability

We handle tool reliability, observability, and security so you never have to second-guess an agent action.