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

238 lines • 11.9 kB
/** * SmartLead MCP Server - Campaign Tools * * MCP tools for campaign management operations. * * @author LeadMagic Team * @version 1.5.0 */ import { CreateCampaignRequestSchema, DeleteCampaignRequestSchema, ExportCampaignDataRequestSchema, FetchAllCampaignsUsingLeadIdRequestSchema, FetchCampaignAnalyticsByDateRangeRequestSchema, GetCampaignRequestSchema, GetCampaignSequenceAnalyticsRequestSchema, GetCampaignSequenceRequestSchema, GetCampaignsWithAnalyticsRequestSchema, ListCampaignsRequestSchema, SaveCampaignSequenceRequestSchema, UpdateCampaignScheduleRequestSchema, UpdateCampaignSettingsRequestSchema, UpdateCampaignStatusRequestSchema, } from '../types.js'; /** * Register all campaign management tools */ export function registerCampaignTools(server, client, formatSuccessResponse, handleError) { // Create Campaign Tool server.registerTool('smartlead_create_campaign', { title: 'Create Campaign', description: 'Create a new SmartLead campaign with specified name and optional client assignment.', inputSchema: CreateCampaignRequestSchema.shape, }, async (params) => { try { const validatedParams = CreateCampaignRequestSchema.parse(params); const result = await client.createCampaign(validatedParams); return formatSuccessResponse(`Campaign created successfully`, result, `Campaign "${validatedParams.name}" created with ID: ${result.data?.id || 'N/A'}`); } catch (error) { return handleError(error); } }); // Update Campaign Schedule Tool server.registerTool('smartlead_update_campaign_schedule', { title: 'Update Campaign Schedule', description: 'Update the sending schedule for a specific campaign including timing, frequency, and delivery windows.', inputSchema: UpdateCampaignScheduleRequestSchema.shape, }, async (params) => { try { const validatedParams = UpdateCampaignScheduleRequestSchema.parse(params); const result = await client.updateCampaignSchedule(validatedParams.campaign_id, { ...validatedParams, }); return formatSuccessResponse('Campaign schedule updated successfully', result); } catch (error) { return handleError(error); } }); // Update Campaign Settings Tool server.registerTool('smartlead_update_campaign_settings', { title: 'Update Campaign Settings', description: 'Update various campaign settings including tracking, personalization, and delivery options.', inputSchema: UpdateCampaignSettingsRequestSchema.shape, }, async (params) => { try { const validatedParams = UpdateCampaignSettingsRequestSchema.parse(params); const result = await client.updateCampaignSettings(validatedParams.campaign_id, { ...validatedParams, }); return formatSuccessResponse('Campaign settings updated successfully', result); } catch (error) { return handleError(error); } }); // Update Campaign Status Tool server.registerTool('smartlead_update_campaign_status', { title: 'Update Campaign Status', description: 'Update the status of a campaign (e.g., start, pause, stop, archive).', inputSchema: UpdateCampaignStatusRequestSchema.shape, }, async (params) => { try { const validatedParams = UpdateCampaignStatusRequestSchema.parse(params); const result = await client.updateCampaignStatus(validatedParams.campaign_id, validatedParams.status); return formatSuccessResponse('Campaign status updated successfully', result, `Campaign ID ${validatedParams.campaign_id} status changed to: ${validatedParams.status}`); } catch (error) { return handleError(error); } }); // Get Campaign Tool server.registerTool('smartlead_get_campaign', { title: 'Get Campaign Details', description: 'Retrieve detailed information about a specific campaign including settings, statistics, and configuration.', inputSchema: GetCampaignRequestSchema.shape, }, async (params) => { try { const validatedParams = GetCampaignRequestSchema.parse(params); const result = await client.getCampaign(validatedParams.campaign_id); return formatSuccessResponse('Campaign details retrieved successfully', result, `Retrieved details for campaign: ${result.data?.name || `ID ${validatedParams.campaign_id}`}`); } catch (error) { return handleError(error); } }); // List Campaigns Tool server.registerTool('smartlead_list_campaigns', { title: 'List Campaigns', description: 'Retrieve a list of all campaigns with optional filtering by status, client, or other criteria.', inputSchema: ListCampaignsRequestSchema.shape, }, async (params) => { try { const validatedParams = ListCampaignsRequestSchema.parse(params); const result = await client.listCampaigns(validatedParams); return formatSuccessResponse('Campaigns listed successfully', result, `Found ${result.data?.campaigns?.length || 0} campaigns`); } catch (error) { return handleError(error); } }); // Save Campaign Sequence Tool server.registerTool('smartlead_save_campaign_sequence', { title: 'Save Campaign Sequence', description: 'Save or update the email sequence for a campaign including follow-up emails and timing.', inputSchema: SaveCampaignSequenceRequestSchema.shape, }, async (params) => { try { const validatedParams = SaveCampaignSequenceRequestSchema.parse(params); if (validatedParams.sequence && validatedParams.sequence.length > 0) { const result = await client.saveCampaignSequence(validatedParams.campaign_id, validatedParams.sequence[0]); return formatSuccessResponse('Campaign sequence saved successfully', result); } return handleError(new Error('Sequence data is missing')); } catch (error) { return handleError(error); } }); // Get Campaign Sequence Tool server.registerTool('smartlead_get_campaign_sequence', { title: 'Get Campaign Sequence', description: 'Retrieve the email sequence configuration for a specific campaign.', inputSchema: GetCampaignSequenceRequestSchema.shape, }, async (params) => { try { const validatedParams = GetCampaignSequenceRequestSchema.parse(params); const result = await client.getCampaignSequence(validatedParams.campaign_id); return formatSuccessResponse('Campaign sequence retrieved successfully', result, `Retrieved sequence for campaign ID: ${validatedParams.campaign_id}`); } catch (error) { return handleError(error); } }); // Get Campaigns with Analytics Tool server.registerTool('smartlead_get_campaigns_with_analytics', { title: 'Get Campaigns with Analytics', description: 'Retrieve campaigns list with embedded analytics data for performance overview.', inputSchema: GetCampaignsWithAnalyticsRequestSchema.shape, }, async (params) => { try { const validatedParams = GetCampaignsWithAnalyticsRequestSchema.parse(params); const result = await client.getCampaignsWithAnalytics(validatedParams); return formatSuccessResponse('Campaigns with analytics retrieved successfully', result, `Retrieved ${result.data?.campaigns?.length || 0} campaigns with analytics data`); } catch (error) { return handleError(error); } }); // Delete Campaign Tool server.registerTool('smartlead_delete_campaign', { title: 'Delete Campaign', description: 'Permanently delete a campaign and all associated data. This action cannot be undone.', inputSchema: DeleteCampaignRequestSchema.shape, }, async (params) => { try { const validatedParams = DeleteCampaignRequestSchema.parse(params); const result = await client.deleteCampaign(validatedParams.campaign_id); return formatSuccessResponse('Campaign deleted successfully', result, `Campaign ID ${validatedParams.campaign_id} has been permanently deleted`); } catch (error) { return handleError(error); } }); // Export Campaign Data Tool server.registerTool('smartlead_export_campaign_data', { title: 'Export Campaign Data', description: 'Export campaign data in various formats (CSV, Excel, JSON) for analysis or backup purposes.', inputSchema: ExportCampaignDataRequestSchema.shape, }, async (params) => { try { const validatedParams = ExportCampaignDataRequestSchema.parse(params); const result = await client.exportCampaignData(validatedParams.campaign_id, { ...validatedParams, }); return formatSuccessResponse('Campaign data exported successfully', result); } catch (error) { return handleError(error); } }); // Fetch Campaign Analytics by Date Range Tool server.registerTool('smartlead_fetch_campaign_analytics_by_date_range', { title: 'Fetch Campaign Analytics by Date Range', description: 'Retrieve detailed analytics for a campaign within a specific date range.', inputSchema: FetchCampaignAnalyticsByDateRangeRequestSchema.shape, }, async (params) => { try { const validatedParams = FetchCampaignAnalyticsByDateRangeRequestSchema.parse(params); const result = await client.fetchCampaignAnalyticsByDateRange(validatedParams.campaign_id, { ...validatedParams, }); return formatSuccessResponse('Campaign analytics fetched successfully', result); } catch (error) { return handleError(error); } }); // Get Campaign Sequence Analytics Tool server.registerTool('smartlead_get_campaign_sequence_analytics', { title: 'Get Campaign Sequence Analytics', description: 'Retrieve analytics data for each step in a campaign sequence to optimize performance.', inputSchema: GetCampaignSequenceAnalyticsRequestSchema.shape, }, async (params) => { try { const validatedParams = GetCampaignSequenceAnalyticsRequestSchema.parse(params); const result = await client.getCampaignSequenceAnalytics(validatedParams.campaign_id, { ...validatedParams, }); return formatSuccessResponse('Campaign sequence analytics fetched successfully', result); } catch (error) { return handleError(error); } }); // Fetch All Campaigns Using Lead ID Tool server.registerTool('smartlead_fetch_all_campaigns_using_lead_id', { title: 'Fetch Campaigns by Lead ID', description: 'Retrieve all campaigns that contain a specific lead for cross-campaign analysis.', inputSchema: FetchAllCampaignsUsingLeadIdRequestSchema.shape, }, async (params) => { try { const validatedParams = FetchAllCampaignsUsingLeadIdRequestSchema.parse(params); const result = await client.fetchAllCampaignsUsingLeadId(validatedParams.lead_id); return formatSuccessResponse('Campaigns fetched successfully', result, `Found ${result.data?.campaigns?.length || 0} campaigns containing lead ID: ${validatedParams.lead_id}`); } catch (error) { return handleError(error); } }); } //# sourceMappingURL=campaigns.js.map