onsa logo
Try Onsa
Back to blog

How We Use Claude Code for Sales Outreach — From ICP to Qualified Leads with MCP Tools (2026)

Leo at desk with laptop showing code while Rob-in projects holographic LinkedIn profile cards

TL;DR: Most Claude Code outreach guides focus on writing emails. The real bottleneck is finding the right people. We use Claude Code with MCP tools — AnySite for LinkedIn search and Exa for people discovery — to go from ICP definition to a qualified lead list in one terminal session. No spreadsheets, no tab-switching, no copy-pasting between tools. One conversation, ten qualified leads, twenty minutes.

There’s an old sales analogy that captures the entire outreach problem in two sentences.

Imagine you have a broken window. A stranger walks by who fixes windows for a living. You’ll stop him, ask for a quote, and probably hire him on the spot. Now imagine your windows are perfectly fine, but your best friend — who happens to be an excellent window repairman — knocks on your door. Sure, you’ll invite him in, have coffee, catch up. But you’re not buying new windows.

The lesson: 70% of outreach success is targeting, not messaging. The best cold email ever written, sent to someone who doesn’t have the problem you solve, is just eloquent spam. A mediocre message sent to someone actively looking for your solution will get a reply.

Every week someone publishes a new “how I use Claude Code for outbound” article. They all follow the same script: paste a CSV of contacts, generate personalized emails, marvel at the speed. Fine. Email generation is a solved problem.

But here’s what nobody talks about: where did those 63 contacts come from? Who decided they were worth emailing? How did anyone verify they match your ICP before loading them into a sequence tool?

The hard part of outreach isn’t writing the message. It’s finding the person with the broken window. And that’s where Claude Code gets genuinely interesting — not as a copywriter, but as a research agent that can search LinkedIn, pull profiles, cross-reference company data, score fit, and hand you a qualified list. All without leaving your terminal.

I’m Bayram, founder of Onsa. I teach an AI sales course where we build these workflows live with real clients. This article is based on a workshop where we built a lead search agent from scratch — and tested it with an actual client who rated the results 9 out of 10. Here’s exactly how it works.

Why Claude Code, Not ChatGPT or a Browser Extension

Leo and Rob-in reviewing a qualified lead list together

Before diving in, let’s address the obvious question: why Claude Code specifically?

ChatGPT is a chatbot. You ask it questions, it answers. If you want it to search LinkedIn, you copy a profile URL, paste it in, and get analysis back. It’s a conversation partner, not a worker.

Claude Code is different. It runs in your terminal and can call external tools directly. It reads files, writes scripts, makes API calls, and executes multi-step workflows — autonomously. When you tell it “find VP of Sales at B2B SaaS companies in Seattle,” it doesn’t just suggest search parameters. It actually runs the search, processes results, enriches profiles, scores them against your ICP, and returns a structured list.

The key technology that makes this possible is MCP — Model Context Protocol. Think of it as USB-C for AI tools. MCP lets Claude Code plug into any external service — LinkedIn, company databases, CRMs, email — through a standardized interface. Instead of building custom integrations for each tool, you connect MCP servers and Claude Code gets instant access to their capabilities.

For sales outreach, two MCP integrations matter most:

- AnySite MCP — Direct access to LinkedIn: search users by title, company, location, keywords. Pull full profiles with work history, education, and skills. Also covers Instagram, Twitter, Reddit for multi-channel research.

- Exa — AI-native people and company search. Natural language queries like “founders of AI startups in Seattle who have filed patents.” Plus Websets for persistent monitoring that runs daily.

Together, they turn your terminal into a prospecting workstation.

Why an Agent, Not a Workflow?

If you’ve used automation tools like n8n or Zapier, you know workflows — fixed sequences of steps that run the same way every time. Workflows are McDonald’s: standardized, predictable, efficient. They’re great for sending emails, updating CRM fields, routing notifications.

But sales prospecting is messy. LinkedIn data can be outdated. A search that works for one ICP returns zero results for another. Profiles are incomplete. People list the wrong company. Your CRM connection drops mid-process. The first search returns 500 generic results and you need to pivot to a narrower query.

This mess creates uncertainty, and uncertainty is where agents outperform workflows. A workflow hits a dead end and stops. An agent adapts: “I searched for AI founders in Seattle with patents and found zero results. Let me expand to the Pacific Northwest. Still only 3? Let me try Bay Area and add the keyword ‘deep tech.’” It reasons through problems the way a good SDR would — but faster.

That’s why Claude Code’s agentic architecture matters for prospecting. You give it a goal (“find 10 qualified leads for David”), and it figures out the steps, adjusts when things don’t work, and brings you results. You don’t need to anticipate every edge case in advance.

Step 1: Define Your ICP in Conversation

Every outreach campaign starts with an ICP. But most people either skip this step (“just find me VP of Sales”) or overthink it (spending weeks on a 40-slide deck that nobody uses).

The sweet spot is a natural language description that’s specific enough to search but broad enough to sustain a pipeline. I wrote a detailed guide on how to build your ICP in 15 minutes, and a broader piece on how to automate outbound sales with AI. But here’s the version optimized specifically for Claude Code.

Here’s the question I ask on every discovery call: “Imagine you have an AI with universal knowledge — it can answer any question and do anything. What one question about your ideal customer would you ask it?”

The answers are always revealing. A patent strategist said: “Which founders are raising money right now and had patents in the past?” An immigration lawyer said: “Which startup founders in my city are on visas that expire in the next 12 months?” A SaaS sales leader said: “Which companies just raised Series A and are hiring their first SDR?”

That single question gives you a searchable ICP. Now take that answer, open your terminal, start Claude Code, and describe your ideal customer in plain English:

Find founders or CTOs at AI/ML startups with 10-100 employees
in Seattle, who have filed patents or are building proprietary
technology, at Seed to Series B stage.

Claude Code will parse this into structured search parameters:

- Titles: Founder, CEO, CTO

- Industry keywords: AI, ML, machine learning, startup

- Company size: 11-50, 51-200 employees

- Location: Seattle area

- Signals: Patent activity, proprietary tech, early-stage funding

This is where the agent pattern shines. Unlike a workflow that follows fixed steps, Claude Code adapts. If the first search returns too many generic results, it narrows the criteria. If results are too sparse, it broadens. This search-review-refine loop is how every good ICP emerges — not from thinking harder, but from seeing what the first search returns and asking “why are half of these wrong?”

The ICP Formula

A searchable ICP follows this structure:

[TITLE] at [COMPANY TYPE] with [SIZE] employees in [LOCATION],
who are [BEHAVIORAL SIGNALS], working in [INDUSTRY].

Examples that work well:

- “VP of Sales at B2B SaaS companies with 50-200 employees in the US, who recently raised Series A-B funding”

- “Head of Marketing at fintech startups in Europe, actively hiring for growth roles”

- “Partners at immigration law firms in the US, specializing in startup founder visas like EB-1 and O-1”

Examples that don’t work:

- “Decision makers at tech companies” — too vague, Claude will ask for clarification

- “CTOs who are interested in AI” — “interested” isn’t searchable, needs observable signals instead

Behavioral Signals That Make Your ICP Actionable

The best ICPs go beyond firmographics. They include behavioral signals — observable signs that someone is ready to buy, not just that they fit the profile. The difference is between “this is the right company” and “this is the right company at the right time.”

Here are signals that work well with Claude Code + MCP search:

- Hiring signals: A company hiring drone operators is growing its fleet — they need fleet management software. A company hiring their first SDR just got serious about outbound — they need sales tools. Claude Code can find these via job posting keywords.

- Funding cycle timing: Startups raise money every 18-24 months. If someone raised a Seed round 12 months ago, they’re likely preparing for Series A. Patent attorneys, executive recruiters, and financial advisors all benefit from this timing signal.

- Stealth startup mode: On LinkedIn, some founders list their company as “Stealth Startup” — they haven’t launched yet but are building. This is searchable and often means they’re pre-funding or pre-launch, making them excellent early prospects for service providers.

- Demo Day participation: Companies presenting at YC Demo Day, Techstars, or other accelerators are actively fundraising. Their names are public, their timing is known.

- New market expansion: When a company announces expansion to a new geography, they need local services — compliance, legal, accounting, recruiting. Press releases and LinkedIn posts surface these signals.

Step 2: Search LinkedIn with AnySite MCP

Once your ICP is defined, Claude Code uses AnySite MCP to search LinkedIn directly. No Sales Navigator subscription needed.

The Search

The primary tool is search_linkedin_users, which accepts:

- keywords: Industry or domain terms (“AI ML startup founder”)

- title: Job titles (“CTO”, “VP Sales”, “Founder”)

- location: Geographic filter (“San Francisco”, “United Kingdom”)

- company_keywords: Company-level filter (“fintech”, “SaaS”)

- count: Number of results (start with 10)

Claude Code doesn’t just fire off a single search. It runs a structured 5-step process:

1. Understand — Parse your ICP into searchable parameters. Extract titles, industries, company types, locations, and any behavioral signals.

2. Search — Call search_linkedin_users with specific criteria. Start with 5-10 results initially.

3. Evaluate — Review headlines and titles. Check location matches. Identify the most promising candidates.

4. Enrich — For top candidates, call get_linkedin_profile to pull full work history, education, skills, and recommendations.

5. Report — Return a structured list with name, title, company, LinkedIn URL, and a 1-2 sentence explanation of why each lead matches your ICP.

Practical Tips from 100+ Searches

After running this workflow across dozens of client sessions, here’s what we’ve learned:

Don’t over-filter. Combining industry + titles + location + company size in one API call often returns empty results. Start with fewer filters and add incrementally.

Use single keywords. company_keywords="fintech banking" returns empty. Use company_keywords="fintech" instead. The API treats multi-word strings as exact phrases.

Verify every profile. LinkedIn search aliases can resolve to completely different people. Always call get_linkedin_profile on the alias before adding someone to your list. We’ve seen “benedictkelly” resolve to a person named Sarah.

Start narrow, then expand. It’s easier to go from 3 results to 30 by loosening criteria than to sift through 500 generic results looking for the 10 that actually fit.

Example Output

Here’s what a typical Claude Code session produces after Step 2:

Lead 1: Sarah Chen
  Title: VP of Engineering
  Company: DataFlow AI (Series A, 45 employees)
  Location: Seattle, WA
  LinkedIn: linkedin.com/in/sarahchen
  ICP Match: Technical leader at AI startup, right stage,
  right location. 3 patents filed in ML optimization.

Lead 2: James Rodriguez
  Title: Co-Founder & CTO
  Company: NeuralPath (Seed, 12 employees)
  Location: Bellevue, WA
  LinkedIn: linkedin.com/in/jamesrodriguez
  ICP Match: Technical co-founder building proprietary NLP
  technology. Recent YC batch, actively hiring engineers.

Step 3: Cast a Wider Net with Exa People Search

LinkedIn is the default for B2B prospecting, and for good reason — it’s where professionals live. But it has blind spots. Some founders don’t maintain their LinkedIn profiles. Some companies are too early to have a presence. Technical founders in deep tech sometimes have more visibility through patents, papers, or personal sites than through LinkedIn.

This is where Exa fills the gap.

Exa’s people search works differently from LinkedIn. Instead of filtering by predefined fields (title, company size, location), you write natural language queries:

"Founders of AI/ML startups in the Pacific Northwest who have
published research papers or filed patents in computer vision"

Exa searches across the entire web — LinkedIn profiles, personal websites, conference speaker pages, patent databases, company about pages — and returns people who match your description.

When LinkedIn Isn’t Enough

Use Exa people search when:

- Your ICP includes signals LinkedIn can’t filter — patent holders, published researchers, conference speakers, open-source contributors

- You’re targeting a niche — “founders of drone logistics companies” returns better results as a natural language query than as a LinkedIn title filter

- You want to find people who aren’t active on LinkedIn — technical founders, academics transitioning to industry, stealth-mode startups

Exa Websets for Persistent Monitoring

One of Exa’s most powerful features for outreach is Websets — persistent search monitors that run automatically. You create a Webset with your ICP criteria once, and it continuously finds new people who match. This is perfect for daily pipeline refill.

A Webset configuration looks like this:

Query: "Partners or founders at US-based immigration law firms
        specializing in EB-1, O-1, or startup visas"

Criteria:
  - Person is located in the United States
  - Person is a Partner, Managing Partner, or Founder
  - Firm specializes in employment-based visas
  - Person is NOT a paralegal or junior staff

Enrichments:
  - Does this firm specifically serve startup founders?
  - What types of visas does this firm specialize in?

The Webset runs in the background, finds new matches daily, deduplicates against previous results, and enriches each match with the answers to your questions. You just check in and pick up new leads.

Combining LinkedIn + Exa

The best results come from using both sources:

Capability: Data source. AnySite (LinkedIn): LinkedIn directly. Exa People Search: Web-wide (LinkedIn, sites, patents, papers).

Capability: Query style. AnySite (LinkedIn): Structured filters (title, location, keywords). Exa People Search: Natural language descriptions.

Capability: Best for. AnySite (LinkedIn): Known titles at known company types. Exa People Search: Niche ICPs with behavioral signals.

Capability: Profile depth. AnySite (LinkedIn): Full LinkedIn profile (experience, skills, education). Exa People Search: Web mentions, context from multiple sources.

Capability: Monitoring. AnySite (LinkedIn): One-time searches. Exa People Search: Websets run daily, auto-deduplicate.

Capability: Speed. AnySite (LinkedIn): Instant results. Exa People Search: 30-60 seconds per search.

A typical workflow: search LinkedIn first for the obvious matches, then run Exa to catch people LinkedIn missed. Merge the results, deduplicate by name and company, and you have a comprehensive prospect list.

Step 4: Qualify and Score

Finding leads is step one. The real leverage is in qualification — determining which of your 20-30 results are actually worth contacting.

This is where Claude Code’s reasoning shines. It has the full context: your ICP definition, each lead’s LinkedIn profile, company data from Exa, and any additional research. It scores each lead against your criteria and explains its reasoning.

A typical scoring prompt in the agent’s workflow:

Score each lead 1-10 based on:
- Title match (does their role align with decision-maker?)
- Company fit (right industry, size, stage?)
- Location match
- Behavioral signals (patents, hiring, funding)
- Red flags (competitor, consulting firm, wrong geography)

Only return leads scoring 7+.

Claude Code doesn’t just assign numbers. It explains: “Score 9/10 — CTO at Series A AI startup in Seattle, 3 patents in NLP, company raised $8M six months ago, hiring 4 engineers. Strong match on all ICP criteria.” Or: “Score 4/10 — Title matches but company is a consulting firm (excluded in ICP negatives). Skip.”

This qualification step typically reduces your list by 40-60%. That’s the point. You want 10 qualified leads, not 30 maybes.

Step 5: Generate Personalized Outreach

Now — and only now — do we write messages. This is where most “Claude outreach” articles start. But notice what’s different: Claude Code has already done the research. It knows each prospect’s title, company, background, recent activity, and exactly why they match your ICP. The messages practically write themselves.

Connection Request Messages

For LinkedIn outreach, the connection request is your first impression. Claude Code generates hyper-specific messages because it has the full profile context:

Hi Sarah — I noticed DataFlow AI's work on ML optimization
for real-time pipelines. We help AI startups automate
their outbound prospecting so technical founders can focus
on building. Would love to compare notes on GTM approaches
for developer tools. Open to connecting?

This isn’t mail-merge personalization. Claude read Sarah’s profile, knows about DataFlow’s product, and found a relevant angle. It takes 2 seconds to generate because the research was already done in Steps 2-4.

The “Show Value Before You Ask” Principle

The best outreach we’ve seen doesn’t ask for a meeting in the first message. It demonstrates understanding:

Research first, message second. Claude Code already has the company data, job postings, and product info. Reference something specific.

Lead with an insight, not a pitch. “I noticed you’re hiring 3 engineers while most Series A companies hire 1-2 at this stage — aggressive growth.” This shows you’ve done homework.

Make the ask small. “Worth a 15-minute call?” beats “I’d love to schedule a demo of our platform.”

Real Case: How an AI Agent Found 10 Leads in 20 Minutes

Here’s a real example from our AI sales workshop — details are from a live demonstration, with the client’s permission.

The context: I was doing cold outreach to find service providers who work with startup founders — lawyers, accountants, recruiters. One response came from David, a patent strategist at an IP-focused law firm on the West Coast. He accepted a LinkedIn connection request, replied to our agent’s message, and we booked a call.

I wanted to walk into that first call with two things prepared — without any input from David beforehand:

1. His ICP — who his ideal clients are, as determined by our agent’s research alone

2. Sample leads — actual prospects matching that ICP, found before we even spoke

What the agent did — autonomously:

1. Pulled David’s LinkedIn profile via AnySite MCP — found his specializations, saw he’d worked with a prominent local VC fund

2. Visited his firm’s website — studied their client portfolio, identified 6 distinct technology domains they cover (AI/ML, VR/AR, NLP, blockchain, IoT, robotics)

3. Formulated the ICP: “Founders of seed/pre-seed startups with patent-relevant technology in his geography — especially those with existing patent filings or VC connections to the same investors”

4. Ran parallel LinkedIn searches across all 6 technology domains

5. Enriched top candidates with full profiles

6. Scored each lead on a 1-10 scale

7. Cross-referenced shared connections — found leads who had raised money from the same VC fund David had worked with, and one who attended the same university

The results:

- 10 qualified leads delivered

- Average match score: 8.3/10

- Time: approximately 20 minutes

- Each lead came with: name, title, company, LinkedIn URL, technology domain, and a specific reason they need patent services

What happened on the call:

During the discovery portion of our call, I asked David about his ICP. He described exactly what our agent had already figured out — founders with patent experience, early-stage, in his geography. Then I shared the two slides our agent had prepared.

He read the ICP slide and said: “This is a 9 out of 10 for how I define my ideal customer.”

Then we opened the sample leads together, in LinkedIn, in real-time. He looked at the first one and said: “I know the investor who backed this person — I’ve done work for them.” The second one: “We went to the same university in San Diego. I’m surprised I’m not already connected.” The third: “This is exactly the profile I’m looking for.”

His exact words at the end: “This is the best meeting I’ve had with a lead generation provider.”

Not because of fancy technology — because we showed up having already done the work. The agent understood his business, reverse-engineered his ICP from public data, found leads that were obviously relevant, and even identified shared connections that would make warm introductions possible.

That’s the difference between a search tool and a research agent. A search tool returns 500 profiles matching “founder in Seattle.” A research agent reads David’s profile, understands he works with a specific VC fund, finds founders backed by that fund, checks for shared university connections, and delivers leads with built-in conversation starters.

Three Rules for AI-Powered Outreach

After running hundreds of these workflows, three rules have proven non-negotiable:

1. Never Send What You Haven’t Reviewed

AI agents make mistakes. They might misread a profile, confuse a consulting firm with a software company, or score someone highly because their title matches but their company is a direct competitor. Human review is the quality gate.

We use a simple workflow: Claude Code generates the list, a human reviews and approves each lead, then approved leads get personalized messages. This takes 5 minutes and prevents embarrassing misfires.

2. Specificity Beats Volume

Sending 100 generic messages will always lose to sending 10 specific ones. Claude Code makes specificity scalable — it can research each prospect deeply enough to write a message that feels hand-crafted. Use that advantage instead of reverting to spray-and-pray with better-sounding copy.

3. The Agent Adapts, But You Set the Direction

Claude Code will refine its searches based on what it finds. But it needs a clear starting ICP. Saying “find me potential customers” produces garbage. Saying “find VP of Sales at B2B SaaS companies with 50-200 employees in the US who recently raised Series A” produces gold.

The more specific your input, the better the agent’s output. This is true for every AI tool, but especially true for agentic workflows where each step builds on the previous one.

Getting Started

Here’s the minimum setup to try this yourself:

1. Install Claude Code Available at claude.ai/code. Works on Mac, Windows, and Linux.

2. Connect AnySite MCP AnySite provides an SSE endpoint for MCP integration. Connect it in Claude Code’s MCP settings. You get access to search_linkedin_users, get_linkedin_profile, search_linkedin_companies, and duckduckgo_search — everything you need for LinkedIn-based prospecting.

3. Connect Exa Exa provides both an MCP server and a Python SDK. For Claude Code, the MCP integration gives you people_search_exa, web_search_exa, and Websets for persistent monitoring.

4. Start with one ICP Don’t try to build a full pipeline on day one. Pick your tightest ICP — the one where you know exactly who you’re looking for — and run the workflow once. Review the results. Refine. Run again.

5. Starter Prompts to Try

Here are five prompts that work well out of the box:

- “Find 10 VP of Sales at B2B SaaS companies with 50-200 employees in San Francisco. Pull full profiles for the top 5 and score them against our ICP.”

- “Search for founders of AI startups in Seattle who have filed patents. Cross-reference with LinkedIn to get their current companies and roles.”

- “I have a call with [Name] from [Company] tomorrow. Research their company, find 5 potential leads they could benefit from, and prepare a one-page brief.”

- “Find Head of Growth or VP Marketing at Series A-B fintech companies in Europe who are actively hiring for marketing roles.”

- “Compare these 10 LinkedIn profiles against our ICP and rank them by fit. Explain why each scored the way they did.”

FAQ

Does Claude Code outreach require coding skills? No. Claude Code runs in a terminal, but you interact with it in plain English. You don’t need to write code — Claude Code handles the API calls, data processing, and formatting. If you can describe your ICP in a sentence, you can use this workflow.

How does this compare to Apollo or ZoomInfo? Apollo and ZoomInfo are databases with fixed fields. You filter by title, industry, and company size. Claude Code with MCP tools is an agent — it searches, reasons about what it finds, enriches from multiple sources, and adapts its approach based on results. The biggest difference: Claude Code can combine LinkedIn data (AnySite) with web-wide search (Exa) in a single workflow, something no traditional database does.

Is this allowed by LinkedIn’s terms of service? AnySite MCP provides LinkedIn data through authorized API access, not scraping. Always check your MCP provider’s terms and LinkedIn’s platform guidelines. For any outreach, keep volume reasonable and messages personalized — which is the whole point of this approach.

How many leads can I find per session? Typically 10-30 qualified leads per session, depending on how niche your ICP is. The bottleneck isn’t the search — it’s the enrichment and qualification. Each get_linkedin_profile call takes a moment, and thorough qualification requires Claude to reason about each candidate.

Can Claude Code also send the messages? Yes, if you connect a messaging MCP tool (like Unipile for LinkedIn messages or an email provider). But we recommend a human-in-the-loop step between research and outreach. The research agent finds and qualifies leads. A human reviews and approves. Then messages go out — either through Claude Code or your preferred outreach tool.

What does this cost? Claude Code requires an Anthropic subscription (Pro or Team plan). AnySite and Exa have their own pricing — both offer free tiers to get started. The total cost is significantly less than a Sales Navigator subscription plus a data enrichment tool, and you get deeper qualification for free.

How is this different from Clay? Clay is a powerful data enrichment platform with a visual workflow builder. Claude Code is a general-purpose AI agent that can call any MCP tool. They’re complementary — some teams use Claude Code for initial research and ICP refinement, then feed qualified leads into Clay for sequencing and delivery. The Outbound Kitchen newsletter calls Claude Code “the prep layer before Clay.”

Can I save my searches and reuse them? Yes. Claude Code remembers your preferences and instructions through CLAUDE.md files. Save your ICP definitions, search parameters, and scoring criteria there. Next time, just say “run our ICP search” and Claude Code picks up where you left off. For persistent monitoring, Exa Websets run daily and accumulate matches automatically.


I’m Bayram, founder of Onsa. We build AI agents that automate sales prospecting — from ICP definition to qualified lead delivery. If you want this workflow built into your sales stack without the setup, check out what Onsa does.

You might also like

How to Build a B2B ICP in 15 Minutes

How to Automate Outbound Sales with AI (2026)

Automated Lead Generation with AI Agents (2026)