Build a LinkedIn Outreach Agent in 30 Minutes with Claude Desktop + Fintalio MCP
Build a working LinkedIn outreach agent in Claude Desktop in 30 minutes. Step-by-step Fintalio MCP setup, prompts, and production safety patterns.
TL;DR
You can build a working LinkedIn outreach agent in Claude Desktop in 30 minutes using the Fintalio MCP server. The agent reads a contact list, drafts personalized DMs per prospect, and queues them in Fintalio for your approval before anything sends. You stay in the loop on every message that goes out. Total cost: a $20/mo Anthropic Pro subscription plus €69/mo Fintalio (MCP access bundled, no separate tier). For the broader category context, read the pillar at /blog/linkedin-mcp.
What you’ll build
A Claude Desktop conversation where you say, in plain English, “Find the 20 founders I have in my Paris SaaS group, draft a personalized opener for each one, save it as a sequence template, and queue it for my review.” Claude then chains the right Fintalio MCP tools, drafts the copy, and waits at the approval gate.
Concretely the agent calls these tools from Fintalio’s 19-tool MCP surface:
ListContactsandListContactGroupsto read the target audience.ParseCsvandCommitCsvif you’re importing a fresh list.CreateContactandUpdateContactfor individual edits.CreateSequenceTemplateto define the multi-step outreach.LaunchSequenceonly after you click approve in the Fintalio UI.
End state: a 30-minute one-time setup, then any number of outreach campaigns driven from natural-language prompts inside Claude Desktop. The agent drafts, you decide what sends.
Prerequisites
Before you start the clock, gather these five things. Skipping any of them turns the 30 minutes into 90.
- An Anthropic Pro account ($20/mo, claude.ai) for Claude Desktop access. Pro is required for MCP server support.
- A Fintalio account (€69/mo, single plan, MCP access bundled). Register at fintalio.com/register.
- At least one connected LinkedIn account inside Fintalio. Go to Settings, LinkedIn Accounts, and complete the Unipile hosted-auth flow. Without this, every send call will fail.
- A target contact list. Either a CSV with
name,company,linkedin_url,emailcolumns, or contacts you’ve already imported into Fintalio. - Claude Desktop installed for macOS or Windows from claude.ai/download.
Everything from here assumes those five boxes are checked.
Step 1: Generate your Fintalio MCP token (3 min)
Log into fintalio.com, open Settings, then click the Tokens API & MCP card. This is the same panel for both REST API tokens and MCP tokens. They’re identical Sanctum bearer tokens, the label is shared on purpose.
Click Create new token, give it a recognizable name like claude-desktop-mac, and submit. Fintalio shows the token secret once, that’s a Sanctum convention. Copy it into your password manager immediately. If you lose it, you revoke and reissue, you can’t retrieve.
The token is a roughly 80-character opaque string. Best practice from day one:
- One token per device. Your laptop and your work iMac each get their own.
- One token per environment. Dev token, staging token, prod token. Never share.
- Rotate when a teammate leaves or when a machine is decommissioned. Revocation is one click in the same Settings panel.
That last point matters. A leaked Fintalio token gives an attacker the same MCP surface your agent has, including LaunchSequence. Treat it like an SSH key.
Step 2: Configure Claude Desktop (5 min)
Claude Desktop reads MCP servers from a single JSON config file. On macOS it lives at ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows it’s %APPDATA%\Claude\claude_desktop_config.json. Open or create the file and add the mcpServers block:
{
"mcpServers": {
"fintalio": {
"url": "https://fintalio.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_FINTALIO_TOKEN_HERE"
}
}
}
}
Replace YOUR_FINTALIO_TOKEN_HERE with the token you copied in Step 1. Keep the Bearer prefix, that’s what Laravel Sanctum expects on the server side. Save the file.
Now fully quit Claude Desktop. Cmd+Q on macOS, the system tray Quit on Windows. Closing the window isn’t enough, the MCP client loop only re-reads the config on cold start. Relaunch.
In a new conversation, click the tools icon in the message input (the small plug or wrench, depending on your Claude Desktop version). You should see fintalio listed as a connected MCP server. Expand it, the 19 tools and 3 resources from FintalioServer.php appear, grouped by read, write, and execute.
If nothing shows up, the cause is almost always a malformed JSON config (missing comma, stray trailing comma, mismatched braces). Run the file through jq or any JSON linter before you debug the network layer.
Step 3: First sanity check, list your existing contacts (2 min)
Before you ask Claude to do anything destructive, prove the integration is live. Type this into Claude Desktop:
List my contacts in Fintalio.
Claude will call the ListContacts MCP tool. You’ll see an approval prompt, click allow. Within a second or two you get a structured list back, name, company, LinkedIn URL, group memberships. If you have no contacts yet, the response is an empty array, which is also a success.
If the call fails, the error message tells you which layer is broken:
- 401 Unauthenticated: the token is invalid, expired, or you forgot the
Bearerprefix. Reissue and re-paste. - 403 Forbidden: your Fintalio subscription is inactive or your trial ended. Check Settings, Subscription.
- 429 Too Many Requests: you’ve hit the
throttle:120,1per-token rate limit. Wait 60 seconds. - Connection refused / network error: Claude Desktop can’t reach
https://fintalio.com/mcp. Check your firewall or proxy.
Once ListContacts returns cleanly, the integration is healthy and you can move on.
Step 4: Build the outreach agent in one prompt (5 min)
This is the actual product moment. You don’t write any code. You write a prompt, and Claude chains the MCP calls.
Paste this into Claude Desktop:
I need to reach out to 20 founders of B2B SaaS companies. Here’s the criteria: technical founders, companies with 10 to 50 employees, posted a hiring need in the last 30 days. I already have a contact group in Fintalio called “saas-founders-shortlist”. For each contact in that group, draft a 3-sentence opener that references their most recent activity if it’s in the contact’s
custom_data. Use a{firstName} at {company}greeting. Save the whole thing as a sequence template named “saas-founders-may26”, then preview the first 3 drafts so I can approve them before launching.
Here’s what Claude will do, in order, with approval gates at every write step:
- Call
ListContactGroupsto find the group ID forsaas-founders-shortlist. - Call
ListContactsfiltered to that group. - Read
custom_dataper contact (no MCP call needed, it’s in theGetContactresponse). - Draft a personalized opener for each, using its own LLM tokens (no MCP cost).
- Call
CreateSequenceTemplatewith the multi-step structure and the personalized variables. - Show you the first 3 drafts in chat.
- Wait. Claude does not call
LaunchSequenceuntil you explicitly approve.
Expect Claude to ask one or two clarifying questions. “What tone, formal or casual?” “How many follow-up steps in the sequence?” “What do you want to do for contacts missing a LinkedIn URL?” That back-and-forth is the human-in-the-loop part working as designed. Answer once, the agent absorbs it for the rest of the run.
Step 5: Review and send (15 min)
The 15 minutes here is your review time, not Claude’s compute time. Open the Fintalio dashboard in a browser tab next to Claude Desktop.
Go to Sequences, find saas-founders-may26 (Claude just created it via CreateSequenceTemplate). You’ll see:
- The full list of target contacts.
- The personalized opener Claude drafted for each.
- The follow-up steps with delay days.
- A “Preview” panel showing the rendered message per recipient.
Click through each contact. Three buttons per draft: Approve, Edit, Reject. Approve the good ones, edit the half-decent ones, reject anything that misfires. The UI is the same approval surface you’d use for a hand-built sequence.
Once you click Launch, Fintalio queues the sends. Sends go out at LinkedIn-compliant velocity through the Unipile backend. The default ceiling is 50 actions per LinkedIn account per day (config/plans.php), and we recommend you stay well under that. We’ll get to why in the next section.
Every action, draft created, contact updated, sequence launched, message sent, lands in Fintalio’s activity log with the originating Sanctum token. If your agent ever does something surprising, that log tells you exactly which token, which tool, and which parameters.
Production tips
Five things separate a weekend demo from a campaign that runs cleanly for months.
- Always preview before launching. Even after you trust the agent, keep
LaunchSequencebehind manual approval. Claude drafts, you decide what ships. - Cap daily sends well below the platform limit. Fintalio defaults to 50 actions per LinkedIn account per day. Stay at 25 to 30. LinkedIn’s session-level throttles tighten during the workday, and conservative pacing keeps the account healthy long-term.
- Use separate tokens per environment. One for the dev laptop, one for the prod server, one for the staging assistant. Revoke individually. Never share a token across two humans.
- Watch the audit log. Export the activity log weekly. If a campaign shows a reply rate under 5%, LinkedIn may have soft-throttled the account, pause the sequence and investigate before you keep sending.
- Test on small batches first. Your first run should be 5 contacts, not 200. The cost of a bad opener at scale is account-level reputational damage, not just a wasted send.
The agent gives you speed. These habits give you longevity.
What’s next
You now have a working LinkedIn outreach agent driven from natural language inside Claude Desktop. The same Fintalio MCP token works in any MCP-compatible client, Cursor, Windsurf, Claude Code, and increasingly the OpenAI Agents SDK and Google’s Gemini tooling. Swap the host, keep the workflow.
Next in this series: building a LinkedIn sourcing agent in Cursor, optimized for recruiters who need ranked candidate shortlists rather than outreach campaigns. Same MCP surface, different prompt shape.
For the broader category context, the three credible LinkedIn MCP servers in 2026, and how to choose between them, read the pillar at /blog/linkedin-mcp. When you’re ready to ship your own agent, create a Fintalio account and paste your token into Claude Desktop. Single plan, €69/month, MCP access bundled, no separate tier.
Back to the blog index for more.
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