Mailmodo
Officialmailmodo-mcp
这是一个 TypeScript 项目,它实现了一个消息控制协议 (MCP) 服务器,用于 Mailmodo 与 Claude Desktop 和其他 MCP 支持的客户端的集成。
先决条件
Node.js(建议使用 v20 或更高版本)
npm(Node.js 附带)
Related MCP server: MJML MCP Server
安装
通过 Smithery 安装
要通过Smithery自动为 Claude Desktop 安装 Mailmodo 集成服务器:
npx -y @smithery/cli install @mailmodo/mailmodo-mcp --client claude手动安装
克隆存储库:
git clone https://github.com/mailmodo/mailmodo-mcp.git
cd mailmodo-mcp安装依赖项:
npm install构建项目
要将 TypeScript 代码编译为 JavaScript,请运行:
npm run build这将创建一个包含已编译的 JavaScript 文件的dist目录。
运行项目
构建完成后,您可以使用以下命令运行项目:
node dist/index.js或者使用 npm 脚本:
npm startClaude桌面配置
从代码本地运行
要使用 Claude Desktop 配置此项目,请将以下配置添加到您的 Claude Desktop 设置中:
{
"mcpServers": {
"mailmodo": {
"command": "node",
"args": [
"/path/to/your/mailmodo-mcp/dist/index.js"
]
}
}
}从 docker 镜像运行
{
"mcpServers": {
"mailmodo": {
"command": "docker",
"args": [
"run",
"--platform",
"linux/amd64",
"-i",
"--rm",
"-e",
"MAILMODO_API_KEY",
"avneesh001/mailmodo-mcp"
],
"env": {
"MAILMODO_API_KEY": "<GET MAILMODO KEY from https://manage.mailmodo.com/app/settings/apikey and insert here>"
}
}
}
}从 npx 运行
{
"mcpServers": {
"mailmodo": {
"command": "npx",
"args": [
"-y",
"@mailmodo/mcp"
],
"env": {
"MAILMODO_API_KEY": "<GET MAILMODO KEY from https://manage.mailmodo.com/app/settings/apikey and insert here>"
}
}
}
}通过远程服务器连接
{
"mcpServers": {
"mailmodo": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.app.mailmodo.com/mcp",
"--header",
"mmApiKey:${MAILMODO_API_KEY}"
],
"env": {
"MAILMODO_API_KEY": "<GET MAILMODO KEY from https://manage.mailmodo.com/app/settings/apikey and insert here>"
}
}
}
}确保调整args数组中的文件路径以匹配您的本地项目目录。
发展
要在开发模式下运行自动重新编译的项目:
安装
ts-node和nodemon作为开发依赖项:
npm install --save-dev ts-node nodemon将 dev 脚本添加到你的 package.json 中:
{
"scripts": {
"dev": "nodemon src/index.ts",
"build": "tsc",
"start": "node dist/index.js"
}
}运行开发服务器:
npm run dev项目结构
mailmodo-mcp/
├── src/ # TypeScript source files
├── dist/ # Compiled JavaScript files
├── package.json # Project dependencies and scripts
└── tsconfig.json # TypeScript configuration工具和资源
Mailmodo MCP 服务器提供了多种工具和资源,用于与 Mailmodo 的功能进行交互。以下是完整列表:
资源
Mailmodo 模板(
mailmodo://templates)以 JSON 格式返回所有可用电子邮件模板的列表
MIME 类型:application/json
Mailmodo 营销活动(
mailmodo://campaigns)以 JSON 格式返回所有活动的列表
MIME 类型:application/json
Mailmodo 联系人列表(
mailmodo://contact-lists)以 JSON 格式返回所有联系人列表
MIME 类型:application/json
工具
用户详细信息
名称:
userDetails描述:获取联系人的所有详细信息
参数:
email(字符串):联系人的电子邮件地址
活动报告工具
名称:
MailmodoCampainReportTool描述:获取活动报告,包括打开、点击和提交计数
参数:
campaignId(UUID):营销活动的 IDfromDate(YYYY-MM-DD):报告的开始日期toDate(YYYY-MM-DD):报告的结束日期
当前日期时间
名称:
currentDateTime描述:获取当前日期和时间
参数:无
发送事件
名称:
sendEvent描述:使用电子邮件和事件属性发送自定义事件
参数:
email(字符串):联系人的电子邮件地址event_name(字符串):事件的名称ts(数字,可选):时间戳event_properties(对象,可选):附加事件属性
联系人列表管理
将联系人添加到列表
名称:
addContactToList描述:将单个联系人添加到列表
参数:
email(字符串):联系人的电子邮件listName(字符串):列表的名称data(对象,可选):联系人属性联系人元数据的各种可选字段
批量添加联系人
名称:
addBulkContactToList描述:通过一次操作将多个联系人添加到列表中
参数:
listName(字符串):列表的名称values(数组):联系人对象数组
从列表中删除联系人
名称:
removeContactFromList描述:从特定列表中删除联系人
参数:
email(字符串):联系人的电子邮件listName(字符串):列表的名称
联系状态管理
取消订阅联系方式
名称:
unsubscribeContact描述:取消订阅或隐藏联系人
参数:
email(字符串):联系人的电子邮件
重新订阅联系方式
名称:
resubscribeContact描述:重新订阅之前取消订阅的联系人
参数:
email(字符串):联系人的电子邮件
存档联系方式
名称:
archiveContact描述:永久存档联系人
参数:
email(字符串):联系人的电子邮件
营销活动管理
发送电子邮件活动
名称:
sendEmailToCampaign描述:触发个性化电子邮件活动
参数:
campaignId(字符串):广告系列 IDemail(字符串):收件人的电子邮件多种可选参数可供定制
广播活动
名称:
broadcastCampaignToList描述:向整个联系人列表触发活动
参数:
campaignId(字符串):广告系列 IDlistId(字符串):目标列表ID广告系列定制的可选参数
执照
Available Tools
12 toolsaddBulkContactToListC
Add Many Contact to a list in single API
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | ||
| listName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist. Description only says 'Add Many Contact' with no details on behavior such as error handling, idempotency, response format, or prerequisites (e.g., list existence). Lacks essential context beyond the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence is concise but omits critical details. The description is not well-structured to aid agent understanding; it lacks any structured breakdown of behavior or parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex nested input schema, lack of annotations, and no output schema, the description fails to provide adequate context. It does not cover return values, error scenarios, or constraints, making it insufficient for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for top-level parameters. Description adds no information about 'listName' or 'values'. The nested schema has field descriptions, but the tool description does not clarify parameter purpose or usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Add Many Contact to a list in single API', clearly indicating bulk addition. The name and brief description imply bulk operation, but does not explicitly differentiate from the sibling 'addContactToList' which likely handles single contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines provided. Does not specify when to use this tool versus alternatives like 'addContactToList'. Sibling names hint at single vs bulk, but no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
addContactToListD
Add Contact to list
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| Yes | |||
| listName | Yes | ||
| timezone | No | ||
| last_open | No | ||
| created_at | No | ||
| last_click | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no description of side effects, permission requirements, or behavior when a contact already exists, the tool is completely opaque. The agent cannot infer mutation or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but at the cost of necessary information. It fails to be concise in a meaningful way; it is under-specified and does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and an incomplete parameter set, the description is wholly inadequate. It fails to explain return values, error conditions, or when the operation succeeds.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning to the parameters. Although the input schema has descriptions for nested data fields, the top-level parameters (email, listName, created_at, etc.) remain undocumented. With 0% schema description coverage and 7 parameters, the lack of param information is a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Add Contact to list' is a tautology that merely restates the tool name without adding specificity or clarifying what kind of list or what scope. It offers no distinction from sibling tools like addBulkContactToList.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as addBulkContactToList or other contact management tools. The description omits any context about prerequisites, typical use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archiveContactC
permanently archive contact in mailmodo
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavior. It states 'permanently archive' but does not clarify whether the action is reversible, what effects it has on the contact's data, or if it triggers any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure. It is minimally acceptable for a one-parameter tool, but not well-fomatted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (one parameter, no output schema), the description should explain the semantics of 'archive' (e.g., whether it deletes, suppresses, or hides the contact). The presence of sibling tools makes this gap more significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'email' has no additional meaning beyond the schema type (string). The description does not provide format expectations, examples, or constraints, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (permanently archive contact) and the resource (contact in mailmodo). It distinguishes from siblings like removeContactFromList and unsubscribeContact, though the term 'permanently' could imply deletion, which may cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives such as removeContactFromList or unsubscribeContact. The description does not specify context or conditions for archiving.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcastCampaignToListC
The broadcast campaign API allows the user to trigger campaigns to the entire contact list using a single API request.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | Id of the contact list or segment for which the campaign should be triggered. | |
| subject | No | Optional subject line of the campaign. This will appear as the subject of the email sent to recipients. | |
| campaignId | Yes | Campaign id of the campaign to be triggered | |
| campaign_data | No | Optional set of personalization parameters for the campaign. Each key represents a variable (e.g., "first_name") to be used in the email template. If a key is missing, the backend will fetch values from contact properties or default to an empty string. | |
| idempotencyKey | No | Optional unique key to allow retries of the same campaign within 24 hours. Allows safe resending. For example: "2024-09-05T17:00:00Z". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It describes the action as triggering campaigns but fails to mention mutation, rate limits, idempotency details (despite the idempotencyKey parameter), or the behavior of personalization parameters. The description is insufficient for an agent to understand all side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence but includes redundant phrasing ('using a single API request' is implied by 'broadcast'). It is not optimally concise and lacks a title. It could be restructured to front-load key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, a nested object, no output schema, and no annotations, the description is too minimal. It does not cover return values, errors, prerequisites (e.g., campaign must exist), or the full scope of behavior. The schema covers parameters well, but the description fails to provide broader context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it only provides a high-level overview. The schema already explains each parameter, including the idempotencyKey and campaign_data object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool triggers campaigns to the entire contact list using a single API request. This distinguishes it from sibling tools like sendEmailToCampaign, though the mention of 'entire contact list' slightly conflicts with the possibility of using a segment via listId.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives. It mentions 'single API request' but offers no explicit when-to-use or when-not-to-use instructions, nor does it reference sibling tools or contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
currentDateTimeA
Get Current Date and time for timezone. if timezone is not passed default to UTC
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | The timezone should be a valid IANA timezone name like "America/New_York" or "Asia/Kolkata" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully carries burden. It clearly indicates a read operation returning date/time for a given timezone, with default behavior. However, it omits response format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose, no extraneous words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, no output schema), description covers core usage. Minor gap: no indication of response format, but agent can infer a datetime string.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with description for 'timezone'. Description adds value by stating default behavior not found in schema, providing meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get', the resource 'Current Date and time', and the scope 'for timezone'. No sibling tools perform similar function, making it easily distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains default behavior when timezone is omitted ('default to UTC'), but does not provide explicit when-to-use or when-not-to-use guidance compared to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
MailmodoCampainReportToolC
Tool to get the campaign reports for a particular campaign like open, click submission count etc
| Name | Required | Description | Default |
|---|---|---|---|
| toDate | Yes | ||
| fromDate | Yes | ||
| campaignId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states 'get' implying read-only, but does not specify authentication needs, rate limits, or whether the operation is destructive. The description is insufficient for behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure. It would benefit from being broken into separate statements for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three required parameters and no output schema, the description is incomplete. It does not explain what the tool returns, how the date range is applied, or any constraints. Missing essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has no descriptions for parameters and schema coverage is 0%. The description does not explain campaignId, fromDate, or toDate, despite mentioning campaign reports. It adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves campaign reports for a specific campaign, giving examples like open, click, submission count. This distinguishes it from sibling tools that send emails or manage contacts. However, it could be more precise about the exact metrics included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as when to use broadcastCampaignToList or userDetails. The description lacks explicit context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
removeContactFromListC
Remove a particular contact from the contact list
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| listName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description merely states 'remove', implying mutation, but with no annotations provided, it fails to disclose details such as side effects, irreversibility, or error handling (e.g., contact not found).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no extraneous information. However, it could be expanded slightly to cover parameters without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal tool with two required parameters and no output schema, the description provides the core purpose but omits details like expected parameter formats or return behavior. Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must add meaning. It implicitly maps 'contact' to the email parameter and 'contact list' to listName, but does not explicitly link to the schema fields, reducing clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('Remove') and the resource ('a particular contact from the contact list'), clearly distinguishing from sibling add tools. However, it does not explicitly reference the 'listName' parameter, leaving room for ambiguity about which list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., addContactToList, unsubscribeContact). The context of sibling tools is not leveraged to clarify appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resubscribeContactC
Resubscribe contact in mailmodo
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description merely states the action without explaining behavioral traits—such as whether it overwrites subscription status or requires a prior unsubscribed state. This is insufficient for an agent to understand side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (two words plus context), which is concise but lacks structure. It could be more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema and no output schema, the description should explain the action's effect, prerequisites, and possible return values. It only states 'Resubscribe contact in mailmodo', leaving many gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines one parameter 'email' (required, string) with 0% documentation coverage in the schema description. The tool description adds no extra meaning—no format, example, or constraint beyond the schema field name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Resubscribe contact in mailmodo', clearly indicating the action (resubscribe) and the resource (contact). However, it does not differentiate from sibling tools like 'unsubscribeContact' or 'addContactToList'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use resubscribeContact versus alternatives such as unsubscribeContact or addBulkContactToList. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendEmailToCampaignC
Trigger and email for email campaign trigger with personalization parameter added to the email template.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Optional: Personalization parameters saved to the contact's profile. | |
| Yes | Email address of the contact to whom you want to send the email. This is required. | ||
| replyTo | No | Optional: Overrides the default reply-to email address for the campaign. | |
| subject | No | Optional: Overrides the default subject line provided when creating the campaign. | |
| fromName | No | Optional: Overrides the sender name for the campaign. | |
| addToList | No | Optional: List ID to which the contact should be added as part of triggering the campaign. | |
| campaignId | Yes | Camapign id of the campaign to be triggered | |
| campaign_data | No | Optional: Transient personalization parameters, not stored in the contact profile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions personalization parameters but does not specify behavioral traits such as whether the email is sent immediately, if data is saved permanently, or if there are rate limits. Without annotations, more detail would be helpful, but the description provides some context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it is redundant and awkwardly phrased ('Trigger and email for email campaign trigger'). It could be more concise and clear without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, nested objects, and no output schema, the description is too short. It lacks information on return values, side effects, or how personalization and list addition work, leaving gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions, so the description adds minimal extra meaning. The phrase 'personalization parameter added' is already covered by the schema's campaign_data and data fields, yielding a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool triggers an email campaign with personalization for a single contact, which distinguishes it from sibling tools like broadcastCampaignToList. However, the phrasing is awkward and could be clearer, earning a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention that this is for individual triggering, nor does it explain when not to use it or how it relates to broadcasting or list management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendEventC
Send custom events with email, event name and event properties
| Name | Required | Description | Default |
|---|---|---|---|
| ts | No | ||
| Yes | |||
| event_name | Yes | ||
| event_properties | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, but the description provides minimal behavior details. It does not disclose authentication needs, rate limits, idempotency, or error handling. The action 'send' implies a mutation, but no confirmation or side effects are described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but omits important details. It front-loads the purpose but lacks structure and fails to elaborate on parameters, usage, or behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain return values, error conditions, or the effect of sending an event, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description only lists email, event name, and event properties, omitting the 'ts' parameter. It adds no detail on types, constraints, or the complex structure of event_properties beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends custom events with email, event name, and event properties. It distinguishes from sibling tools (e.g., sendEmailToCampaign) by focusing on events rather than email sending.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description lacks context on when it is appropriate to send events, and no comparisons to sibling tools are made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unsubscribeContactC
Unsubscribe or supress contact in mailmodo
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must carry behavioral disclosure. It only indicates a mutation (unsubscribe/suppress) but omits details like consequences, reversibility, or required permissions. This is insufficient for an agent to understand the tool's full impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it sacrifices necessary detail. It earns its place as a minimal statement but does not fully leverage the space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one param, no output schema), the description should at least explain the outcome of unsubscribing. It fails to provide enough context to distinguish from sibling tools or to set correct expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'email' is described only by its type in the schema (0% schema description coverage). The description adds no explanation about format, validation, or role, forcing the agent to infer its meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (unsubscribe or suppress) and the resource (contact in Mailmodo). The misspelling 'supress' is minor, but the purpose is unambiguous and distinguishes it from siblings like resubscribeContact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus related siblings (e.g., archiveContact, removeContactFromList). The agent receives no context for decision-making among similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
userDetailsC
Tool to get all details of a contact
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose side-effects, permissions, error handling, or output format. It only says 'get all details', omitting critical behavioral context like what happens if email is invalid or not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with the verb first. It is efficient but could be slightly more descriptive without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is lacking: no mention of return format, error states, or conditions. It fails to provide sufficient context for an agent to use it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no extra meaning to the 'email' parameter beyond its existence. No format, validation rules, or examples are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves all details of a contact, with the input being an email from the schema. It is distinct from sibling tools which are mainly mutation operations, but lacks specificity about what 'details' include.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no mention of prerequisites (e.g., email must exist), and no indication of context like read-only nature or when to prefer other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v1.0.0- First observed
addBulkContactToList - First observed
addContactToList - First observed
archiveContact - First observed
broadcastCampaignToList - First observed
currentDateTime - First observed
MailmodoCampainReportTool - First observed
removeContactFromList - First observed
resubscribeContact - First observed
sendEmailToCampaign - First observed
sendEvent - First observed
unsubscribeContact - First observed
userDetails
TDQS
Scored across 12 tools
Most tools target distinct resources and actions: contact list management, contact state changes, campaign triggers, and reports are clearly separated. Potential confusion exists between unsubscribe, archive, and remove-from-list, but descriptions clarify the different outcomes since archive is permanent and remove only affects list membership.
Most tools follow a camelCase verb_noun pattern (addContactToList, sendEvent, broadcastCampaignToList), but the first tool 'MailmodoCampainReportTool' breaks the convention with PascalCase and a 'Tool' suffix alert. Also, 'currentDateTime' and 'userDetails' are noun-first rather than verb-first, so the pattern is not fully consistent.
Twelve tools is a well-scoped surface for an email marketing/contact management server. Each tool covers a distinct operation without excessive granularity or obvious bloat.
The set covers contact lifecycle operations, list management, campaign triggering, and reports, but there are notable gaps. There is no way to create or update campaigns, list campaigns, or manage templates, and campaign report retrieval requires a campaign ID that cannot be discovered through the provided tools, leaving some workflows incomplete.
Maintenance
Related MCP Connectors
Email for AI agents: send mail, manage contacts, automations & webhooks. Zero-DNS first send.
Transactional email for AI agents: templates, domain verify, and sends.
Email for AI agents — send, receive as a webhook, manage domains, templates, routing.
- mailkiteOAuthdev.mailkite
Send email, manage domains, DNS, webhooks, templates, and inbound routing on MailKite
Related MCP Servers
- -licenseCqualityCmaintenanceGives on-the-fly inboxes to AI agents. Agents / LLM's can send, receive, and take action in isolated inboxes. Built for AI unlike Gmail. Check us out at agentmail.to10110-
- FlicenseAqualityDmaintenanceEnables creation and management of professional email templates using MJML markup language. Provides compilation to responsive HTML, template generation, validation, and component documentation for building email campaigns.42-
- AlicenseBqualityBmaintenanceEmail Automation - MCP server providing AI-powered tools and automation by MEOK AI Labs514 npm79 PyPIMIT
- AlicenseAqualityAmaintenanceMailKite offers email sending and receiving for agents at your domain or free inboxes Create inboxes for your agent Send emails from your agent Receive emails to your webhook Receive emails to your agent9246 npmMIT