# Keap MCP Server

A comprehensive Model Context Protocol (MCP) server for Keap (formerly Infusionsoft) - providing AI-powered access to contact management, sales pipeline, marketing automation, e-commerce, and more.

## 🚀 Features

- **111 MCP Tools** across 14 categories
- **20 React Apps** with dark theme UI matching Keap brand
- Full OAuth 2.0 PKCE authentication flow
- Type-safe API client with comprehensive error handling
- Real-time data synchronization
- Webhook support for automation

## 📦 Installation

```bash
npm install @mcpengine/keap
```

## 🔧 Configuration

Create a `.env` file:

```env
KEAP_CLIENT_ID=your_client_id
KEAP_CLIENT_SECRET=your_client_secret
KEAP_REDIRECT_URI=http://localhost:3000/callback
KEAP_ACCESS_TOKEN=your_access_token
KEAP_REFRESH_TOKEN=your_refresh_token
```

## 🛠️ MCP Tools (111 Total)

### Contacts (19 tools)
Core contact management and CRM functionality.

- `keap_create_contact` - Create a new contact with email, name, phone, address, tags, custom fields
- `keap_get_contact` - Retrieve a contact by ID with all details
- `keap_update_contact` - Update an existing contact
- `keap_delete_contact` - Delete a contact permanently
- `keap_list_contacts` - List contacts with pagination and filtering
- `keap_search_contacts` - Search contacts by email, name, phone
- `keap_merge_contacts` - Merge duplicate contacts
- `keap_apply_tag_to_contact` - Apply a tag to a contact
- `keap_remove_tag_from_contact` - Remove a tag from a contact
- `keap_get_contact_tags` - Get all tags applied to a contact
- `keap_get_contact_emails` - Get email addresses for a contact
- `keap_create_contact_email` - Add a new email address to a contact
- `keap_delete_contact_email` - Remove an email address from a contact
- `keap_get_contact_credit_cards` - Get saved credit cards for a contact
- `keap_create_contact_credit_card` - Add a credit card to a contact
- `keap_get_contact_custom_fields` - Get custom field values for a contact
- `keap_update_contact_custom_field` - Update a custom field value
- `keap_list_contact_notes` - List all notes for a contact
- `keap_get_contact_model` - Get the contact data model schema

### E-Commerce (15 tools)
Product catalog, orders, transactions, and subscriptions.

- `keap_create_product` - Create a new product in the catalog
- `keap_get_product` - Get product details by ID
- `keap_update_product` - Update product information
- `keap_delete_product` - Delete a product
- `keap_list_products` - List all products with filtering
- `keap_create_order` - Create a new order for a contact
- `keap_get_order` - Get order details by ID
- `keap_delete_order` - Delete an order
- `keap_list_orders` - List orders with filtering
- `keap_list_order_transactions` - Get all transactions for an order
- `keap_get_transaction` - Get transaction details
- `keap_list_transactions` - List all transactions
- `keap_create_subscription` - Create a recurring subscription
- `keap_get_subscription` - Get subscription details
- `keap_list_subscriptions` - List all subscriptions

### Opportunities (9 tools)
Sales pipeline and opportunity management.

- `keap_create_opportunity` - Create a new sales opportunity
- `keap_get_opportunity` - Get opportunity details
- `keap_update_opportunity` - Update opportunity information
- `keap_delete_opportunity` - Delete an opportunity
- `keap_list_opportunities` - List opportunities with filtering
- `keap_list_opportunity_stage_pipeline` - Get all pipeline stages
- `keap_get_opportunity_stage_pipeline` - Get details for a specific stage
- `keap_update_opportunity_stage` - Move opportunity to different stage
- `keap_get_opportunity_model` - Get opportunity data model schema

### Affiliates (9 tools)
Affiliate program management and tracking.

- `keap_create_affiliate` - Create a new affiliate account
- `keap_get_affiliate` - Get affiliate details
- `keap_list_affiliates` - List all affiliates
- `keap_get_affiliate_clawbacks` - Get commission clawbacks for an affiliate
- `keap_get_affiliate_commissions` - Get commissions earned
- `keap_get_affiliate_payments` - Get payment history
- `keap_get_affiliate_redirect_links` - Get tracking links
- `keap_get_affiliate_summary` - Get affiliate performance summary
- `keap_list_commissions` - List all commissions

### Tasks (8 tools)
Task and activity management.

- `keap_create_task` - Create a new task
- `keap_get_task` - Get task details
- `keap_update_task` - Update task information
- `keap_delete_task` - Delete a task
- `keap_list_tasks` - List tasks with filtering
- `keap_search_tasks` - Search tasks by title or description
- `keap_complete_task` - Mark a task as completed
- `keap_get_task_model` - Get task data model schema

### Campaigns (7 tools)
Marketing campaign and sequence management.

- `keap_list_campaigns` - List all campaigns
- `keap_get_campaign` - Get campaign details
- `keap_add_contact_to_campaign` - Add a contact to a campaign
- `keap_remove_contact_from_campaign` - Remove a contact from a campaign
- `keap_get_campaign_sequences` - Get all sequences in a campaign
- `keap_add_contact_to_sequence` - Add contact to a specific sequence
- `keap_remove_contact_from_sequence` - Remove contact from sequence

### Emails (7 tools)
Email sending, templates, and opt-in management.

- `keap_send_email` - Send an email to contacts
- `keap_get_email` - Get email details
- `keap_list_emails` - List sent emails
- `keap_create_email_template` - Create a new email template
- `keap_list_email_templates` - List all email templates
- `keap_opt_in_contact` - Opt-in a contact for email marketing
- `keap_opt_out_contact` - Opt-out a contact from emails

### Appointments (6 tools)
Appointment scheduling and calendar management.

- `keap_create_appointment` - Create a new appointment
- `keap_get_appointment` - Get appointment details
- `keap_update_appointment` - Update appointment information
- `keap_delete_appointment` - Delete an appointment
- `keap_list_appointments` - List appointments with filtering
- `keap_get_appointment_model` - Get appointment data model schema

### Automations (6 tools)
Webhook and automation configuration.

- `keap_create_hook` - Create a new webhook
- `keap_list_hooks` - List all webhooks
- `keap_delete_hook` - Delete a webhook
- `keap_verify_hook` - Verify webhook configuration
- `keap_update_hook` - Update webhook settings
- `keap_list_hook_event_types` - Get available webhook event types

### Notes (6 tools)
Contact and opportunity notes.

- `keap_create_note` - Create a new note
- `keap_get_note` - Get note details
- `keap_update_note` - Update note content
- `keap_delete_note` - Delete a note
- `keap_list_notes` - List notes with filtering
- `keap_get_note_model` - Get note data model schema

### Companies (5 tools)
Company/organization management.

- `keap_create_company` - Create a new company
- `keap_get_company` - Get company details
- `keap_update_company` - Update company information
- `keap_list_companies` - List companies with filtering
- `keap_get_company_contacts` - Get all contacts for a company

### Settings (5 tools)
Account settings and configuration.

- `keap_get_account_profile` - Get account profile information
- `keap_update_account_profile` - Update account settings
- `keap_list_users` - List all users in the account
- `keap_get_application_configuration` - Get app configuration
- `keap_list_custom_fields` - List all custom field definitions

### Tags (5 tools)
Tag and category management.

- `keap_create_tag` - Create a new tag
- `keap_get_tag` - Get tag details
- `keap_list_tags` - List all tags
- `keap_create_tag_category` - Create a tag category
- `keap_list_tag_categories` - List all tag categories

### Files (4 tools)
File upload and management.

- `keap_upload_file` - Upload a file
- `keap_get_file` - Get file details and download URL
- `keap_delete_file` - Delete a file
- `keap_list_files` - List all uploaded files

## 🎨 React Apps (20 Total)

All apps feature dark theme styling with Keap's orange/amber brand accents and VSCode-style UI.

### Core Apps

1. **Contact Dashboard** (`src/ui/react-app/src/apps/contact-dashboard/`)
   - Overview of contact metrics and recent contacts
   - Quick search and filter functionality
   - Contact creation and editing

2. **Contact Detail** (`src/ui/react-app/src/apps/contact-detail/`)
   - Full contact profile with all fields
   - Tag management
   - Email and phone history
   - Custom field editor

3. **Contact Grid** (`src/ui/react-app/src/apps/contact-grid/`)
   - Sortable, filterable contact list
   - Bulk actions (tag, delete, export)
   - Advanced search

4. **Deal Detail** (`src/ui/react-app/src/apps/deal-detail/`)
   - Opportunity/deal full details
   - Stage progression tracking
   - Activity timeline

5. **Pipeline Kanban** (`src/ui/react-app/src/apps/pipeline-kanban/`)
   - Drag-and-drop deal pipeline
   - Stage-based organization
   - Deal value summaries per stage

### Campaign & Marketing

6. **Campaign Dashboard** (`src/ui/react-app/src/apps/campaign-dashboard/`)
   - Campaign performance metrics
   - Active campaigns list
   - Contact enrollment stats

7. **Campaign Detail** (`src/ui/react-app/src/apps/campaign-detail/`)
   - Campaign sequence viewer
   - Contact progress tracking
   - Enrollment/removal management

8. **Email Composer** (`src/ui/react-app/src/apps/email-composer/`)
   - Rich text email editor
   - Template selector
   - Merge field insertion
   - Send to contacts or lists

9. **Automation Builder** (`src/ui/react-app/src/apps/automation-builder/`)
   - Webhook management
   - Event type configuration
   - Automation triggers

### Calendar & Tasks

10. **Appointment Calendar** (`src/ui/react-app/src/apps/appointment-calendar/`)
    - Calendar view of appointments
    - Create/edit appointments
    - Contact association

11. **Task Manager** (`src/ui/react-app/src/apps/task-manager/`)
    - Task list with filtering
    - Task creation and assignment
    - Completion tracking

### E-Commerce

12. **Order Dashboard** (`src/ui/react-app/src/apps/order-dashboard/`)
    - Order overview and metrics
    - Recent orders list
    - Revenue summaries

13. **Order Detail** (`src/ui/react-app/src/apps/order-detail/`)
    - Full order information
    - Transaction history
    - Payment status

14. **Product Catalog** (`src/ui/react-app/src/apps/product-catalog/`)
    - Product list with images
    - Product creation and editing
    - Pricing and inventory management

15. **Subscription Manager** (`src/ui/react-app/src/apps/subscription-manager/`)
    - Active subscriptions list
    - Subscription creation
    - Billing cycle tracking

### Organization & Settings

16. **Tag Manager** (`src/ui/react-app/src/apps/tag-manager/`)
    - Tag list and creation
    - Category management
    - Tag application stats

17. **Analytics Dashboard** (`src/ui/react-app/src/apps/analytics-dashboard/`)
    - Business metrics overview
    - Contact growth charts
    - Revenue analytics

18. **Affiliate Dashboard** (`src/ui/react-app/src/apps/affiliate-dashboard/`)
    - Affiliate performance
    - Commission tracking
    - Payment history

19. **File Browser** (`src/ui/react-app/src/apps/file-browser/`)
    - Uploaded files list
    - File upload interface
    - Download and delete actions

20. **Settings Panel** (`src/ui/react-app/src/apps/settings-panel/`)
    - Account profile
    - User management
    - Custom field configuration

## 🏗️ Architecture

```
servers/keap/
├── src/
│   ├── clients/
│   │   └── keap.ts          # OAuth 2.0 client with auto-refresh
│   ├── tools/               # 14 tool files, 111 tools total
│   │   ├── affiliates-tools.ts
│   │   ├── appointments-tools.ts
│   │   ├── automations-tools.ts
│   │   ├── campaigns-tools.ts
│   │   ├── companies-tools.ts
│   │   ├── contacts-tools.ts
│   │   ├── ecommerce-tools.ts
│   │   ├── emails-tools.ts
│   │   ├── files-tools.ts
│   │   ├── notes-tools.ts
│   │   ├── opportunities-tools.ts
│   │   ├── settings-tools.ts
│   │   ├── tags-tools.ts
│   │   └── tasks-tools.ts
│   ├── types/
│   │   ├── keap.ts          # Type definitions
│   │   └── index.ts
│   ├── ui/
│   │   └── react-app/
│   │       ├── src/
│   │       │   ├── apps/    # 20 React applications
│   │       │   ├── hooks/   # Shared React hooks
│   │       │   └── styles/  # Dark theme CSS
│   │       ├── package.json
│   │       ├── tsconfig.json
│   │       └── build-all.js
│   ├── server.ts            # MCP server implementation
│   └── main.ts              # Entry point
├── dist/                    # Compiled output
├── package.json
├── tsconfig.json
└── README.md
```

## 🎯 Usage

### As MCP Server

Add to your MCP client configuration:

```json
{
  "mcpServers": {
    "keap": {
      "command": "npx",
      "args": ["-y", "@mcpengine/keap"],
      "env": {
        "KEAP_CLIENT_ID": "your_client_id",
        "KEAP_CLIENT_SECRET": "your_client_secret",
        "KEAP_ACCESS_TOKEN": "your_access_token",
        "KEAP_REFRESH_TOKEN": "your_refresh_token"
      }
    }
  }
}
```

### Building React Apps

```bash
cd src/ui/react-app
npm install
npm run build
```

Individual app builds are output to `dist/{app-name}/`.

## 🔐 Authentication

The server uses OAuth 2.0 PKCE flow:

1. Set `KEAP_CLIENT_ID` and `KEAP_CLIENT_SECRET` in `.env`
2. Run the OAuth flow to get initial tokens
3. Tokens are auto-refreshed when expired
4. Refresh token is persisted for long-term access

## 📊 Data Models

All tools that create or update resources include a corresponding `get_*_model` tool that returns the schema, validation rules, and field definitions.

Example:
```typescript
// Get contact model to understand required fields
const model = await callTool('keap_get_contact_model');

// Create contact with proper fields
const contact = await callTool('keap_create_contact', {
  given_name: 'John',
  family_name: 'Doe',
  email: 'john@example.com',
  opt_in_reason: 'Website signup'
});
```

## 🚦 Rate Limits

Keap API has rate limits:
- 150 requests per second per account
- Daily request quotas based on plan

The client includes automatic retry with exponential backoff for rate limit errors.

## 🧪 Testing

```bash
npm test
```

## 📝 Development

```bash
# Install dependencies
npm install

# Run in development mode
npm run dev

# Build TypeScript
npm run build

# Type check
npx tsc --noEmit
```

## 🤝 Contributing

Contributions welcome! Please ensure:
- All TypeScript code type-checks without errors
- React apps maintain dark theme consistency
- New tools include proper input schemas and descriptions
- README is updated for new functionality

## 📄 License

MIT

## 🔗 Links

- [Keap API Documentation](https://developer.keap.com/docs/)
- [MCP Protocol Specification](https://modelcontextprotocol.io/)
- [MCPEngine GitHub](https://github.com/BusyBee3333/mcpengine)

---

**Built with ❤️ by MCPEngine**

*Keap is a registered trademark of Keap Inc. This is an unofficial community project.*
