← Back to blog
· 10 min · Fintalio

Build a LinkedIn Sourcing Agent in 30 Minutes: End-to-End Tutorial

End-to-end 30-minute build: Claude Desktop as host, Fintalio for LinkedIn MCP, one enrichment MCP. Result: 50 validated, enriched, scored leads, ready for human review.

tutorial sourcing-agent mcp linkedin-ai prospecting
Build a LinkedIn Sourcing Agent in 30 Minutes: End-to-End Tutorial

TL;DR

A 30-minute LinkedIn sourcing agent uses three pieces: an LLM host (Claude Desktop), a LinkedIn MCP server (Fintalio, 19 tools, €69 per month), and one enrichment MCP. Setup takes 10 minutes, prompt design takes 10, the first supervised run takes 10. Output: 50 validated and enriched leads written into a Fintalio contact group, draft sequence template ready for human approval. No LaunchSequence call without your “go.” The boring 80% of sourcing is automated; the 20% (ICP judgment) stays human.

What does “sourcing agent” actually mean in 2026?

Sourcing is the input side of outbound: find the people. Sequencing is the action side: talk to them. A sourcing agent ingests a seed list or target persona, validates rows, enriches missing fields, scores ICP fit, and writes the qualifying rows into your CRM-equivalent. Per the Model Context Protocol specification, the LLM picks which tool to call at each step, which is what makes the loop “agentic” rather than “scripted.”

What a sourcing agent is NOT: a scraper. Fintalio’s 19-tool surface does not include profile scraping, advanced LinkedIn search, or feed reading. The agent works from operator-provided data (CSV) or queries via an attached enrichment MCP. That is deliberate. Scraping at volume puts your LinkedIn account in User Agreement §8.2 territory, and we would rather your account stay healthy.

The architectural shape: one LLM host attaches two MCP servers. The agent reasons across both per prompt. The hosted LinkedIn relay handles the platform session underneath. You bring the seed list and the ICP statement.

What does the architecture look like?

Two MCP servers attached to one LLM host. Claude Desktop supports multiple servers natively per Anthropic’s MCP quickstart. Cursor supports the same pattern; we use Claude Desktop here for its simpler chat ergonomics.

                +---------------------+
                | Claude Desktop      |
                | (LLM host, agent)   |
                +----------+----------+
                           |
              MCP/JSON-RPC over HTTPS
                           |
        +------------------+--------------------+
        |                                       |
        v                                       v
  +-----------------+                  +--------------------+
  | Fintalio MCP    |                  | Enrichment MCP     |
  | 19 tools, /mcp  |                  | (your choice)      |
  +-----------------+                  +--------------------+
        |
        v
  hosted LinkedIn relay

The agent picks which server’s tool to call at each step. Validation goes to Fintalio’s ParseCsv. Enrichment goes to the enrichment MCP. Scoring happens in the LLM itself (no tool call). Writing back goes to Fintalio’s CreateContactGroup and CommitCsv. The 30-minute run produces a reviewable list, not a launched campaign.

What do you need before you start?

Six prerequisites. None of them are optional. If you skip one, the loop stalls at the matching step.

  • Claude Desktop installed. Free or paid Anthropic plan both work
  • A Fintalio account on the €69 per month single plan, with a connected LinkedIn account. The platform OAuth flow happens once in the dashboard
  • A Fintalio MCP token. Issued from Settings > Tokens API & MCP
  • An enrichment MCP of your choice. Bring your own; we will not endorse a specific vendor here. The pattern works with any MCP-compliant enrichment provider
  • A seed CSV of ~50 to 100 candidate leads. Minimum columns: name, company, linkedin_url
  • A clearly written ICP statement. One paragraph. If you cannot write it, the agent cannot enforce it

The ICP statement is the most under-budgeted prerequisite. A fuzzy ICP produces a fuzzy list. The agent will do exactly what you tell it to. “Series A B2B SaaS RevOps leaders in North America with 50-200 employees” is enforceable. “Good prospects” is not.

How do you configure the two MCP servers? (Step 1, 10 minutes)

Edit claude_desktop_config.json. On macOS it lives at ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows at %APPDATA%\Claude\claude_desktop_config.json. Paste this block (replace placeholder tokens):

{
  "mcpServers": {
    "fintalio": {
      "url": "https://fintalio.com/mcp",
      "headers": {
        "Authorization": "Bearer FINTALIO_TOKEN_HERE"
      }
    },
    "enrich": {
      "url": "https://your-enrichment-mcp/endpoint",
      "headers": {
        "Authorization": "Bearer ENRICH_TOKEN_HERE"
      }
    }
  }
}

Quit Claude Desktop fully (Cmd+Q on macOS, system tray quit on Windows). Relaunch. The hammer icon should show both servers active. If only one connects, you have a typo, a wrong URL, or a firewall blocking outbound HTTPS to one of the endpoints.

Open a fresh chat. Pin a system prompt that lists the canonical 19 Fintalio tool names. This prevents the LLM from hallucinating tool names like SearchProfiles or SendMessage (neither exists). The full list to pin: ListContacts, GetContact, ListContactGroups, ListSequences, GetSequence, ListSequenceTemplates, GetSequenceTemplate, ListVariables, GetAccountStatus, CreateContactGroup, UpdateContact, PauseSequence, ResumeSequence, StopSequence, ParseCsv, CommitCsv, CreateSequenceTemplate, CreateContact, LaunchSequence.

How do you design the 4 sourcing loop prompts? (Step 2, 10 minutes)

Four prompts in sequence. Each one runs cleanly only if the previous one finished. Do not batch them into a mega-prompt; the agent loses precision at scale.

Prompt A: seed ingestion and validation

Read /tmp/seed.csv. Use Fintalio's ParseCsv to validate against required
columns (name, company, linkedin_url). Return the rows that FAILED
validation in a table. Do not write anything yet.

The agent calls ParseCsv, surfaces broken rows, returns a structured table. You commit the fix to your seed file locally. This loop catches the most common failure mode: junk rows that propagate downstream.

Prompt B: enrichment

For each row in the validated set, call enrich.lookup. Return an
enriched table with: title, seniority, company size, geography. Do
not write to Fintalio yet.

The agent calls the enrichment MCP per row. Missing fields get populated. The agent returns the enriched table in chat. Still no writes to Fintalio. Verify the enrichment quality before moving on; a low-quality enrichment provider poisons the next step.

Prompt C: ICP scoring

Score each enriched row against this ICP: [paste your ICP statement].
Score 1 to 5. Return only rows scoring >=4 with a one-sentence
justification per row.

This is the prompt that uses the LLM’s actual strength: fuzzy fit assessment. No MCP call. The LLM reads the ICP, reads each enriched row, and produces a defensible score. You spot-check 5 rows manually. If the scoring drifts, re-pin the ICP and re-run.

Prompt D: write into Fintalio (supervised)

For the rows scored >=4, call Fintalio's CreateContactGroup with name
Q3-RevOps-sourced. Then call CommitCsv to import them. Then propose a
sequence template from the library via ListSequenceTemplates. Do NOT
call LaunchSequence. Show me the launch plan.

The agent assembles the launch. You see the plan: contact group created, rows committed, candidate sequence template named. LaunchSequence is NOT called. That is the human gate.

How do you run the loop and review? (Step 3, 10 minutes)

Run the four prompts in order. Confirm each tool call in Claude Desktop’s allowlist UI before approval. Do not auto-approve write tools; the allowlist exists for a reason.

What “review” actually means in this context:

  • Open the Fintalio dashboard. Verify the contact group Q3-RevOps-sourced exists. Count rows
  • Spot-check 5 rows for ICP fit and field accuracy. If 3 of 5 fail, your ICP statement is the problem
  • Read the proposed sequence template end to end. Does the angle match your value prop?
  • If something looks off, course-correct in chat: “Rescore rows 12-20 against this revised ICP statement.”
  • If everything looks good, call LaunchSequence manually or via a final prompt. Only after the review

The 30-minute clock ends when the contact group is visible in the dashboard and the sequence template is approved. The launch decision is a separate, deliberate action. Skipping the review is how teams ship campaigns at the wrong people.

Which Fintalio tools does the agent actually call?

Eleven of the 19 tools appear in this loop. The other eight (UpdateContact, ListVariables, ListContacts in the read path, ResumeSequence, etc.) are used in follow-up loops, not the initial sourcing run.

Step Tool
Validate the CSV ParseCsv
Create the target group CreateContactGroup
Write the rows CommitCsv
Browse template library ListSequenceTemplates, GetSequenceTemplate
Audit before launch ListContacts, GetContact, GetAccountStatus
Approve launch (manual) LaunchSequence
Safety net PauseSequence, StopSequence

All tool names match Fintalio’s MCP server registration exactly. Forbidden invented tools that the LLM may try to call: SearchProfiles, SendMessage, ScrapeProfile, ReadInbox, AdvancedSearch, PublishPost, ReadFeed, WebhookSubscribe. None of these exist. Pin the canonical list in your system prompt to suppress hallucination.

What failure modes will you see on a real run?

Five failure modes cover roughly every support pattern we see from new users in their first run. Each maps to a tighter prompt or a configuration adjustment.

  • The agent invents an enrichment tool name. Fix: tighten the system prompt to list ONLY attached servers’ tools, by exact name
  • The agent batches too eagerly and tries LaunchSequence before review. Fix: add an explicit “STOP before LaunchSequence” guard to every prompt, not just prompt D
  • Rate-limit hits (429) at 120 requests per minute. Fix: pace the loop. The LLM will retry but burn tokens. Chunk a large CSV into 50-row batches
  • Daily action cap reached (50 messages per day, 50 connections per day per LinkedIn account). Fix: that is a platform safety limit, not a bug. Wait 24 hours, or scale across accounts
  • ICP scoring drifts after 20+ rows. Fix: re-pin the ICP statement mid-conversation, or restart the chat with a fresh system prompt

None of these require code changes. All of them are prompt hygiene plus pacing.

What is the honest 80/20 of sourcing?

80% of sourcing work (parse, enrich, score, import) is now automated, supervised, and reproducible. 20% (the ICP statement, the spot-check, the sequence template approval, the launch decision) stays human. If you skip the 20%, you ship 50 first-touches at the wrong people, and your reply rate tells you so.

The agent does not know your business. It knows what you told it. A good ICP statement, a careful spot-check, and a deliberate launch decision are the work. The automation is the leverage. Confusing the two is the trap most “AI replaces sourcing” pitches fall into.

For the conceptual context, read the LinkedIn MCP pillar. For the Claude Desktop host setup deep-dive, see the Claude Desktop tutorial. For the cost math across the full stack, the MCP server cost comparison covers the per-prospect economics.

What does this cost per run?

Three line items, each transparent.

  • Fintalio: €69 per month, single plan, MCP bundled. Flat. Does not scale with run count
  • Claude Desktop plus token usage for the 4 prompts. Roughly $1 to $5 per run at 50 rows, depending on model. Sonnet sits at the cheaper end, Opus at the more expensive
  • Your enrichment MCP cost. Variable per provider. Per-call or per-record, typically

Total per-run cost: modest. The long-term cost is your engineering time to maintain the system prompt and the ICP statement. Those two artifacts decay if you stop tending them; budget 1 to 2 hours per month.

FAQ

Can the agent source leads without a seed CSV?

Not from Fintalio’s 19-tool surface. There is no SearchProfiles or AdvancedSearch tool. The agent works from operator-provided data or from an attached enrichment MCP that can return candidate lists. If you need search-driven sourcing, the enrichment MCP layer is where it lives, not Fintalio.

Does Fintalio include enrichment, or do I need a second MCP?

You need a second MCP. Fintalio’s 19 tools cover list management, sequence management, and outreach execution. Enrichment (title lookup, company size, technographics) is not in scope. Pair Fintalio with an enrichment MCP of your choice in the same claude_desktop_config.json. The agent will compose calls across both.

Can I let the agent run unsupervised on a schedule?

Technically yes; the Sanctum token works from any client, including a scheduled job. Strategically no. Unsupervised sourcing without spot-checks is how you ship campaigns at the wrong people. The 80/20 framing is real: automate the boring 80%, keep the 20% (ICP review, launch approval) human.

What if my ICP is fuzzy and changes weekly?

The agent enforces what you write. If your ICP is fuzzy, your output will be fuzzy. The fix is upstream: spend 30 minutes writing a one-paragraph ICP statement before you run the loop. Re-pin it weekly. The agent is a list filter, not an ICP author.

Is this ToS-safe?

The Fintalio architecture uses a hosted LinkedIn relay with per-account daily action caps (50 messages, 50 connections). That posture sits inside the LinkedIn User Agreement §8.2 safe zone for first-party automation. The agent does not scrape public profiles outside your existing relationships. You are responsible for ICP quality and message quality; the platform handles the rate posture.

Wrap-up: what does success look like at minute 30?

Three artifacts. A Fintalio contact group named Q3-RevOps-sourced with 30 to 50 validated, enriched, ICP-scored rows. A sequence template proposed but NOT launched. A chat transcript that documents every tool call as an audit trail. You have ~30 minutes left in the original hour to do the spot-check and the launch decision.

If you want to ship the loop today, register for the single €69 per month plan. MCP access is bundled. The MCP section on the homepage has the one-paste config for Claude Desktop and Cursor. The AI SDR architecture guide covers the broader operational pairing.

Three pieces. Four prompts. One supervised run. The boring 80% is now automated. The 20% that matters is on your calendar.

Plug LinkedIn into your AI agent

Fintalio is the MCP server for LinkedIn. Connect Claude, Cursor, or your custom agent and ship outreach workflows in minutes — with audit logs and rate-limit awareness baked in.

Get started