# LinkedIn automation for AI agents: search, invite, message and read replies from one prompt

Most LinkedIn automation tools are a browser extension or a cloud seat with a campaign builder: you load a list, write a sequence, and the tool clicks for you. That model assumes a person sets everything up in a dashboard. An AI agent needs the opposite. It needs LinkedIn as a set of calls it can make while it works: search people, read a profile, send a connection request, send a message, read the replies.

That is what this guide covers. You connect your own LinkedIn account once, and Claude, ChatGPT or Codex gets those five actions as tools, through an MCP server or a plain API, next to the enrichment and email calls that finish the workflow.

<video controls preload="none" poster="/static/launches/linkedin-automation-for-ai-agents-poster.jpg" src="/static/launches/linkedin-automation-for-ai-agents.mp4"></video>

## What can an AI agent do on LinkedIn?

Six calls cover the loop, all from the account you connected.

| Call | What it does |
| --- | --- |
| linkedin.account | connects your account through a hosted sign-in page, then reports its status |
| linkedin.search | finds people by keywords, location, company, industry and connection degree (classic search, or Sales Navigator when the account has it) |
| linkedin.profile | reads one profile as your account sees it, including whether an invitation was accepted |
| linkedin.invite | sends a connection request with an optional personalized note |
| linkedin.message | messages a connection, replies in a thread, or sends an InMail |
| linkedin.messages | lists conversations, newest first, with unread counts and full threads |

You stay the sender of record. The calls run through a connection provider (Unipile) rather than LinkedIn's official partner API, and someone already connected or already invited comes back as a miss, never as a duplicate send.

## How do you connect LinkedIn to Claude or ChatGPT over MCP?

In two steps.

1. **Give the agent the tools.** Add the RouterGrowth MCP server (`api.routergrowth.com/mcp`) as a connector in Claude or any MCP client, or point a coding agent at `https://www.routergrowth.com/SKILL.md`. The [MCP quickstart](/docs/quickstart-mcp) has the exact steps.
2. **Connect the account.** Ask the agent to connect LinkedIn. It runs `linkedin.account`, which returns a hosted sign-in link. You open it once and sign in there. Your password never touches RouterGrowth or the agent.

Connecting and checking status are free. A connected account then rents a seat billed monthly while it is active, and searches, invitations, messages and inbox reads are priced per call. The current prices are in the table at the end of this page.

## What does a 50-lead run look like?

One prompt:

```
Find 50 B2B SaaS founders in Europe. Enrich them, then start a
personalized LinkedIn and email sequence.
```

And the run behind it, modelled at default limits:

| Step | Call | Outcome |
| --- | --- | --- |
| 1 | linkedin.search | 50 matching profiles |
| 2 | linkedin.profile | role and connection context for each match |
| 3 | person.enrich | 50 enriched people |
| 4 | contact.find | 43 work emails (a miss is not billed) |
| 5 | linkedin.invite | 43 personalized invitations queued |
| 6 | email.send | 43 personalized emails queued |
| 7 | linkedin.messages | replies read as they arrive |

The agent sees the price of each step before it runs it. The whole run costs a few dollars, most of it the email lookups, against a stack that normally means four subscriptions:

| Tool | Typical entry plan, per year |
| --- | --- |
| Lead database | $708 |
| Enrichment platform | $588 |
| LinkedIn automation | $948 |
| Email outreach | $444 |

Those figures are illustrative entry-level annual plans from public category pricing in September 2026; exact vendor plans vary. The larger cost is the seams: a profile without an email, an invite without an acceptance check and a reply in another inbox all become reconciliation work. Here one run carries a person from search to message, and the email half is the same [waterfall enrichment](/use-cases/waterfall-email-enrichment) and [lead enrichment](/use-cases/contact-enrichment) calls used everywhere else.

## How do you keep a LinkedIn account safe with an agent sending?

This is the part most LinkedIn automation gets wrong, and the reason an agent should not be allowed to fire invitations as fast as it can call a tool.

- **Sends are paced for you.** RouterGrowth enforces a minimum gap between two sends from the same account and a daily ceiling that starts low while the connection is new and rises as it ages. A send inside the gap or over the ceiling comes back as a blocked run with a retry time; nothing is sent and nothing is charged. The rule is documented under [send pacing](/docs/api/errors#send-pacing).
- **LinkedIn's own limits still apply.** An invitation note is 200 characters, 300 on a Premium account, and a free account gets about five noted invitations a month before it has to send without a note.
- **New people get an invitation first.** The agent can message existing connections, reply in a thread, or use InMail when the account supports it. For anyone else it sends a connection request and messages after acceptance, which `linkedin.profile` confirms.
- **A person approves the copy.** The [LinkedIn outbound skill](/skills/linkedin-outbound) drafts, then stops at a gate before anything goes out.

Who to invite matters as much as how. The warmest list is rarely a title filter: it is people who just engaged with the problem, which is the method in [LinkedIn lead generation from competitor post comments](/use-cases/competitor-commenters-to-leads).

## FAQ

### Does RouterGrowth need my LinkedIn password?

No. linkedin.account returns a hosted sign-in page from the connection provider. The password never touches RouterGrowth. You remain the sender of record.

### Is there a LinkedIn MCP server for Claude, ChatGPT and Cursor?

Yes. The RouterGrowth MCP server at api.routergrowth.com/mcp exposes linkedin.search, linkedin.profile, linkedin.invite, linkedin.message and linkedin.messages through its discover, inspect and run tools, from the LinkedIn account you connected, next to enrichment and email on the same connection.

### What does the connected LinkedIn account cost?

Connecting and checking status are free. A connected account is billed monthly while active, charged to the same RouterGrowth wallet. Searches, invitations, messages and inbox reads are then priced per call; inspect shows the exact figure before any run.

### Can my agent message anyone?

It can message existing connections, reply in a thread, or use InMail when the account supports it. For new people, send a connection request first and message after acceptance. LinkedIn's own limits still apply.

### Can I run LinkedIn and email together?

Yes. The agent can find and enrich a person once, then use linkedin.invite or linkedin.message and email.send in the same workflow. Replies remain available through linkedin.messages and the email inbox.

### Which API lets me send LinkedIn connection requests and messages from my own account?

linkedin.invite sends a connection request with a note and linkedin.message sends a message, reply or InMail, both from the account you connected with linkedin.account. They go through a connection provider (Unipile) rather than LinkedIn's official partner API, you stay the sender of record, and already-connected or already-invited come back as a miss rather than a duplicate send.

### How can an AI agent read my LinkedIn inbox and reply to messages?

linkedin.messages returns the conversations on your connected account, newest first, with unread counts and full threads by chat id. The agent polls it after invitations and messages, drafts a reply, and sends it with linkedin.message once a human approves, inside the daily caps.

### How do I find a decision maker's phone number from their LinkedIn profile with an API?

Not by scraping the profile. contact.phone takes a work email or a LinkedIn profile URL and returns a mobile number from licensed providers, charged only when a number is found. Pair it with person.enrich for the role history and contact.find for the email.
