MentionAgent MCP Server
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:
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.
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.
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.
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_sendingConnecting
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.
- In Claude, go to Settings, then Connectors, then Add custom connector.
- Name it MentionAgent and paste
https://mentionagent.ai/mcpas the URL. - Leave the OAuth client ID empty and the other settings as they are. Click Add, then Connect.
- A MentionAgent page opens. Sign in if you are not already, check that it names the app you came from, and click Allow.
- 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
| Tool | What it does |
|---|---|
get_status | Your sites, drafts waiting, open threads, emails sent, credits left. Start here. |
get_sending_health | Why sending is or is not moving: warmup progress, today's cap and how much is used, bounce rate, automatic pauses, next run. |
get_campaign | What this site is saying, the page it links to, caps, quiet hours, keywords. |
list_pending_drafts | Every drafted email waiting for a decision, in full. Nothing here has been sent. |
list_inbox | Threads where somebody replied, filtered by how warm they are. |
get_thread | One conversation end to end, with the files attached to each message listed. |
get_attachment | A 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_sent | Outreach that actually went out, newest first. |
edit_draft | Rewrite the subject and body of a pending draft. |
discard_draft | Drop one draft so it never goes out. |
skip_batch | Throw away the whole pending batch. A paying account gets the draft credits back. |
archive_thread | File a thread away once it is dealt with, so the inbox shows what still needs you. |
mark_deal | Close a thread as won once the link is live. Also records the agreed placement as done. |
list_links | Links the nightly checker has found: live (and whether followed), gone, and pages it could not read. |
answer_link | Say whether a link is on a page the checker could not read. Yes closes the deal. |
trigger_run | Spends credits. Finds new prospects and drafts outreach now, instead of waiting for the next scheduled run. Sends nothing. |
approve_batch | Sends real email. Approves the pending batch and starts delivering it. |
send_reply | Sends real email. Answers one thread. |
draft_reply | Spends 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_reply | Collects the draft once it is ready, with the page and insertion point it chose. Also cancels a run you no longer want. |
redirect_thread | Somebody 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_change | Describe a change in plain English and see exactly what would change. Writes nothing. |
apply_campaign_change | Makes the change you just confirmed. |
list_keywords | The Google searches discovery runs for a site, active or retired, with a text filter. |
add_keywords | Add searches for discovery to run. New ones go first on the next run. |
remove_keywords | Stop discovery running specific searches. Kept as history so they are not generated again. |
set_link_target | Choose the page outreach asks for links to, and its anchor phrases. A page that errors is refused. |
set_profile | Edit the profile every email is written from: niche, competitors, differentiator and audiences. Lists are replaced whole. |
set_email_settings | The offer, whether it goes in the first email, link or mention, one-sided or mutual, the price, and the sender name. |
set_run_settings | Run frequency, preferred hour, follow-ups, and auto-send. Auto-send means batches go out without review. |
list_blocklist | Domains this site never contacts. |
block_domains | Never contact these domains, subdomains included: a competitor, a partner, a client. |
unblock_domains | Take domains off the blocklist. A site already emailed still is not emailed again. |
set_sending | Stop or restart new outreach for a site. |
set_warmup | Pause 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:
list_inboxwithfilter: "hot"surfaces the reply agreeing.get_threadreturns 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.- Your agent makes the change in your codebase. Nothing to do with us.
send_replytells them it is live.mark_dealcloses 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_keywordsandremove_keywords, the page you link to withset_link_target, your niche, competitors, differentiator and audiences withset_profile, the offer, style and sender name withset_email_settings, run frequency and auto-send withset_run_settings, blocked domains withblock_domains, and the rest (targeting, send days, countries, quiet hours, drafts per run, how to handle paid offers) in plain English throughplan_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_runcalls per site per day. - Lists return up to 50 rows per call; use
offsetto 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_replytakes 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_threaddoes 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, andsend_replyon either thread still answers only that thread's own contact. That does mean a reply on the new thread reaches the addressredirect_threadwas 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_batchhas 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_statuswith 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_runis 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/mentionagentand 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.