Cold email at scale, across as many mailboxes as you run.
SmartLead is an outreach sequencer, and one of the 53 tools hyreflow connects to Claude, ChatGPT and other AI assistants. Through hyreflow, an AI agent can run 10 actions: 5 that look something up and 5 that create or change records. SmartLead runs on your own SmartLead account: hyreflow charges no credits for it, and SmartLead bills you as before.
Smartlead is built for volume: many sending mailboxes, rotation between them, analytics per campaign. Your agent creates the campaign, drafts the sequence and loads the leads, then stops and waits for your approval before a single email goes.
Smartlead is activation for high volume. Everything upstream feeds it a validated list.
With hyreflow connected, you ask for the outcome in plain language and the assistant runs SmartLead for you. For example:
In a hyreflow run, SmartLead is most often paired with Enrichley, hyreflow Agent, FullEnrich and Bullhorn.
volume sending punishes a bad list hardest
personalisation at the scale volume sending needs
fill a large list before it goes near a mailbox
replies land on the record automatically
Through hyreflow, an AI agent can run 10 SmartLead actions: 5 that look something up and 5 that create or change records. SmartLead runs on your own SmartLead account: hyreflow charges no credits for it, and SmartLead bills you as before.
| SmartLead action | What it does | Cost through hyreflow |
|---|---|---|
| Add email account to campaign | Creates or changes a record | no hyreflow credits |
| Add leads to campaign | Creates or changes a record | no hyreflow credits |
| Create campaign | Creates or changes a record | no hyreflow credits |
| Save campaign sequence | Creates or changes a record | no hyreflow credits |
| Update campaign status | Creates or changes a record | no hyreflow credits |
| List campaigns | Looks something up | no hyreflow credits |
| List email accounts | Looks something up | no hyreflow credits |
| List leads by campaign | Looks something up | no hyreflow credits |
| Get campaign | Looks something up | no hyreflow credits |
| Get campaign analytics | Looks something up | no hyreflow credits |
One credit is priced on the pricing page. The full price list for every tool is in the pricing tables.
3 hyreflow skills call SmartLead as part of the run. A skill is a whole pipeline your agent already knows, end to end.
use whenyou have the list and now you need a cadence built, loaded and ready, with nothing going out until you say so
use whena campaign is loaded and ready, and you want to know the mailboxes and the domain behind it are fit to send before you press start
use whencampaigns are running or finished across one or more sequencers and nobody has looked at which ones earn replies and which only use up the list
hyreflow ships a written playbook for SmartLead, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.
Read the SmartLead docs →HOW in lib/smartlead.py. Docs cached at reference/docs/smartlead/raw/llms.txt.
https://server.smartlead.ai/api/v1 · Auth: API key as query param ?api_key= (env SMARTLEAD_API_KEY; never hardcode). The client injects it automatically.update_campaign_status(id, "START") begins sending. add_leads_to_campaign into an active campaign feeds live sending. Approval-gate both: build in a paused campaign / lead list, pilot, confirm, then start.Campaigns: list_campaigns, create_campaign, get_campaign, update_campaign_status, save_campaign_sequence, get_campaign_analytics. Leads: add_leads_to_campaign, list_leads_by_campaign. Email accounts: list_email_accounts, add_email_account_to_campaign. Else → generic request().
Activation layer: enriched + validated leads → add_leads_to_campaign → review → START. Mailboxes via InboxKit feed list_email_accounts.
Field-shape note: these are vendor-native operational notes. The client returns the raw vendor JSON and uses the method names in this file — read field shapes accordingly (no normalized-wrapper /
result.data.prefix).
Activation order: create/list campaign -> add email accounts -> save sequences -> set schedule -> set settings -> push leads -> start -> monitor. Always resolve the campaign ID before any write.
Gotchas (vendor-native):
PAUSED, STOPPED, START - it's START, not STARTED/RUNNING.seq_number must be contiguous from 1 (no gaps); step 1 must have a subject; delay_in_days is days (0 = immediate) - never hours/minutes.America/New_York); start_hour/end_hour 24h HH:MM, start strictly before end; days_of_the_week 0=Sun..6=Sat, >=1 required. min_time_btw_emails is canonical (min_time_btwn_emails legacy alias).DONT_TRACK_EMAIL_OPEN, DONT_TRACK_LINK_CLICK, DONT_TRACK_REPLY_TO_AN_EMAIL. Stop-lead: REPLY_TO_AN_EMAIL, CLICK_ON_A_LINK, OPEN_AN_EMAIL.YYYY-MM-DD.EMAIL_SENT, EMAIL_OPEN, EMAIL_LINK_CLICK, EMAIL_REPLY, LEAD_UNSUBSCRIBED, LEAD_CATEGORY_UPDATED.200 {} when missing (treat as no-result); unsubscribe can return 200 {"ok":false} for unknown lead (treat as failure); lead export returns CSV text, not JSON.lib/smartlead.pyImport: from lib.smartlead import Smartlead → instantiate Smartlead() (reads key from env). Base: https://server.smartlead.ai/api/v1. Generic passthrough: request(method, path, *, params, json).
add_email_account_to_campaign(campaign_id: str, email_account_ids: list[int]) -> Anyadd_leads_to_campaign(campaign_id: str, lead_list: list[dict], **settings) -> Any — POST /campaigns/{id}/leads — add leads. Feeds an active campaign into sending — approval-gate.create_campaign(name: str, **opts) -> Any — POST /campaigns/create — create a campaign.get_campaign(campaign_id: str) -> Anyget_campaign_analytics(campaign_id: str) -> Anylist_campaigns() -> Any — GET /campaigns — all campaigns.list_email_accounts(**params) -> Any — GET /email-accounts/ — sending mailboxes.list_leads_by_campaign(campaign_id: str, **params) -> Anysave_campaign_sequence(campaign_id: str, sequences: list[dict]) -> Any — POST /campaigns/{id}/sequences — define the email steps/A-B variants.update_campaign_status(campaign_id: str, status: str) -> Any — POST /campaigns/{id}/status — status: PAUSED | STOPPED | START. START begins sending (outreach!).Yes. hyreflow is a connector for Claude, ChatGPT and other AI assistants. Once hyreflow is connected, you ask for the outcome in plain language and the assistant calls SmartLead for you. hyreflow exposes 10 SmartLead actions this way.
Yes. SmartLead runs on your own SmartLead account. You connect it to hyreflow once, hyreflow charges no credits for the calls, and SmartLead bills you as before.
SmartLead runs on your own SmartLead account: hyreflow charges no credits for it, and SmartLead bills you as before.
Add the hyreflow MCP server to your assistant and sign in. hyreflow calls the SmartLead API directly and exposes its actions as tools the assistant can run, so there is no separate SmartLead server to install.
Connect hyreflow to Claude or ChatGPT and ask for the outcome. It reads the playbook above before it makes a single call.