Meet Layrcake — your AI agent’s shortest route to the right peopleGet your free key ›

Claude Code for Sales: Build a Prospecting Agent That Finds, Verifies and Drafts in One Run

One skill file turns Claude Code into an SDR that never skips the boring parts. Type one line; get back a checked list, verified emails and an opener for every person.

What you get

Prospecting has a dull middle. Somebody has to check that the head of sales is still the head of sales, that the email address exists, and that there is a better opener than "hope you're well". That middle is what this agent does.

We typed one line into Claude Code:

Claude Code
❯ /prospect 10 heads of sales at software companies in the UK with 50 to 500 staff. We sell an AI call-coaching tool: it listens to every sales call, scores it, and tells each rep the one thing to fix before their next call. Budget: 90 credits.

Under three minutes later it came back with six heads of sales at UK software companies. Every one had a verified work email and had been checked twice against the brief. Four had posted or engaged with something in the last week or two, and their first email opens with it.

1Line typed
19People screened
6Ready to send, emails verified
84Credits ($0.84)

What is a Claude Code skill?

A skill is a SKILL.md file of instructions that Claude Code keeps in its toolkit. In Anthropic's words, "Claude uses skills when relevant, or you can invoke one directly with /skill-name."

So the skill holds the method: what to do, in what order, and when to stop. The data comes from tools. We used Layrcake, an MCP (Model Context Protocol) server that gives Claude Code people search, email finding and verification, recent LinkedIn activity and campaign drafting through one connection.

Set it up in two minutes

Connect the data. Run this, then type /mcp, choose layrcake and choose Authenticate. Your browser opens to sign in. No key to paste.

Terminal
$ claude mcp add --transport http --scope user layrcake https://mcp.layrcake.dev/mcp

Add the skill. Download SKILL.md and save it as .claude/skills/prospect/SKILL.md in your project, or in ~/.claude/skills/prospect/ to have it everywhere. The full file is at the end of this guide. Here is the job it runs:

The job, in order
1. Find people          find_leads, twice as many as you need
2. Check fit             title, company, location (free)
3. Get work emails       enrich, best fit first
4. Check fit again       on what enrich returned (free)
5. Verify every email    verify_email, keep valid
6. Find a reason         find_posts, latest activity per person
7. Write openers         one line each, from that activity
8. Draft the sequence    three emails, day 0, 3 and 7
9. Dry-run the campaign  create_campaign, dry_run: true

What the agent did

It searched for 20 people, twice the ten we asked for, because it knew some would not survive the checks. Before spending a credit on emails, it read every result and set aside two who were not what we asked for. Then it found work emails one person at a time, best fit first.

Enrich comes back with fresher details than search: a new title, a new city. The agent checked everyone a second time against those details and kept only the people who still matched the brief. Then it verified every email and kept the valid ones.

Tool calls · the rununder 3 minutes
  1. find_leadsHead of Sales · UK · Software Development · 50 to 500 staff · limit 2019 found · 4 cr
  2. fit checktitle, company, locationfree
  3. enrich × 13want: work_email11 found · misses free · 55 cr
  4. fit checkon enrich's detailsfree
  5. verify_email × 7one per address6 valid · 7 cr
  6. find_postsleads: 6 · latest activity6 with activity · 18 cr
  7. create_campaigndry_run · 6 leads · 3 emails6 accepted · 0 cr

At six people it stopped. Each extra person costs about 9 credits to find, verify and research, and a seventh would have gone past the 90-credit budget. So it told us, instead of quietly cutting a corner.

What comes back

For each person, find_posts returned the best recent thing they did on LinkedIn: their own post, a comment, or a post they reacted to. The agent turned that into one opening line. Here is the flavour, lightly paraphrased so nobody is identifiable:

WhoTheir activityOpening line
Head of Sales, property-services softwareOwn post, 7 days oldSaw your post on what empty properties cost landlords.
Head of Sales, print-management softwareOwn post, 1 day oldRead your post on AI in business development, and your point that it sharpens curiosity without replacing the human part.
Head of Sales, IT management softwareReaction, 2 days oldSaw you liked a post busting myths about archiving files in Microsoft 365.

Reactions get a lighter touch ("saw you liked"), because liking a post says less than writing one.

Two people's only recent activity had nothing to do with work, so the agent skipped it and wrote a plain line about their role instead. That is the skill's rule, and the right call: nobody wants a sales email about their friend's new job.

Every opener drops into the same three-email sequence. This is email 1, as the agent drafted it:

Email 1 · as drafted
Subject: Rep call coaching

{{opener}}

Most reps only get coached on the few calls a manager has time to hear. Our AI call-coaching tool listens to every sales call, scores it, and tells each rep the one thing to fix before their next call.

Is call coaching something {{company_name}} is looking at right now?
Nothing sends on its own

The skill only ever dry-runs the campaign. Creating it and launching it stay with you, and launching asks a signed-in person to approve before a single email leaves.

Make it yours

The skill has no audience or product baked in. Everything comes from the line you type, so the same file works for a payroll startup and a logistics consultancy alike.

Change the audience. Any role, place, industry and company size the search understands: "15 CFOs at UK logistics firms with 200 to 1,000 staff" is the same kind of request.

Change the offer. One or two plain sentences about what you sell. The emails only use what you give them, so a sharper sentence makes sharper emails.

Change the budget. Allow about 9 credits for each person you want back, plus a few for the search. Ten people is around 100 credits.

Change the voice. The drafting rules sit in step 8 of the file: three emails, under 100 words, no links. Edit them to sound like you.

What does it cost?

Our run cost 84 credits, about $0.84 at $0.01 per credit, which works out at 14 credits for each person who made the final list (prices as of October 2026).

StepPrice
Find people0.2 credits each (3 minimum)
Work email5 credits when found, free when not
Verify an email1 credit
Recent activity3 credits per person with activity
Campaign dry runFree

Before you hit send

The agent does the legwork. Three things stay with you: read the openers and tweak any that don't sound like you, connect a mailbox, then create the campaign and approve the launch.

The full skill file

This is the exact file our run used. Copy it, or download it.

.claude/skills/prospect/SKILL.md
---
name: prospect
description: Find people who match an audience, get and verify their work emails, find a recent reason to write to each one, and draft a short email sequence that opens with it. Stops before anything sends. Use when asked to prospect, build a lead list, or draft outreach for an audience.
---

# Prospect

You run one prospecting job end to end with the Layrcake tools, then stop and show the user what you found and drafted. You never send email and never launch a campaign.

## Before you start

Make sure you know three things. Ask once if any is missing:
1. **Who:** the role, the location, the industry and the company size.
2. **What we sell:** one or two sentences, so the emails are about something real.
3. **How many people, and the credit budget.** Default to 10 people and 100 credits.

Keep a running total of `layrcake.credits_charged` from every response. Before each paid step, work out its cost from the prices below. If the budget can't cover everyone, carry fewer people through every step; never skip a step to save credits. Give every paid call a unique `idempotency_key`.

| Step | Price (Layrcake, October 2026) |
|---|---|
| `find_leads` | 0.2 credits per person returned, at least 3 when anyone is returned |
| `enrich` | 5 credits per email found (cached or fresh); a miss is free |
| `verify_email` | 1 credit per check |
| `find_posts` with `leads` | 3 credits per person with recent activity, reactions included; nothing found is free |
| `create_campaign` | free |

## The job

1. **Find people.** Call `find_leads` with the role as `titles`, plus `locations`, `industries` and `company_headcount`. Ask for twice the number of people you need (`limit`): the fit check and email misses always drop some. Industry filters use LinkedIn's industry names, which are broad ("Financial Services" covers banks, brokers and fintechs alike). Search results have no email addresses.
2. **Check fit before you spend.** Read each result's title, company and location. Drop anyone clearly outside the brief (wrong country, wrong kind of company, a role that isn't the one asked for, a domain that isn't a company website), and say who and why. If you can't tell from the name whether a company fits (is it really fintech?), keep it and flag it. This step is free.
3. **Get work emails, best fit first.** Call `enrich` with `person: { full_name, company_domain, linkedin_url }` and `want: ["work_email"]`, one person at a time, and stop once you have the number of people asked for. A miss is free. Use only the work email; ignore any other fields that come back.
4. **Check fit again.** Enrich often corrects the search: a fuller name, a newer title, a different location or email domain. From here on, use what enrich returned, and drop anyone who no longer fits before paying for anything else. If that leaves you short, enrich the next person from step 2.
5. **Verify every email.** Call `verify_email` once per address. Keep `valid` and `catch_all_valid` (a catch-all domain accepts any address, so the mailbox can't be confirmed; flag these). Drop everything else, say how many and why, and enrich the next person if you're short.
6. **Find a reason to write.** Call `find_posts` once with `leads` set to the people you kept (enrich's `full_name`, `company_domain`, `linkedin_url`) and `budget_credits` set to 3 × the number of people. For more than 10 people it returns an `operation_id`; poll `get_operation` until it finishes. Each person comes back with their best recent activity: their own post, a comment, a reaction, or a post from their company.
7. **Write one opening line per person.** One sentence, specific, no flattery.
   - Their own post or comment: refer to what they said.
   - A reaction to someone else's post: say "saw you liked" and stop there. Liking a post says less than writing one.
   - Personal posts (anniversaries, family, health) or anything unrelated to work are not a reason to write. Don't use them.
   - When there's no usable activity, write a plain line about their company instead. Never leave the opener empty: the email would start with a blank line.
8. **Draft the sequence.** Three short emails. Email 1's subject names the problem in a few words; emails 2 and 3 reply in the same thread ("Re:" plus the same subject). Email 1 opens with `{{opener}}`, then one problem the user's product solves, then one low-pressure question. Use `{{first_name}}` and `{{company_name}}`. Plain text, under 100 words each, no links. Don't invent numbers or claims about the product; use only what the user told you.
9. **Check the campaign without creating it.** Call `create_campaign` with a `name`, an `idempotency_key`, the leads (email, first_name, last_name, company_name, `custom: { opener }`), the three steps, and `dry_run: true`. `wait_days` counts from the previous email: 0, 3, 4 sends on day 0, day 3 and day 7. `would_exceed: ["sending_capacity"]` means the workspace has no connected mailbox with room to send; the user connects one before creating the campaign for real.

## What you show the user

- A table of each tool call: what you asked for, what came back, credits charged.
- How many people made it through each step, and why the others dropped out. If you end up short of the number asked for, say so; don't widen the brief on your own.
- The three emails and each person's opener.
- The total credits used against the budget.
- What needs a human before sending: read the openers, decide on catch-all addresses and flagged companies, connect a mailbox if the dry run asked for one, then create and launch the campaign. Launching asks a signed-in person to approve before anything sends.

Questions people ask

Can Claude Code be a sales agent?

Yes, with a skill and a data connection. The skill holds the procedure; an MCP server gives Claude Code the tools to search for people, find and verify emails, and draft a campaign. In our run, Claude Code took a one-line request to six ready-to-send prospects in under three minutes.

Where do I put a Claude Code skill?

In .claude/skills//SKILL.md inside a project, or in ~/.claude/skills/ to use it in every project. Claude uses it when your request matches its description, or you can call it with /.

How much does a Claude Code prospecting run cost?

Our run cost 84 credits (about $0.84) and returned six people with verified emails and a personal opener each. Allow about 9 credits per person you want back. Searches and email lookups that find nothing are free.

Does the agent send emails by itself?

No. The skill stops at a dry run of the campaign. Creating and launching it is a separate step, and launching asks a signed-in person to approve before anything sends.

ShareAll guides
Your next move

Give your AI agent the key to go to market.

The right companies, people, details and signals, all available through one API key. Ready for your AI agent the moment you paste it. Nothing sends until you say so. Free to start, then pay as you go.

mcp url · https://mcp.layrcake.dev/mcp 300 free credits · No card required