Open-source AI SDR: B2B prospecting, email enrichment, buying signals and safe outreach staging.
Runs on your machine from its package; the steps are below.
At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y opensdr-mcp
MCP client config
{
"mcpServers": {
"opensdr": {
"command": "npx",
"args": [
"-y",
"opensdr-mcp"
]
}
}
}The open-source AI SDR for Claude and any MCP client.
Find prospects, verify their emails, spot buying signals, draft grounded outreach and stage campaigns, all from a conversation with your AI assistant, using your own API keys.
Quick start · Demo · How it works · Docs · Contributing
OpenSDR is an MCP server that gives your AI assistant the toolkit of a sales development rep (SDR). You describe who you want to reach; your assistant does the legwork:
| The usual way | With OpenSDR |
|---|---|
| Four or five SaaS tools (contact database, email finder, signals, sequencer) plus marked-up credits | Your own API keys, $0 markup. Pay providers directly, only for what you use. |
| Prospect lists and strategy uploaded to someone else's cloud | Local-first. Runs on your machine. No OpenSDR server, no telemetry. |
| "AI SDRs" that send email on their own and burn your domain | Nothing is sent without your approval. Campaigns are created as drafts; you press go. |
| Generic, made-up personalization | Grounded copy. Every first line cites a provider field or a signal URL. |
| Credits wasted on repeat lookups | Credit-aware. Per-call budgets, cost estimates and a 30-day enrichment cache. |
| Hard to try before buying | Zero-key demo mode. Every tool works on fictional data before you add a single key. |
A real session in demo mode (no keys, fictional .example companies):
You: Find VP Engineering leaders at B2B software and fintech companies, get their emails, and check for buying signals.
| Prospect | Company | Email (verified) | Signal |
|---|---|---|---|
| Amara Haddad, VP Engineering | Bluepeak | amara.haddad@bluepeak.example | Raised a $25M Series B (source) |
| Sofia Doe, VP Engineering | Ledgerly | sofia.doe@ledgerly.example | Raised a $25M Series B |
| Lena Alvarez, VP Engineering | Wellspring Care | lena.alvarez@wellspringcare.example | Raised a $25M Series B |
You: Meridian Pay asked us not to contact them. Push the rest into my Instantly campaign.
Preview (nothing sent yet)
eligible: 4 excluded: 1 (suppressed: Meridian Pay)
confirmation_token: 1045338e… single-use, expires in 15 min
→ Claude shows you the list and waits for your approval before confirming.
Full walkthrough → (find → enrich → signals → draft → stage)
Requires Node.js 22.12+.
1. Add OpenSDR to your assistant. Claude Desktop → Settings → Developer → Edit Config:
{
"mcpServers": {
"opensdr": { "command": "npx", "args": ["-y", "opensdr-mcp"] }
}
}
Claude Code: claude mcp add opensdr -- npx -y opensdr-mcp. One-click for Claude Desktop: download opensdr-mcp.mcpb from the latest release and double-click it. Cursor and other clients: see getting started.
2. Try it with no keys. Restart your client and ask: "Find VP Engineering leaders at fintech companies and draft outreach." Or pick the built-in autonomous_sdr_workflow prompt.
3. Add the providers you have. Every key is optional; add them to env:
"env": {
"APOLLO_API_KEY": "…",
"HUNTER_API_KEY": "…",
"TAVILY_API_KEY": "…"
}
Also supported: EXA_API_KEY, INSTANTLY_API_KEY, HUBSPOT_ACCESS_TOKEN. Where to get each key and every setting: configuration.
You ──▶ AI assistant ──MCP──▶ OpenSDR (on your machine) ──your keys──▶ Apollo · Hunter · Tavily/Exa · Instantly · HubSpot
│
├─ safety gates: preview + confirm · do-not-contact list · read-only switch · credit budget
├─ engine: email waterfall · signal rules · outreach briefs
└─ local store: ~/.opensdr (lists, cache, suppression)
OpenSDR has no AI model of its own: your assistant does the thinking and writing, and OpenSDR handles data, verification and safe execution. More on the architecture, waterfall and signals →
| Area | Tools |
|---|---|
| System | sdr_provider_status |
| Prospect | sdr_lookup_filters · sdr_search_people · sdr_search_companies |
| Enrich | sdr_waterfall_enrich_person · sdr_enrich_company · sdr_verify_email |
| Manage | sdr_save_prospects · sdr_list_prospects · sdr_export_csv · sdr_manage_suppression |
| Signals | sdr_detect_buying_signals · sdr_research_account |
| Engage | sdr_prepare_outreach_brief · sdr_create_campaign · sdr_push_to_campaign · sdr_sync_hubspot |
Plus 3 built-in prompts (autonomous_sdr_workflow, icp_prospecting, cold_outreach_sequence) and 4 resources (opensdr://providers, opensdr://lists, opensdr://lists/{name}, opensdr://profile). Full reference →
OPENSDR_READ_ONLY=1) and a per-call credit cap.You're responsible for complying with CAN-SPAM, GDPR, CASL and your providers' terms. Safety, privacy and compliance →
| Getting started | Install in Claude Desktop, Claude Code or Cursor; demo mode; troubleshooting |
| Demo walkthrough | A real end-to-end session |
| Configuration | API keys, settings, modes, seller profile, local data |
| Tools reference | All tools, prompts, resources and error codes |
| How it works | Architecture, email waterfall, signals, preview + confirm |
| Safety and privacy | Every guard, what stays local, compliance |
| Provider API notes | How each provider's API is used |
Have a provider you need? Open a provider request.
Contributions are welcome, whether you write the code yourself or with an AI coding agent.
CLAUDE.md and GEMINI.md.MIT © Arif
OpenSDR is an independent open-source project, not affiliated with or endorsed by Anthropic, Apollo.io, Hunter, Exa, Tavily, Instantly or HubSpot. Product names are trademarks of their respective owners.