Skip to main content
Glama
email-isv-tools.tsโ€ข3.83 kB
/** * GoHighLevel Email ISV (Verification) Tools * Implements email verification functionality for the MCP server */ import { Tool } from '@modelcontextprotocol/sdk/types.js'; import { GHLApiClient } from '../clients/ghl-api-client.js'; import { MCPVerifyEmailParams, GHLEmailVerificationResponse } from '../types/ghl-types.js'; /** * Email ISV Tools class * Provides email verification capabilities */ export class EmailISVTools { constructor(private ghlClient: GHLApiClient) {} /** * Get tool definitions for all Email ISV operations */ getToolDefinitions(): Tool[] { return [ { name: 'verify_email', description: 'Verify email address deliverability and get risk assessment. Charges will be deducted from the specified location wallet.', inputSchema: { type: 'object', properties: { locationId: { type: 'string', description: 'Location ID - charges will be deducted from this location wallet' }, type: { type: 'string', enum: ['email', 'contact'], description: 'Verification type: "email" for direct email verification, "contact" for contact ID verification' }, verify: { type: 'string', description: 'Email address to verify (if type=email) or contact ID (if type=contact)' } }, required: ['locationId', 'type', 'verify'] } } ]; } /** * Execute email ISV tools */ async executeTool(name: string, args: any): Promise<any> { switch (name) { case 'verify_email': return await this.verifyEmail(args as MCPVerifyEmailParams); default: throw new Error(`Unknown email ISV tool: ${name}`); } } /** * Verify email address or contact */ private async verifyEmail(params: MCPVerifyEmailParams): Promise<{ success: boolean; verification: GHLEmailVerificationResponse; message: string; }> { try { const result = await this.ghlClient.verifyEmail(params.locationId, { type: params.type, verify: params.verify }); if (!result.success || !result.data) { return { success: false, verification: { verified: false, message: 'Verification failed', address: params.verify } as any, message: result.error?.message || 'Email verification failed' }; } const verification = result.data; // Determine if this is a successful verification response const isVerified = 'result' in verification; let message: string; if (isVerified) { const verifiedResult = verification as any; message = `Email verification completed. Result: ${verifiedResult.result}, Risk: ${verifiedResult.risk}`; if (verifiedResult.reason && verifiedResult.reason.length > 0) { message += `, Reasons: ${verifiedResult.reason.join(', ')}`; } if (verifiedResult.leadconnectorRecomendation?.isEmailValid !== undefined) { message += `, Recommended: ${verifiedResult.leadconnectorRecomendation.isEmailValid ? 'Valid' : 'Invalid'}`; } } else { const notVerifiedResult = verification as any; message = `Email verification not processed: ${notVerifiedResult.message}`; } return { success: true, verification, message }; } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred'; return { success: false, verification: { verified: false, message: errorMessage, address: params.verify } as any, message: `Failed to verify email: ${errorMessage}` }; } } }

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/clickmediapropy/gohighlevel-mcp-server'

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