Mailmodo
OfficialThe Mailmodo MCP server enables comprehensive email marketing management, including:
Contact Management: Add, remove, update contacts and manage their status (unsubscribe, resubscribe, archive) in lists
Campaign Management: Trigger personalized emails to individuals or broadcast to entire lists
Reporting: Generate campaign reports with metrics like opens, clicks, and submissions
Event Tracking: Send and track custom events with properties for user actions
Template Access: Retrieve available email templates, campaigns, and contact lists
Automation: Integrate with Claude Desktop and other MCP clients for automated workflows
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mailmodoshow me my recent email campaigns"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mailmodo-mcp
This is a TypeScript project that implements a Message Control Protocol (MCP) server for Mailmodo integration with Claude Desktop and other MCP supported client.
Prerequisites
Node.js (v20 or higher recommended)
npm (comes with Node.js)
Related MCP server: MJML MCP Server
Installation
Installing via Smithery
To install Mailmodo Integration Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @mailmodo/mailmodo-mcp --client claudeManual Installation
Clone the repository:
git clone https://github.com/mailmodo/mailmodo-mcp.git
cd mailmodo-mcpInstall dependencies:
npm installBuilding the Project
To compile the TypeScript code to JavaScript, run:
npm run buildThis will create a dist directory containing the compiled JavaScript files.
Running the Project
After building, you can run the project using:
node dist/index.jsOr use the npm script:
npm startClaude Desktop Configuration
Local Run from Code
To configure this project with Claude Desktop, add the following configuration to your Claude Desktop settings:
{
"mcpServers": {
"mailmodo": {
"command": "node",
"args": [
"/path/to/your/mailmodo-mcp/dist/index.js"
]
}
}
}Run from docker image
{
"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>"
}
}
}
}Run from 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>"
}
}
}
}Connect via Remote Server
{
"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>"
}
}
}
}Make sure to adjust the file path in the args array to match your local project directory.
Development
To run the project in development mode with automatic recompilation:
Install
ts-nodeandnodemonas dev dependencies:
npm install --save-dev ts-node nodemonAdd a dev script to your package.json:
{
"scripts": {
"dev": "nodemon src/index.ts",
"build": "tsc",
"start": "node dist/index.js"
}
}Run the development server:
npm run devProject Structure
mailmodo-mcp/
├── src/ # TypeScript source files
├── dist/ # Compiled JavaScript files
├── package.json # Project dependencies and scripts
└── tsconfig.json # TypeScript configurationTools and Resources
The Mailmodo MCP server provides several tools and resources for interacting with Mailmodo's functionality. Here's a comprehensive list:
Resources
Mailmodo Templates (
mailmodo://templates)Returns a list of all available email templates in JSON format
MIME Type: application/json
Mailmodo Campaigns (
mailmodo://campaigns)Returns a list of all campaigns in JSON format
MIME Type: application/json
Mailmodo Contact Lists (
mailmodo://contact-lists)Returns all contact lists in JSON format
MIME Type: application/json
Tools
User Details
Name:
userDetailsDescription: Get all details of a contact
Parameters:
email(string): Email address of the contact
Campaign Report Tool
Name:
MailmodoCampainReportToolDescription: Get campaign reports including open, click, and submission counts
Parameters:
campaignId(UUID): ID of the campaignfromDate(YYYY-MM-DD): Start date for the reporttoDate(YYYY-MM-DD): End date for the report
Current DateTime
Name:
currentDateTimeDescription: Get current date and time
Parameters: None
Send Event
Name:
sendEventDescription: Send custom events with email and event properties
Parameters:
email(string): Contact's email addressevent_name(string): Name of the eventts(number, optional): Timestampevent_properties(object, optional): Additional event properties
Contact List Management
Add Contact to List
Name:
addContactToListDescription: Add a single contact to a list
Parameters:
email(string): Contact's emaillistName(string): Name of the listdata(object, optional): Contact propertiesVarious optional fields for contact metadata
Bulk Add Contacts
Name:
addBulkContactToListDescription: Add multiple contacts to a list in a single operation
Parameters:
listName(string): Name of the listvalues(array): Array of contact objects
Remove Contact from List
Name:
removeContactFromListDescription: Remove a contact from a specific list
Parameters:
email(string): Contact's emaillistName(string): Name of the list
Contact Status Management
Unsubscribe Contact
Name:
unsubscribeContactDescription: Unsubscribe or suppress a contact
Parameters:
email(string): Contact's email
Resubscribe Contact
Name:
resubscribeContactDescription: Resubscribe a previously unsubscribed contact
Parameters:
email(string): Contact's email
Archive Contact
Name:
archiveContactDescription: Permanently archive a contact
Parameters:
email(string): Contact's email
Campaign Management
Send Email Campaign
Name:
sendEmailToCampaignDescription: Trigger an email campaign with personalization
Parameters:
campaignId(string): Campaign IDemail(string): Recipient's emailVarious optional parameters for customization
Broadcast Campaign
Name:
broadcastCampaignToListDescription: Trigger campaigns to an entire contact list
Parameters:
campaignId(string): Campaign IDlistId(string): Target list IDOptional parameters for campaign customization
License
Available Tools
12 toolsaddBulkContactToListC
Add Many Contact to a list in single API
| Name | Required | Description | Default |
|---|---|---|---|
| listName | Yes | ||
| values | 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 |
|---|---|---|---|
| Yes | |||
| listName | Yes | ||
| data | No | ||
| created_at | No | ||
| last_click | No | ||
| last_open | No | ||
| timezone | 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 |
|---|---|---|---|
| campaignId | Yes | Campaign id of the campaign to be triggered | |
| 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. | |
| 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". | |
| 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. |
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 |
|---|---|---|---|
| campaignId | Yes | ||
| fromDate | Yes | ||
| toDate | 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 |
|---|---|---|---|
| campaignId | Yes | Camapign id of the campaign to be triggered | |
| Yes | Email address of the contact to whom you want to send the email. This is required. | ||
| subject | No | Optional: Overrides the default subject line provided when creating the campaign. | |
| replyTo | No | Optional: Overrides the default reply-to email address for the campaign. | |
| fromName | No | Optional: Overrides the sender name for the campaign. | |
| campaign_data | No | Optional: Transient personalization parameters, not stored in the contact profile. | |
| data | No | Optional: Personalization parameters saved to the contact's profile. | |
| addToList | No | Optional: List ID to which the contact should be added as part of triggering the campaign. |
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 |
|---|---|---|---|
| Yes | |||
| event_name | Yes | ||
| ts | No | ||
| 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. Dates show when Glama detected each change.
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
Most tools have distinct purposes, but there is some overlap between 'addContactToList' and 'addBulkContactToList', which could cause confusion for an agent deciding between single vs. bulk operations. Additionally, 'broadcastCampaignToList' and 'sendEmailToCampaign' both involve sending campaigns, though their descriptions differentiate one as broadcast and the other as personalized.
The naming is inconsistent with mixed conventions: some tools use camelCase (e.g., 'addBulkContactToList'), others use PascalCase (e.g., 'MailmodoCampainReportTool'), and some use snake_case (e.g., 'currentDateTime'). There is no uniform verb_noun pattern, making the set less predictable.
With 12 tools, the count is reasonable for an email marketing server, covering core operations like contact management and campaign handling. It's slightly on the higher side but well within an appropriate range for the domain.
The tool set covers key aspects of email marketing: contact CRUD (add, remove, archive, unsubscribe, resubscribe), campaign operations (send, broadcast, report), and event tracking. A minor gap is the lack of tools for creating or managing lists or campaigns directly, but agents can work around this with the provided tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.to1098-
- 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 Labs528MIT
- AlicenseNot gradedqualityDmaintenanceEmail for AI agents. Create inboxes, send and receive emails without phone or CAPTCHA.22MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mailmodo/mailmodo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server