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
988 lines • 24.6 kB
TypeScript
export interface CakemailConfig {
email: string;
password: string;
baseUrl?: string;
debug?: boolean;
}
export interface CakemailToken {
access_token: string;
token_type: string;
expires_in: number;
refresh_token: string;
accounts: number[];
}
export interface CakemailErrorResponse {
error: string;
error_description?: string;
message?: string;
}
export interface ApiResponse<T = any> {
data?: T;
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
meta?: any;
}
export interface CampaignsResponse {
data: Campaign[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
export interface CampaignResponse {
data: Campaign;
}
export interface CreateCampaignResponse {
data: Campaign;
}
export interface PatchCampaignResponse {
data: Campaign;
}
export interface DeleteCampaignResponse {
data: {
id: number;
deleted: boolean;
};
}
export interface ContactsResponse {
data: Contact[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
export interface ContactResponse {
data: Contact;
}
export interface CreateContactResponse {
data: Contact;
}
export interface ListsResponse {
data: ContactList[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
export interface ListResponse {
data: ContactList;
}
export interface CreateListResponse {
data: ContactList;
}
export interface SendersResponse {
data: Sender[];
}
export interface SenderResponse {
data: Sender;
}
export interface CreateSenderResponse {
data: Sender;
}
export interface TemplatesResponse {
data: Template[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
export interface TemplateResponse {
data: Template;
}
export interface CreateTemplateResponse {
data: Template;
}
export interface EmailResponse {
email: string;
object: string;
submitted: boolean;
data: {
id: string;
status: 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
metadata?: any;
};
}
export interface EmailStatusResponse {
data: {
id: string;
status: 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
email: string;
to_name?: string;
sender_id?: string;
subject?: string;
submitted_on?: string;
delivered_on?: string;
opened_on?: string;
clicked_on?: string;
bounced_on?: string;
rejected_reason?: string;
error_message?: string;
metadata?: any;
[key: string]: any;
};
}
export interface EmailAPILogEntry {
id: string;
email_id: string;
type: 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
time: number;
submitted_time?: number;
provider?: string;
metadata?: any;
[key: string]: any;
}
export interface EmailAPILogsResponse {
data: EmailAPILogEntry[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
export interface EmailAPIStatsEntry {
time: number;
submitted?: number;
queued?: number;
delivered?: number;
rejected?: number;
error?: number;
open?: number;
click?: number;
bounce?: number;
spam?: number;
unsubscribe?: number;
global_unsubscribe?: number;
[key: string]: any;
}
export interface EmailAPIStatsResponse {
data: EmailAPIStatsEntry[];
interval?: 'hour' | 'day' | 'week' | 'month';
start_time?: number;
end_time?: number;
}
export interface AccountResponse {
data: {
id: number;
name: string;
email: string;
type?: string;
[key: string]: any;
};
}
export interface PatchAccountResponse {
data: {
id: number;
name: string;
email: string;
type?: string;
[key: string]: any;
};
}
export interface SubAccount {
id: string;
name: string;
email: string;
status: 'pending' | 'active' | 'suspended' | 'inactive';
type?: 'organization' | 'individual';
partner_account_id?: number;
created_on?: string;
updated_on?: string;
verified?: boolean;
company?: string;
language?: string;
timezone?: string;
country?: string;
phone?: string;
website?: string;
description?: string;
[key: string]: any;
}
export interface SubAccountsResponse {
data: SubAccount[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
export interface SubAccountResponse {
data: SubAccount;
}
export interface CreateSubAccountResponse {
data: SubAccount;
}
export interface PatchSubAccountResponse {
data: SubAccount;
}
export interface DeleteSubAccountResponse {
data: {
id: string;
deleted: boolean;
};
}
export interface SuspendSubAccountResponse {
id: string;
object: string;
suspended: boolean;
data: {
id: string;
status: 'suspended';
suspended_on: string;
};
}
export interface UnsuspendSubAccountResponse {
id: string;
object: string;
unsuspended: boolean;
data: {
id: string;
status: 'active';
unsuspended_on: string;
};
}
export interface ConfirmSubAccountResponse {
data: SubAccount;
}
export interface ResendSubAccountVerificationResponse {
object: string;
verification_resent: boolean;
}
export interface CreateSubAccountData {
name: string;
email: string;
password: string;
company?: string | undefined;
language?: string | undefined;
timezone?: string | undefined;
country?: string | undefined;
phone?: string | undefined;
website?: string | undefined;
description?: string | undefined;
[key: string]: any;
}
export interface UpdateSubAccountData {
name?: string;
email?: string;
company?: string;
language?: string;
timezone?: string;
country?: string;
phone?: string;
website?: string;
description?: string;
[key: string]: any;
}
export interface ConfirmSubAccountData {
confirmation_code: string;
password?: string | undefined;
}
export interface ResendVerificationEmailData {
email: string;
}
export interface ConvertSubAccountData {
migrate_owner?: boolean;
}
export interface CampaignStats {
sent_count?: number;
delivered_count?: number;
bounce_count?: number;
hard_bounce_count?: number;
soft_bounce_count?: number;
open_count?: number;
unique_open_count?: number;
open_rate?: number;
click_count?: number;
unique_click_count?: number;
click_rate?: number;
unsubscribe_count?: number;
unsubscribe_rate?: number;
spam_complaint_count?: number;
spam_complaint_rate?: number;
delivery_rate?: number;
[key: string]: any;
}
export interface CampaignLinkStats {
link: string;
unique: number;
total: number;
[key: string]: any;
}
export interface EmailStats {
sent_count?: number;
delivered_count?: number;
bounce_count?: number;
open_count?: number;
click_count?: number;
spam_complaint_count?: number;
[key: string]: any;
}
export interface ListStats {
subscriber_count?: number;
active_count?: number;
unsubscribed_count?: number;
bounced_count?: number;
growth_rate?: number;
[key: string]: any;
}
export interface AccountStats {
campaigns_sent?: number;
emails_sent?: number;
total_opens?: number;
total_clicks?: number;
total_bounces?: number;
total_unsubscribes?: number;
[key: string]: any;
}
export interface ActionStats {
executions?: number;
success_rate?: number;
average_duration?: number;
[key: string]: any;
}
export interface CampaignReportExport {
id: string;
status: 'processing' | 'completed' | 'failed';
progress?: number;
created_on?: string;
completed_on?: string;
download_url?: string;
[key: string]: any;
}
export interface SuppressedEmailsExport {
id: string;
status: 'processing' | 'completed' | 'failed';
description?: string;
created_on?: string;
completed_on?: string;
download_url?: string;
[key: string]: any;
}
export interface CampaignStatsResponse {
data: CampaignStats;
}
export interface CampaignLinksStatsResponse {
data: CampaignLinkStats[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
export interface EmailStatsResponse {
data: EmailStats;
}
export interface ListStatsResponse {
data: ListStats;
}
export interface AccountStatsResponse {
data: AccountStats;
}
export interface ActionStatsResponse {
data: ActionStats;
}
export interface CampaignsReportsExportsResponse {
data: CampaignReportExport[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
export interface CreateCampaignReportExportResponse {
data: CampaignReportExport;
}
export interface GetCampaignReportExportResponse {
data: CampaignReportExport;
}
export interface DeleteCampaignReportExportResponse {
data: {
id: string;
deleted: boolean;
};
}
export interface DownloadCampaignReportExportResponse {
data: {
download_url: string;
expires_at?: string;
};
}
export interface SuppressedEmailsExportsResponse {
data: SuppressedEmailsExport[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
export interface CreateSuppressedEmailsExportResponse {
data: SuppressedEmailsExport;
}
export interface GetSuppressedEmailsExportResponse {
data: SuppressedEmailsExport;
}
export interface DeleteSuppressedEmailsExportResponse {
data: {
id: string;
deleted: boolean;
};
}
export interface DownloadSuppressedEmailsExportResponse {
data: {
download_url: string;
expires_at?: string;
};
}
export interface CreateCampaignReportExportData {
campaign_ids?: string[];
start_date?: string;
end_date?: string;
format?: 'csv' | 'xlsx';
fields?: string[];
[key: string]: any;
}
export interface ReportFilters {
status?: string;
progress?: string;
[key: string]: any;
}
export interface SubAccountFilters {
name?: string | undefined;
status?: 'pending' | 'active' | 'suspended' | 'inactive' | undefined;
type?: 'organization' | 'individual' | undefined;
partner_account_id?: number | undefined;
}
export interface HTTPBadRequestError {
detail: string;
}
export interface ValidationErrorDetail {
loc: (string | number)[];
msg: string;
type: string;
}
export interface HTTPValidationError {
detail: ValidationErrorDetail[];
}
export interface PaginationParams {
page?: number | undefined;
per_page?: number | undefined;
with_count?: boolean | undefined;
}
export interface SortParams {
sort?: string | undefined;
order?: 'asc' | 'desc' | undefined;
}
export interface Campaign {
id: number;
name: string;
subject?: string;
html_content?: string;
text_content?: string;
status?: 'active' | 'delivering' | 'delivered' | 'archived' | 'deleted' | 'incomplete' | 'scheduled';
list_id?: number;
sender_id?: number;
from_name?: string;
reply_to?: string;
created_on?: string;
updated_on?: string;
scheduled_for?: string;
scheduled_on?: string;
type?: string;
}
export interface CreateCampaignData {
name: string;
subject?: string;
html_content?: string | undefined;
text_content?: string | undefined;
json_content?: any;
list_id?: string | number;
sender_id?: string | number;
from_name?: string | undefined;
reply_to?: string | undefined;
template_id?: string | number;
content_type?: 'html' | 'text' | 'bee' | 'custom';
}
export interface UpdateCampaignData {
name?: string;
subject?: string;
html_content?: string;
text_content?: string;
from_name?: string;
reply_to?: string;
}
export interface CampaignFilters {
status?: string | undefined;
name?: string | undefined;
type?: string | undefined;
list_id?: string | undefined;
}
export interface Contact {
id: number;
email: string;
first_name?: string;
last_name?: string;
status?: string;
subscribed_on?: string;
custom_fields?: Record<string, any>;
}
export interface CreateContactData {
email: string;
first_name?: string;
last_name?: string;
list_id: string | number;
custom_fields?: Record<string, any>;
}
export interface UpdateContactData {
email?: string;
first_name?: string;
last_name?: string;
custom_fields?: Record<string, any>;
}
export interface ContactList {
id: number;
name: string;
description?: string;
language?: string;
created_on?: string;
updated_on?: string;
}
export interface CreateListData {
name: string;
description?: string;
language?: string;
}
export interface UpdateListData {
name?: string;
description?: string;
language?: string;
}
export interface Sender {
id: number;
name: string;
email: string;
language?: string;
verified?: boolean;
confirmed?: boolean;
created_on?: string;
}
export interface CreateSenderData {
name: string;
email: string;
language?: string;
}
export interface UpdateSenderData {
name?: string;
email?: string;
language?: string;
}
export interface TemplateContent {
type: 'html' | 'text' | 'bee' | 'custom';
subject?: string;
html?: string;
text?: string;
json?: any;
}
export interface Template {
id: number;
name: string;
description?: string;
created_on?: number;
updated_on?: number;
tags?: string[];
is_owner?: boolean;
sharing?: {
shared: boolean;
accounts?: any[];
automatic?: boolean;
};
thumbnail?: string;
thumbnail_url?: string;
content: TemplateContent;
subject?: string;
html_content?: string;
text_content?: string;
}
export interface CreateTemplateData {
name: string;
description?: string;
content?: TemplateContent;
tags?: string[];
account_id?: number;
subject?: string;
html_content?: string;
text_content?: string;
}
export interface UpdateTemplateData {
name?: string;
description?: string;
content?: TemplateContent;
tags?: string[];
account_id?: number;
subject?: string;
html_content?: string;
text_content?: string;
}
export type LogTypeV2 = 'all' | 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
export type EmailStatus = 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
export type IntervalEnum = 'hour' | 'day' | 'week' | 'month';
/**
* Request schema for POST /v2/emails
* Matches the complete v2 API specification
*/
export interface SubmitEmailRequest {
sender: {
id: string;
name?: string;
};
content: {
subject: string;
html?: string;
text?: string;
template?: {
id: number;
};
encoding?: string;
custom_attributes?: Array<{
name: string;
value: string;
}>;
type?: 'marketing' | 'transactional';
markup?: Record<string, any>;
};
email: string;
list_id?: number;
contact_id?: number;
tags?: string[];
tracking?: {
opens?: boolean;
clicks_html?: boolean;
clicks_text?: boolean;
};
additional_headers?: Array<{
name: string;
value: string;
}>;
attachment?: Array<{
filename: string;
type: string;
content: string;
}>;
}
/**
* Response schema for POST /v2/emails
* Matches the SubmitEmailResponse schema from OpenAPI spec
*/
export interface SubmitEmailResponse {
email: string;
object: string;
submitted: boolean;
data: {
id: string;
status: EmailStatus;
metadata?: any;
};
}
/**
* Response schema for GET /v2/emails/{email_id}
* Matches the GetEmailResponse schema from OpenAPI spec
*/
export interface GetEmailResponse {
data: {
id: string;
status: EmailStatus;
email: string;
to_name?: string;
sender_id?: string;
subject?: string;
submitted_on?: string;
delivered_on?: string;
opened_on?: string;
clicked_on?: string;
bounced_on?: string;
rejected_reason?: string;
error_message?: string;
metadata?: any;
[key: string]: any;
};
}
/**
* Enhanced Email API Log Entry
* Updated to match v2 API specification
*/
export interface EmailAPILogEntryV2 {
id: string;
email_id: string;
type: LogTypeV2;
time: number;
submitted_time?: number;
provider?: string;
metadata?: any;
additional_info?: any;
link_id?: string;
contact_id?: string;
email?: string;
[key: string]: any;
}
/**
* Enhanced Email API Logs Response
*/
export interface EmailAPILogsResponseV2 {
data: EmailAPILogEntryV2[];
pagination?: {
count?: number;
page?: number;
per_page?: number;
total_pages?: number;
};
}
/**
* Enhanced Email API Stats Entry
*/
export interface EmailAPIStatsEntryV2 {
time: number;
submitted?: number;
queued?: number;
delivered?: number;
rejected?: number;
error?: number;
open?: number;
click?: number;
bounce?: number;
spam?: number;
unsubscribe?: number;
global_unsubscribe?: number;
[key: string]: any;
}
/**
* Enhanced Email API Stats Response
*/
export interface EmailAPIStatsResponseV2 {
data: EmailAPIStatsEntryV2[];
interval?: IntervalEnum;
start_time?: number;
end_time?: number;
}
/**
* Filter condition for recursive filtering
*/
export interface FilterCondition {
operator: 'and' | 'or' | 'not' | 'is';
value: string | FilterCondition[];
}
/**
* Email log analysis result
*/
export interface EmailLogAnalysis {
totalEvents: number;
eventBreakdown: Record<string, number>;
deliveryRate: number;
engagementRate: number;
issueRate: number;
recommendations: string[];
}
/**
* Smart filter types for common use cases
*/
export type SmartFilterType = 'engagement' | 'critical_issues' | 'temporary_failures' | 'list_cleanup';
/**
* Email API Error with additional context
*/
export interface EmailAPIErrorDetails {
code: string;
message: string;
field?: string;
value?: any;
suggestion?: string;
}
export interface EmailData {
email: string;
sender: {
id: string;
name?: string;
};
content: {
subject: string;
html?: string;
text?: string;
template?: {
id: number;
};
encoding?: string;
custom_attributes?: Array<{
name: string;
value: string;
}>;
type?: 'marketing' | 'transactional';
markup?: Record<string, any>;
};
list_id?: number;
contact_id?: number;
tags?: string[];
tracking?: {
opens?: boolean;
clicks_html?: boolean;
clicks_text?: boolean;
};
additional_headers?: Array<{
name: string;
value: string;
}>;
attachment?: Array<{
filename: string;
type: string;
content: string;
}>;
}
export type EmailResponseType = SubmitEmailResponse;
export type EmailStatusResponseType = GetEmailResponse;
export type EmailAPILogsResponseUnified = EmailAPILogsResponse;
export type EmailAPIStatsResponseUnified = EmailStatsResponse;
export interface GetCampaignsParams extends PaginationParams, SortParams, CampaignFilters {
account_id?: number | undefined;
}
export interface ListSubAccountsParams {
partner_account_id?: number | undefined;
recursive?: boolean | undefined;
filters?: SubAccountFilters;
pagination?: PaginationParams;
sort?: SortParams;
}
export interface CreateSubAccountOptions {
partner_account_id?: number | undefined;
skip_verification?: boolean | undefined;
}
export interface WorkflowActionLogsParams {
account_id?: number | undefined;
page?: number | undefined;
per_page?: number | undefined;
with_count?: boolean | undefined;
start_time?: number | undefined;
end_time?: number | undefined;
filter?: string | undefined;
}
export interface WorkflowLogsParams {
account_id?: number | undefined;
page?: number | undefined;
per_page?: number | undefined;
with_count?: boolean | undefined;
sort?: string | undefined;
order?: 'asc' | 'desc' | undefined;
start_time?: number | undefined;
end_time?: number | undefined;
filter?: string | undefined;
}
export interface TransactionalEmailLogsParams {
log_type?: string | undefined;
account_id?: number | undefined;
page?: number | undefined;
per_page?: number | undefined;
with_count?: boolean | undefined;
sort?: string | undefined;
order?: 'asc' | 'desc' | undefined;
start_time?: number | undefined;
end_time?: number | undefined;
filter?: string | undefined;
email_id?: string | undefined;
sender_id?: string | undefined;
status?: string | undefined;
}
export interface ListLogsParams {
account_id?: number | undefined;
page?: number | undefined;
per_page?: number | undefined;
with_count?: boolean | undefined;
start_time?: number | undefined;
end_time?: number | undefined;
filter?: string | undefined;
}
export interface DebugLogsAccessParams {
campaign_id?: string | undefined;
workflow_id?: string | undefined;
}
export interface CreateCampaignRequest {
name: string;
list_id?: string | number;
segment_id?: string | number;
sender_id?: string | number;
from_name?: string;
reply_to?: string;
subject?: string;
html_content?: string;
text_content?: string;
json_content?: any;
template_id?: string | number;
blueprint_id?: string | number;
content_type?: 'html' | 'text' | 'bee' | 'custom';
encoding?: string;
default_unsubscribe_link?: boolean;
tracking?: {
opens?: boolean;
clicks_html?: boolean;
clicks_text?: boolean;
additional_params?: string;
};
}
export interface UpdateCampaignRequest {
name?: string;
sender_id?: string | number;
from_name?: string;
reply_to?: string;
subject?: string;
html_content?: string;
text_content?: string;
json_content?: any;
template_id?: string | number;
blueprint_id?: string | number;
content_type?: 'html' | 'text' | 'bee' | 'custom';
encoding?: string;
default_unsubscribe_link?: boolean;
tracking?: {
opens?: boolean;
clicks_html?: boolean;
clicks_text?: boolean;
additional_params?: string;
};
}
export interface ScheduleCampaignRequest {
scheduled_for?: string;
}
export interface SendTestEmailRequest {
emails: string[];
}
export interface EmailLogsParams {
email_id?: string;
start_time?: number;
end_time?: number;
log_type?: 'all' | 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
page?: number;
per_page?: number;
sort?: string;
iso_time?: boolean;
providers?: string;
tags?: string;
}
export interface EmailStatsParams {
start_time?: number;
end_time?: number;
interval?: IntervalEnum;
iso_time?: boolean;
providers?: string;
tags?: string;
}
//# sourceMappingURL=cakemail-types.d.ts.map