cakemail-mcp-server
Version:
Enterprise MCP server for Cakemail API integration with Claude AI - includes comprehensive template management, list management, sub-account management, BEEeditor visual email design, and advanced analytics
245 lines • 8.71 kB
JavaScript
// Template Tools Configuration
export const templateTools = [
{
name: 'cakemail_list_templates',
description: 'List available templates with filtering, sorting and pagination',
inputSchema: {
type: 'object',
properties: {
page: {
type: 'number',
description: 'Page number for pagination (default: 1)',
minimum: 1
},
per_page: {
type: 'number',
description: 'Number of templates per page (default: 50, max: 100)',
minimum: 1,
maximum: 100
},
with_count: {
type: 'boolean',
description: 'Include total count in response'
},
filter: {
type: 'string',
description: 'Filter templates using syntax: term==value;term2==value2. Valid terms: tag, name, is_owner, is_not_owner'
},
sort: {
type: 'string',
description: 'Sort field with direction using syntax [-|+]term. Valid terms: id, created_on, updated_on, name',
default: 'id'
},
account_id: {
type: 'number',
description: 'Optional account ID for scoped access'
}
}
}
},
{
name: 'cakemail_create_template',
description: 'Create a new email template',
inputSchema: {
type: 'object',
properties: {
name: {
type: 'string',
description: 'Template name',
minLength: 1
},
description: {
type: 'string',
description: 'Template description (optional)'
},
content: {
type: 'object',
description: 'Template content object',
properties: {
type: {
type: 'string',
description: 'Content type',
enum: ['html', 'text', 'bee', 'custom']
},
subject: {
type: 'string',
description: 'Email subject line'
},
html: {
type: 'string',
description: 'HTML content',
minLength: 1
},
text: {
type: 'string',
description: 'Plain text content',
minLength: 1
},
json: {
type: 'object',
description: 'JSON content for advanced templates'
}
},
required: ['type']
},
tags: {
type: 'array',
description: 'Template tags for organization',
items: {
type: 'string'
}
},
account_id: {
type: 'number',
description: 'Optional account ID for scoped access'
}
},
required: ['name', 'content']
}
},
{
name: 'cakemail_get_template',
description: 'Get details of a specific template',
inputSchema: {
type: 'object',
properties: {
template_id: {
type: ['string', 'number'],
description: 'Template ID to retrieve'
},
account_id: {
type: 'number',
description: 'Optional account ID for scoped access'
}
},
required: ['template_id']
}
},
{
name: 'cakemail_update_template',
description: 'Update an existing template',
inputSchema: {
type: 'object',
properties: {
template_id: {
type: ['string', 'number'],
description: 'Template ID to update'
},
name: {
type: 'string',
description: 'Updated template name',
minLength: 1
},
description: {
type: 'string',
description: 'Updated template description'
},
content: {
type: 'object',
description: 'Updated template content object',
properties: {
type: {
type: 'string',
description: 'Content type',
enum: ['html', 'text', 'bee', 'custom']
},
subject: {
type: 'string',
description: 'Email subject line'
},
html: {
type: 'string',
description: 'HTML content',
minLength: 1
},
text: {
type: 'string',
description: 'Plain text content',
minLength: 1
},
json: {
type: 'object',
description: 'JSON content for advanced templates'
}
}
},
tags: {
type: 'array',
description: 'Updated template tags',
items: {
type: 'string'
}
},
account_id: {
type: 'number',
description: 'Optional account ID for scoped access'
}
},
required: ['template_id']
}
},
{
name: 'cakemail_delete_template',
description: 'Delete a template (permanent action)',
inputSchema: {
type: 'object',
properties: {
template_id: {
type: ['string', 'number'],
description: 'Template ID to delete'
},
account_id: {
type: 'number',
description: 'Optional account ID for scoped access'
}
},
required: ['template_id']
}
},
{
name: 'cakemail_duplicate_template',
description: 'Create a copy of an existing template',
inputSchema: {
type: 'object',
properties: {
template_id: {
type: ['string', 'number'],
description: 'Template ID to duplicate'
},
new_name: {
type: 'string',
description: 'Name for the duplicated template',
minLength: 1
},
new_description: {
type: 'string',
description: 'Description for the duplicated template (optional, will auto-generate if not provided)'
},
account_id: {
type: 'number',
description: 'Optional account ID for scoped access'
}
},
required: ['template_id', 'new_name']
}
},
{
name: 'cakemail_render_template',
description: 'Render a template to get HTML preview',
inputSchema: {
type: 'object',
properties: {
template_id: {
type: ['string', 'number'],
description: 'Template ID to render'
},
account_id: {
type: 'number',
description: 'Optional account ID for scoped access'
}
},
required: ['template_id']
}
}
];
//# sourceMappingURL=template-tools.js.map