Skip to main content
Glama

send_custom_email

Send personalized emails programmatically through PocketBase integration. This tool facilitates communication by customizing and delivering emails directly from the MCP server.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Core handler function that sends custom email using nodemailer transporter and logs to PocketBase email_logs collection.
    async sendCustomEmail(data: { to: string; from?: string; subject: string; html: string; text?: string; }): Promise<EmailLog> { try { // Send email const info = await this.transporter.sendMail({ from: data.from || process.env.SMTP_USER || process.env.DEFAULT_FROM_EMAIL, to: data.to, subject: data.subject, html: data.html, text: data.text, }); // Log email const emailLog = await this.pb.collection('email_logs').create({ to: data.to, from: data.from || process.env.SMTP_USER || process.env.DEFAULT_FROM_EMAIL, subject: data.subject, status: 'sent', }); return emailLog as unknown as EmailLog; } catch (error: any) { // Log failed email const emailLog = await this.pb.collection('email_logs').create({ to: data.to, from: data.from || process.env.SMTP_USER || process.env.DEFAULT_FROM_EMAIL, subject: data.subject, status: 'failed', error: error.message, }); throw new Error(`Failed to send custom email: ${error.message}`); } }
  • MCP server tool registration for 'send_custom_email' including input schema validation with zod and wrapper handler that invokes EmailService.sendCustomEmail
    this.server.tool( 'send_custom_email', { description: 'Send a custom email with specified content', inputSchema: { to: z.string().email().describe('Recipient email address'), from: z.string().email().optional().describe('Sender email address'), subject: z.string().describe('Email subject'), html: z.string().describe('HTML email body'), text: z.string().optional().describe('Plain text email body') } }, async ({ to, from, subject, html, text }) => { // Lazy load Email service await this.ensureEmailService(); if (!this.emailService) { throw new Error('Email service not available. Please configure EMAIL_SERVICE or SMTP settings.'); } try { const result = await this.emailService.sendCustomEmail({ to, from, subject, html, text }); return { content: [{ type: 'text', text: JSON.stringify({ success: true, emailLog: { id: result.id, to: result.to, subject: result.subject, status: result.status, sentAt: result.created } }, null, 2) }] }; } catch (error: any) { throw new Error(`Failed to send email: ${error.message}`); } } );
  • TypeScript type definition/schema for the sendCustomEmail method parameters.
    sendCustomEmail(data: { to: string; from?: string; subject: string; html: string; text?: string; }): Promise<EmailLog>;
  • Another MCP tool registration for 'send_custom_email' in the best-practices agent with similar schema and handler.
    { to: EmailAddressSchema, from: EmailAddressSchema.optional(), subject: z.string().describe('Email subject'), htmlBody: z.string().optional().describe('HTML email body'), textBody: z.string().optional().describe('Plain text email body') }, async ({ to, from, subject, htmlBody, textBody }) => { try { if (!this.emailService) { return this.createErrorResponse('Email service not available'); } const result = await this.emailService.sendCustomEmail({ to, from, subject, html: htmlBody || '', text: textBody }); return { content: [{ type: 'text', text: JSON.stringify({ success: true, emailLog: { id: result.id, to: result.to, subject: result.subject, status: result.status, sentAt: result.created } }, null, 2) }] }; } catch (error) { return this.createErrorResponse(error); } } );
  • JSON schema for send_custom_email tool in worker tools list for discovery.
    { name: 'send_custom_email', description: 'Send a custom email with specified content', inputSchema: { type: 'object', properties: { to: { type: 'string', format: 'email', description: 'Recipient email address' }, from: { type: 'string', format: 'email', description: 'Sender email address' }, subject: { type: 'string', description: 'Email subject' }, html: { type: 'string', description: 'HTML email body' }, text: { type: 'string', description: 'Plain text email body' } }, required: ['to', 'subject', 'html'] } }

Other Tools

Related Tools

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/DynamicEndpoints/pocketbase-mcp-server'

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