mcp-clay-to-instantly-smartlead-push
LocalAbout mcp-clay-to-instantly-smartlead-push
An MCP server for sending enriched lead rows to an existing Instantly, Smartlead, or HeyReach campaign. Its Apify actor applies field mapping, ICP score filtering, and deduplication, with a dry run that previews the payload before sending.
Key features
- 01Push lead rows to three sequencers
- 02Map input columns to sequencer fields
- 03Filter leads by ICP score
- 04Deduplicate against campaign leads
- 05Preview request batches with dry run
Use cases
- 01Send qualified leads to an existing campaign
- 02Exclude leads below an ICP threshold
- 03Avoid adding campaign duplicates
- 04Inspect payloads before a campaign push
MCP support
Exposes the `push_leads_to_sequencer` tool to MCP clients and routes its inputs to an Apify actor. The actor handles campaign push logic and returns a summary of created, skipped, and failed leads.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @mambalabsdev/mcp-clay-to-instantly-smartlead-pushAPIFY_TOKENSecretApify API token from https://console.apify.com/account/integrationsLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
1Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| leads | array | No | Lead rows to push. Each row needs an email at minimum. Takes precedence over dataset_id when both are set. |
| api_key | string | No | Your Instantly v2 API key, your Smartlead API key or your HeyReach API key. An Instantly v1 key will not work: v1 was deprecated on January 19, 2026. Required for any run that calls the sequencer. A dry run with deduplicate false makes no calls and needs no key. |
| dry_run | boolean | No | Run every step, return the exact payload that would be sent, and make zero write calls. Creates no leads and charges nothing. Default false. |
| sequencer | enum | Yes | Which sequencer to push to. Instantly uses API v2, Smartlead uses API v1, HeyReach uses its public API. HeyReach is LinkedIn native: it keys a lead on linkedin_person_url rather than on email, so a HeyReach run drops rows with no LinkedIn profile URL and keeps rows with no email at all.instantly | smartlead | heyreach |
| dataset_id | string | No | An Apify dataset ID from an upstream run, for example the output of the ICP Fit Scorer. Used only when leads is empty. |
| campaign_id | string | Yes | The target campaign in the sequencer. It must already exist. Instantly campaign IDs are UUIDs; Smartlead and HeyReach campaign IDs are numeric. |
| deduplicate | boolean | No | Read the campaign's existing leads first and drop any email already there. Default true. This is a read, so it needs an API key even on a dry run. |
| field_mapping | object | No | Override the default Clay column to sequencer field map. Keys are your column names, values are the sequencer field names. Set a value to an empty string to drop that column. A target the sequencer does not have is sent as a custom variable rather than rejected. |
| min_icp_score | integer | No | Drop leads whose icp_score is below this number. Default 0, which pushes everything. Rows with no icp_score are always kept. |
| custom_variables | array | No | Extra column names to pass through as custom variables under their own name. Columns that are neither mapped nor listed here are dropped. |
Details
From the project READMESequencer Lead Push MCP Server
MCP server for the Mamba Labs Sequencer Lead Push actor on Apify.
Push enriched lead rows into an existing Instantly, Smartlead, or HeyReach campaign. ICP score gating and deduplication are built in, and a dry run shows you the exact payload before you send anything.
Install
npx -y @mambalabsdev/mcp-clay-to-instantly-smartlead-push
Claude Desktop
{
"mcpServers": {
"mamba-clay-to-instantly-smartlead-push": {
"command": "npx",
"args": ["-y", "@mambalabsdev/mcp-clay-to-instantly-smartlead-push"],
"env": { "APIFY_TOKEN": "your-apify-token" }
}
}
}
Get an Apify token at console.apify.com/account/integrations.
Tool
push_leads_to_sequencer
Maps your column names onto the sequencer's field names, drops leads below your ICP score threshold, drops leads already in the campaign, and sends the rest in batches.
| Input | Type | Required | Notes |
|---|---|---|---|
sequencer | string | yes | instantly, smartlead or heyreach. HeyReach is LinkedIn native and keys a lead on linkedin_person_url rather than on email |
campaign_id | string | yes | The target campaign. It must already exist. Instantly campaign IDs are UUIDs; Smartlead and HeyReach campaign IDs are numeric. |
api_key | string | see note | Your Instantly v2 key, your Smartlead key, or your HeyReach key |
leads | array | one of | Lead rows. Each needs an email at minimum, or a linkedin_person_url on HeyReach. |
dataset_id | string | one of | An Apify dataset ID from an upstream run |
min_icp_score | number | no | Drop leads scoring below this. Default 0. |
deduplicate | boolean | no | Check the campaign first. Default true. |
dry_run | boolean | no | Preview without sending. Default false. |
field_mapping | object | no | Override the default column map |
custom_variables | array | no | Extra columns to pass through |
max_charge_usd | number | no | Optional cost cap in USD for this run. The actor stops before an item that could take its charges past this amount. Omit to rely on the maximum cost per run set in Apify. |
api_key is required for any run that calls the sequencer. A dry run with deduplicate false makes no calls at all and needs no key.
Returns one flat summary row: leads received, dropped for no usable identity (an email, or a LinkedIn profile URL on HeyReach), dropped by the ICP gate, dropped as duplicates, eligible, created by the sequencer, skipped by the sequencer, and failed, with the vendor's own message per failed address.
Dry run
dry_run: true runs every step, returns the exact request batches that would have been sent, and creates nothing. Nothing is billed.
Use it the first time you point at a new campaign. The payload you see is the real one, and your API key is never included in it.
Billing
You are charged per lead the sequencer confirms it created. Leads dropped by the gate, dropped as duplicates, with no usable email, skipped or rejected by the vendor, and every lead in a dry run are all free.
Price per event on the Apify FREE plan, from the live pricing record; paid Apify plans pay less per event.
| Event | Price (USD) |
|---|---|
Actor Start (apify-actor-start) | 0.00005 |
Lead pushed to sequencer (lead-pushed) | 0.01 |
Pricing is on the actor's Apify page. Running this server consumes Apify credits.
Supported sequencers
| Sequencer | API | Notes |
|---|---|---|
| Instantly | v2 | Needs a v2 key. Keys from v1 do not work: Instantly deprecated v1 on January 19, 2026. |
| Smartlead | v1 | Current. Smartlead has no v2. |
| HeyReach | public API | LinkedIn native. Keys a lead on linkedin_person_url, so rows with no LinkedIn profile URL are dropped and rows with no email are kept. |
What this server does and does not do
It is a thin client for the Apify actor. It passes your input through and returns the actor's output. The field mapping, the ICP gate, the deduplication and everything each vendor's API needs all live in the actor, not here.
The tool starts the actor run and polls it to a finished status, so a long run is not cut off at 300 seconds. The run is allowed 1,800 seconds. If it is still going two minutes after that, the call stops waiting and returns the run ID with a link to it in the Apify Console, where the results land when it finishes. A run that does not succeed comes back as an error with its run ID and status.
It writes to your sequencer campaign unless dry_run is true. It does not create campaigns and it does not write sequence copy.
Related
Part of the Mamba Labs GTM actor fleet. The same tool is available alongside twenty others in @mambalabsdev/mcp-gtm-suite.
Built by Mamba Labs
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.