# Hiring engineers with Roo Code: LinkedIn outreach you approve first

Source: https://finchreach.com/blog/roo-code-linkedin-hiring-outreach
Published 2026-10-28 by Finchreach team. Tags: roo-code, linkedin, mcp, hiring, recruiting, outreach.

Use a custom Roo Code mode and Finchreach to search LinkedIn for candidates and draft personal invitations and DMs that wait for your approval.

## The short answer

If you lead an engineering team and you are hiring, you already know the best candidates rarely answer job ads. They answer a short, specific note from the person they would work with. Roo Code with Finchreach lets you do that sourcing work from your editor: search LinkedIn for people, look at what they have posted, and draft a personal connection invitation or a message to someone you already know. Every invitation and message waits in your approval queue until you approve it.

Finchreach is a remote MCP server for LinkedIn at `https://mcp.finchreach.com/mcp`. MCP (Model Context Protocol) is a standard plug that lets AI apps use outside tools. Roo Code supports remote MCP servers with custom headers, so it connects directly with a Finchreach API key. Pair it with a custom Roo Code mode, say “Recruiter”, whose instructions keep the assistant narrow, honest and slow.

## Why use Roo Code for LinkedIn hiring outreach?

Roo Code lets you define custom modes, each with its own role and instructions. That is useful for outreach, because the rules that make recruiting messages good are easy to forget at message twelve: mention something real about the person, say who you are and what the role is, keep it short, never pretend you read something you didn’t. Put those rules in a mode once and every draft follows them.

It also keeps hiring next to the work. The job description, the team’s README and your notes on what the role actually involves can sit in the same workspace, so the assistant drafts from the real role instead of from a generic template.

- Search: `linkedin_search` with the `people` vertical, optionally filtered to 1st, 2nd or 3rd+ degree connections.
- Context: the `content` vertical finds posts on a topic, so you can see what a candidate has written about publicly.
- Invitations: `linkedin_send_invitation` with an optional note of up to 300 characters.
- Messages: `linkedin_get_conversations`, `linkedin_get_messages` and `linkedin_send_dm` for people you are already talking to.
- Approval: every invitation and message returns `pending_approval` and waits at [/approvals](https://finchreach.com/approvals).

## How do I connect Roo Code to LinkedIn?

Open the MCP icon in Roo Code. “Edit Global MCP” opens `mcp_settings.json`, which applies everywhere; “Edit Project MCP” opens `.roo/mcp.json` in the current workspace, which wins if both define the same server. Add Finchreach like this:

mcp_settings.json or .roo/mcp.json:
```json
{
  "mcpServers": {
    "finchreach": {
      "type": "streamable-http",
      "url": "https://mcp.finchreach.com/mcp",
      "headers": { "Authorization": "Bearer <your Finchreach API key>" },
      "disabled": false,
      "alwaysAllow": [],
      "disabledTools": ["linkedin_create_post", "linkedin_react_to_post", "linkedin_comment_on_post"]
    }
  }
}
```

A few choices worth making on purpose. `disabledTools` hides tools this workspace has no business using; a hiring project does not need to publish posts or react to them. `alwaysAllow` lists tools Roo Code may call without asking you. If you use it at all, put only read tools there, such as `linkedin_search`. Never put `linkedin_send_invitation` or `linkedin_send_dm` in it: you want to see each outreach call in Roo Code and again in Finchreach’s queue. And if you use the project file, keep your API key out of git, or use the global file for this server instead. Details are in [Roo Code’s MCP docs](https://docs.roocode.com/features/mcp/using-mcp-in-roo).

1. [Sign up for Finchreach](https://finchreach.com/sign-up) and connect your LinkedIn account at [/accounts](https://finchreach.com/accounts).
2. Create an API key at [/api-keys](https://finchreach.com/api-keys).
3. Add the server to `mcp_settings.json` or `.roo/mcp.json` as above.
4. Create a custom “Recruiter” mode with the instructions below.
5. Draft outreach in that mode, then review it at [/approvals](https://finchreach.com/approvals). The [Roo Code guide](https://finchreach.com/guides/roo-code) and the [docs](https://finchreach.com/docs) cover the rest.

## What should a Recruiter mode’s instructions say?

Keep them short and strict. Here is a starting point you can paste into a custom mode’s instructions and adapt:

Recruiter mode instructions:
```text
You help me, an engineering lead, reach candidates on LinkedIn for the role described in hiring/role.md.
- Use only what you actually found (search results, their public posts). Never invent shared interests or claim I read something.
- Invitation notes: under 300 characters, say who I am, the role in one line, and one specific reason I'm writing to them.
- Messages only to people I'm already connected with or already talking to.
- Draft a batch of at most 5 at a time, show me the drafts, and queue them only when I say so.
- Never send a second message to someone who hasn't replied unless I ask.
```

The batch limit is not a technicality. Small, reviewed batches keep the quality up and the pace human, which matters both to candidates and to LinkedIn.

## What prompts work for sourcing candidates on LinkedIn?

Start with a search and ask for reasons, not just names:

> Ask your assistant: “Search LinkedIn people for “platform engineer Kubernetes Go Berlin”, 2nd-degree connections only. Pick the 5 that best match hiring/role.md and tell me why for each, based only on the search results. Don’t contact anyone yet.”

Then look for real context before drafting. Search results give you a name and headline; there is no tool for reading someone else’s full profile, so public posts are the best extra signal:

> Ask your assistant: “For those 5, search LinkedIn content for posts they have written about infrastructure or Go. Summarize anything relevant in one line each, and say plainly if you found nothing.”

> Ask your assistant: “Draft a connection invitation note for each, under 300 characters, following the Recruiter rules. Show me all 5 with character counts. When I reply “queue”, send them with linkedin_send_invitation and list the action ids.”

For people you already know, messages work better than invitations:

> Ask your assistant: “Look through my LinkedIn conversations for anyone who has talked with me about backend work in the last few months. Draft a short, friendly message to each asking if they’d like to hear about the role or know someone who would. Show me the drafts first.”

## Is automated LinkedIn recruiting outreach safe?

Approval mode is on by default for every Finchreach account. When Roo Code calls `linkedin_send_invitation` or `linkedin_send_dm`, nothing is sent: the result is `{ status: "pending_approval", action }`, and you approve or reject each one at [/approvals](https://finchreach.com/approvals). Roo Code can check progress with `linkedin_get_action`. Accepting invitations from candidates who reach out first is coming soon; for now, do that in LinkedIn.

> Automating a personal LinkedIn account carries risk under LinkedIn’s User Agreement, and LinkedIn limits how many connection invitations you can send. The approval queue and a human pace lower the risk; they don’t remove it. Send a few well-chosen invitations a day, not hundreds, spread them out, and stop if your acceptance rate drops or LinkedIn shows a warning. No tool can promise your account won’t be restricted.

Know the limits too: Finchreach works on your personal profile only, with no company pages, no scheduling and no analytics. It is not a sequencing tool, and it will not run follow-up campaigns on its own.

## Roo Code and LinkedIn hiring: common questions

Can Roo Code send invitations without me? Not if you leave `linkedin_send_invitation` out of `alwaysAllow`. And even then, Finchreach holds every invitation until you approve it.

Why is my invitation note rejected? Notes are limited to 300 characters. Ask the mode to show character counts with each draft.

Can I message people I am not connected to? `linkedin_send_dm` takes recipient profile ids, but LinkedIn generally limits messages to people outside your network. Invitations with a note are the normal first step.

Should I use the project or global MCP file? Use `.roo/mcp.json` if only your hiring workspace should see LinkedIn tools, and keep it out of version control because it holds your key. Use the global `mcp_settings.json` if you want the server everywhere.

Does this work with other agents? Yes, with any client that can send an API key header to a remote MCP server. See the [docs](https://finchreach.com/docs), the [Cline guide](https://finchreach.com/guides/cline), or [what a LinkedIn MCP server is](https://finchreach.com/blog/what-is-a-linkedin-mcp-server).
