Run your link building from Claude, Cursor or Codex
Outlink AI's MCP server lets the assistant you already work in check on your campaigns, read the conversations, work through the approval queue and pause or resume a campaign — through the same rules the dashboard enforces, with sending always labelled as sending.
Your program, in the window you're already working in
Ask in plain language; the assistant picks the tools. A few things people use it for:
“How's outreach going?”
Campaigns running and paused, what's waiting on you, replies, live and lost links, and today's sends against your limits — plus each mailbox's warm-up, reputation and SPF/DKIM/DMARC.
“Walk me through the queue”
Read each held draft, publisher reply or guest-post article in full with its recipient, then approve it, edit it, reject it, or resolve a reply without sending.
“Pause the fintech campaign”
Pause a running campaign or resume a paused one, check which links changed or were lost, and read yesterday's digest.
Two steps: a key, then one config entry
1. In Outlink AI, an owner or admin opens Settings → Team → MCP server & API keys, names a key and picks Read only or Read & act. Copy it — it's shown once. 2. Add the server to your client below. Keep the key in an environment variable rather than in a file you commit.
Claude Code
Add it from your terminal. Add --scope user to make it available in every project.
export OUTLINK_API_KEY="olk_…"
claude mcp add --transport http outlink https://www.outlinkai.com/api/mcp \
--header "Authorization: Bearer $OUTLINK_API_KEY"To share the setup in a repository without the key, put the server in .mcp.json with the header "Authorization": "Bearer ${OUTLINK_API_KEY}" — Claude Code expands it from your environment.
Cursor
In ~/.cursor/mcp.json (every project) or .cursor/mcp.json (one project):
{
"mcpServers": {
"outlink": {
"url": "https://www.outlinkai.com/api/mcp",
"headers": { "Authorization": "Bearer ${env:OUTLINK_API_KEY}" }
}
}
}Codex
In ~/.codex/config.toml. Codex sends the key from OUTLINK_API_KEY as the bearer token.
[mcp_servers.outlink]
url = "https://www.outlinkai.com/api/mcp"
bearer_token_env_var = "OUTLINK_API_KEY"Claude Desktop and claude.ai
Add a custom connector with the endpoint URL, choose No sign-in for authentication, and under Request headers add authorization with the value Bearer olk_…. Anthropic lists request headers as a beta that not every account has yet.
Without it, Claude Desktop can connect through the open-source mcp-remote bridge (it needs Node.js) in claude_desktop_config.json:
{
"mcpServers": {
"outlink": {
"command": "npx",
"args": ["mcp-remote", "https://www.outlinkai.com/api/mcp",
"--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer olk_…" }
}
}
}Any other MCP client
Point it at the endpoint with a bearer header. The server is stateless: no session id, and every request carries the key.
URL https://www.outlinkai.com/api/mcp
Header Authorization: Bearer olk_…
Transport Streamable HTTP (POST, JSON responses)16 tools, grouped by what they can do
Every tool reads or acts on the key's own workspace only. Your client sees each tool's read-only and destructive hints and can ask you before running anything that changes or sends.
Read Read only
Change nothing. Any key can call them.
- get_statusCampaigns running and paused, approvals waiting, threads needing you, links live, and today’s send usage.Any key
- get_sending_healthEach mailbox’s connection, sends today vs its cap, warm-up, reputation, SPF/DKIM/DMARC and pauses.Any key
- list_campaignsEvery campaign with its status, quality bar and funnel counts.Any key
- get_campaignOne campaign’s pipeline funnel, top prospects and discovery pool.Any key
- list_pending_approvalsOutreach drafts, replies and guest-post content waiting for a human decision.Any key
- get_approvalThe full text of one waiting item, who it goes to, and exactly what approving it will do.Any key
- list_threadsOutreach conversations, newest first, with reply classification and a needs-you flag.Any key
- get_threadEvery message in one thread plus any pending drafted reply.Any key
- list_placementsEarned links with their live, changed, lost or pending verification state.Any key
- get_digestThe daily digest: event totals, replies by category, escalations, breakers and link losses.Any key
Change your workspace Changes
Change state inside the workspace without emailing anyone. They need a read & act key whose creator is an owner or admin.
- pause_campaignStop a running campaign’s discovery and sending. Nothing is deleted.Read & act key · owner or admin
- reject_approvalDiscard a waiting draft, reply or content item. Nothing is sent.Read & act key · owner or admin
- resolve_replyEscalate, decline, close the deal as lost, or add the sender to do-not-contact. Nothing is sent.Read & act key · owner or admin
- undo_sendCancel an approved email inside its 15-second hold and put it back in the queue.Read & act key · owner or admin
Can send email Sends email
Can put an email in front of a real person outside your workspace. Same key requirement, and your client is told to ask you first.
- resume_campaignRestart a paused campaign — scheduled emails start going out again under your caps.Read & act key · owner or admin
- approve_and_sendApprove a draft, reply or guest-post delivery. This sends a real email to a real person.Read & act key · owner or admin
An assistant gets exactly the reach you give it
Outreach goes to real people from your own mailboxes, so the server is built to make every send deliberate and every change traceable.
- One workspace per keyA key reaches the workspace it was created in and nothing else. An id from another workspace reads as “not found”, even if the person who made the key manages both.
- It acts as you, with your current roleEvery request re-checks the key creator’s membership. Demoted to member, the key can only read; removed from the workspace, it stops working.
- Read only, or read & actYou choose when you create a key. A read-only key can see status, queues and conversations and cannot change anything.
- The dashboard’s rules, not new onesApprovals run through the same decision code as the dashboard and the app: the per-reply action allowlist, the content checks on edited text, client sign-off for campaigns that require it, and every mailbox’s daily cap and send window.
- Sending is labelled as sending
approve_and_sendandresume_campaignare marked as reaching people outside the workspace, so your client can stop and ask you before running them. The server also tells the assistant to show you the full text and the recipient, and to get your go-ahead for each send. - 15 seconds to change your mindEvery approved send is held for 15 seconds before it can go out.
undo_sendcancels it in that window and puts the item back in the queue. - Rate limited per keyUp to 120 requests a minute per key, and no more than 30 changes in any 10 minutes, so a looping assistant can only do so much before you notice.
- Out of reachNo tool can reach billing, mailbox credentials, account settings or team membership, and a key can’t create or revoke keys. Those stay in the dashboard.
- Shown once, stored hashedA key is displayed once, when you create it, and stored only as a hash. Revoke it in Settings → Team and it stops working on the next request. The card shows when each key was last used.
- On the recordEvery change made through a key, and every refused attempt, is written to your workspace’s event history with the tool and the key that made it.
Frequently asked
What is an MCP server?
Can the assistant send email without me?
Who can create an API key?
Does it support OAuth sign-in?
What happens if my key leaks?
Connect your assistant in a couple of minutes
Create a read-only key first to look around; switch to a read & act key when you want the assistant to work the queue with you.