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
271 lines • 10.1 kB
JavaScript
/**
* SmartLead MCP Server - Smart Delivery Client
*
* Handles all Smart Delivery related operations including placement tests,
* spam tests, reports, and folder management.
*
* @author LeadMagic Team
* @version 1.5.0
*/
import axios from 'axios';
import { BaseSmartLeadClient } from '../../client/base.js';
/**
* Smart Delivery Client
*
* Provides methods for managing SmartLead smart delivery including:
* - Placement tests (manual and automated)
* - Spam tests and reports
* - Folder management
* - Provider and geo-wise reports
*
* Note: Smart Delivery uses a different base URL than the main API
* Base URL: https://smartdelivery.smartlead.ai/api/v1
*/
export class SmartDeliveryClient extends BaseSmartLeadClient {
smartDeliveryClient;
constructor(config) {
super(config);
// Create a separate Axios client for Smart Delivery with the correct base URL
this.smartDeliveryClient = axios.create({
baseURL: 'https://smartdelivery.smartlead.ai/api/v1',
timeout: this.config.timeout,
headers: {
'Content-Type': 'application/json',
'User-Agent': 'SmartLead-MCP-Server/1.5.0',
},
});
// Add request interceptor for API key authentication
this.smartDeliveryClient.interceptors.request.use((config) => {
if (!config.params) {
config.params = {};
}
config.params.api_key = this.config.apiKey;
return config;
});
}
/**
* Get region wise provider IDs
* GET /spam-test/seed/providers
*/
async getRegionWiseProviderIds() {
const response = await this.withRetry(() => this.smartDeliveryClient.get('/spam-test/seed/providers'), 'get region wise provider IDs');
return response.data;
}
/**
* Create a manual placement test
* POST /spam-test/manual
*/
async createManualPlacementTest(params) {
const response = await this.withRetry(() => this.smartDeliveryClient.post('/spam-test/manual', params), 'create manual placement test');
return response.data;
}
/**
* Create an automated placement test
* POST /spam-test/automated
*/
async createAutomatedPlacementTest(params) {
const response = await this.withRetry(() => this.smartDeliveryClient.post('/spam-test/automated', params), 'create automated placement test');
return response.data;
}
/**
* Get spam test details
* GET /spam-test/{test_id}
*/
async getSpamTestDetails(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}`), 'get spam test details');
return response.data;
}
/**
* Delete smart delivery tests in bulk
* POST /spam-test/bulk-delete
*/
async deleteTestsInBulk(params) {
const response = await this.withRetry(() => this.smartDeliveryClient.post('/spam-test/bulk-delete', params), 'delete tests in bulk');
return response.data;
}
/**
* Stop an automated smart delivery test
* PUT /spam-test/{test_id}/stop
*/
async stopAutomatedTest(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.put(`/spam-test/${testId}/stop`), 'stop automated test');
return response.data;
}
/**
* List all tests
* POST /spam-test/report
*/
async listAllTests(params) {
const response = await this.withRetry(() => this.smartDeliveryClient.post('/spam-test/report', params), 'list all tests');
return response.data;
}
/**
* Get provider wise report
* POST /spam-test/provider-wise-results
*/
async getProviderWiseReport(params) {
const response = await this.withRetry(() => this.smartDeliveryClient.post('/spam-test/provider-wise-results', params), 'get provider wise report');
return response.data;
}
/**
* Get geo wise report
* POST /spam-test/geo-wise-report
*/
async getGeoWiseReport(params) {
const response = await this.withRetry(() => this.smartDeliveryClient.post('/spam-test/geo-wise-report', params), 'get geo wise report');
return response.data;
}
/**
* Get sender account wise report
* GET /spam-test/sender-account-wise-report
*/
async getSenderAccountWiseReport(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/sender-account-wise-report?test_id=${testId}`), 'get sender account wise report');
return response.data;
}
/**
* Get spam filter report
* GET /spam-test/{test_id}/spam-filter-report
*/
async getSpamFilterReport(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/spam-filter-report`), 'get spam filter report');
return response.data;
}
/**
* Get DKIM details
* GET /spam-test/{test_id}/dkim-details
*/
async getDkimDetails(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/dkim-details`), 'get DKIM details');
return response.data;
}
/**
* Get SPF details
* GET /spam-test/{test_id}/spf-details
*/
async getSpfDetails(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/spf-details`), 'get SPF details');
return response.data;
}
/**
* Get rDNS report
* GET /spam-test/{test_id}/rdns-report
*/
async getRdnsReport(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/rdns-report`), 'get rDNS report');
return response.data;
}
/**
* Get sender account list
* GET /spam-test/{test_id}/sender-account-list
*/
async getSenderAccountList(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/sender-account-list`), 'get sender account list');
return response.data;
}
/**
* Get blacklists
* GET /spam-test/{test_id}/blacklists
*/
async getBlacklists(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/blacklists`), 'get blacklists');
return response.data;
}
/**
* Get domain blacklist
* GET /spam-test/{test_id}/domain-blacklist
*/
async getDomainBlacklist(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/domain-blacklist`), 'get domain blacklist');
return response.data;
}
/**
* Get spam test email content
* GET /spam-test/{test_id}/email-content
*/
async getSpamTestEmailContent(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/email-content`), 'get spam test email content');
return response.data;
}
/**
* Get IP blacklist count
* GET /spam-test/{test_id}/ip-blacklist-count
*/
async getIpBlacklistCount(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/ip-blacklist-count`), 'get IP blacklist count');
return response.data;
}
/**
* Get email reply headers
* GET /spam-test/{test_id}/email-headers
*/
async getEmailReplyHeaders(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/email-headers`), 'get email reply headers');
return response.data;
}
/**
* Get schedule history for automated tests
* GET /spam-test/{test_id}/schedule-history
*/
async getScheduleHistory(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/schedule-history`), 'get schedule history');
return response.data;
}
/**
* Get IP details
* GET /spam-test/{test_id}/ip-details
*/
async getIpDetails(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/ip-details`), 'get IP details');
return response.data;
}
/**
* Get mailbox summary
* GET /spam-test/{test_id}/mailbox-summary
*/
async getMailboxSummary(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/mailbox-summary`), 'get mailbox summary');
return response.data;
}
/**
* Get mailbox count
* GET /spam-test/{test_id}/mailbox-count
*/
async getMailboxCount(testId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/${testId}/mailbox-count`), 'get mailbox count');
return response.data;
}
/**
* Get all folders
* GET /spam-test/folder
*/
async getAllFolders() {
const response = await this.withRetry(() => this.smartDeliveryClient.get('/spam-test/folder'), 'get all folders');
return response.data;
}
/**
* Create folder
* POST /spam-test/folder
*/
async createFolder(params) {
const response = await this.withRetry(() => this.smartDeliveryClient.post('/spam-test/folder', params), 'create folder');
return response.data;
}
/**
* Get folder by ID
* GET /spam-test/folder/{folder_id}
*/
async getFolderById(folderId) {
const response = await this.withRetry(() => this.smartDeliveryClient.get(`/spam-test/folder/${folderId}`), 'get folder by ID');
return response.data;
}
/**
* Delete folder
* DELETE /spam-test/folder/{folder_id}
*/
async deleteFolder(folderId) {
const response = await this.withRetry(() => this.smartDeliveryClient.delete(`/spam-test/folder/${folderId}`), 'delete folder');
return response.data;
}
}
//# sourceMappingURL=client.js.map