How to connect Cursor to LinkedIn for a client's team
A common request for developers who work with small firms: "Can we get AI to help the team with LinkedIn messages?" The team might be three consultants or a small sales team, each with their own profile. Cursor is a comfortable workbench for that project. You add the Spaces MCP server, look at real conversations from the editor, try prompts against them and write whatever the project needs. This guide is for that developer. It covers the setup, why each person connects their own profile, how to explore without sending, the LinkedIn rules that shape the design, and a hand-over checklist.
What you need
- Cursor on your computer, with its agent chat.
- A Spaces account in the client firm's name. The trial starts when the first account is connected, with no card needed.
- Each team member, with a few minutes to sign in to their own LinkedIn profile.
- An hour with the team to write down what they would and would not say in a message.
- An hour or so for setup and a first look at the conversations.
Step 1: connect your LinkedIn account to Spaces
You sign in to LinkedIn through a secure link and approve the connection. Your account stays yours, and you keep using it on your phone as normal.
Once it is connected, the account shows in your Spaces dashboard. Connecting does not send anything. It only means Spaces can read and send on that account when an AI agent you have added asks it to.
Each LinkedIn profile belongs to one person, so each member of the team signs in to their own profile through Spaces, on their own device. Never ask for anyone's LinkedIn password. LinkedIn restricts automation on personal profiles, so the team should read the note at the top of this page before connecting.
Step 2: add Spaces to Cursor
- Add the block below to ~/.cursor/mcp.json, or to .cursor/mcp.json in one project.
- Cursor finds the Spaces sign-in on its own. Sign in to Spaces in the browser and approve access.
{
"mcpServers": {
"spaces": { "url": "https://api.spacesos.com/mcp" }
}
}To check it worked: Spaces shows with its tools in Cursor’s MCP settings. The MCP Logs output panel shows any error.
You sign in on Spaces' own page during this step, so Cursor never sees your LinkedIn login or your Spaces password. If Spaces does not show up:
- Check the address is exactly https://api.spacesos.com/mcp, with nothing added at the end.
- Run the sign-in step again, in case the first sign-in in the browser did not finish.
- Restart Cursor so it reads the new settings.
- If it still does not appear, the Cursor MCP docs have the current steps, and our Cursor setup page has ours.
Step 3: try it
Open Cursor's agent chat in the project and ask in plain words. Start with requests that only read:
- List the LinkedIn accounts on this Spaces workspace and whose profile each one is.
- Show me the ten most recent conversations on Hannah's profile, without sending anything.
- Group last month's incoming messages across all profiles by what the person wanted.
- Draft replies to Hannah's unanswered client messages using team-notes.md, and do not send them.
Start with a question that only reads, like the first one. It shows you that Cursor can see your LinkedIn messages before you let it send anything. Then try a draft, read it carefully, and only then let it send.
Good to know
Cursor acts when you ask it in the editor. It does not watch anyone's LinkedIn on its own, and it stops when you close the chat. That makes it a good place to explore, test and build, but not the thing that answers the team's messages.
For production, the team can use a chat app such as Claude, ChatGPT or Grok, an always-on agent such as Claude Code, Codex, OpenClaw or Hermes, or your own code on the Spaces API. For set replies to set triggers, a Spaces routine is simpler. A routine is not an AI. It sends text you wrote in advance.
Keep the team in the loop while you test. They know their contacts, and the first drafts are where you learn what each person would and would not say.
Who owns what
Set things up the way they will run after you leave. It saves a migration later and keeps the client in control of their own relationships.
| Thing | Who should own it | Why |
|---|---|---|
| Each LinkedIn profile | The person it belongs to | A profile is personal. Each person signs in themselves. |
| The Spaces account | The client firm | Billing, limits and the pause switch should sit with the business. |
| Access for your work | You, through the client's Spaces account | Sign in from Cursor, or use an API key they can revoke when you finish. |
| The team notes | The team, written with you | They know what they would and would not say. |
| Any code you write | As your contract says | Agree it before you start. |
If you prefer an API key to signing in, keep it out of the repository and read it from an environment variable:
{
"mcpServers": {
"spaces": {
"url": "https://api.spacesos.com/mcp",
"headers": { "Authorization": "Bearer ${env:SPACES_API_KEY}" }
}
}
}The Spaces dashboard's "Your agent" page also has an Add to Cursor button. Cursor opens and asks you to install Spaces, and you then sign in to Spaces in the browser.
One account per profile, one set of limits per account
In Spaces each connected profile is its own account, with its own limits and its own warm-up. That matters for the design: a team of three does not share one allowance, and a busy profile cannot use up a quiet one's. Once a profile has settled in, that is up to 150 messages a day and 100 new conversations a day each, at least 20 seconds apart.
Spaces enforces those limits for every key and every agent on the account. However the code or prompts are written, a send over the limit is refused with a time to retry, and nothing goes out. Tell the client that: no bug in your work can push a person's profile past them.
Explore real conversations without sending
These are real conversations with the team's clients and contacts, so treat the first days as read-only. A safe order of work:
- Reads only: list conversations, read threads, group them by what people wanted. This shows you the messages the team actually gets.
- Write the team notes with the team from what you found, and keep them in a file in the project.
- Ask Cursor to draft replies to real conversations and compare them with what the person would have said. Do not send.
- When drafts are reliably right, ask the agent to hold replies as drafts in Spaces, and let the profile owner approve each one.
- Only then let anything go out directly, and only the kinds of message the team agreed.
If the project is LinkedIn only, use the LinkedIn-only MCP address, https://api.spacesos.com/mcp/linkedin, so the agent cannot reach any other channel the firm connects later.
LinkedIn rules that shape the design
- A normal message goes to a 1st-degree connection. Anyone else needs a connection request or an InMail. Design around replies in existing conversations, which have no daily limit in Spaces.
- Connection requests: 30 a day and 150 a week on a free account, 100 a day and 200 a week on Premium, Sales Navigator or Recruiter, 6 an hour (12 on a paid account) and at least 90 seconds apart (22 a day on days 1 to 3, then 40, 60 and 85 a day on a paid account). Leave them out of anything automatic.
- InMail: 5 a day on a free account, 50 on Premium and 50 on Sales Navigator or Recruiter (about 800 a month), at least a minute apart. Keep it a manual choice.
- Restrictions: if LinkedIn restricts the account or asks for a security check, Spaces pauses everything your agent sends from it for three days and tells you. Build the client's process to expect that pause rather than fight it.
- Never build bulk outreach from a search. Searches and profile views have their own limits, and cold outreach at scale is what LinkedIn restricts and what Spaces' terms forbid.
Moving to something that runs all the time
Cursor acts when you ask it in the editor, so it is not what answers the team's messages in production. The usual options:
| Option | Good for | What to know |
|---|---|---|
| The team uses a chat app: Claude, ChatGPT or Grok | Each person working through their own inbox a few times a day | The simplest hand-over. Each person asks in a chat; nothing runs on its own. |
| An always-on agent: Claude Code, Codex, OpenClaw or Hermes | Summaries and drafts waiting each morning | Runs on a machine that stays on. Give it the same notes you tested in Cursor. |
| Your own code on the Spaces API | A custom flow, such as logging conversations to the firm's own records | Webhooks tell you about new messages. Every send needs an Idempotency-Key. |
For a LinkedIn team, the first option is often the right one. LinkedIn conversations are relationships, and most people want to see each reply before it goes.
A hand-over checklist for the client
- Every team member can sign in to Spaces and sees their own profile connected.
- They know where pause all sending is, and that reading keeps working while it is on.
- They have the team notes file and know that changing it changes the drafts.
- Any API key you used is revoked, or handed over and rotated.
- They know what, if anything, runs on its own, and on which profiles.
- They know a restriction pauses sending from that profile for three days, and what to do when it happens.
- They have read the LinkedIn note at the top of this page and understand the risk is lowered, not removed.
Summing up
Cursor and the Spaces MCP server make a good workbench for a client team's LinkedIn project. Have each person connect their own profile, keep the Spaces account in the firm's name, explore without sending, design around replies rather than outreach, and leave the team a clear hand-over, including what happens when LinkedIn pushes back.
How Spaces keeps your account safe
Whatever you ask, Spaces keeps your LinkedIn account inside safe limits: at least 20 seconds between messages, up to 150 a day, and 100 new conversations a day at most, with a gentler start for a newly connected account. If your AI tries to go faster, Spaces holds the message and says when it can try again.
New conversations warm up over the first weeks after you connect:
| Since connecting | New chats an hour | New chats a day |
|---|---|---|
| First 3 days | 3 | 22 |
| Rest of week 1 | 6 | 40 |
| Week 2 | 9 | 60 |
| Weeks 3 and 4 | 12 | 85 |
| After that | 15 | 100 |
A normal message goes to a 1st-degree connection. Anyone else needs a connection request or an InMail.
These are Spaces' own limits. They lower the risk of a restriction, but they cannot remove it, because LinkedIn makes its own decisions about accounts. Read the note at the top of this page before you connect.
Pricing
FAQ
Can I connect the team's profiles for them?
No. Each person signs in to their own LinkedIn profile through Spaces' secure link. You never need, and should never ask for, anyone's LinkedIn password.
Do the profiles share one set of limits?
No. Each profile is its own account in Spaces, with its own limits and warm-up. A busy profile cannot use up a quiet one's allowance.
Does this use LinkedIn's Messages API?
No. That API is for approved partners. Spaces signs in to each person's own profile, so LinkedIn's User Agreement applies to each of them.
Can Cursor answer the team's messages around the clock?
No. Cursor acts when you ask it in the editor. For production, the team can use a chat app, an always-on agent such as Claude Code or Codex, or your own code on the Spaces API.
How do I stop test drafts reaching anyone?
Start with reads only, ask Cursor to draft without sending, and ask the agent to hold replies as drafts in Spaces. Nothing then goes out until the profile owner approves it.
What happens if my code sends too fast?
Spaces refuses the send with a time to retry, and nothing goes out. Wait, then retry with the same Idempotency-Key, which never sends twice.
What if one profile gets restricted?
If LinkedIn restricts the account or asks for a security check, Spaces pauses everything your agent sends from it for three days and tells you. The other profiles carry on, because each is its own account.
Where is the developer reference?
The Spaces docs have the REST routes, the MCP tools, webhooks and error codes. This guide keeps to the set-up and the working practice.