Skip to main content
Glama

get_warmup_analytics

Analyze email warmup performance for accounts by retrieving metrics on deliverability and engagement over specified date ranges.

Instructions

Get warmup analytics for one or more accounts. API REQUIREMENT: The Instantly API expects an array of email addresses, even for a single account.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
emailsYesArray of email addresses to get warmup analytics for (1-100 emails). Use email addresses from list_accounts.
end_dateNoEnd date (YYYY-MM-DD) - optional
start_dateNoStart date (YYYY-MM-DD) - optional

Implementation Reference

  • Core execution logic for get_warmup_analytics tool. Normalizes single email or array input, builds POST request body, calls Instantly API /accounts/warmup-analytics endpoint, and returns formatted MCP response.
    case 'get_warmup_analytics': { // Handle both single email and emails array for user convenience let emailsArray: string[] = []; if (args?.emails && Array.isArray(args.emails)) { emailsArray = args.emails; } else if (args?.email && typeof args.email === 'string') { emailsArray = [args.email]; } else { throw new McpError(ErrorCode.InvalidParams, 'Either "email" (string) or "emails" (array) is required'); } // Validate email array if (emailsArray.length === 0) { throw new McpError(ErrorCode.InvalidParams, 'At least one email address is required'); } console.error(`[Instantly MCP] get_warmup_analytics for emails: ${JSON.stringify(emailsArray)}`); // Use POST method with JSON body as per official API documentation const requestBody: any = { emails: emailsArray }; // Add optional date parameters to the body if provided if (args?.start_date) requestBody.start_date = args.start_date; if (args?.end_date) requestBody.end_date = args.end_date; console.error(`[Instantly MCP] POST body: ${JSON.stringify(requestBody, null, 2)}`); const result = await makeInstantlyRequest('/accounts/warmup-analytics', { method: 'POST', body: requestBody }, apiKey); return createMCPResponse(result); }
  • MCP tool registration definition including name, description, annotations, and inputSchema for get_warmup_analytics.
    { name: 'get_warmup_analytics', title: 'Warmup Analytics', description: 'Get warmup metrics for account(s)', annotations: { readOnlyHint: true }, inputSchema: { type: 'object', properties: { emails: { type: 'array', items: { type: 'string' }, description: 'Account emails' }, email: { type: 'string', description: 'Single email (alternative)' }, start_date: { type: 'string', description: 'YYYY-MM-DD' }, end_date: { type: 'string', description: 'YYYY-MM-DD' } } } },
  • Zod TypeScript schema (GetWarmupAnalyticsSchema) defining input validation rules for emails array (1-100), optional date ranges using shared EmailSchema and DateFormatSchema.
    /** * Warmup analytics validation schema */ export const GetWarmupAnalyticsSchema = z.object({ emails: z.array(EmailSchema) .min(1, { message: 'At least one email address is required' }) .max(100, { message: 'Cannot specify more than 100 email addresses' }), start_date: DateFormatSchema.optional(), end_date: DateFormatSchema.optional() });
  • Helper validation function that applies GetWarmupAnalyticsSchema to input args via generic validateWithSchema utility, throwing McpError on failure.
    export function validateWarmupAnalyticsData(args: unknown): z.infer<typeof GetWarmupAnalyticsSchema> { return validateWithSchema(GetWarmupAnalyticsSchema, args, 'get_warmup_analytics');
  • Registration of the tool's validator in the central TOOL_VALIDATORS mapping object, enabling dynamic validation via validateToolParameters(toolName, args). Note: not directly called in handler but available system-wide.
    'get_warmup_analytics': validateWarmupAnalyticsData,

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bcharleson/Instantly-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server