# How to connect OpenRouter to LinkedIn, step by step

Source: https://finchreach.com/guides/openrouter
Third-party facts checked on 2026-10-28.

OpenRouter has no MCP client of its own, so connect Finchreach to a client that runs it (Cline, OpenCode or Goose): create a key at finchreach.com/api-keys, connect LinkedIn, add the server with the key, test, and approve drafts.

## What you need

- A Finchreach account (sign in at [finchreach.com](https://finchreach.com/sign-in)) and the LinkedIn account you want OpenRouter to work on.
- An MCP client to run OpenRouter in: Cline, OpenCode or Goose.
- About five minutes.

## Step 1: Create a Finchreach API key

1. Sign in at finchreach.com and open [API keys](https://finchreach.com/api-keys).
2. Create a key and name it after the tool, for example “OpenRouter”.
3. Copy it right away: it starts with `lk_` and is shown only once.

## Step 2: Connect your LinkedIn account

1. Open [Accounts](https://finchreach.com/accounts) and click to connect LinkedIn.
2. Follow the steps until the account shows as connected.

Approval mode is on by default: nothing the assistant drafts reaches LinkedIn until you approve it.

## Step 3: Run OpenRouter in an MCP client and add Finchreach

OpenRouter doesn’t connect to MCP servers itself, so the client you run it in does. The SDK helper sends a Bearer token. `mcp.openrouter.ai` is OpenRouter’s own MCP server and has nothing to do with this.

1. In code: use the OpenRouter Agent SDK with `@openrouter/mcp`’s `createMCPTools()` (below) and pass `mcp.tools` to `callModel`.
2. Without code: use any MCP client that accepts OpenRouter as its provider (`https://openrouter.ai/api/v1`), such as Goose, Cline or OpenCode, and add Finchreach there.

TypeScript:
```ts
import { createMCPTools } from '@openrouter/mcp';

const mcp = await createMCPTools({
  url: 'https://mcp.finchreach.com/mcp',
  transport: 'streamableHttp',
  auth: { kind: 'bearer', token: process.env.FINCHREACH_API_KEY },
});
// callModel({ model, input, tools: mcp.tools }); then await mcp.close();
```

> Replace `lk_YOUR_KEY` with your key. Keep the key out of shared files and repos; where OpenRouter can read it from an environment variable, prefer that.

Client guides with the exact config:

- [Cline](https://finchreach.com/guides/cline) (connects directly)
- [OpenCode](https://finchreach.com/guides/opencode) (connects directly)
- [Goose](https://finchreach.com/guides/goose) (connects, with conditions)

## Step 4: Test the connection

In the client you connected, start with a read:

> Ask your assistant: “List my connected LinkedIn accounts, then summarize my five latest notifications.”

You should see calls to `linkedin_list_accounts` and `linkedin_get_notifications`. Then try a write, which goes to your approval queue instead of LinkedIn:

> Ask your assistant: “Draft a short LinkedIn post saying I’m trying a new AI assistant workflow. Submit it for my approval.”

## Step 5: Approve or reject it in Finchreach

1. Open [Approvals](https://finchreach.com/approvals). The draft is there with its exact text and the account it would go out from.
2. Approve it to publish, or reject it (reject the test post if you don’t want it live).
3. The assistant can check the result with `linkedin_get_action`: pending, approved, rejected, executed, failed or expired.

## Troubleshooting

- Close the MCP connection (`await mcp.close()`) when the run ends.
- Choose a model that supports tool calling.
- 401 or “unauthorized”: the key is wrong, revoked or missing its prefix. Finchreach accepts `Authorization: Bearer lk_…` or `X-API-Key: lk_…`; check for a missing `Bearer `, quotes or a trailing space.
- A tool is missing: the key’s permissions don’t include it. Create a key with the permissions you need under [API keys](https://finchreach.com/api-keys).
- “No LinkedIn account”: connect one under [Accounts](https://finchreach.com/accounts), or reconnect it if its session expired.
- A post or message “didn’t go out”: it is probably still waiting under [Approvals](https://finchreach.com/approvals). Writes run only after you approve them.

Still stuck? Compare your setup with [OpenRouter’s documentation](https://openrouter.ai/docs/agent-sdk/call-model/mcp-tools), checked on 2026-10-28; client screens change often.

## What to ask it next

> Ask your assistant: “Compare how three models draft the same LinkedIn post, and keep the best one for approval.”

> Ask your assistant: “A script that summarizes my LinkedIn notifications with a cheap model every hour.”

> Ask your assistant: “An agent that reads a LinkedIn conversation and drafts a reply with the model of your choice.”

More ideas on the [OpenRouter integration page](https://finchreach.com/integrations/openrouter).

## Questions

### I lost my API key. Can I see it again?

No, a key is shown only once. Create a new one under [API keys](https://finchreach.com/api-keys), put it in your config, and revoke the old one.

### Does OpenRouter see my LinkedIn password?

No. The client only gets your Finchreach API key. Your LinkedIn connection stays in Finchreach, and you can revoke the key at any time without touching LinkedIn.

### Can I use the same key in several tools?

Yes, but one key per tool (for example one named “OpenRouter”) lets you revoke one without breaking the others.

### How do I disconnect OpenRouter?

Revoke its key under [API keys](https://finchreach.com/api-keys); OpenRouter gets a 401 from then on. Then remove the server from its config.

## Sources

- [OpenRouter docs](https://openrouter.ai/docs/agent-sdk/call-model/mcp-tools)

## Related

- [What OpenRouter can do on LinkedIn](https://finchreach.com/integrations/openrouter)
- [A daily LinkedIn digest with any OpenRouter model](https://finchreach.com/blog/openrouter-linkedin-notification-digest)
- [Connect Cline](https://finchreach.com/guides/cline)
- [Connect OpenCode](https://finchreach.com/guides/opencode)
- [Quickstart and tools](https://finchreach.com/docs)
- [All setup guides](https://finchreach.com/guides)
