UNPKG

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
/** * 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