MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

Enterprise Sales MCP Server — PandaDoc, Apollo.io, Calendly, Stripe Billing with proposals, CPQ, sequences, and forecasting

Created 5/25/2026
Updated about 3 hours ago
Repository documentation and setup instructions

Sales MCP Server

Crates.io License ADK-Rust Enterprise Registry Ready

Enterprise sales MCP server with 29 tools across 4 backends — PandaDoc, Apollo.io, Calendly, and Stripe Billing. Proposals with lifecycle management, CPQ (configure-price-quote), sales sequences, meeting scheduling, and revenue forecasting.

Architecture

MCP Sales Architecture

Key Principles

  • Full sales lifecycle — draft → sent → viewed → signed → won with tracking at every stage
  • Modular backends — each backend is optional; use any combination
  • Revenue-focused — proposals, quotes, and forecasting drive pipeline visibility
  • Engagement tracking — know when prospects open emails, view proposals, click links
  • No credential exposure — API keys stay in env vars

Sales Flow

Prospect → Sequence → Meeting → Quote → Proposal → Signature → Won ✓
   (Apollo)  (Apollo)  (Calendly) (Stripe) (PandaDoc) (PandaDoc)

Tools (29)

| Category | Tools | Backend | Risk | |----------|-------|---------|------| | Proposals | create_proposal, list_proposals, get_proposal, send_proposal, delete_proposal | PandaDoc | internal/external write | | Templates | list_templates, create_from_template | PandaDoc | read / internal write | | Signatures | request_signature, get_signature_status, list_signatures | PandaDoc | external write / read | | Tracking | get_proposal_views, get_proposal_analytics | PandaDoc | read_only | | CPQ | list_products, calculate_quote, apply_discount, create_quote | Stripe | read / external write | | Sequences | list_sequences, create_sequence, enroll_contact, pause_sequence, get_sequence_stats | Apollo | internal/external write | | Email | send_tracked_email, get_email_engagement | Apollo | external write / read | | Meetings | get_availability, create_booking_link, list_scheduled_meetings | Calendly | read / internal write | | Forecasting | get_pipeline_forecast, get_quota_progress, get_win_loss_analysis | Stripe/PandaDoc | read_only |

Proposal Lifecycle

draft → sent → viewed → waiting_signature → partially_signed → signed → completed
                                                                    ↘ declined / expired / voided

Backends

| Backend | Covers | Auth | Default | |---------|--------|------|:---:| | PandaDoc | Proposals, templates, signatures, tracking | API Key | ✅ | | Apollo.io | Sequences, email tracking, engagement | API Key | ❌ | | Calendly | Availability, booking links, meetings | OAuth2 | ❌ | | Stripe Billing | Products, quotes, CPQ, forecasting | Secret Key | ✅ |

Installation

cargo install mcp-sales --features all-backends

Feature flags

# Default: PandaDoc + Stripe Billing
cargo install mcp-sales

# All backends
cargo install mcp-sales --features all-backends

# Specific
cargo install mcp-sales --no-default-features --features "pandadoc,calendly"

Configuration

PandaDoc

export PANDADOC_API_KEY="your-api-key"

Apollo.io

export APOLLO_API_KEY="your-api-key"

Calendly

export CALENDLY_TOKEN="your-personal-access-token"

Stripe Billing

export STRIPE_SECRET_KEY="sk_live_xxx"

Client Configuration

{
  "mcpServers": {
    "sales": {
      "command": "mcp-sales",
      "args": [],
      "env": {
        "PANDADOC_API_KEY": "xxx",
        "APOLLO_API_KEY": "xxx",
        "CALENDLY_TOKEN": "xxx",
        "STRIPE_SECRET_KEY": "sk_xxx"
      }
    }
  }
}

Usage Examples

Create and send a proposal

"Create a proposal for Acme Corp's enterprise license"
→ create_proposal(name: "Acme Enterprise License", recipients: [{email: "cto@acme.com", first_name: "John", role: "signer"}])

"Send it with a personal message"
→ send_proposal(id: "doc-123", message: "Hi John, here's the proposal we discussed")

"Has John viewed it?"
→ get_proposal_views(id: "doc-123")

"Request his signature"
→ request_signature(id: "doc-123")

Build and send a quote

"What products do we have?"
→ list_products()

"Calculate a quote for 10 seats of Pro plan at $99/mo"
→ calculate_quote(line_items: [{description: "Pro Plan", quantity: 10, unit_price: 99, total: 990}], currency: "USD")

"Create a formal quote and send to the customer"
→ create_quote(line_items: [...], customer_email: "cto@acme.com", valid_days: 30)

Run an outbound sequence

"Show me our active sequences"
→ list_sequences()

"Enroll sarah@prospect.com in the Enterprise Outbound sequence"
→ enroll_contact(sequence_id: "seq-456", email: "sarah@prospect.com", first_name: "Sarah")

"How's that sequence performing?"
→ get_sequence_stats(id: "seq-456")

Schedule a meeting

"What's my availability next week?"
→ get_availability(date_range_start: "2026-06-01", date_range_end: "2026-06-07")

"Create a booking link for a 30-min demo"
→ create_booking_link(name: "Product Demo", duration_minutes: 30)

Revenue forecasting

"What's our pipeline forecast?"
→ get_pipeline_forecast()

"How are we tracking against quota?"
→ get_quota_progress()

"Show win/loss analysis"
→ get_win_loss_analysis()

Registry Compliance

  • HealthCheck — reports which backends are active
  • mcp-server.toml — 29 tools with risk classes and credential bindings
  • Manifest validation — startup fails fast on invalid manifest
  • Structured tracingRUST_LOG env-filter

Contributors

| jkmaina - MCP Sales by zavora-ai
James Karanja Maina
| |:---:|

License

Apache-2.0


Part of the ADK-Rust Enterprise MCP server ecosystem.

Quick Setup
Installation guide for this server

Installation Command (package not published)

git clone https://github.com/zavora-ai/mcp-sales
Manual Installation: Please check the README for detailed setup instructions and any additional dependencies required.

Cursor configuration (mcp.json)

{ "mcpServers": { "zavora-ai-mcp-sales": { "command": "git", "args": [ "clone", "https://github.com/zavora-ai/mcp-sales" ] } } }