Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Let your AI agent see who is about to churn, and do something about it.
@retain-so/mcp-server connects Retain to any MCP client (Claude Code, Claude Desktop, Cursor, Windsurf, and friends). Ask in natural language which customers are at risk, pull a customer's full health profile, check MRR at risk, and log outreach, all without opening the dashboard.
Retain is an AI-first churn prevention and customer analytics platform. This server is the bridge between your agent and your Retain data.
Read:
Act (needs a read+write key):
claude mcp add retain --env RETAIN_API_KEY=rk_agent_xxx -- npx -y @retain-so/mcp-serverclaude_desktop_config.json){
"mcpServers": {
"retain": {
"command": "npx",
"args": ["-y", "@retain-so/mcp-server"],
"env": { "RETAIN_API_KEY": "rk_agent_xxx" }
}
}
}.cursor/mcp.json or ~/.codeium/windsurf/mcp_config.json){
"mcpServers": {
"retain": {
"command": "npx",
"args": ["-y", "@retain-so/mcp-server"],
"env": { "RETAIN_API_KEY": "rk_agent_xxx" }
}
}
}| Tool | Type | What it does |
|---|---|---|
get_at_risk_customers | read | Customers by churn risk (Critical/High/Stable/Healthy), ordered by MRR. Defaults to Critical + High. |
get_customer_details | read | Full profile for one customer by id or name. |
get_mrr_at_risk | read | Total MRR at risk plus active-alert counts by risk level. |
get_active_alerts | read | Active alerts by priority, with risk factors and outreach state. |
get_churn_metrics | read | Churn rate, MRR churned, expansion/contraction, net revenue retention. |
add_customer_note | write | Add a note to a customer's active alert. |
mark_alert_contacted | write | Mark an alert as contacted. |
archive_alert | write | Archive a resolved alert. |
Coming soon: send_retention_email (trigger a templated retention email).
You: Who's about to churn and how much money is on the line?
>
Agent: _(callsget_mrr_at_risk, thenget_at_risk_customers)_ You have $4,200 MRR at risk across 7 active alerts. The two biggest are Acme Inc ($900, critical, 18 days inactive) and Globex ($650, high).
>
You: Note that I emailed Acme today and mark their alert as contacted.
>
Agent: _(callsadd_customer_noteandmark_alert_contacted)_ Done. Logged the note on Acme and moved the alert to contacted.
| Variable | Required | Default | Description |
|---|---|---|---|
RETAIN_API_KEY | yes | (none) | Agent key from Settings → Agent keys. |
RETAIN_API_URL | no | https://api.retain.so | Override the API base URL (self-host / staging). |
npm install
npm run dev # run from source with tsx
npm run build # bundle to dist/
npm run typecheckThe server holds no business logic and no database. It only translates MCP tool calls into HTTP requests against Retain's public /agent/* API. Contributions and new tools are welcome.
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.