MCP server
LinkScout speaks the Model Context Protocol, so you can run your campaigns from Claude, ChatGPT, Cursor or any other MCP client instead of opening the dashboard. This page is the whole reference: the endpoint, how to authenticate, and every tool with its arguments.
Endpoint
One URL, for every client. It speaks streamable HTTP, so there is nothing to install and no local process to keep running.
https://linkscout.io/api/mcpAuthentication
Two ways in. Clients that can sign in, like ChatGPT, use your LinkScout login: they open a sign-in page, you allow access, and nothing else is needed. Every other client uses an API key sent as a bearer token. Keys start with lsk_ and are created in Settings, then Account, then API keys.
Authorization: Bearer lsk_your_key_hereThe key goes in the header and nowhere else. A key in a query string ends up in access logs, browser history and referrer headers, which is how keys leak without anyone doing anything wrong, so LinkScout does not accept one there.
Three things worth knowing before you create one. The plaintext key is shown once, at creation, and is never stored, so there is no way to read it back later: if you lose it, revoke it and make another. Each key is bound to the account that created it and can never reach another account, so you never pass a user or account id to any tool. You can hold up to 10 active keys at a time, which is enough to give each client its own and revoke one without disturbing the rest.
Connecting a client
Cursor and Claude Code need a key, so create one first. ChatGPT signs in with your LinkScout account instead, and Claude can do either.
Claude (web and desktop app)
Customize, then Connectors, then + Add, then Add custom connector. Name it LinkScout and paste the URL. Under Authentication choose No sign in. Under Request headers add a header named Authorization with the value Bearer followed by your key. Prefer not to use a key? Leave Authentication on Sign in instead and sign in with your LinkScout account when Claude asks. On a Team or Enterprise plan an owner adds it, under Organization settings, then Connectors, then Add, then Custom, then Web.
Claude Code
Run this once in your terminal, replacing YOUR_KEY.
claude mcp add --transport http linkscout https://linkscout.io/api/mcp --header "Authorization: Bearer YOUR_KEY"ChatGPT
ChatGPT signs in instead of using a key, so you do not need one here. Turn on Developer mode first (Settings, then Apps, then Advanced settings). Then create an app: name it LinkScout, paste the URL, and leave Authentication on OAuth. ChatGPT opens a LinkScout sign-in: sign in with your LinkScout account and allow access. Custom apps need a paid ChatGPT plan; on Business, Enterprise and Edu a workspace admin has to allow them first.
Cursor
Add the block below to ~/.cursor/mcp.json, replacing YOUR_KEY.
{
"mcpServers": {
"linkscout": {
"url": "https://linkscout.io/api/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}Any other MCP-compatible client works the same way: point it at the endpoint above and give it the key as a bearer token.
Tools
Seven tools. Five are read-only and cost nothing, so a client can call them freely. Two act on your account and are marked below.
| Tool | Arguments | What it does |
|---|---|---|
get_status | none | Websites on the account, sending allowance left today, prospect counts by stage, link counts by state, drafts waiting for review. Call it first: it names the websites the other tools expect. |
list_runs | status (optional) | Prospecting runs across every website, newest first. |
list_prospects | run_id, status (optional) | The sites one run found, best first. |
get_draft | prospect_id | The full guest post written for one prospect, with its markdown body and any quality flags worth reading before approving. |
list_replies | since (optional, ISO 8601) | Replies from sites that were pitched, newest first, with how each was classified. Bodies are not included. |
start_runchanges your account | website, keyword | Queues a search for sites already ranking for one keyword. Spends search credits and then model calls on everything it finds, and counts against your plan. The website and keyword must already exist in LinkScout; this does not create them. |
approve_draftchanges your account | draft_id | Marks a draft as signed off. A person is accountable for this one, so read the draft first. Only works on a draft that is ready. |
start_run is the one that costs money. It spends search credits and then model calls on everything it finds, and it counts against your plan allowance. The server tells the client to ask you before calling it, but that is a hint rather than a lock, so treat it the way you would treat any spend.
Rate limits and errors
Each key is limited to 60 requests per 60 seconds. The limit is counted per key, not per account, so giving each client its own key keeps one busy client from starving another.
| Status | Meaning |
|---|---|
401 | Missing, unknown or revoked key, or an expired sign-in. All of them answer identically on purpose, so nobody can probe which keys exist. A client that signs in reads the same answer as its cue to sign in again. |
429 | Rate limited. Carries retry-after and x-ratelimit-limit headers telling you how long to wait. |
503 | LinkScout could not verify the key just now. Temporary, and safe to retry. |
Authentication happens in front of the protocol, before the MCP layer sees a single byte, so these arrive as plain HTTP responses rather than as protocol errors. A request without a usable key never reaches a tool at all.
If something is wrong
A key that stops working was almost certainly revoked, so check your keys first. If a client cannot connect at all, it is almost always the header: its name is Authorization, and its value is the word Bearer, a space, then the key, with nothing else in it. In Claude, also check that Authentication is set to No sign in: the key in the header is the sign-in. If ChatGPT stops reaching LinkScout, remove the app and create it again to sign in fresh.
Anything else, write to support@linkscout.io and say which client you are using.