Unosend MCP Server
OfficialThe Unosend MCP server enables AI assistants to send and manage emails, SMS, broadcasts, contacts, and templates.
Email Management: Send HTML or plain text emails with CC/BCC, custom reply-to, and scheduling; retrieve, list, and cancel emails.
SMS Messaging: Send and retrieve SMS messages.
Email Validation: Validate email addresses for deliverability.
Domain Management: List and get details of verified sending domains.
Audience & Contact Management: List audiences, create contacts, and list contacts.
Broadcast Campaigns: Create, update, list, get, send, and delete broadcast campaigns; view delivery statistics.
Template Management: Create, list, retrieve, update, and delete templates with variable interpolation.
Utility: Check API status and API key validity.
Note: Broadcast and template tools may not be available in all server schema versions.
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., "@Unosend MCP ServerSend an email to john@example.com about our meeting tomorrow at 10am"
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.
Unosend MCP Server
Send emails from AI assistants using the Unosend API. Works with Claude Desktop, Cursor, and other MCP clients.
Features
✉️ Send plain text and HTML emails
📅 Schedule emails for future delivery
👥 Add CC and BCC recipients
↩️ Configure reply-to addresses
🔒 Customizable sender email (requires verified domain)
📢 Create and send broadcast campaigns to contact lists
📄 Manage reusable email templates with
{{variable}}interpolation
Related MCP server: Inbound Email MCP Server
Installation
# Clone and build
git clone https://github.com/unosend/mcp-server.git
cd mcp-server
npm install
npm run buildSetup
1. Get your API Key
Go to Unosend Dashboard
Create a new API key
Copy the key (starts with
un_)
2. Verify your domain
To send emails from your own domain, verify it first.
Configuration
Cursor
Open Cursor Settings → MCP → Add new global MCP server:
{
"mcpServers": {
"unosend": {
"type": "command",
"command": "node /path/to/unosend-mcp/build/index.js --key=un_YOUR_API_KEY --sender=hello@yourdomain.com"
}
}
}Claude Desktop
Open Claude Desktop settings → Developer → Edit Config:
{
"mcpServers": {
"unosend": {
"command": "node",
"args": ["/path/to/unosend-mcp/build/index.js"],
"env": {
"UNOSEND_API_KEY": "un_YOUR_API_KEY",
"SENDER_EMAIL_ADDRESS": "hello@yourdomain.com",
"REPLY_TO_EMAIL_ADDRESS": "support@yourdomain.com"
}
}
}
}Arguments
Argument | Environment Variable | Description |
|
| Your Unosend API key (required) |
|
| Default sender email (optional) |
|
| Default reply-to email (optional) |
Usage
Once configured, you can ask Claude or Cursor to send emails:
"Send an email to john@example.com with the subject 'Meeting Tomorrow' and let him know we're meeting at 3pm"
"Email the team a summary of today's work"
"Schedule an email to be sent tomorrow at 9am reminding me about the deadline"
"Create a welcome email template with a first name variable, then send it to user@example.com"
"Create a broadcast to my newsletter audience with this month's update, then send it"
"List my recent broadcasts and show me the delivery stats for the last one"
Available Tools
Email Tools
Tool | Description |
| Send an email with HTML/text, CC/BCC, scheduling |
| Get details and status of a sent email |
| List recent emails from your account |
| Cancel a scheduled email |
SMS Tools
Tool | Description |
| Send an SMS message ($0.0075/segment) |
| Get details of an SMS message |
Validation Tools
Tool | Description |
| Validate an email address ($0.01/validation) |
Domain Tools
Tool | Description |
| List all verified domains |
| Get domain details and DNS records |
Audience & Contact Tools
Tool | Description |
| List all audiences (contact lists) |
| Add a contact to an audience |
| List contacts in an audience |
Broadcast Tools
Tool | Description |
| List campaigns with optional status filter and pagination |
| Get details and delivery stats for a campaign |
| Create a draft campaign (audience, HTML/text, scheduling) |
| Edit a draft or scheduled campaign |
| Trigger immediate delivery to the audience |
| Delete a draft campaign |
Template Tools
Tool | Description |
| List all templates |
| Get full content and detected variables |
| Create a template with |
| Edit name, subject, or body |
| Delete a template |
Utility Tools
Tool | Description |
| Verify API connectivity and key validity |
send_email Parameters
Parameter | Required | Description |
| Yes | Recipient email(s), comma-separated |
| Yes | Email subject |
| No | HTML content |
| No | Plain text content |
| No | Sender email (uses default if not provided) |
| No | CC recipients |
| No | BCC recipients |
| No | Reply-to address |
| No | ISO 8601 datetime for scheduling |
Example
Create an email.md file:
to: john@example.com
subject: Weekly Report
# Weekly Report
Here's what we accomplished this week:
- Launched new feature
- Fixed 12 bugs
- Improved performance by 30%
Best,
Your TeamThen tell your AI: "Send this as an email"
License
MIT
Available Tools
13 toolscancel_emailA
Cancel a scheduled email before it is sent.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The scheduled email ID to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action ('cancel') but lacks details on behavioral traits like required permissions, whether cancellation is reversible, error conditions (e.g., if email is already sent), or side effects. This is a significant gap for a mutation tool.
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, front-loaded sentence with zero waste. It efficiently conveys the core purpose without unnecessary elaboration, making it easy to parse and understand.
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 complexity as a mutation operation with no annotations and no output schema, the description is incomplete. It lacks information on permissions, error handling, or return values, which are critical for safe and effective use.
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%, with the parameter 'id' documented as 'The scheduled email ID to cancel'. The description adds no additional parameter semantics beyond what the schema provides, so the baseline score of 3 is appropriate.
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 specific action ('cancel') and resource ('a scheduled email'), with the temporal constraint 'before it is sent' distinguishing it from siblings like 'send_email' or 'get_email'. It precisely defines the tool's function without redundancy.
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 implies usage context by specifying 'before it is sent', indicating this tool is only applicable to scheduled emails. However, it does not explicitly mention when not to use it or name alternatives (e.g., for unsent emails that aren't scheduled), leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_api_statusA
Check if the Unosend API is accessible and the API key is valid.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the tool's purpose (checking API status and key validity) but doesn't add behavioral details like rate limits, error responses, or what 'accessible' entails (e.g., network reachability vs. service health). It's adequate but lacks rich 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, efficient sentence with zero waste—it directly states the tool's purpose without fluff. It's appropriately sized and front-loaded, making it easy to understand immediately.
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 low complexity (0 parameters, no output schema, no annotations), the description is complete enough for basic understanding. However, without annotations or output schema, it could benefit from more behavioral context (e.g., response format or error handling), but it's minimally viable for this simple tool.
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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing on the tool's purpose instead. A baseline of 4 is applied since no parameters exist.
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 specific verb ('Check') and resource ('Unosend API'), specifying both accessibility and API key validation. It distinguishes this tool from siblings that perform operations like sending emails, managing contacts, or validating emails by focusing on system health/authentication status.
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 implies usage context—when you need to verify API connectivity and key validity—but doesn't explicitly state when not to use it or name alternatives. It's clear this is for diagnostic/health checks, but lacks explicit exclusions or sibling tool comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contactC
Add a contact to an audience.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | The audience ID to add the contact to | |
| Yes | Contact email address | ||
| first_name | No | Contact first name | |
| last_name | No | Contact last name | |
| unsubscribed | No | Whether the contact is unsubscribed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Add') but doesn't clarify if this creates a new contact or updates an existing one, what permissions are required, whether the operation is idempotent, or what happens on failure (e.g., invalid email). This leaves critical behavioral traits unspecified for a mutation tool.
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, efficient sentence that directly states the tool's purpose without redundancy. It's front-loaded with the core action and resource, making it easy to parse. There's no wasted verbiage, and every word contributes to understanding the tool's function.
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 mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after adding (e.g., returns a contact ID, error responses), behavioral constraints, or how it interacts with sibling tools like 'list_contacts'. Given the complexity of creating a contact with multiple fields, more context is needed for safe and effective use.
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%, with all parameters clearly documented in the schema itself. The description adds no additional parameter semantics beyond implying that 'audience_id' and 'email' are involved. This meets the baseline of 3 since the schema adequately covers parameter meanings, but the description doesn't enhance understanding further.
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 ('Add') and resource ('a contact to an audience'), making the purpose immediately understandable. It distinguishes itself from siblings like 'list_contacts' or 'validate_email' by focusing on creation rather than retrieval or validation. However, it doesn't specify what constitutes a 'contact' beyond the parameters, leaving some ambiguity about the resource scope.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., audience must exist), exclusions (e.g., duplicate contacts), or related tools like 'list_audiences' for reference. The agent must infer usage from the tool name and parameters alone, which is insufficient for optimal selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domainB
Get details and DNS records for a specific domain.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves details and DNS records, implying a read-only operation, but doesn't cover critical aspects like authentication requirements, rate limits, error handling, or what specific details are included (e.g., ownership, expiration). For a tool with zero annotation coverage, this is a significant gap in 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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse. Every part of the sentence earns its place by conveying essential 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's complexity (a read operation with one parameter) and the lack of annotations and output schema, the description is minimally adequate. It specifies what the tool does but doesn't cover behavioral traits, usage context, or return values. For a tool with no output schema, the description should ideally hint at what 'details and DNS records' include, but it doesn't, leaving gaps in completeness.
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 input schema has 100% description coverage, with the 'id' parameter documented as 'The domain ID'. The description doesn't add any meaning beyond this, such as explaining the format of the ID or where to obtain it. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema does the heavy lifting for parameter documentation.
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 ('Get details and DNS records') and the resource ('for a specific domain'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_domains' or 'get_email', which would require more specific context about what distinguishes this domain lookup from other domain-related operations.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a domain ID), exclusions, or comparisons to siblings like 'list_domains' (which might list domains without details) or 'validate_email' (which could involve domain checks). This leaves the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_emailB
Get details and status of a sent email by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The email ID (returned from send_email) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves 'details and status' but doesn't specify what those details include, whether it's a read-only operation, potential error conditions, or authentication needs. This is a significant gap for a tool with no annotation coverage, though it implies a safe read operation.
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, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple tool, earning full marks for 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?
Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks usage guidelines and behavioral details. Without an output schema, it doesn't explain return values, which is a gap, but the simplicity keeps it from being severely incomplete.
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 input schema has 100% description coverage, with the 'id' parameter documented as 'The email ID (returned from send_email)'. The description adds minimal value beyond this, only reiterating that the ID is for a sent email. Baseline 3 is appropriate since the schema does the heavy lifting.
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 verb ('Get details and status') and resource ('a sent email by its ID'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_emails' or 'send_email', which would require mentioning it retrieves individual email details rather than listing multiple emails or sending new ones.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an email ID from 'send_email'), exclusions, or comparisons to siblings like 'list_emails' for bulk retrieval or 'send_email' for creation. This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_smsB
Get details of an SMS message by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The SMS message ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a read operation ('Get details'), which implies it's likely non-destructive, but doesn't clarify permissions, rate limits, error conditions, or what 'details' include (e.g., content, metadata, status). This leaves significant gaps for a tool with no annotation coverage.
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, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple lookup tool with one parameter.
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 read tool with one parameter and no output schema, the description is minimally adequate but lacks completeness. It doesn't explain what 'details' are returned, error handling, or dependencies, which could be crucial for an agent to use it correctly without trial and error.
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%, with the single parameter 'id' fully documented in the schema. The description adds no additional parameter semantics beyond implying the ID is for an SMS message, which the schema already covers. This meets the baseline for high schema coverage.
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 ('Get details') and resource ('SMS message by its ID'), making the purpose immediately understandable. However, it doesn't differentiate this tool from potential siblings like 'get_email' or 'send_sms' beyond the resource type, which prevents a perfect score.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an SMS ID), exclusions, or comparisons to sibling tools like 'list_emails' or 'send_sms', leaving usage context entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audiencesB
List all audiences (contact lists) in your account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'List all audiences' implies a read-only operation, it doesn't specify whether this requires authentication, has rate limits, returns paginated results, or what format the output takes. For a tool with zero annotation coverage, this is insufficient.
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, efficient sentence that front-loads the core purpose ('List all audiences') and adds clarifying context ('contact lists in your account') without any wasted words. Every part of the description earns 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 the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but has clear gaps. It explains what the tool does but lacks behavioral details (e.g., output format, authentication needs) and usage guidelines relative to siblings, making it minimally viable but not fully complete.
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 tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of inputs. The description adds no parameter information, but with no parameters to explain, a baseline of 4 is appropriate as it doesn't need to compensate for any gaps.
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 verb ('List') and resource ('audiences (contact lists)'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'list_contacts' or 'list_emails', which prevents a perfect score.
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 provides no guidance on when to use this tool versus alternatives like 'list_contacts' or 'list_emails'. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsC
List contacts in an audience.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | The audience ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists contacts but doesn't describe what 'list' entails—e.g., whether it returns all contacts, supports pagination, includes filtering options beyond audience_id, or provides error handling for invalid IDs. For a read operation with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse. Every part of the sentence earns its place by clearly conveying the tool's function.
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 complexity of listing contacts (a read operation with potential for large datasets) and the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like pagination, error cases, or return format, which are crucial for effective use. For a tool with no structured output information, the description should provide more context to compensate.
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 input schema has 100% description coverage, with 'audience_id' documented as 'The audience ID'. The description adds no additional meaning beyond this, as it doesn't explain what an audience is, how to obtain an audience_id, or constraints on valid IDs. With high schema coverage, the baseline is 3, as the description doesn't compensate but also doesn't detract from the schema's information.
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 ('List') and resource ('contacts in an audience'), providing a specific verb+resource combination. It distinguishes itself from siblings like 'list_audiences' or 'list_emails' by focusing on contacts within a specific audience context. However, it doesn't explicitly differentiate from 'create_contact' or other contact-related tools beyond the listing action.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing audience), exclusions, or comparisons with sibling tools like 'list_audiences' (which might list audiences rather than contacts) or 'create_contact' (which creates rather than lists). Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_domainsB
List all verified domains in your account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't specify if it returns all domains at once, uses pagination, requires specific permissions, or has rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
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, efficient sentence that front-loads the core purpose ('List all verified domains') without any wasted words. It's appropriately sized for a simple list tool with no parameters, making it easy for an agent to parse quickly.
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 (0 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details on behavior, output format, or usage context. For a list operation, this is a basic but incomplete description that leaves the agent with unanswered questions about the result structure.
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 input schema has 0 parameters with 100% coverage, so the schema fully documents the lack of inputs. The description adds no parameter information, which is appropriate here. Since there are no parameters to explain, a baseline of 4 is justified, as the description doesn't need to compensate for any schema gaps.
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 verb ('List') and resource ('verified domains in your account'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_domain' or 'list_contacts' beyond the resource name, so it doesn't reach the highest tier of sibling differentiation.
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 provides no guidance on when to use this tool versus alternatives like 'get_domain' (for specific domain details) or 'list_contacts' (for a different resource type). There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_emailsC
List recent emails sent from your account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of emails to return (default: 10, max: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool lists 'recent emails' but doesn't specify what 'recent' means (e.g., time range, sorting), whether it's paginated, if it requires authentication, or any rate limits. This leaves significant gaps in understanding how the tool behaves beyond basic functionality.
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, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
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 lack of annotations and output schema, the description is incomplete. It doesn't explain what the return values look like (e.g., email objects with fields), behavioral constraints like sorting or filtering, or how it differs from sibling tools. For a list operation with no structured output documentation, this leaves the agent under-informed.
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 input schema has 100% description coverage, fully documenting the 'limit' parameter with its type, default, and max value. The description adds no additional parameter information beyond what's in the schema, so it meets the baseline score of 3 for high schema coverage without compensating value.
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 ('list') and resource ('recent emails sent from your account'), making the purpose immediately understandable. However, it doesn't distinguish this from sibling tools like 'get_email' or 'send_email' beyond the listing function, which prevents a perfect score.
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 provides no guidance on when to use this tool versus alternatives like 'get_email' (for retrieving a specific email) or 'send_email' (for creating emails). There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailB
Send an email using Unosend API. Supports HTML/text content, CC/BCC, reply-to, and scheduling.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address (or comma-separated list) | |
| subject | Yes | Email subject line | |
| html | No | HTML content of the email | |
| text | No | Plain text content (used if html not provided) | |
| from | No | Sender email (must be from verified domain) | |
| cc | No | CC recipient(s), comma-separated | |
| bcc | No | BCC recipient(s), comma-separated | |
| reply_to | No | Reply-to email address | |
| scheduled_at | No | ISO 8601 datetime to schedule (e.g., "2026-01-28T10:00:00Z") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but lacks critical behavioral details. It mentions scheduling and content types but omits information on permissions, rate limits, error handling, or what happens upon sending (e.g., confirmation, ID return). This is inadequate for a mutation tool with zero annotation coverage.
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 front-loaded with the core purpose and efficiently lists key features in a single sentence. It avoids redundancy but could be slightly more structured by explicitly stating required parameters or common use cases.
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 mutation tool with 9 parameters, no annotations, and no output schema, the description is incomplete. It fails to address behavioral aspects like authentication needs, side effects, or response format, leaving significant gaps for an AI agent to invoke it correctly.
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 schema fully documents all 9 parameters. The description adds minimal value by listing features like HTML/text content and scheduling, which align with parameters but do not provide additional semantic context beyond what the schema already specifies.
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 specific action ('Send an email') and resource ('using Unosend API'), distinguishing it from sibling tools like send_sms or get_email. It specifies the core functionality with supporting features, making the purpose unambiguous.
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 like send_sms or cancel_email. The description lists features but does not mention prerequisites, such as needing a verified domain for the 'from' field, or contextual cues for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_smsB
Send an SMS message. Charges from wallet at $0.0075 per segment.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number in E.164 format (e.g., +1234567890) | |
| body | Yes | SMS message content (160 chars = 1 segment) | |
| from | No | Sender phone number (if you have one) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It effectively reveals a critical behavioral trait: 'Charges from wallet at $0.0075 per segment' - indicating a financial transaction with specific pricing. However, it doesn't cover other important aspects like authentication requirements, rate limits, error conditions, or what happens on success/failure.
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 perfectly concise - two sentences that each earn their place. The first states the core purpose, the second adds crucial behavioral context (charging). No wasted words, well-structured with the most important information first.
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 mutation tool with no annotations and no output schema, the description does an adequate but incomplete job. It covers the core action and a critical side effect (charging), but lacks information about return values, error handling, authentication needs, or system constraints. Given the complexity of a paid SMS sending operation, more context would be helpful.
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 schema already documents all three parameters thoroughly. The description adds marginal value by mentioning '160 chars = 1 segment' in relation to the body parameter, but this is essentially repeating schema information. No additional parameter semantics beyond what the schema provides are included.
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 ('Send an SMS message') and resource ('SMS message'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'send_email' or 'get_sms', but the specificity of 'SMS' provides inherent distinction. The mention of charging adds context but doesn't fully articulate unique scope compared to alternatives.
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 provides no guidance on when to use this tool versus alternatives like 'send_email' or 'get_sms'. It mentions charging implications, which could inform usage decisions, but lacks explicit when/when-not instructions or named alternatives. The agent must infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_emailA
Validate an email address to check if it exists and is deliverable. Costs $0.01 per validation.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it validates existence and deliverability (clarifying what 'validate' means) and includes cost per validation ($0.01), which is crucial for usage. However, it doesn't mention rate limits, error handling, or response format.
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 two sentences, front-loaded with the core purpose and followed by cost information. Every sentence earns its place with no waste, making it highly efficient and easy to parse.
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 and no output schema, the description is moderately complete. It covers purpose and cost, but lacks details on response format, error cases, or integration with sibling tools. For a validation tool with financial implications, more context on outputs or limitations would be beneficial.
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 schema already documents the 'email' parameter adequately. The description doesn't add meaning beyond what the schema provides (e.g., no details on email format requirements or validation criteria). Baseline 3 is appropriate as the schema does the heavy lifting.
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 specific verb ('validate') and resource ('email address'), and distinguishes its purpose from siblings by focusing on existence and deliverability checking rather than sending, listing, or other operations. It's precise and unambiguous.
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 implies usage context (checking email validity) but doesn't explicitly state when to use this tool versus alternatives like 'get_email' or 'send_email'. It provides cost information which helps in decision-making, but lacks explicit comparisons or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose with no overlap: cancel_email, check_api_status, create_contact, get_domain, get_email, get_sms, list_audiences, list_contacts, list_domains, list_emails, send_email, send_sms, and validate_email all target specific resources and actions. An agent can easily differentiate between them.
Tool names follow a consistent verb_noun pattern throughout, such as cancel_email, create_contact, get_domain, list_audiences, send_email, and validate_email. This uniformity makes the set predictable and easy to navigate.
With 13 tools, the server is well-scoped for email and SMS marketing operations. Each tool serves a clear function, covering core workflows like sending, listing, getting details, and managing contacts without unnecessary bloat.
The toolset provides strong coverage for email and SMS operations, including CRUD-like actions for contacts, sending, and status checks. Minor gaps include no update or delete tools for contacts or audiences, but agents can work around this with existing 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.
Build and send email, SMS, and push straight from your AI agent.
Send, track, and manage transactional and bulk email delivery
Manage contacts, campaigns, senders, and deliverability via SuperSend API
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables sending transactional emails through GetMailer from AI assistants. Supports email operations, template management, domain verification, analytics, suppression lists, and batch email jobs.1424MIT
- FlicenseBqualityDmaintenanceEnables AI assistants to interact with the Inbound Email API to manage domains, endpoints, and email communications. Users can send or schedule emails, manage webhooks, and retrieve email threads through natural language commands.142
- AlicenseNot gradedqualityDmaintenanceEnables sending emails and managing email delivery through Resend's API, allowing users to compose and send emails using natural language.1MIT

sendcraft-mcpofficial
AlicenseAqualityDmaintenanceEnables AI agents to send emails, manage campaigns, subscribers, templates, and domains via the SendCraft email API.2617MIT
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/unosend/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server