update-template
Modify an existing email template by updating its name, subject, content, or category to maintain accurate and current email communications.
Instructions
Update an existing email template
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | ID of the template to update | |
| name | No | New name for the template | |
| subject | No | New email subject line | |
| html | No | New HTML content of the template | |
| text | No | New plain text version of the template | |
| category | No | New category for the template |
Implementation Reference
- The main handler function for the 'update-template' tool. It validates inputs, calls the Mailtrap API to update the template, and returns success or error messages.import { UpdateTemplateRequest } from "../../types/mailtrap"; import { client } from "../../client"; async function updateTemplate({ template_id, name, subject, html, text, category, }: UpdateTemplateRequest): Promise<{ content: any[]; isError?: boolean }> { try { if (!client) { throw new Error("MAILTRAP_API_TOKEN environment variable is required"); } // Validate that at least one update field is provided if ( name === undefined && subject === undefined && html === undefined && text === undefined && category === undefined ) { return { content: [ { type: "text", text: "Error: At least one update field (name, subject, html, text, or category) must be provided", }, ], isError: true, }; } // Validate that if both html and text are being updated, at least one has content if (html !== undefined && text !== undefined && !html && !text) { return { content: [ { type: "text", text: "Error: If updating both html and text, at least one must have content", }, ], isError: true, }; } const updateData: any = {}; if (name !== undefined) updateData.name = name; if (subject !== undefined) updateData.subject = subject; if (html !== undefined) updateData.body_html = html; if (text !== undefined) updateData.body_text = text; if (category !== undefined) updateData.category = category; const template = await client.templates.update(template_id, updateData); return { content: [ { type: "text", text: `Template "${template.name}" updated successfully!\nTemplate ID: ${template.id}\nTemplate UUID: ${template.uuid}`, }, ], }; } catch (error) { console.error("Error updating template:", error); const errorMessage = error instanceof Error ? error.message : String(error); return { content: [ { type: "text", text: `Failed to update template: ${errorMessage}`, }, ], isError: true, }; } } export default updateTemplate;
- The input schema for the 'update-template' tool, defining the expected parameters with descriptions and requiring template_id.const updateTemplateSchema = { type: "object", properties: { template_id: { type: "number", description: "ID of the template to update", }, name: { type: "string", description: "New name for the template", }, subject: { type: "string", description: "New email subject line", }, html: { type: "string", description: "New HTML content of the template", }, text: { type: "string", description: "New plain text version of the template", }, category: { type: "string", description: "New category for the template", }, }, required: ["template_id"], additionalProperties: false, }; export default updateTemplateSchema;
- src/server.ts:64-72 (registration)Registration of the 'update-template' tool in the MCP server tools array, specifying name, description, input schema, handler, and annotations.{ name: "update-template", description: "Update an existing email template", inputSchema: updateTemplateSchema, handler: updateTemplate, annotations: { destructiveHint: true, }, },