OutreachPilot MCP Server
# OutreachPilot MCP Server
The official [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server for **[OutreachPilot โ AI-Powered Sales Outreach Platform](https://useoutreachpilot.com)**.
Connect your AI agents โ Claude Desktop, Cursor, LangChain, CrewAI, or any MCP-compatible client โ directly to your OutreachPilot workspace to automate outreach, research leads, manage campaigns, and much more.
**OutreachPilot** replaces your entire sales stack (Apollo, Instantly, Expandi) with one AI-powered platform. It combines [AI SDR automation](https://useoutreachpilot.com/glossary/ai-sdr), [multi-channel outreach](https://useoutreachpilot.com/glossary/multi-channel-outreach) (email, LinkedIn, SMS, phone), live prospect research, and autonomous AI reply handling that books meetings 24/7.
๐ [API & MCP Documentation](https://useoutreachpilot.com/for-ai-agents) ยท ๐ [Sales Outreach Blog](https://useoutreachpilot.com/blogs) ยท ๐งฎ [ROI Calculator](https://useoutreachpilot.com/roi-calculator)
---
## Requirements
- Node.js โฅ 18
- An active OutreachPilot **Pro or Scale** workspace
- An API key (generate one in **Settings โ Workspace โ API Keys**)
---
## Quick Start
### Option A: npx (recommended โ zero install)
No download needed. Just configure your MCP client:
**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"outreachpilot": {
"command": "npx",
"args": ["-y", "outreachpilot-mcp"],
"env": {
"OUTREACHPILOT_API_KEY": "op_live_your_key_here",
"OUTREACHPILOT_API_URL": "https://useoutreachpilot.com"
}
}
}
}
```
Restart Claude Desktop โ done. โ
### Option B: Manual install (for development)
```bash
git clone https://github.com/emielmadonna/OutreachPilotMCP.git
cd OutreachPilotMCP
npm install
```
Create a `.env` file:
```env
OUTREACHPILOT_API_KEY=op_live_your_key_here
OUTREACHPILOT_API_URL=https://useoutreachpilot.com
```
Build the server:
```bash
npm run build
```
### CLI mode
The same binary can run a few quick command-line checks without starting an MCP client:
```bash
outreachpilot-mcp list-tools
outreachpilot-mcp doctor
outreachpilot-mcp pilot "Check my workspace setup and tell me what is missing"
```
`doctor` verifies API connectivity. `pilot` sends a natural-language command to `/api/v1/chat`.
### Write safety
Tools that can send, delete, archive, pause, or otherwise make irreversible changes now return a confirmation payload first. Re-run the same tool with `confirmed: true` to execute. The server also sends stable `Idempotency-Key` headers for writes so retries are less likely to duplicate work.
---
## Connecting to Claude Desktop
Add this to your `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"outreachpilot": {
"command": "node",
"args": ["/absolute/path/to/OutreachPilotMCP/build/index.js"],
"env": {
"OUTREACHPILOT_API_KEY": "op_live_your_key_here",
"OUTREACHPILOT_API_URL": "https://useoutreachpilot.com"
}
}
}
}
```
Restart Claude Desktop โ you'll see OutreachPilot tools available in the toolbar.
---
## Connecting to Cursor
1. Open **Cursor Settings โ Features โ MCP**
2. Click `+ Add New MCP Server`
3. Set **Name** to `OutreachPilot`, **Type** to `command`
4. Set **Command** to: `npx -y outreachpilot-mcp`
5. Add env vars: `OUTREACHPILOT_API_KEY` and `OUTREACHPILOT_API_URL`
---
## Getting Started After Install
Once connected, start with these two commands:
1. **Check your workspace status:**
```
Use the setup_workspace tool
```
This runs a health check and tells you what's configured and what needs setup.
2. **Get the full setup guide:**
```
Use the onboarding_guide tool
```
Returns step-by-step instructions for email, ICP, knowledge base, contacts, and campaigns.
---
## Available Tools (31)
### ๐ง Setup & Onboarding
| Tool | Description |
|------|-------------|
| `setup_workspace` | Full workspace health check โ email, ICP, knowledge base, contacts, campaigns, credits. Returns readiness % and action items. |
| `onboarding_guide` | Step-by-step setup guide. Pass `focus` param for specific area (email, icp, knowledge_base, contacts, campaigns, integrations). |
### ๐ฌ `pilot` โ AI Engine Bridge *(recommended for complex tasks)*
Send any natural language instruction to the OutreachPilot AI engine. This is the most powerful tool โ it has access to all 35+ internal tools including calendar booking, LinkedIn outreach, deep research, email drafting, campaign building, voice dialing, and more.
```
"Find 20 VP of Sales at Series B SaaS companies in Austin"
"Draft a follow-up email to John Doe at Acme Corp"
"Build a 3-step email campaign for the Austin SaaS folder"
"Research Stripe โ find buying signals and key decision makers"
"Book a meeting with Jane Smith on Friday at 2pm"
"Check if my email accounts and integrations are working"
```
---
### ๐ฅ Contact Tools
| Tool | Description |
|------|-------------|
| `search_contacts` | Search CRM contacts by name, email, or company |
| `list_contacts` | List contacts with filters (status, folder, pagination) |
| `create_contact` | Create one or more contacts, optionally auto-enroll in a campaign |
| `update_contact` | Update a contact's fields (name, email, status, tags, etc.) |
| `get_contact` | Get full details of a single contact by ID |
| `delete_contact` | Delete a contact from the CRM |
### ๐ฃ Campaign Tools
| Tool | Description |
|------|-------------|
| `list_campaigns` | List campaigns with optional status/type filters |
| `create_campaign` | Create a new draft campaign |
| `update_campaign_status` | Pause, resume, activate, or archive a campaign |
| `trigger_campaign` | Enroll a specific contact into a campaign |
| `get_campaign_status` | Get campaign audience stats (enrolled, completed, replied) |
| `get_campaign` | Get full campaign details including config, steps, and audience |
| `update_campaign` | Update campaign name, config, steps, or type |
### ๐ข Company Tools
| Tool | Description |
|------|-------------|
| `list_companies` | List company accounts in the CRM |
| `create_company` | Create one or more company accounts |
| `get_company` | Get full details of a single company by ID |
| `update_company` | Update company fields |
| `delete_company` | Delete a company from the CRM |
### ๐ง Email
| Tool | Description |
|------|-------------|
| `send_email` | Send a one-off email through your connected account. Costs 1 credit. |
### ๐ Folders
| Tool | Description |
|------|-------------|
| `list_folders` | List contact folders with contact counts |
| `create_folder` | Create a new folder (idempotent โ returns existing if name matches) |
### ๐ณ Credits
| Tool | Description |
|------|-------------|
| `get_credit_balance` | Check credits remaining, plan tier, and reset date |
### ๐ฌ Research
| Tool | Description |
|------|-------------|
| `find_prospects` | Canonical B2B people/account prospecting tool. If `channels` includes `email`, the requested count means verified, person-specific, sendable email prospects; raw sourced people do not count. |
| `local_prospecting.*` | Google Maps/local-business prospecting tools: estimate cost, start a run, list/recover runs, poll status, list ranked business candidates, or stop a run. Use for place-based searches like "dentists in Austin"; use `find_prospects` for B2B people/accounts. |
| `run_research` | Start agentic research to find companies or people |
| `check_research_status` | Poll a research job's progress |
| `import_research_results` | Import research results as contacts into the CRM |
### ๐ Webhook Tools
| Tool | Description |
|------|-------------|
| `list_webhooks` | List active webhook subscriptions |
| `create_webhook` | Register a new webhook endpoint for real-time events |
| `delete_webhook` | Remove a webhook subscription |
---
## Example Workflows
### Full Prospecting Pipeline
```
User: Find 10 fintech founders in New York with verified emails, research each one, and add them to a campaign.
Claude: [setup_workspace] โ checks workspace is ready
[find_prospects] โ channels=["email","linkedin"], target_count=10
[check_research_status] โ waits for results
โ only count verified, person-specific emails
โ if only 7 verify, report 7/10 and do not pretend the target is met
[pilot] โ "Build a 3-step email campaign for the NYC Fintech folder"
```
Email prospecting is strict: `target_count=10` means 10 sendable email contacts, not 10 LinkedIn profiles. Generic inboxes (`hello@`, `info@`), guessed local parts, catch-all/likely results, and unverified emails do not count.
### Quick Health Check
```
User: Is everything set up correctly?
Claude: [setup_workspace] โ returns readiness %, flags missing items
โ "Your workspace is 75% ready. You're missing a knowledge base โ this is critical for campaign quality. Go to Settings โ Pilot and add your product info."
```
### Guided Onboarding
```
User: I'm new, how do I get started?
Claude: [onboarding_guide] โ returns full setup walkthrough
โ walks through email setup, ICP config, knowledge base, first campaign
```
---
## Authentication
All API calls use Bearer token authentication:
```
Authorization: Bearer op_live_your_key_here
```
API keys are scoped to endpoints. Default scopes:
- `contacts` โ contact operations
- `campaigns` โ campaign, webhook operations
- `credits` โ credit balance
- `chat` โ pilot bridge (required for agentic tasks)
- `email` โ direct email sending
---
## Development
Run in development mode (no build step needed):
```bash
npm run dev
```
The server communicates over **stdio** (JSON-RPC 2.0), which is required by the MCP protocol.
---
## Architecture
```
MCP Client (Claude, Cursor, etc.)
โ JSON-RPC over stdio
OutreachPilot MCP Server (31 tools)
โ HTTPS REST + Bearer auth
OutreachPilot API (/api/v1/*)
โ Internal
OutreachPilot AI Pilot (35+ tools)
โ
Supabase ยท OpenAI ยท LinkedIn ยท Twilio ยท Google Calendar
```
The `pilot` tool routes through `POST /api/v1/chat`, which gives your AI agent **full access** to the internal OutreachPilot engine โ the same AI that powers the in-app Pilot Buddy chat.
TDQS
Scored across 31 tools
Most tools have clearly distinct purposes, with explicit disambiguation between search_contacts and list_contacts, and update_campaign vs update_campaign_status. However, get_campaign_status overlaps with get_campaign's audience statistics, and trigger_campaign's ability to auto-create contacts could be confused with create_contact.
All tools follow a consistent verb_noun snake_case pattern with standard verbs like get, list, create, update, delete, search, trigger, and send. No mixed conventions or vague names.
31 tools is on the heavy side for an MCP server, even for a broad outreach platform. Some redundancy exists (get_campaign_status vs get_campaign, setup_workspace vs onboarding_guide) that could be consolidated, but most tools serve a distinct purpose.
The core CRM and campaign workflows are well-covered with full CRUD for contacts and companies, plus research and webhooks. However, notable gaps include no delete_folder, no delete_campaign (only archive), and no dedicated tools for calendar or knowledge base management despite pilot mentioning these capabilities.