Skip to main content
Glama
emielmadonna

OutreachPilot MCP Server

by emielmadonna
README.md
# 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

A3.5/5.0

Scored across 31 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness3/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues