update-template
Modify existing email templates by updating name, subject, HTML content, text version, or category for transactional emails and testing.
Instructions
Update an existing email template
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | New category for the template | |
| html | No | New HTML content of the template | |
| name | No | New name for the template | |
| subject | No | New email subject line | |
| template_id | Yes | ID of the template to update | |
| text | No | New plain text version of the template |
Implementation Reference
- Handler function that updates an email template using the Mailtrap API client. Includes validation for required fields and error handling.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, }; } }
- JSON schema defining the input parameters for the update-template tool, requiring template_id and allowing optional updates to name, subject, html, text, category.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)Tool registration in the tools array, specifying name, description, input schema, handler, and destructive annotation.{ name: "update-template", description: "Update an existing email template", inputSchema: updateTemplateSchema, handler: updateTemplate, annotations: { destructiveHint: true, }, },