API & MCP reference
Drive LinkedMinds in plain language from Claude - or from any MCP client - over one HTTPS endpoint. Twenty-two tools, the same safety engine as the dashboard, and your own credentials that you can rotate or revoke at any time.
Overview
LinkedMinds exposes a Model Context Protocol (MCP) server over HTTPS. Any MCP client can use it - Claude Desktop, claude.ai, Claude Code or your own - by sending a Bearer token. Generate credentials from Settings → API Key inside your dashboard.
Connect to Claude (MCP)
Add the server to Claude in three steps.
- 1Go to Settings → API Key, open Claude MCP Credentials, and click Generate. Copy the Client Secret - it's shown once.
- 2In claude.ai → Settings → Connectors (or Claude Desktop → MCP Servers), choose Add custom MCP server.
- 3Enter the URL below and your credentials, then save.
https://mcp.linkedminds.in/mcpClaude Desktop config.json alternative:
{
"mcpServers": {
"linkedminds": {
"type": "streamable-http",
"url": "https://mcp.linkedminds.in/mcp",
"headers": { "Authorization": "Bearer <YOUR_CLIENT_SECRET>" }
}
}
}MCP tools
Once connected, ask Claude in plain language - it calls these under the hood.
list_campaigns()Every campaign with its ID, status and targeting. Start here - most tools need a campaign ID.
get_status()Real activity for the last 7 days: invites sent, accepted, replies received.
list_accounts()Your connected LinkedIn accounts and what each one is allowed to do. Ask before any live search.
create_campaign()Create a campaign from a plain-English brief. Always starts paused.
pause_campaign()Stop all automation for a campaign immediately.
resume_campaign()Resume a paused campaign within its working hours.
delete_campaign()Cancel a campaign for good. Requires an explicit confirmation.
update_icp()Adjust the ideal-customer profile a campaign searches against.
search_leads()Find leads instantly in our database, or scrape LinkedIn live. The one search tool to reach for.
search_people_db()Database-only search: instant, and it never touches LinkedIn.
import_leads_from_db()Add people found in the database straight into a campaign.
get_search_results()Check a running live search: which page it is on, what it has found, and the results once it finishes.
find_leads()Live LinkedIn people search, qualified by AI. Falls back to the campaign's saved ICP.
find_leads_advanced()Pro+Sales Navigator search with company-size and seniority filters.
find_recruiter_leads()Enterprise+LinkedIn Recruiter candidate search by job function and experience.
find_companies()Pro+Find companies on Sales Navigator, then search the people inside the ones worth pursuing.
set_campaign_workflow()Build the outreach sequence itself - warm-up, connection request, follow-ups, branches.
get_campaign_workflow()Read a campaign's current sequence in plain English before changing it.
get_inbox()Sync replies and read the last 20 messages inline.
reply_message()Message a lead who accepted your request, in your own voice.
withdraw_connection()Withdraw a connection request that is still pending.
create_post()Standard+Draft, and optionally schedule, a LinkedIn post.
REST API
For your own code rather than a chat client, there is a JSON REST API on the same host. It uses a separate credential - the REST API Key in Settings - and is available on the Pro and Enterprise plans.
curl https://mcp.linkedminds.in/v1/campaigns \ -H "Authorization: Bearer lm_YOUR_REST_API_KEY"
| Endpoint | Does |
|---|---|
| GET /v1/me | Account, plan and subscription period |
| GET /v1/accounts | Connected LinkedIn accounts and their health |
| GET · POST /v1/campaigns | List or create campaigns |
| GET · PATCH · DELETE /v1/campaigns/{id} | Read, update, pause, resume or cancel one |
| GET /v1/campaigns/{id}/leads | Leads and their state in a campaign |
| POST /v1/campaigns/{id}/leads | Push your own leads into a campaign, up to 200 a call |
| GET /v1/conversations | Unified inbox, newest first |
| POST /v1/conversations/{id}/reply | Queue a LinkedIn reply |
| POST /v1/deals/{id}/withdraw | Withdraw a pending connection request |
| Budget | Pro | Enterprise |
|---|---|---|
| Requests / minute | 120 | 300 |
| Writes / minute | 30 | 60 |
| LinkedIn actions / hour | 60 | 150 |
Replies and withdrawals are metered by the hour rather than the minute, because they act on a real LinkedIn account. Those are ceilings on the API, not permission to send: every queued action still passes the same daily caps, warm-up phase and ban-risk checks as the dashboard - the API is a second door to the product, not a way around it. Full reference, including every field, header and error code, is in the dashboard under Docs.
Your own leads go in over the same API. POST /v1/campaigns/{id}/leads takes up to 200 LinkedIn profile URLs a call, which is what turns a sheet, a CRM or a scraper into a running campaign. Re-sending the same list is safe: anyone already on the campaign is skipped, never restarted. A campaign holds up to 10,000 leads on Pro and 50,000 on Enterprise.
n8n, Zapier and Make need nothing special. There is no custom node to install: point an HTTP Request node at the endpoint and send the key as a Authorization: Bearer header, stored as a credential rather than inline in the workflow. Poll on a five-minute schedule or slower, and honour Retry-After on a 429. The step-by-step version is in the dashboard docs.
If a key looks compromised, we act on it. Both credentials are watched. A run of wrong secrets against your key means someone has seen part of a real one, so we disable it and tell you - by email, in the app, and on the Settings page, with the reason. Generating a new key clears it and nothing else about your account is touched. One valid key being used from an unusual number of places gets you a warning but is never disabled automatically: that is also what a normal serverless integration looks like, and breaking a working automation on a guess would be the bigger harm.
Authentication
Secrets are stored as bcrypt hashes (rounds=12). We can't recover the raw value - rotate to get a new one.
Verified credentials are cached briefly so repeated calls don't hit the database every time.
Rotate or revoke from Settings; the cache is flushed immediately.
If your subscription lapses, credentials stop working until you renew.
Rate limits & safety
Driving LinkedMinds from Claude changes nothing about how carefully it acts. Every action runs through the same pacing engine as the dashboard: randomised delays of 2-10 minutes, burst windows with cool-down breaks, a four-week warm-up on every new account (5 requests a day in week 1, rising to 20 by week 4), and per-account caps set at or below LinkedIn's own.
| Limit | Window | Applies to |
|---|---|---|
| 60 calls | 1 minute | Every MCP tool |
| 10 calls | 1 hour | Live LinkedIn searches only |
| 5 - 200 searches | 1 hour | Database searches, by plan |
| 20 / day | Per account | Connection requests at full warm-up |
Database searches never contact LinkedIn, so they carry no ban risk and do not spend your LinkedIn search quota. Full parameter-level reference for all 22 tools lives in the dashboard, under Docs.
See plan limits