smartlead-mcp-by-leadmagic
Version:
💜 The Premier Model Context Protocol Server for SmartLead's Cold Email Automation Platform - Complete API coverage with 116+ tools for campaign management, lead tracking, smart delivery, and analytics. Beautiful purple-gradient installer, zero-config set
277 lines • 11.8 kB
JavaScript
/**
* SmartLead MCP Server - Main Client
*
* Main client that combines all API modules into a single interface.
* Provides a unified API for accessing all SmartLead functionality.
*
* @author LeadMagic Team
* @version 1.5.0
*/
import { AnalyticsClient } from '../modules/analytics/client.js';
import { CampaignManagementClient } from '../modules/campaigns/client.js';
import { ClientManagementClient } from '../modules/client-management/client.js';
import { EmailAccountManagementClient } from '../modules/email-accounts/client.js';
import { LeadClient } from '../modules/leads/client.js';
import { SmartDeliveryClient } from '../modules/smart-delivery/client.js';
import { SmartSendersClient } from '../modules/smart-senders/client.js';
import { StatisticsClient } from '../modules/statistics/client.js';
import { WebhooksClient } from '../modules/webhooks/client.js';
import { BaseSmartLeadClient } from './base.js';
/**
* Main SmartLead API Client
*
* Unified client that provides access to all SmartLead API functionality
* through modular sub-clients for different API categories.
*/
export class SmartLeadClient extends BaseSmartLeadClient {
campaigns;
leads;
analytics;
emailAccounts;
clientManagement;
webhooks;
smartDelivery;
statistics;
smartSenders;
constructor(config) {
super(config);
// Initialize all module clients
this.campaigns = new CampaignManagementClient(config);
this.leads = new LeadClient(config);
this.analytics = new AnalyticsClient(config);
this.emailAccounts = new EmailAccountManagementClient(config);
this.clientManagement = new ClientManagementClient(config);
this.webhooks = new WebhooksClient(config);
this.smartDelivery = new SmartDeliveryClient(config);
this.statistics = new StatisticsClient(config);
this.smartSenders = new SmartSendersClient(config);
}
// ================================
// LEGACY COMPATIBILITY METHODS
// ================================
// These methods maintain backward compatibility with the existing server implementation
// while the server is being refactored to use the new modular structure
// Campaign methods (delegate to campaigns module)
async createCampaign(params) {
return this.campaigns.createCampaign(params);
}
async updateCampaignSchedule(campaignId, params) {
return this.campaigns.updateCampaignSchedule(campaignId, params);
}
async updateCampaignSettings(campaignId, params) {
return this.campaigns.updateCampaignSettings(campaignId, params);
}
async updateCampaignStatus(campaignId, status) {
return this.campaigns.updateCampaignStatus(campaignId, status);
}
async getCampaign(campaignId) {
return this.campaigns.getCampaign(campaignId);
}
async listCampaigns(params) {
return this.campaigns.listCampaigns(params);
}
async saveCampaignSequence(campaignId, sequence) {
return this.campaigns.saveCampaignSequence(campaignId, sequence);
}
async getCampaignSequence(campaignId) {
return this.campaigns.getCampaignSequence(campaignId);
}
async getCampaignsWithAnalytics(params) {
return this.campaigns.getCampaignsWithAnalytics(params);
}
async deleteCampaign(campaignId) {
return this.campaigns.deleteCampaign(campaignId);
}
async exportCampaignData(campaignId, params) {
return this.campaigns.exportCampaignData(campaignId, params);
}
async fetchCampaignAnalyticsByDateRange(campaignId, params) {
return this.campaigns.fetchCampaignAnalyticsByDateRange(campaignId, params);
}
async getCampaignSequenceAnalytics(campaignId, params) {
return this.campaigns.getCampaignSequenceAnalytics(campaignId, params);
}
async fetchAllCampaignsUsingLeadId(leadId) {
return this.campaigns.fetchAllCampaignsUsingLeadId({ lead_id: leadId });
}
// Lead methods (delegate to leads module)
async listLeadsByCampaign(campaignId, params) {
const leadsParams = params
? {
campaign_id: campaignId,
...params,
}
: { campaign_id: campaignId };
return this.leads.listLeadsByCampaign(campaignId, leadsParams);
}
async fetchLeadCategories() {
return this.leads.fetchLeadCategories();
}
async fetchLeadByEmail(email) {
return this.leads.fetchLeadByEmail(email);
}
async addLeadsToCampaign(campaignId, leads) {
return this.leads.addLeadsToCampaign(campaignId, leads);
}
async resumeLeadByCampaign(campaignId, leadId) {
return this.leads.resumeLeadByCampaign(campaignId, leadId);
}
async pauseLeadByCampaign(campaignId, leadId) {
return this.leads.pauseLeadByCampaign(campaignId, leadId);
}
async deleteLeadByCampaign(campaignId, leadId) {
return this.leads.deleteLeadByCampaign(campaignId, leadId);
}
async unsubscribeLeadFromCampaign(campaignId, leadId) {
return this.leads.unsubscribeLeadFromCampaign(campaignId, leadId);
}
async unsubscribeLeadFromAllCampaigns(leadId) {
return this.leads.unsubscribeLeadFromAllCampaigns(leadId);
}
async addLeadToGlobalBlocklist(email) {
return this.leads.addLeadToGlobalBlocklist(email);
}
async fetchAllLeadsFromAccount(params) {
return this.leads.fetchAllLeadsFromAccount(params);
}
async fetchLeadsFromGlobalBlocklist(params) {
return this.leads.fetchLeadsFromGlobalBlocklist(params);
}
async updateLeadById(leadId, leadData) {
return this.leads.updateLeadById(leadId, leadData);
}
async updateLeadCategory(campaignId, leadId, category) {
return this.leads.updateLeadCategory(campaignId, leadId, category);
}
async fetchLeadMessageHistory(campaignId, leadId) {
return this.leads.fetchLeadMessageHistory(campaignId, leadId);
}
async replyToLeadFromMasterInbox(campaignId, leadId, message) {
const replyMessage = {
campaign_id: campaignId,
lead_id: leadId,
message: message.message,
subject: message.subject,
};
return this.leads.replyToLeadFromMasterInbox(campaignId, leadId, replyMessage);
}
async forwardReply(campaignId, leadId, forwardData) {
const forwardRequest = {
forward_to_email: forwardData.forward_to,
message: forwardData.message,
include_original: true,
};
return this.leads.forwardReply(campaignId, leadId, forwardRequest);
}
// Analytics methods (delegate to analytics module)
async getAnalyticsCampaignList(params) {
return this.analytics.getCampaignList(params);
}
async getAnalyticsClientList(params) {
return this.analytics.getClientList(params);
}
async getAnalyticsClientMonthWiseCount(params) {
return this.analytics.getClientMonthWiseCount(params);
}
async getAnalyticsOverallStatsV2(params) {
return this.analytics.getOverallStatsV2(params);
}
async getAnalyticsDayWiseOverallStats(params) {
return this.analytics.getDayWiseOverallStats(params);
}
async getAnalyticsDayWisePositiveReplyStats(params) {
return this.analytics.getDayWisePositiveReplyStats(params);
}
async getAnalyticsCampaignOverallStats(params) {
return this.analytics.getCampaignOverallStats(params);
}
async getAnalyticsClientOverallStats(params) {
return this.analytics.getClientOverallStats(params);
}
async getAnalyticsMailboxNameWiseHealthMetrics(params) {
return this.analytics.getMailboxNameWiseHealthMetrics(params);
}
async getAnalyticsMailboxDomainWiseHealthMetrics(params) {
return this.analytics.getMailboxDomainWiseHealthMetrics(params);
}
async getAnalyticsMailboxProviderWiseOverallPerformance(params) {
return this.analytics.getMailboxProviderWiseOverallPerformance(params);
}
async getAnalyticsTeamBoardOverallStats(params) {
return this.analytics.getTeamBoardOverallStats(params);
}
async getAnalyticsLeadOverallStats(params) {
return this.analytics.getLeadOverallStats(params);
}
async getAnalyticsLeadCategoryWiseResponse(params) {
return this.analytics.getLeadCategoryWiseResponse(params);
}
async getAnalyticsCampaignLeadsTakeForFirstReply(params) {
return this.analytics.getCampaignLeadsTakeForFirstReply(params);
}
async getAnalyticsCampaignFollowUpReplyRate(params) {
return this.analytics.getCampaignFollowUpReplyRate(params);
}
async getAnalyticsCampaignLeadToReplyTime(params) {
return this.analytics.getCampaignLeadToReplyTime(params);
}
async getAnalyticsCampaignResponseStats(params) {
return this.analytics.getCampaignResponseStats(params);
}
async getAnalyticsCampaignStatusStats(params) {
return this.analytics.getCampaignStatusStats(params);
}
async getAnalyticsMailboxOverallStats(params) {
return this.analytics.getMailboxOverallStats(params);
}
// Email Account methods (delegate to email accounts module)
async addEmailAccount(params) {
return this.emailAccounts.createEmailAccount(params);
}
async getAllEmailAccounts() {
return this.emailAccounts.getAllEmailAccounts();
}
async getEmailAccountById(accountId) {
return this.emailAccounts.getEmailAccountById(accountId);
}
async updateEmailAccount(accountId, params) {
return this.emailAccounts.updateEmailAccount(accountId, params);
}
async deleteEmailAccount(_accountId) {
// Note: Delete functionality not available in current API
throw new Error('Delete email account functionality not available in current SmartLead API');
}
async testEmailAccountConnection(accountId) {
return this.emailAccounts.testEmailAccountConnection(accountId);
}
async getEmailAccountWarmupStatus(accountId) {
return this.emailAccounts.getEmailAccountWarmupStatus(accountId);
}
async updateEmailAccountWarmupSettings(accountId, params) {
return this.emailAccounts.updateEmailAccountWarmupSettings(accountId, params);
}
async getEmailAccountHealthMetrics(accountId, params) {
return this.emailAccounts.getEmailAccountHealthMetrics(accountId, params);
}
async assignEmailAccountsToCampaign(campaignId, accountIds) {
return this.emailAccounts.assignEmailAccountsToCampaign(campaignId, accountIds);
}
async removeEmailAccountsFromCampaign(campaignId, accountIds) {
return this.emailAccounts.removeEmailAccountsFromCampaign(campaignId, accountIds);
}
async listEmailAccountsPerCampaign(campaignId) {
return this.emailAccounts.listEmailAccountsPerCampaign(campaignId);
}
}
export { AnalyticsClient } from '../modules/analytics/client.js';
export { CampaignManagementClient } from '../modules/campaigns/client.js';
export { ClientManagementClient } from '../modules/client-management/client.js';
export { EmailAccountManagementClient } from '../modules/email-accounts/client.js';
export { LeadClient } from '../modules/leads/client.js';
export { SmartDeliveryClient } from '../modules/smart-delivery/client.js';
export { SmartSendersClient } from '../modules/smart-senders/client.js';
export { StatisticsClient } from '../modules/statistics/client.js';
export { WebhooksClient } from '../modules/webhooks/client.js';
// Export the main client and all modules
export { BaseSmartLeadClient, SmartLeadError } from './base.js';
//# sourceMappingURL=index.js.map