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.
1Endpoint
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/mcp2Authentication
Every request needs an API key sent as a bearer token. Keys start with lsk_ and are created in Settings, 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.
3Connecting a client
Three clients, three different config shapes. Create a key first, then follow the row for your client.
Claude
Settings, then Connectors, then Add custom connector. Paste the URL, choose Bearer token authentication, and paste your key as the token.
ChatGPT
Settings, then Connectors, then Create. Paste the URL, set authentication to Bearer, and paste your key.
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.
4Tools
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 | 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 | Prospecting runs across every website, newest first. | |
list_prospects | The sites one run found, best first. | |
get_draft | The full guest post written for one prospect, with its markdown body and any quality flags worth reading before approving. | |
list_replies | Replies from sites that were pitched, newest first, with how each was classified. Bodies are not included. | |
start_runchanges your account | 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 | 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.
5Rate 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. All three answer identically on purpose, so nobody can probe which keys exist. |
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.
6If something is wrong
A key that stops working was almost certainly revoked, so check your keys first. If a client connects but sees no tools, it is usually the header: the value has to be the word Bearer, a space, then the key, with nothing else on the line.
Anything else, write to support@linkscout.io and say which client you are using.