← Back to blog
· 2 min · Fintalio

Windsurf + LinkedIn MCP: The IDE Workflow for AI Agent Builders

Attach Fintalio's LinkedIn MCP server to Windsurf's Cascade. 19 LinkedIn tools inside your IDE conversation. Full config, working prompts, and the failure modes that actually happen.

tutorial mcp windsurf cascade linkedin-ai ai-agent
Windsurf + LinkedIn MCP: The IDE Workflow for AI Agent Builders

TL;DR

Windsurf is an MCP host through its Cascade agent. Add Fintalio's remote MCP server (19 LinkedIn prospecting tools) to your Windsurf config, restart, and Cascade can call LinkedIn tools inside the same conversation it uses for code. Setup is 4 steps, about 15 minutes. Cost: your Windsurf plan plus Fintalio at €69/mo (MCP access bundled, no separate tier). The boring 80% of outbound runs in your IDE. The 20%, judgment and relationship, stays human.

Why use Windsurf as the host for a LinkedIn AI agent?

Cascade is Codeium's IDE agent, and it speaks MCP. That means the same conversation that reads your codebase and runs your terminal can also call an external tool surface, like Fintalio's LinkedIn relay. According to Anthropic's Model Context Protocol announcement, MCP is an open standard, so any compliant host (Claude Desktop, Cursor, Windsurf) reaches any compliant server the same way.

The host model is identical to Claude Desktop. You declare a server. Cascade discovers tools at startup. The LLM in the loop picks which to call per turn. Nothing in Windsurf is "Fintalio-specific." It is the open protocol doing its job.

The reason this matters for a developer audience: you already live in the IDE six hours a day. Switching to a separate "AI SDR app" breaks flow. With Windsurf as the host, the same Cascade chat that reviews your pull request can also draft a 50-row outbound sequence while your build runs.

Honest disclaimer: Windsurf is younger than Claude Desktop, and its MCP surface is evolving. Verify the current MCP support in Windsurf's release notes before pasting anything from this article. We will not pin specific version numbers here because they age quickly.

Architecture: one host, two tool surfaces

Cascade has two tool surfaces in play at once. The local one reads your codebase and your terminal. The remote MCP one reaches Fintalio. The LLM picks which to call on each turn.

+----------------------+     MCP/JSON-RPC over HTTPS     +-------------------+
| Windsurf (IDE)       |  ---- list/call tools ---->     |  Fintalio MCP     |
|  - Cascade agent     |  <---- tool results -------     |  /mcp endpoint    |
|     (LLM loop)       |                                  |  Sanctum auth     |
+----------------------+                                  +-------------------+
            |                                                       |
            |  (separate, local)                                    v
            v                                              +-------------------+
   local code + terminal                                   |  hosted LinkedIn  |
                                                           |  relay (1st-party |
                                                           |  session)         |
                                                           +-------------------+

The LLM does not see "Windsurf" or "Fintalio" as products. It sees a flat menu of tools: filesystem reads, terminal commands, and 19 LinkedIn tools. It picks per turn. That is the whole point of the protocol.

What do you need before you start?

Five items. No surprises. Read the brief checklist first so you do not get halfway through and discover a missing prerequisite.

The 5-item checklist

  1. Windsurf installed with an active Codeium account. Check the current version's MCP support in the official release notes.
  2. A Fintalio account on the single €69/mo plan (config/plans.php confirms the plan is bundled, no separate MCP tier).
  3. A LinkedIn account connected inside Fintalio via the dashboard's hosted OAuth flow.
  4. A Fintalio MCP token from Settings, "Tokens API & MCP." The token format is a 60-character Laravel Sanctum personal-access string, per the Sanctum documentation.
  5. About 15 minutes and one text editor (Windsurf itself works).

If you do not have a Fintalio account yet, the single plan bundles MCP access.

Step 1: how do you generate your Fintalio token?

Three minutes. Open Fintalio, go to Settings, then "Tokens API & MCP." Click "New token," name it windsurf-laptop so you can identify it later, then copy the value the moment it appears. Sanctum tokens are shown exactly once. Plain text never sits in the Fintalio database. Only the hash does.

If you lose the token, you do not recover it. You rotate. That is by design, not a quirk. It also means revoking a stolen token is one click in the dashboard.

Name your tokens per machine and per host. cascade-mac-personal, cascade-mac-work, claude-desktop-mac. When you audit a month later, the label tells you which device ran which calls.

Step 2: how do you edit Windsurf's MCP config?

Five minutes. Windsurf reads its MCP server list from a JSON file in the user config directory. The file location varies by OS and by Windsurf version. Verify in the official Windsurf settings UI before pasting paths from any tutorial, including this one.

If Windsurf surfaces a UI form for adding MCP servers (usually under Settings, Cascade, MCP servers), use it. Forms are less error-prone than editing JSON by hand. JSON is unforgiving about commas and quotes.

The exact config block to paste

{
  "mcpServers": {
    "fintalio": {
      "url": "https://fintalio.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

Replace YOUR_TOKEN_HERE with the 60-character Sanctum token from Step 1. Keep the word Bearer. Keep the space. If you already have other MCP servers declared, merge the fintalio key into your existing mcpServers object. Do not overwrite.

Step 3: why does Cascade need a full restart?

Two minutes. Closing the IDE window is not enough. Windsurf reads MCP config on cold start, not on window focus. Quit Windsurf fully (Cmd+Q on macOS, system tray quit on Windows), then relaunch.

After relaunch, open a Cascade chat. Look for the MCP server indicator near the chat input. The exact UI affordance varies across Windsurf versions. The signal you want: Cascade reports it has discovered the Fintalio server and its tools.

If Cascade reports fewer than 19 tools, that is a Cascade-side display or pagination issue, not a Fintalio one. Fintalio raises the pagination ceiling to 100 in FintalioServer.php (verified in code) so a compliant client sees the full list.

Step 4: how do you confirm tool discovery?

Five minutes. Type in Cascade: "List the LinkedIn MCP tools you can see from Fintalio."

Cascade should enumerate 19 tools plus 3 resources. Paste the canonical list below into a pinned system note so the LLM does not invent tools.

The canonical 19 Fintalio MCP tools

Read tools (9): ListContacts, GetContact, ListContactGroups, ListSequences, GetSequence, ListSequenceTemplates, GetSequenceTemplate, ListVariables, GetAccountStatus.

Write tools (9): CreateContactGroup, UpdateContact, PauseSequence, ResumeSequence, StopSequence, ParseCsv, CommitCsv, CreateSequenceTemplate, CreateContact.

Execute tool (1): LaunchSequence. This is the human-gated trigger.

Resources (3): ContactResource, SequenceResource, TemplateResource.

If Cascade volunteers something not in that list (SearchProfiles, SendMessage, ReadInbox, PublishPost, ReadFeed, ScrapeProfile, AdvancedSearch, WebhookSubscribe), it is hallucinating. Those tools do not exist on Fintalio's surface.

The 4 first useful prompts in Cascade

Try these in order. Each is read-heavy and safe.

Prompt 1: diagnostic

"Use Fintalio's GetAccountStatus and report my LinkedIn connection state and daily quota."

This proves the connection works and shows you the platform-side caps: 50 messages per day and 50 connections per day per config/plans.php. Run it first.

Prompt 2: read-only segmentation

"List my last 20 contacts via ListContacts and propose 3 segmentation candidates I should turn into groups. Do not call any write tools."

Cascade fetches, summarizes, and proposes. The "do not call write tools" guardrail keeps the loop read-only while you sanity-check.

Prompt 3: agent loop, no send

"Parse /tmp/seed.csv via ParseCsv, score rows against this ICP [paste your ICP], show me the top 10 with reasoning. Do NOT call LaunchSequence."

This is the meat of the workflow: parse, enrich, score, present. Cascade chains read tools. No outbound fires.

Prompt 4: cross-surface, Windsurf-specific

"Read my prospect_model.py file, infer the implicit ICP, then check ListContacts for matches and propose 3 sequence templates from ListSequenceTemplates. No writes."

This is the prompt no Claude Desktop tutorial can replicate. Cascade reads your codebase, infers your domain, then queries the LinkedIn surface to find matches. The host's local awareness composes with the remote MCP surface.

The 3 failure modes specific to Windsurf

Cascade is younger than Claude Desktop. Expect rough edges. These three are the ones we see most.

Failure 1: silent tool-list truncation

If Cascade displays fewer than 19 tools, the cause is usually Cascade's pagination handling, not Fintalio's. Fintalio's defaultPaginationLength = 100 in FintalioServer.php already raises the page above the laravel/mcp default 15/50 ceiling. Restart Cascade. If the count is still off, file a Codeium issue.

Failure 2: invented tools

The LLM in Cascade may try to call SearchProfiles or SendMessage. Those tools do not exist on Fintalio. The fix is a pinned system note listing only the canonical 19 tools. The LLM stops drifting when the canonical list is in its context window.

Failure 3: timeout on long chains

Cascade may time out chained tool calls before Fintalio's 120 req/min rate limit (verified in routes/ai.php, middleware throttle:120,1). The fix: chunk the agent loop across turns. One ParseCsv turn. One enrichment turn. One scoring turn. Keep each turn under the host's timeout envelope.

What Windsurf-specific UX adds beyond Claude Desktop

Three things, all flowing from Cascade's local awareness.

First, codebase awareness. Cascade can read your prospect model definitions, your CRM schema, your existing campaign logs, and use that context to write better outbound copy. Claude Desktop cannot.

Second, terminal awareness. If you run psql or sqlite3 in Windsurf's terminal, Cascade can correlate live query output with Fintalio sequences in the same conversation.

Third, build awareness. Cascade can call Fintalio tools while your build runs in another panel. The 30-second build becomes 30 seconds of useful outbound prep.

Those three combined are the IDE's advantage. The protocol is the same. The host's surrounding context is what changes.

The 80/20 of an IDE-based LinkedIn agent

The split is the same across hosts. Windsurf just makes the 80% feel like part of your development workflow.

The 80%: list ingestion, validation, enrichment chaining across read tools, template variable filling, weekly status reporting via ListSequences and GetSequence. All from inside the IDE chat. All boring, all repetitive, all what an agent should handle.

The 20%: the ICP statement is yours. The sequence approval is yours. The actual conversation when a prospect replies happens in your LinkedIn inbox, not in Cascade. The agent does not, and should not, handle judgment.

Cost reality

Two line items. No hidden meter today.

Windsurf plan varies (Codeium ships a free Cascade tier and a paid Pro plan; verify current pricing on the Windsurf site at the time you read this).

Fintalio is €69/mo on the single plan (config/plans.php confirms). MCP access is bundled. There is no separate "Fintalio MCP plan." There is no per-call meter exposed today, though Stripe usage-based scaffolding exists in the database for future use.

That is it. Two subscriptions, one workflow.

FAQ

Does Windsurf support remote MCP servers natively, or do I need a wrapper?

Windsurf's Cascade agent supports remote MCP servers through its config. No wrapper required. The exact UI affordance and config path evolve across Windsurf versions, so verify in the official release notes at the time of setup. The connection model is identical to Claude Desktop's: declare a server, restart the host.

Can Cascade run Fintalio tools in the background while I'm coding?

Cascade runs in your active chat session. Tool calls happen when you prompt the agent. There is no "background daemon" for outbound. If you want scheduled outbound, write a separate cron script that hits Fintalio's REST API or /mcp endpoint directly. Cascade is for interactive use.

Will Cascade burn through Codeium credits on long Fintalio tool chains?

Cascade's token usage scales with the reasoning the LLM does between tool calls. A 50-row enrichment chain consumes more tokens than a single GetAccountStatus call. Cap parallelism, chunk long loops across turns, and monitor your Codeium usage. Fintalio's side caps at 120 req/min per token.

Can I use one Fintalio token across Cascade, Claude Desktop, and Cursor?

Technically yes, the token is host-agnostic. Operationally no. Issue a separate token per host and machine (cascade-mac, claude-desktop-mac, cursor-windows-work). When an incident happens, you want to revoke one without breaking the others. Sanctum makes per-token revocation a single dashboard action.

What's the safest way to gate LaunchSequence so Cascade never sends without me?

Three layers. First, a pinned system note: "Do not call LaunchSequence without explicit user approval in this chat." Second, name the human-approval phrase you will use ("approved: launch"). Third, review the first 5 message drafts in the Fintalio dashboard before approving. The protocol does not enforce gates. Your prompt and your habits do.

Conclusion

Four steps. One host. One server. Nineteen verified tools. About 15 minutes from a clean Windsurf install to a working LinkedIn agent inside Cascade.

The 80/20 holds. The agent handles the boring repetition: list ingestion, enrichment, drafting, reporting. You hold the judgment: ICP, message angle, sequence approval, and the actual reply when a prospect responds.

If you want the deeper protocol explainer, read the pillar LinkedIn MCP architecture. For the Claude Desktop variant, see Build a LinkedIn AI Agent in Claude Desktop. For the Cursor variant, see Cursor + LinkedIn MCP workflow. For the end-to-end sourcing tutorial, see Build a LinkedIn sourcing agent in 30 minutes. The landscape sibling is Best MCP servers in 2026.

To start with Fintalio, register on the single €69/mo plan. MCP access is bundled. No separate tier to pick.

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