A Claude Code outbound agent is a project folder where Claude Code finds new prospects, enriches and checks them, drafts first emails and then stops until you approve what gets sent. This guide builds one with Scalelist for contacts, HubSpot for duplicate checks and Instantly for sending, using a handful of plain files and one daily command.
You will end with a folder you can run every weekday, hard limits that Claude cannot talk its way around, and a clear point where a person decides.
What is a Claude Code outbound agent?
A Claude Code outbound agent is a set of instructions, MCP server connections and permission rules in one folder that lets Claude Code run your daily prospecting routine from the terminal. Claude Code is included in Claude’s paid plans, and it calls the same MCP servers as the Claude app.
Small is the point. The agent does the research and the typing: counting the market, pulling new people, finding emails, writing drafts. You keep the judgment: who is worth contacting and what gets sent. If you only need a list now and then, prospecting in Claude in a normal chat is enough.
How to build a Claude Code outbound agent in 6 steps
You need a paid Claude plan with Claude Code, a Scalelist account, an Instantly workspace with warmed inboxes, and HubSpot. No programming: every file below is plain text or JSON.
1. Create the project folder
Create one folder for the agent and start Claude Code inside it, so every session loads the same rules, servers and skill.

- CLAUDE.md: who you sell to and the rules Claude reads at the start of every session.
- .mcp.json: the MCP servers the project uses, shared through version control.
- .claude/settings.json: the permission rules that hard-limit what Claude can call.
- .claude/skills/daily-outbound/SKILL.md: the daily loop, run with one command.
- data/, drafts/, logs/: exclusions, the send log, the daily review file and the credit log.
2. Write the CLAUDE.md
CLAUDE.md is the agent’s brief: your buyer, your offer, the data rules, the caps and the stops. Claude Code loads it at the start of every session; Anthropic recommends keeping each file under 200 lines (Claude Code memory docs).
OUTBOUND AGENT: Talkline Coaching (Denver) WHO WE SELL TO - VPs and Heads of Sales at US IT services companies with 51 to 200 employees. - One person per company. Skip every domain in data/exclusions.csv and data/sent-log.csv. WHAT WE SELL - Coaching for new SDR teams. Proof we may use: [one real customer result]. DATA RULES - Contacts come only from Scalelist. Never invent a name, email, title or number. - Valid emails go to the campaign "IT services, main domain". - Risky emails go to "IT services, secondary domain". Not found is logged, never drafted. - A personal line needs a source link. No link, no personal line. CAPS PER RUN - 40 new leads, 40 email lookups, 10 mobile lookups: 280 Scalelist credits at most. - Log the Scalelist balance before and after every run in logs/. WRITING - First emails: 50 to 90 words, one question, no attachments. STOPS - Add leads to Instantly only after I approve rows in the day's review file. - Never activate a campaign, reply to a prospect or delete anything. - HubSpot is read only: check for duplicates, never create or update records.
The same docs are clear that Claude treats CLAUDE.md “as context, not enforced configuration”. That is why the stops are repeated as permission rules in step 4.
3. Connect the MCP servers
The agent needs three MCP servers: Scalelist to find and enrich people, Instantly to load approved leads, and HubSpot to check for duplicates. Put the first two in .mcp.json so the project always has them.
{ "mcpServers": { "scalelist": { "type": "http", "url": "https://mcp.scalelist.com/mcp" }, "instantly": { "type": "http", "url": "https://mcp.instantly.ai/mcp", "headers": { "Authorization": "Bearer ${INSTANTLY_API_KEY}" } } } }
- Scalelist signs in with OAuth. Start
claudein the folder, approve the project servers, type/mcpand complete the browser login. - Instantly takes an API key. Keep it in the
INSTANTLY_API_KEYenvironment variable;.mcp.jsonexpands${VAR}references, so the key never sits in a committed file (Claude Code MCP docs, Instantly MCP authentication). - HubSpot can come from your Claude account: connectors you added in claude.ai load in Claude Code automatically when you sign in with a claude.ai subscription.

Run claude mcp list or /mcp to confirm each server shows as connected. If you are new to the protocol, start with what an MCP server is; to swap Instantly for another sender or CRM, compare the best MCP servers for sales and marketing.
4. Lock the guardrails in settings.json
Permission rules are the only part of the setup Claude cannot override: Claude Code checks deny rules first, then ask, then allow, and an allow rule cannot carve an exception out of a deny (Claude Code permissions docs). MCP tools are named mcp__<server>__<tool>.
{ "permissions": { "allow": [ "mcp__scalelist__scalelist_people_count", "mcp__scalelist__scalelist_get_account_info", "mcp__scalelist__scalelist_people_search", "mcp__scalelist__scalelist_enrich_email_bulk", "mcp__scalelist__scalelist_check_bulk_job" ], "ask": [ "mcp__scalelist__scalelist_enrich_phone_bulk", "mcp__instantly__add_leads_to_campaign_or_list_bulk" ], "deny": [ "mcp__instantly__activate_campaign", "mcp__instantly__reply_to_email", "mcp__instantly__delete_*" ] } }

Counting, balance checks, people search and email lookups run without a prompt: the loop needs them, and each costs at most 1 credit per result, within the caps in CLAUDE.md.
Mobile lookups (20 credits each when found) and loading leads into Instantly always ask you first. Activating a campaign, replying and deleting are blocked outright. Want a hard stop on every credit? Move the search and email tools to ask.
5. Add the daily loop as a skill
A skill turns the routine into one command. Save this as .claude/skills/daily-outbound/SKILL.md; the disable-model-invocation: true line means it runs only when you type /daily-outbound, never on Claude’s own initiative (Claude Code skills docs).
--- name: daily-outbound description: Daily outbound loop. Find, enrich, verify and draft, then wait for approval before loading leads into Instantly. disable-model-invocation: true --- Follow CLAUDE.md. If a step fails, stop and tell me why. 1. Balance: get the Scalelist account info and write it to logs/. 2. Find: count the ICP in Scalelist, then pull 40 new people, one per company. 3. Dedupe: search HubSpot by email, then by last name plus company domain. Drop matches. 4. Enrich: one Scalelist bulk email job. No mobiles yet. 5. Verify: keep Valid and Risky. Log Not found. 6. Draft: write drafts/<today>.csv with Name, Company, Email, Status, Subject, Body, Source link, Decision (blank), Call (blank). 7. Stop. Report the file path and credits used. Wait for me. 8. When I say the review is done: find mobiles for rows with Call = yes (10 at most), load only rows marked "approve" into the matching Instantly campaign, append them to data/sent-log.csv, and log the counts.
For more ready-made skills (account briefs, call prep, CRM dedupe), see our library of Claude skills for sales.
6. Run the daily loop
Each morning, open the folder, type /daily-outbound, and review the file it writes before anything moves.

Claude works through steps 1 to 6 on its own, then stops and hands you a review file:

Open drafts/<today>.csv, edit any draft you want, type “approve” or “skip” in the Decision column, and “yes” in the Call column for up to 10 people you want to phone. Then tell Claude the review is done. It asks before the mobile lookups and before calling Instantly; you confirm, and Instantly sends on the campaign’s schedule and within each inbox’s daily limit.
You can schedule the first half. claude -p "/daily-outbound" --permission-mode acceptEdits runs the skill without an interactive session and lets Claude write the review file. In that mode, any call that still needs approval is denied because nobody is there to answer (Claude Code headless docs).
Pre-approve your HubSpot search tools by name (list them with /mcp), and the run will stop at the review file, because loading leads into Instantly always asks.
Example: one day of Claude Code outbound
A day of Claude Code outbound produces three things: a credit log, a review file and, after approval, a line per sent lead. Here is what the caps in CLAUDE.md allow.
| Step | Cap per run | Scalelist credits (at most) |
|---|---|---|
| Size the ICP | 1 count | 0 |
| Pull new people | 40 | 40 |
| Find emails | 40 lookups | 40 |
| Find mobiles | 10 lookups, after approval | 200 |
| Total | One review file | 280 |
Over 20 working days the ceiling is 5,600 credits, so the 10,000-credit plan (349 USD a month) covers it with room to spare; misses cost nothing, so the real number is lower. See all tiers on the Scalelist pricing page.
A row in the review file looks like this:
Subject: Ridgeline's four new SDR roles
Body: Hi Megan, I saw Ridgeline posted four SDR roles in Denver last week. The first month of calls tends to set a new team's habits, so that is where we coach. We work with IT services SDR teams through their first 500 dials. Open to 15 minutes next Tuesday to see how?
Source link: [careers page URL]
Decision: approve
The source link is the rule that keeps personalization honest: if Claude cannot link the fact, the email goes out without a personal line. More on this in personalization at scale with enriched data.
Common challenges with a Claude Code outbound agent
Most failures come from treating instructions as limits, or from running too much in one session. Each has a fix you can apply in the files above.
Claude drifts from the rules late in a session
CLAUDE.md is context, so long sessions dilute it. Keep it short, start a fresh session each morning, and keep every hard stop in settings.json, where drift cannot reach it. Anthropic’s docs point to a PreToolUse hook when an action must be blocked regardless of what Claude decides.
The same person gets two first emails
Dedupe in three places: the send log, HubSpot, and your exclusion file of customers, open deals and opt-outs. The loop checks all three before it drafts.
Credits run faster than planned
Caps in CLAUDE.md are the budget, the ask rule on mobile lookups is the brake, and the balance log is the audit. Compare the before and after balances every day.
Tool results flood the context
Claude Code warns when an MCP tool returns more than 10,000 tokens and caps output at 25,000 by default. Pull people 25 at a time and use bulk jobs, which return a job ID instead of a wall of rows.
A web page tries to give Claude instructions
Anthropic warns that servers fetching external content expose you to prompt injection. Treat research as data, keep a person on every send, and never grant the research run permission to load leads.
Guardrails: rate limits, human review and deliverability
Three guardrails keep an outbound agent safe to run every day: volume limits at every layer, a person on every send, and a list clean enough to protect your domains.

Rate limits at every layer
- Scalelist: caps per run in CLAUDE.md; the connector recommends batches of up to 1,000 contacts per bulk job.
- Instantly: daily sending limits per inbox, set in Instantly, not by the agent. Instantly recommends warming new domains from 5 to 10 emails a day over 4 to 6 weeks (Instantly 2026 benchmark report).
- Claude: plans limit usage over a rolling five-hour window, and paid plans add weekly limits (Claude pricing).
Never auto-send without review
The deny rules block campaign activation and replies, the ask rule stops every lead load until you confirm, and an unattended run cannot answer an ask. Three layers, one rule: a person approves every send. How to automate SDR workflows with AI covers which other steps to keep human.
Deliverability and compliance
- Send Valid emails from your main domain and Risky ones from a secondary domain. About 20 to 30% of Risky (catch-all) emails are deliverable; see how to handle catch-all emails.
- Instantly’s report recommends keeping bounce rates under 2%.
- Set up SPF, DKIM and DMARC. Google asks senders to keep their spam rate below 0.10% and never reach 0.30%; its bulk-sender rules start above 5,000 messages a day to personal Gmail accounts (Google sender guidelines).
- The CAN-SPAM Act has “no exception for business-to-business email”: accurate headers and subject lines, your postal address, a clear opt-out, and opt-outs honored within 10 business days (FTC compliance guide). This is not legal advice.
Our guide to email deliverability starting with your list goes deeper on list hygiene.
What to look for in the tools
Pick servers that make the guardrails easy, not just the demo.
- A contact data server with OAuth, a free count, bulk jobs, email statuses and charges only on results found.
- A sending tool whose MCP server separates loading leads from activating campaigns, so you can allow one and deny the other.
- A CRM server that can search by email and by name plus domain, and respects each user’s CRM permissions.
- Named tools that follow a stable pattern, so your deny rules keep matching after updates.
- A model you can afford daily. Our comparison of Claude Haiku, Sonnet and Opus for sales helps you pick one per step.
How Scalelist helps
Scalelist, an AI lead finder, is the data layer of this agent: it turns the ICP in your CLAUDE.md into real people with verified work emails and mobile numbers.
- Sizing a search: 0 credits.
- Each person returned: 1 credit.
- Each email found, labelled Valid or Risky: 1 credit.
- Each mobile found: 20 credits. A miss costs 0.
The Scalelist MCP server connects with one URL, and the same account works in the Claude app, Claude Code and the Scalelist API if you later move the loop into your own code. For the wider method behind the agent, read our guide to AI lead generation.
Give your Claude Code outbound agent real contacts: size the ICP for free, then pay only for the emails and mobiles Scalelist finds.
Get 20 credits to test itFAQ
Can Claude Code send cold emails automatically?
It can, if you connect a sending tool’s MCP server and allow it, and we recommend you do not. Keep a person on every send: deny campaign activation and replies in settings.json, put an ask rule on loading leads, and review the drafts file first. A Claude Code outbound agent should draft and queue, not decide.
Do I need to code to build a Claude Code outbound agent?
No. The whole agent is a CLAUDE.md file, a .mcp.json file, a settings.json file and one SKILL.md, all plain text or JSON. You need to be comfortable opening a terminal, running claude in a folder and editing a file. Claude Code can create the files for you from this guide.
Which Claude plan includes Claude Code?
Every paid plan. Anthropic’s pricing page lists Claude Code as included in Pro, Max, Team and Enterprise, and not in Free. Pro costs 20 USD a month billed monthly, or 17 USD a month billed annually, in the US. Claude Code shares your plan’s usage limits with the Claude app.
How much does the agent cost to run?
Three costs: your Claude plan, Scalelist credits and your sending tool. With the caps in this guide, Scalelist spends at most 280 credits a day (40 leads, 40 emails, 10 mobiles), and less when lookups miss, because misses are free. The Instantly plan depends on your inbox count.
Is it legal to send cold email from an agent?
Yes, if the email itself complies. In the US, the CAN-SPAM Act applies to B2B email: accurate headers, honest subject lines, a postal address and an opt-out honored within 10 business days. Other countries have stricter rules. The agent does not change your obligations. This is not legal advice.
Should I use Claude Code or the Claude app for outbound?
Use the Claude app for one-off lists and research, and Claude Code for a routine you run every day. Claude Code adds what a daily loop needs: project files, a CLAUDE.md that loads every session, permission rules Claude cannot override, skills you run by name, and non-interactive runs.
Sources
- Claude Code docs: How Claude remembers your project (CLAUDE.md)
- Claude Code docs: Connect Claude Code to tools via MCP
- Claude Code docs: Configure permissions
- Claude Code docs: Run Claude Code programmatically
- Claude Code docs: Skills
- Claude pricing
- Instantly developer docs: MCP authentication
- Instantly developer docs: MCP tools
- Instantly: Cold Email Benchmark Report 2026
- Google: Email sender guidelines
- Google: Email sender guidelines FAQ
- FTC: CAN-SPAM Act compliance guide for business