MentionAgent MCP Server

Run your outreach from the agent you already use

Connect https://mentionagent.ai/mcp to the Claude app, Claude Code, Codex, Cursor or any other MCP client, and your agent does the review work you used to open the dashboard for: it shows you the drafts, rewrites one, sends the batch, reads a publisher's reply, drafts the answer and records the placement when the link goes live. Nothing goes out until you approve it.

What using it looks like

You do not learn the tool names. You ask for what you want, and your agent picks them. A normal morning is about four messages:

1

YouWhich emails need a reply?

list_inbox filter: needs_reply

Seven threads are waiting on you. Four want a real answer: one agreed to the link and confirmed the wording, one sent a URL to verify, one wants to negotiate, one is paid-only. The other three are just acknowledgements with nothing to answer.

2

YouWhich of those are worth a link exchange? Draft replies for the ones that are.

get_thread on each draft_reply to propose a placement

For a thread that already has terms, get_thread returns them as a stored record: which page of theirs links to you, with what anchor, and which page of yours links back. For one that does not yet, draft_reply hands the writing to MentionAgent instead of your agent: it crawls their site, picks the page and the exact paragraph to ask for, and writes the email around it. Either way the four replies land in your chat to read and edit. Nothing has been sent.

3

YouThe first three are good. Send them.

send_reply once per thread

Three emails go out. You approved the exact text first, and each one can only go back to the person already in that thread: send_reply has no recipient field, so the address comes from the thread and not from anything your agent read.

4

YouThe folk.app link is live now. Close it out.

mark_deal

The thread closes as won and the agreed placement stops reading as pending. It sends nothing, so tell them with send_reply first if they are waiting to hear.

The same shape works for the other side of the job. Show me the drafts waiting is list_pending_drafts, make the third one shorter and less formal is edit_draft, send the batch is approve_batch, and stop sending for this site until Monday is set_sending.

resume_sendingClear an automatic pause after bounces or complaints. Volume stays reduced while the rate is high.

Connecting

Two ways in. Sign in through the browser, which is what the Claude apps and most clients do on their own, or create an API key in the dashboard under Settings, Agent access and set it as a request header. Either one opens the tools below and nothing else: no mailbox credentials, no billing, no account settings. You can disconnect an app or revoke a key from the same settings card at any time.

Prefer a one-command install? The same server ships as a packaged skill for Claude, Cursor, OpenClaw and OpenCode.

In the Claude app or on claude.ai

No key and nothing to paste into a config. The same steps work on the website, the desktop app and the mobile apps, and one connection covers all of them.

  1. In Claude, go to Settings, then Connectors, then Add custom connector.
  2. Name it MentionAgent and paste https://mentionagent.ai/mcp as the URL.
  3. Leave the OAuth client ID empty and the other settings as they are. Click Add, then Connect.
  4. A MentionAgent page opens. Sign in if you are not already, check that it names the app you came from, and click Allow.
  5. Back in Claude, start a chat, turn the MentionAgent tool on, and ask which sites are on your account. It answers with get_status.

Reading works on any account, including a cancelled one: your inbox, your sent history and every reply are still there for the agent to pull. Sending and new drafts need an active plan. To disconnect, use Claude's connector settings or the dashboard under Settings, Agent access, Connected apps; either one stops the next call.

With an API key

For Claude Code, Cursor, Windsurf, your own code, or any client where you would rather paste a key than sign in. Create one in the dashboard under Settings, Agent access. It is shown once.

The quickest way. Copy this, paste it into the agent you want to connect, and it will do the setup and check the connection. Have your key ready to paste when it asks, or let the agent open the sign-in page if it can.

Connect me to the MentionAgent MCP server.

It is a remote MCP server speaking Streamable HTTP at https://mentionagent.ai/mcp
and it authenticates with OAuth (sign in through the browser) or a bearer header.

In Claude Code, run:
  claude mcp add --transport http mentionagent https://mentionagent.ai/mcp \
    --header "Authorization: Bearer MY_KEY"

In Codex, put the key in an environment variable and run:
  codex mcp add mentionagent --url https://mentionagent.ai/mcp \
    --bearer-token-env-var MENTIONAGENT_API_KEY

In any other client, add an HTTP MCP server with that URL and the header
  Authorization: Bearer MY_KEY

Ask me for MY_KEY before you run anything, and keep it out of any file that
gets committed to git.

Once it is connected, call get_status with no arguments and show me the sites on
the account, then tell me what you can and cannot do on my behalf.

Or set it up by hand. Point your client at the URL below. Claude Code and other clients that support OAuth will open the sign-in page in your browser when you add the server without a header; add the header to skip that and use a key instead.

https://mentionagent.ai/mcp

In Claude Code:

claude mcp add --transport http mentionagent https://mentionagent.ai/mcp \
  --header "Authorization: Bearer ma_live_your_key_here"

In a client that takes a JSON config, such as Cursor:

{
  "mcpServers": {
    "mentionagent": {
      "type": "http",
      "url": "https://mentionagent.ai/mcp",
      "headers": { "Authorization": "Bearer ma_live_your_key_here" }
    }
  }
}

In Codex

Codex speaks Streamable HTTP and OAuth, so no key is needed. Run this, and Codex finds the sign-in on its own and opens the MentionAgent page in your browser. Click Allow and you are connected. The Codex CLI and the Codex IDE extension share this setup, so one connection covers both.

codex mcp add mentionagent --url https://mentionagent.ai/mcp

If the sign-in expires or you skipped it, run codex mcp login mentionagent to do it again.

To use an API key instead, keep it in an environment variable and point Codex at the variable, so the key never sits in a config file:

export MENTIONAGENT_API_KEY=ma_live_your_key_here
codex mcp add mentionagent --url https://mentionagent.ai/mcp \
  --bearer-token-env-var MENTIONAGENT_API_KEY

Or add it to ~/.codex/config.toml by hand:

[mcp_servers.mentionagent]
url = "https://mentionagent.ai/mcp"
# leave this line out to sign in with codex mcp login instead
bearer_token_env_var = "MENTIONAGENT_API_KEY"

What your agent can do

ToolWhat it does
get_statusYour sites, drafts waiting, open threads, emails sent, credits left. Start here.
get_sending_healthWhy sending is or is not moving: warmup progress, today's cap and how much is used, bounce rate, automatic pauses, next run.
get_campaignWhat this site is saying, the page it links to, caps, quiet hours, keywords.
list_pending_draftsEvery drafted email waiting for a decision, in full. Nothing here has been sent.
list_inboxThreads where somebody replied, filtered by how warm they are.
get_threadOne conversation end to end, with the files attached to each message listed.
get_attachmentA file a publisher attached: an image as an image, a PDF or Word file as its text, a text or CSV file as is. Spreadsheets and archives are named but not readable.
list_sentOutreach that actually went out, newest first.
edit_draftRewrite the subject and body of a pending draft.
discard_draftDrop one draft so it never goes out.
skip_batchThrow away the whole pending batch. A paying account gets the draft credits back.
archive_threadFile a thread away once it is dealt with, so the inbox shows what still needs you.
mark_dealClose a thread as won once the link is live. Also records the agreed placement as done.
list_linksLinks the nightly checker has found: live (and whether followed), gone, and pages it could not read.
answer_linkSay whether a link is on a page the checker could not read. Yes closes the deal.
trigger_runSpends credits. Finds new prospects and drafts outreach now, instead of waiting for the next scheduled run. Sends nothing.
approve_batchSends real email. Approves the pending batch and starts delivering it.
send_replySends real email. Answers one thread.
draft_replySpends credits. Has MentionAgent write the reply rather than your agent writing it: crawls their site, picks the page and the exact paragraph to ask for, and drafts the email around it. Once terms are agreed it also writes the placement record. Returns a jobId. Sends nothing.
get_draft_replyCollects the draft once it is ready, with the page and insertion point it chose. Also cancels a run you no longer want.
redirect_threadSomebody replied "I am not the right person, talk to X". Opens a new thread with that person carrying the referral, and closes the original as redirected. Sends nothing.
plan_campaign_changeDescribe a change in plain English and see exactly what would change. Writes nothing.
apply_campaign_changeMakes the change you just confirmed.
list_keywordsThe Google searches discovery runs for a site, active or retired, with a text filter.
add_keywordsAdd searches for discovery to run. New ones go first on the next run.
remove_keywordsStop discovery running specific searches. Kept as history so they are not generated again.
set_link_targetChoose the page outreach asks for links to, and its anchor phrases. A page that errors is refused.
set_profileEdit the profile every email is written from: niche, competitors, differentiator and audiences. Lists are replaced whole.
set_email_settingsThe offer, whether it goes in the first email, link or mention, one-sided or mutual, the price, and the sender name.
set_run_settingsRun frequency, preferred hour, follow-ups, and auto-send. Auto-send means batches go out without review.
list_blocklistDomains this site never contacts.
block_domainsNever contact these domains, subdomains included: a competitor, a partner, a client.
unblock_domainsTake domains off the blocklist. A site already emailed still is not emailed again.
set_sendingStop or restart new outreach for a site.
set_warmupPause or resume the warmup on every inbox a site sends from.

A whole placement, without opening the dashboard

The tools are shaped to close one loop end to end. A site agrees to a reciprocal link, and your own coding agent does the work:

  1. list_inbox with filter: "hot" surfaces the reply agreeing.
  2. get_thread returns the conversation and the agreed placement: which page on their site links to you and with what anchor, and which page on your site links back, with the anchor and the target. That comes from a stored record, not from reading the email, so your agent is not guessing at a URL.
  3. Your agent makes the change in your codebase. Nothing to do with us.
  4. send_reply tells them it is live.
  5. mark_deal closes the thread and records the placement as done.

mark_deal sends no email of its own, so step four is not optional if you want the other party to know.

What still needs the dashboard

These are not exposed through MCP, so do not go looking for a tool:

  • Adding a site, connecting a sending domain, or setting up a mailbox.
  • Changing your pitch line. It goes into every first email word for word, so it is typed in the dashboard where you see exactly what gets sent. Everything else about the campaign can be changed from your agent: keywords with add_keywords and remove_keywords, the page you link to with set_link_target, your niche, competitors, differentiator and audiences with set_profile, the offer, style and sender name with set_email_settings, run frequency and auto-send with set_run_settings, blocked domains with block_domains, and the rest (targeting, send days, countries, quiet hours, drafts per run, how to handle paid offers) in plain English through plan_campaign_change.
  • Anything to do with billing, plans or invoices.

Limits

  • Up to 10 keys per account.
  • Roughly 1,500 requests per key per 15 minutes. An agent working normally will not come near it.
  • Five agent-started trigger_run calls per site per day.
  • Lists return up to 50 rows per call; use offset to page.
  • Long messages are truncated with a marker naming the tool that returns the whole thing.

What the key can and cannot reach

An API key opens the thirty-six tools above and nothing else. It is not a password and it is not a session: it cannot see your mailbox credentials, cannot touch billing, cannot transfer a domain and cannot delete your account. Those stay behind a login.

Two of the twenty put mail in the world, approve_batch and send_reply, and both are shaped so an agent cannot pick who it reaches:

  • send_reply takes a conversation and a body. There is no field for a recipient. The address comes from the thread, so it can only ever answer the person already in it, even if something in an email it just read tries to redirect it.
  • redirect_thread does not weaken that, because it never changes where an existing thread replies. About one reply in fifty names somebody else to talk to, and this acts on it by opening a separate thread with the person named, then closing the original as redirected. The new thread starts empty, as a clean first touch, and send_reply on either thread still answers only that thread's own contact. That does mean a reply on the new thread reaches the address redirect_thread was given, which usually came out of an inbound email, so have your agent show you that address before it calls the tool. It refuses a referral back to one of our own addresses, to the person who referred us, to anyone already in the chain, to a chain more than three hops deep, and to any address that has opted out or bounced.
  • approve_batch has to name the batch it was shown. If the batch changed between your agent reading it and approving it, the call is refused rather than sending something you did not see.
  • Every other write takes an id that came out of a read in the same conversation. There is no tool that sends something it composed on its own.

Keys can be revoked at any time from the same Settings panel, and a revoked key stops working on its next request.

There are three tiers, and they follow cost rather than status:

  • Reading your own sites, drafts, inbox, sent mail and sending health works on any account, including one whose subscription has ended. Your history stays yours.
  • Finding new sites and writing new copy (trigger_run, plan_campaign_change) needs a live account: an active plan or a trial.
  • Sending (approve_batch, send_reply) needs an active paid plan.

Worth knowing

  • Every tool that acts on a site wants an explicit site id. Your agent gets them from get_status with no arguments. Nothing is guessed for you, because guessing means acting on the wrong site in silence.
  • Turning sending off is never blocked, whatever the state of your billing. You can always stop your own outreach.
  • Emails come back as plain text rather than raw HTML, so long threads stay readable.
  • trigger_run is bounded: five agent-started runs per site per day, and it is refused outright while a batch is still waiting for approval. A run costs discovery and drafting whether or not you keep what it produces, so an agent cannot sit in a loop starting them.
  • Campaign changes are two steps on purpose: your agent shows you what would change before anything moves.
  • This server is published on the official MCP Registry as ai.mentionagent/mentionagent and claimed on Glama. Our MCP server directories page lists every directory we could open, what each verifies, and where we are and are not listed.

Looking for the read-only web endpoints and the OpenAPI description instead? Those are on the developer resources page.