600 lines
17 KiB
Markdown
600 lines
17 KiB
Markdown
# Keap MCP Server
|
|
|
|
Complete Model Context Protocol server for Keap (formerly Infusionsoft) with 111 tools and 22 React apps.
|
|
|
|
## Features
|
|
|
|
### 🛠️ Comprehensive Tool Coverage (111 tools)
|
|
|
|
- **Contacts**: Full CRUD, search, tagging, custom fields, bulk operations, merge, email opt status
|
|
- **Companies**: CRUD, search, company-contact associations
|
|
- **Opportunities**: Complete sales pipeline (CRUD, stages, stage moves, search, bulk operations)
|
|
- **Tasks**: CRUD, completion tracking, search, bulk updates
|
|
- **Appointments**: CRUD, scheduling, calendar integration, search
|
|
- **Campaigns**: CRUD, sequence management, contact additions, achievement tracking
|
|
- **Tags**: CRUD, category management, contact tagging/untagging, bulk operations
|
|
- **Notes**: CRUD, contact/opportunity associations, search
|
|
- **Emails**: Send transactional and marketing emails, templates, tracking, opt status
|
|
- **Files**: Upload, retrieve, associate with contacts/companies
|
|
- **E-commerce**: Products, orders, subscriptions, payments, refunds, transaction history
|
|
- **Automations**: Campaign builder sequences, goal tracking, link triggers
|
|
- **Settings**: Account info, user management, custom fields, settings configuration
|
|
- **Affiliates**: Program management, commissions, payouts, clawbacks, summaries
|
|
|
|
### 🎨 MCP Apps (22 React Apps)
|
|
|
|
1. **Contact Dashboard** - Contact list with metrics and search
|
|
2. **Contact Detail** - Comprehensive contact profile view
|
|
3. **Contact Grid** - Data grid with filtering and bulk actions
|
|
4. **Contact Timeline** - Activity timeline and interaction history
|
|
5. **Company Dashboard** - Company overview and metrics
|
|
6. **Company Detail** - Detailed company information
|
|
7. **Company Grid** - Companies data grid with search
|
|
8. **Deal Dashboard** - Sales pipeline overview
|
|
9. **Deal Detail** - Opportunity details and stage tracking
|
|
10. **Pipeline Kanban** - Visual drag-and-drop pipeline management
|
|
11. **Pipeline Funnel** - Conversion funnel visualization
|
|
12. **Task Manager** - Task list with priorities and due dates
|
|
13. **Appointment Calendar** - Calendar view with scheduling
|
|
14. **Campaign Dashboard** - Campaign performance metrics
|
|
15. **Campaign Detail** - Campaign sequence and analytics
|
|
16. **Email Composer** - Rich email composition interface
|
|
17. **Tag Manager** - Tag organization and bulk tagging
|
|
18. **Automation Dashboard** - Campaign builder overview
|
|
19. **Product Catalog** - E-commerce product management
|
|
20. **Order Dashboard** - Order tracking and fulfillment
|
|
21. **Order Detail** - Detailed order information
|
|
22. **Revenue Dashboard** - Revenue analytics and reporting
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
npm install @mcpengine/keap
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
```bash
|
|
KEAP_API_KEY=your_personal_access_token
|
|
```
|
|
|
|
### Personal Access Token Setup
|
|
|
|
1. Log in to your Keap account
|
|
2. Navigate to **Admin** → **Settings** → **Application**
|
|
3. Click on **API** tab
|
|
4. Generate a new **Personal Access Token**
|
|
5. Copy the token and use it as `KEAP_API_KEY`
|
|
|
|
### MCP Settings (Claude Desktop)
|
|
|
|
Add to your `claude_desktop_config.json`:
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"keap": {
|
|
"command": "npx",
|
|
"args": ["-y", "@mcpengine/keap"],
|
|
"env": {
|
|
"KEAP_API_KEY": "your_personal_access_token"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Usage Examples
|
|
|
|
### Create a Contact
|
|
|
|
```typescript
|
|
{
|
|
"tool": "keap_create_contact",
|
|
"arguments": {
|
|
"given_name": "John",
|
|
"family_name": "Doe",
|
|
"email": "john.doe@example.com",
|
|
"phone": "555-0123",
|
|
"company_name": "Acme Corp",
|
|
"job_title": "CTO",
|
|
"tag_ids": [123, 456]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Search Contacts
|
|
|
|
```typescript
|
|
{
|
|
"tool": "keap_search_contacts",
|
|
"arguments": {
|
|
"email": "john@example.com",
|
|
"given_name": "John",
|
|
"order": "email",
|
|
"limit": 50
|
|
}
|
|
}
|
|
```
|
|
|
|
### Create an Opportunity
|
|
|
|
```typescript
|
|
{
|
|
"tool": "keap_create_opportunity",
|
|
"arguments": {
|
|
"title": "New Website Project",
|
|
"contact_id": 12345,
|
|
"stage_id": 789,
|
|
"projected_revenue": 15000,
|
|
"opportunity_notes": "Interested in complete redesign"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Move Opportunity Stage
|
|
|
|
```typescript
|
|
{
|
|
"tool": "keap_move_opportunity_stage",
|
|
"arguments": {
|
|
"opportunity_id": 98765,
|
|
"stage_id": 790,
|
|
"notes": "Proposal sent, awaiting review"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Tag Contacts
|
|
|
|
```typescript
|
|
{
|
|
"tool": "keap_apply_tags_to_contacts",
|
|
"arguments": {
|
|
"contact_ids": [123, 456, 789],
|
|
"tag_ids": [10, 20]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Send Email
|
|
|
|
```typescript
|
|
{
|
|
"tool": "keap_send_email",
|
|
"arguments": {
|
|
"contact_ids": [12345],
|
|
"subject": "Welcome to our service!",
|
|
"html_content": "<h1>Welcome!</h1><p>Thank you for joining us.</p>",
|
|
"text_content": "Welcome! Thank you for joining us."
|
|
}
|
|
}
|
|
```
|
|
|
|
### Create a Product
|
|
|
|
```typescript
|
|
{
|
|
"tool": "keap_create_product",
|
|
"arguments": {
|
|
"product_name": "Premium Subscription",
|
|
"product_price": 99.99,
|
|
"product_desc": "Monthly premium access",
|
|
"sku": "PREM-001",
|
|
"status": 1
|
|
}
|
|
}
|
|
```
|
|
|
|
### Create an Order
|
|
|
|
```typescript
|
|
{
|
|
"tool": "keap_create_order",
|
|
"arguments": {
|
|
"contact_id": 12345,
|
|
"order_items": [
|
|
{
|
|
"product_id": 456,
|
|
"quantity": 2,
|
|
"price": 99.99
|
|
}
|
|
],
|
|
"order_title": "Q1 Subscription"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Tool Reference
|
|
|
|
### Contact Tools (19 tools)
|
|
|
|
- `keap_create_contact` - Create new contact
|
|
- `keap_get_contact` - Get contact by ID
|
|
- `keap_update_contact` - Update contact details
|
|
- `keap_delete_contact` - Delete contact
|
|
- `keap_list_contacts` - List all contacts (paginated)
|
|
- `keap_search_contacts` - Search contacts by criteria
|
|
- `keap_get_contact_emails` - Get contact's email addresses
|
|
- `keap_create_contact_email` - Add email to contact
|
|
- `keap_update_contact_email` - Update email address
|
|
- `keap_delete_contact_email` - Remove email address
|
|
- `keap_apply_tags_to_contact` - Tag a single contact
|
|
- `keap_remove_tags_from_contact` - Remove tags from contact
|
|
- `keap_get_contact_tags` - List contact's tags
|
|
- `keap_merge_contacts` - Merge duplicate contacts
|
|
- `keap_apply_tags_to_contacts` - Bulk tag multiple contacts
|
|
- `keap_remove_tags_from_contacts` - Bulk remove tags
|
|
- `keap_get_contact_opt_status` - Check email opt-in status
|
|
- `keap_opt_in_contact` - Opt in contact for emails
|
|
- `keap_opt_out_contact` - Opt out contact from emails
|
|
|
|
### Company Tools (5 tools)
|
|
|
|
- `keap_create_company` - Create new company
|
|
- `keap_get_company` - Get company by ID
|
|
- `keap_update_company` - Update company details
|
|
- `keap_list_companies` - List all companies (paginated)
|
|
- `keap_search_companies` - Search companies by criteria
|
|
|
|
### Opportunity Tools (9 tools)
|
|
|
|
- `keap_create_opportunity` - Create new opportunity
|
|
- `keap_get_opportunity` - Get opportunity by ID
|
|
- `keap_update_opportunity` - Update opportunity details
|
|
- `keap_list_opportunities` - List opportunities (paginated)
|
|
- `keap_search_opportunities` - Search opportunities by criteria
|
|
- `keap_move_opportunity_stage` - Move opportunity to new stage
|
|
- `keap_get_opportunity_pipeline` - Get pipeline stages
|
|
- `keap_bulk_update_opportunities` - Update multiple opportunities
|
|
- `keap_get_opportunity_stage_details` - Get stage information
|
|
|
|
### Task Tools (8 tools)
|
|
|
|
- `keap_create_task` - Create new task
|
|
- `keap_get_task` - Get task by ID
|
|
- `keap_update_task` - Update task details
|
|
- `keap_delete_task` - Delete task
|
|
- `keap_list_tasks` - List tasks (paginated)
|
|
- `keap_search_tasks` - Search tasks by criteria
|
|
- `keap_complete_task` - Mark task as complete
|
|
- `keap_bulk_update_tasks` - Update multiple tasks
|
|
|
|
### Appointment Tools (6 tools)
|
|
|
|
- `keap_create_appointment` - Create new appointment
|
|
- `keap_get_appointment` - Get appointment by ID
|
|
- `keap_update_appointment` - Update appointment details
|
|
- `keap_delete_appointment` - Delete appointment
|
|
- `keap_list_appointments` - List appointments (paginated)
|
|
- `keap_search_appointments` - Search appointments by criteria
|
|
|
|
### Campaign Tools (7 tools)
|
|
|
|
- `keap_create_campaign` - Create new campaign
|
|
- `keap_get_campaign` - Get campaign by ID
|
|
- `keap_list_campaigns` - List campaigns (paginated)
|
|
- `keap_add_contact_to_campaign` - Add contact to campaign sequence
|
|
- `keap_remove_contact_from_campaign` - Remove contact from campaign
|
|
- `keap_get_campaign_sequence` - Get campaign sequence details
|
|
- `keap_get_campaign_achievements` - Get campaign completion data
|
|
|
|
### Tag Tools (5 tools)
|
|
|
|
- `keap_create_tag` - Create new tag
|
|
- `keap_get_tag` - Get tag by ID
|
|
- `keap_list_tags` - List all tags
|
|
- `keap_create_tag_category` - Create tag category
|
|
- `keap_list_tag_categories` - List tag categories
|
|
|
|
### Note Tools (6 tools)
|
|
|
|
- `keap_create_note` - Create new note
|
|
- `keap_get_note` - Get note by ID
|
|
- `keap_update_note` - Update note content
|
|
- `keap_delete_note` - Delete note
|
|
- `keap_list_notes` - List notes (paginated)
|
|
- `keap_search_notes` - Search notes by criteria
|
|
|
|
### Email Tools (7 tools)
|
|
|
|
- `keap_send_email` - Send email to contacts
|
|
- `keap_create_email_template` - Create email template
|
|
- `keap_get_email_template` - Get template by ID
|
|
- `keap_list_email_templates` - List email templates
|
|
- `keap_send_template_email` - Send templated email
|
|
- `keap_get_email_stats` - Get email sending statistics
|
|
- `keap_check_email_deliverability` - Check email configuration
|
|
|
|
### File Tools (4 tools)
|
|
|
|
- `keap_upload_file` - Upload file to Keap
|
|
- `keap_get_file` - Download file by ID
|
|
- `keap_list_files` - List uploaded files
|
|
- `keap_delete_file` - Delete file
|
|
|
|
### E-commerce Tools (15 tools)
|
|
|
|
- `keap_create_product` - Create new product
|
|
- `keap_get_product` - Get product by ID
|
|
- `keap_update_product` - Update product details
|
|
- `keap_delete_product` - Delete product
|
|
- `keap_list_products` - List products (paginated)
|
|
- `keap_create_order` - Create new order
|
|
- `keap_get_order` - Get order by ID
|
|
- `keap_update_order` - Update order details
|
|
- `keap_list_orders` - List orders (paginated)
|
|
- `keap_create_subscription` - Create recurring subscription
|
|
- `keap_get_subscription` - Get subscription by ID
|
|
- `keap_cancel_subscription` - Cancel subscription
|
|
- `keap_create_payment` - Record payment
|
|
- `keap_refund_payment` - Process refund
|
|
- `keap_get_transaction_history` - Get payment history
|
|
|
|
### Automation Tools (6 tools)
|
|
|
|
- `keap_create_campaign_sequence` - Create automation sequence
|
|
- `keap_get_campaign_sequence` - Get sequence details
|
|
- `keap_update_campaign_sequence` - Update sequence
|
|
- `keap_create_campaign_goal` - Create campaign goal
|
|
- `keap_get_campaign_goals` - List campaign goals
|
|
- `keap_trigger_link_click` - Trigger link-based automation
|
|
|
|
### Settings Tools (5 tools)
|
|
|
|
- `keap_get_account_info` - Get account information
|
|
- `keap_list_users` - List account users
|
|
- `keap_get_user` - Get user details
|
|
- `keap_list_custom_fields` - List custom fields
|
|
- `keap_create_custom_field` - Create custom field
|
|
|
|
### Affiliate Tools (9 tools)
|
|
|
|
- `keap_create_affiliate` - Create affiliate account
|
|
- `keap_get_affiliate` - Get affiliate by ID
|
|
- `keap_list_affiliates` - List affiliates (paginated)
|
|
- `keap_update_affiliate` - Update affiliate details
|
|
- `keap_get_affiliate_commissions` - Get commission history
|
|
- `keap_create_affiliate_payout` - Create payout
|
|
- `keap_create_affiliate_clawback` - Reverse commission
|
|
- `keap_get_affiliate_summary` - Get performance summary
|
|
- `keap_search_affiliates` - Search affiliates by criteria
|
|
|
|
## Architecture
|
|
|
|
```
|
|
src/
|
|
├── server.ts # MCP server setup
|
|
├── main.ts # Entry point
|
|
├── clients/
|
|
│ └── keap.ts # Keap API client (REST API, rate limiting, error handling)
|
|
├── tools/ # Tool definitions (14 files)
|
|
│ ├── contacts-tools.ts
|
|
│ ├── companies-tools.ts
|
|
│ ├── opportunities-tools.ts
|
|
│ ├── tasks-tools.ts
|
|
│ ├── appointments-tools.ts
|
|
│ ├── campaigns-tools.ts
|
|
│ ├── tags-tools.ts
|
|
│ ├── notes-tools.ts
|
|
│ ├── emails-tools.ts
|
|
│ ├── files-tools.ts
|
|
│ ├── ecommerce-tools.ts
|
|
│ ├── automations-tools.ts
|
|
│ ├── settings-tools.ts
|
|
│ └── affiliates-tools.ts
|
|
├── types/
|
|
│ └── index.ts # TypeScript interfaces
|
|
└── ui/
|
|
└── react-app/ # MCP Apps (22 apps)
|
|
├── contact-dashboard/
|
|
├── contact-detail/
|
|
├── contact-grid/
|
|
├── contact-timeline/
|
|
├── company-dashboard/
|
|
├── company-detail/
|
|
├── company-grid/
|
|
├── deal-dashboard/
|
|
├── deal-detail/
|
|
├── pipeline-kanban/
|
|
├── pipeline-funnel/
|
|
├── task-manager/
|
|
├── appointment-calendar/
|
|
├── campaign-dashboard/
|
|
├── campaign-detail/
|
|
├── email-composer/
|
|
├── tag-manager/
|
|
├── automation-dashboard/
|
|
├── product-catalog/
|
|
├── order-dashboard/
|
|
├── order-detail/
|
|
└── revenue-dashboard/
|
|
```
|
|
|
|
## API Coverage
|
|
|
|
- ✅ Contacts API (complete)
|
|
- ✅ Companies API (complete)
|
|
- ✅ Opportunities API (complete)
|
|
- ✅ Tasks API (complete)
|
|
- ✅ Appointments API (complete)
|
|
- ✅ Campaigns API (complete)
|
|
- ✅ Tags API (complete)
|
|
- ✅ Notes API (complete)
|
|
- ✅ Emails API (complete)
|
|
- ✅ Files API (complete)
|
|
- ✅ E-commerce API (complete - products, orders, subscriptions, payments)
|
|
- ✅ Automations API (campaign sequences, goals, triggers)
|
|
- ✅ Settings API (account info, users, custom fields)
|
|
- ✅ Affiliates API (complete)
|
|
|
|
## Rate Limiting
|
|
|
|
The Keap API enforces rate limits:
|
|
|
|
- **Burst limit**: 10 requests per second
|
|
- **Daily limit**: 10,000 requests per day (may vary by plan)
|
|
|
|
The MCP client automatically handles rate limiting with:
|
|
- Exponential backoff on 429 responses
|
|
- Request queuing
|
|
- Automatic retry logic
|
|
|
|
## Error Handling
|
|
|
|
All tools provide comprehensive error messages:
|
|
|
|
```json
|
|
{
|
|
"isError": true,
|
|
"content": [
|
|
{
|
|
"type": "text",
|
|
"text": "Error: Contact not found (ID: 12345)"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
Common error scenarios:
|
|
- Invalid authentication (401)
|
|
- Rate limit exceeded (429)
|
|
- Resource not found (404)
|
|
- Validation errors (400)
|
|
- Server errors (500)
|
|
|
|
## Development
|
|
|
|
### Build from source
|
|
|
|
```bash
|
|
git clone https://github.com/BusyBee3333/mcpengine
|
|
cd mcpengine/servers/keap
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
### Run in development mode
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
### Type checking
|
|
|
|
```bash
|
|
npx tsc --noEmit
|
|
```
|
|
|
|
### Build React apps
|
|
|
|
```bash
|
|
cd src/ui/react-app
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
### Contact Management
|
|
|
|
1. **Use tags effectively**: Organize contacts with meaningful tags for segmentation
|
|
2. **Custom fields**: Leverage custom fields for industry-specific data
|
|
3. **Merge duplicates**: Regularly use `keap_merge_contacts` to maintain data quality
|
|
4. **Opt-in compliance**: Always check opt status before sending marketing emails
|
|
|
|
### Sales Pipeline
|
|
|
|
1. **Consistent stage moves**: Use `keap_move_opportunity_stage` to track progression
|
|
2. **Revenue tracking**: Keep projected revenue updated for accurate forecasting
|
|
3. **Pipeline hygiene**: Regularly review and close stale opportunities
|
|
|
|
### Automation
|
|
|
|
1. **Campaign sequences**: Build automated follow-up sequences for lead nurturing
|
|
2. **Goal tracking**: Set clear goals to measure campaign effectiveness
|
|
3. **Link triggers**: Use link-based triggers for behavior-based automation
|
|
|
|
### E-commerce
|
|
|
|
1. **Product catalog**: Maintain accurate SKUs and pricing
|
|
2. **Order tracking**: Use order IDs consistently across systems
|
|
3. **Subscription management**: Monitor subscription status and renewal dates
|
|
4. **Payment reconciliation**: Regular transaction history reviews
|
|
|
|
## Keap Plans & Features
|
|
|
|
Different Keap plans provide varying API capabilities:
|
|
|
|
- **Lite**: Basic contact and email tools
|
|
- **Pro**: Full CRM, sales pipeline, and automation
|
|
- **Max**: E-commerce, advanced automations, affiliate management
|
|
- **Max Classic**: Legacy features, additional e-commerce capabilities
|
|
|
|
Ensure your plan supports the features you intend to use via the API.
|
|
|
|
## Troubleshooting
|
|
|
|
### Authentication Issues
|
|
|
|
```bash
|
|
# Verify your API key
|
|
curl -H "X-Keap-API-Key: YOUR_API_KEY" https://api.infusionsoft.com/crm/rest/v1/account/profile
|
|
```
|
|
|
|
### Rate Limiting
|
|
|
|
If you encounter frequent rate limits:
|
|
1. Reduce concurrent request volume
|
|
2. Implement longer delays between operations
|
|
3. Consider upgrading your Keap plan for higher limits
|
|
|
|
### Contact Not Found
|
|
|
|
Ensure contact IDs are valid:
|
|
```typescript
|
|
// First search for the contact
|
|
const result = await keap_search_contacts({
|
|
email: "user@example.com"
|
|
});
|
|
// Then use the returned ID
|
|
```
|
|
|
|
## Migration from Infusionsoft XML-RPC
|
|
|
|
If migrating from the legacy XML-RPC API:
|
|
|
|
1. **Authentication**: Replace legacy keys with Personal Access Tokens
|
|
2. **Endpoints**: Update from XML-RPC to REST API patterns
|
|
3. **Data format**: Convert XML structures to JSON
|
|
4. **Field mappings**: Review custom field IDs (may have changed)
|
|
|
|
## License
|
|
|
|
MIT
|
|
|
|
## Support
|
|
|
|
For issues and feature requests, please visit:
|
|
https://github.com/BusyBee3333/mcpengine/issues
|
|
|
|
## Related
|
|
|
|
- [Keap API Documentation](https://developer.keap.com/docs/rest/)
|
|
- [Keap Developer Portal](https://keys.developer.keap.com/)
|
|
- [Model Context Protocol](https://modelcontextprotocol.io)
|
|
- [MCPEngine Repository](https://github.com/BusyBee3333/mcpengine)
|
|
|
|
## Changelog
|
|
|
|
### Version 1.0.0
|
|
|
|
- Initial release
|
|
- 111 tools across 14 categories
|
|
- 22 React apps for visual interfaces
|
|
- Full Keap REST API coverage
|
|
- Rate limiting and error handling
|
|
- Comprehensive TypeScript types
|