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
331 lines • 17.8 kB
JavaScript
/**
* SmartLead MCP Server - Analytics Tools
*
* MCP tools for analytics and reporting operations.
*
* @author LeadMagic Team
* @version 1.5.0
*/
import { AnalyticsCampaignFollowUpReplyRateRequestSchema, AnalyticsCampaignLeadsTakeForFirstReplyRequestSchema, AnalyticsCampaignLeadToReplyTimeRequestSchema, AnalyticsCampaignListRequestSchema, AnalyticsCampaignOverallStatsRequestSchema, AnalyticsCampaignResponseStatsRequestSchema, AnalyticsCampaignStatusStatsRequestSchema, AnalyticsClientListRequestSchema, AnalyticsClientMonthWiseCountRequestSchema, AnalyticsClientOverallStatsRequestSchema, AnalyticsDayWiseOverallStatsRequestSchema, AnalyticsLeadCategoryWiseResponseRequestSchema, AnalyticsLeadOverallStatsRequestSchema, AnalyticsMailboxDomainWiseHealthMetricsRequestSchema, AnalyticsMailboxNameWiseHealthMetricsRequestSchema, AnalyticsMailboxOverallStatsRequestSchema, AnalyticsMailboxProviderWiseOverallPerformanceRequestSchema, AnalyticsOverallStatsV2RequestSchema, AnalyticsTeamBoardOverallStatsRequestSchema, } from '../types.js';
/**
* Register all analytics tools
*/
export function registerAnalyticsTools(server, client, formatSuccessResponse, handleError) {
// Analytics Campaign List Tool
server.registerTool('smartlead_analytics_campaign_list', {
title: 'Analytics: Get Campaign List',
description: 'Get a list of campaigns for analytics purposes. Supports filtering by client IDs for focused analysis.',
inputSchema: AnalyticsCampaignListRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsCampaignListRequestSchema.parse(params);
const result = await client.getAnalyticsCampaignList(validatedParams);
if (result.success) {
const campaigns = result.data?.campaign_list || [];
return formatSuccessResponse('Campaign list fetched successfully for analytics', result, `Found ${campaigns.length} campaigns`);
}
return formatSuccessResponse('Failed to get analytics campaign list', result, result.message);
}
catch (error) {
return handleError(error);
}
});
// Analytics Client List Tool
server.registerTool('smartlead_analytics_client_list', {
title: 'Analytics: Get Client List',
description: 'Get a list of all clients for analytics and reporting purposes.',
inputSchema: AnalyticsClientListRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsClientListRequestSchema.parse(params);
const result = await client.getAnalyticsClientList(validatedParams);
if (result.success) {
const clients = result.data?.client_list || [];
return formatSuccessResponse('Client list fetched successfully for analytics', result, `Found ${clients.length} clients`);
}
return formatSuccessResponse('Failed to get analytics client list', result, result.message);
}
catch (error) {
return handleError(error);
}
});
// Analytics Monthly Client Count Tool
server.registerTool('smartlead_analytics_client_month_wise_count', {
title: 'Analytics: Monthly Client Count',
description: 'Get month-wise client count statistics for growth analysis.',
inputSchema: AnalyticsClientMonthWiseCountRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsClientMonthWiseCountRequestSchema.parse(params);
const result = await client.getAnalyticsClientMonthWiseCount(validatedParams);
return formatSuccessResponse('Monthly client count statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Overall Stats V2 Tool
server.registerTool('smartlead_analytics_overall_stats_v2', {
title: 'Analytics: Overall Stats V2',
description: 'Get comprehensive overall analytics statistics including sent, opened, replied, bounced metrics with date range filtering.',
inputSchema: AnalyticsOverallStatsV2RequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsOverallStatsV2RequestSchema.parse(params);
const result = await client.getAnalyticsOverallStatsV2(validatedParams);
const stats = result.data?.overall_stats;
if (stats) {
return formatSuccessResponse('Overall analytics statistics fetched successfully', result, `Sent: ${stats.sent}, Opened: ${stats.opened}, Replied: ${stats.replied}, Open Rate: ${stats.open_rate}, Reply Rate: ${stats.reply_rate}`);
}
return formatSuccessResponse('Could not retrieve overall stats', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Day-wise Overall Stats Tool
server.registerTool('smartlead_analytics_day_wise_overall_stats', {
title: 'Analytics: Day-wise Overall Stats',
description: 'Get day-by-day breakdown of overall analytics statistics for trend analysis.',
inputSchema: AnalyticsDayWiseOverallStatsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsDayWiseOverallStatsRequestSchema.parse(params);
const result = await client.getAnalyticsDayWiseOverallStats(validatedParams);
return formatSuccessResponse('Day-wise overall analytics statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Day-wise Positive Reply Stats Tool
server.registerTool('smartlead_analytics_day_wise_positive_reply_stats', {
title: 'Analytics: Day-wise Positive Reply Stats',
description: 'Get day-by-day breakdown of positive reply statistics for detailed engagement analysis.',
inputSchema: AnalyticsDayWiseOverallStatsRequestSchema.shape, // Same schema as day-wise overall stats
}, async (params) => {
try {
const validatedParams = AnalyticsDayWiseOverallStatsRequestSchema.parse(params);
const result = await client.analytics.getDayWisePositiveReplyStats(validatedParams);
return formatSuccessResponse('Day-wise positive reply stats fetched successfully', result, `Date range: ${validatedParams.start_date} to ${validatedParams.end_date}`);
}
catch (error) {
return handleError(error);
}
});
// Analytics Email Health Metrics Tool
server.registerTool('smartlead_analytics_mailbox_name_wise_health_metrics', {
title: 'Analytics: Email Health Metrics',
description: 'Get health metrics for individual email accounts including deliverability and performance data.',
inputSchema: AnalyticsMailboxNameWiseHealthMetricsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsMailboxNameWiseHealthMetricsRequestSchema.parse(params);
const result = await client.getAnalyticsMailboxNameWiseHealthMetrics(validatedParams);
return formatSuccessResponse('Email health metrics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Domain Health Metrics Tool
server.registerTool('smartlead_analytics_mailbox_domain_wise_health_metrics', {
title: 'Analytics: Domain Health Metrics',
description: 'Get health metrics grouped by domain for domain reputation analysis.',
inputSchema: AnalyticsMailboxDomainWiseHealthMetricsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsMailboxDomainWiseHealthMetricsRequestSchema.parse(params);
const result = await client.getAnalyticsMailboxDomainWiseHealthMetrics(validatedParams);
return formatSuccessResponse('Domain health metrics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Email Provider Health Metrics Tool
server.registerTool('smartlead_analytics_mailbox_provider_wise_overall_performance', {
title: 'Analytics: Email Provider Performance',
description: 'Get performance metrics grouped by email provider (Gmail, Outlook, etc.) for provider-specific analysis.',
inputSchema: AnalyticsMailboxProviderWiseOverallPerformanceRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsMailboxProviderWiseOverallPerformanceRequestSchema.parse(params);
const result = await client.getAnalyticsMailboxProviderWiseOverallPerformance(validatedParams);
return formatSuccessResponse('Email provider performance metrics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Campaign Overall Stats Tool
server.registerTool('smartlead_analytics_campaign_overall_stats', {
title: 'Analytics: Campaign Overall Stats',
description: 'Get overall performance statistics for campaigns with date range filtering and detailed metrics.',
inputSchema: AnalyticsCampaignOverallStatsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsCampaignOverallStatsRequestSchema.parse(params);
const result = await client.getAnalyticsCampaignOverallStats(validatedParams);
if (result.success) {
const campaigns = result.data?.campaign_wise_performance || [];
return formatSuccessResponse('Campaign overall statistics fetched successfully', result, `Found ${campaigns.length} campaigns with performance data`);
}
return formatSuccessResponse('Failed to get campaign overall stats', result, result.message);
}
catch (error) {
return handleError(error);
}
});
// Analytics Client Overall Stats Tool
server.registerTool('smartlead_analytics_client_overall_stats', {
title: 'Analytics: Client Overall Stats',
description: 'Get overall performance statistics for clients with date range filtering.',
inputSchema: AnalyticsClientOverallStatsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsClientOverallStatsRequestSchema.parse(params);
const result = await client.getAnalyticsClientOverallStats(validatedParams);
return formatSuccessResponse('Client overall statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Team Board Stats Tool
server.registerTool('smartlead_analytics_team_board_overall_stats', {
title: 'Analytics: Team Board Stats',
description: 'Get team board performance statistics for team management and analysis.',
inputSchema: AnalyticsTeamBoardOverallStatsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsTeamBoardOverallStatsRequestSchema.parse(params);
const result = await client.getAnalyticsTeamBoardOverallStats(validatedParams);
return formatSuccessResponse('Team board statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Lead Overall Stats Tool
server.registerTool('smartlead_analytics_lead_overall_stats', {
title: 'Analytics: Lead Overall Stats',
description: 'Get overall lead performance statistics and metrics.',
inputSchema: AnalyticsLeadOverallStatsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsLeadOverallStatsRequestSchema.parse(params);
const result = await client.getAnalyticsLeadOverallStats(validatedParams);
return formatSuccessResponse('Lead overall statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Lead Category-wise Response Tool
server.registerTool('smartlead_analytics_lead_category_wise_response', {
title: 'Analytics: Lead Category Response',
description: 'Get lead response statistics grouped by category for detailed analysis.',
inputSchema: AnalyticsLeadCategoryWiseResponseRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsLeadCategoryWiseResponseRequestSchema.parse(params);
const result = await client.getAnalyticsLeadCategoryWiseResponse(validatedParams);
return formatSuccessResponse('Lead category-wise response statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Campaign Leads Take for First Reply Tool
server.registerTool('smartlead_analytics_campaign_leads_take_for_first_reply', {
title: 'Analytics: Leads Take for First Reply',
description: 'Get statistics on how long leads take to provide their first reply.',
inputSchema: AnalyticsCampaignLeadsTakeForFirstReplyRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsCampaignLeadsTakeForFirstReplyRequestSchema.parse(params);
const result = await client.getAnalyticsCampaignLeadsTakeForFirstReply(validatedParams);
return formatSuccessResponse('Lead first reply timing statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Campaign Follow-up Reply Rate Tool
server.registerTool('smartlead_analytics_campaign_follow_up_reply_rate', {
title: 'Analytics: Follow-up Reply Rate',
description: 'Get follow-up email reply rate statistics for campaign optimization.',
inputSchema: AnalyticsCampaignFollowUpReplyRateRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsCampaignFollowUpReplyRateRequestSchema.parse(params);
const result = await client.getAnalyticsCampaignFollowUpReplyRate(validatedParams);
return formatSuccessResponse('Follow-up reply rate statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Campaign Lead to Reply Time Tool
server.registerTool('smartlead_analytics_campaign_lead_to_reply_time', {
title: 'Analytics: Lead to Reply Time',
description: 'Get median time statistics for leads to reply to campaigns.',
inputSchema: AnalyticsCampaignLeadToReplyTimeRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsCampaignLeadToReplyTimeRequestSchema.parse(params);
const result = await client.getAnalyticsCampaignLeadToReplyTime(validatedParams);
return formatSuccessResponse('Lead to reply time statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Campaign Response Stats Tool
server.registerTool('smartlead_analytics_campaign_response_stats', {
title: 'Analytics: Campaign Response Stats',
description: 'Get detailed campaign response statistics and performance metrics.',
inputSchema: AnalyticsCampaignResponseStatsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsCampaignResponseStatsRequestSchema.parse(params);
const result = await client.getAnalyticsCampaignResponseStats(validatedParams);
return formatSuccessResponse('Campaign response statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Campaign Status Stats Tool
server.registerTool('smartlead_analytics_campaign_status_stats', {
title: 'Analytics: Campaign Status Stats',
description: 'Get campaign statistics grouped by status for status-based analysis.',
inputSchema: AnalyticsCampaignStatusStatsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsCampaignStatusStatsRequestSchema.parse(params);
const result = await client.getAnalyticsCampaignStatusStats(validatedParams);
return formatSuccessResponse('Campaign status statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
// Analytics Mailbox Overall Stats Tool
server.registerTool('smartlead_analytics_mailbox_overall_stats', {
title: 'Analytics: Mailbox Overall Stats',
description: 'Get overall mailbox performance statistics and health metrics.',
inputSchema: AnalyticsMailboxOverallStatsRequestSchema.shape,
}, async (params) => {
try {
const validatedParams = AnalyticsMailboxOverallStatsRequestSchema.parse(params);
const result = await client.getAnalyticsMailboxOverallStats(validatedParams);
return formatSuccessResponse('Mailbox overall statistics fetched successfully', result);
}
catch (error) {
return handleError(error);
}
});
}
//# sourceMappingURL=analytics.js.map