Complete reference for all 36 MisarMail MCP tools — inputs, required fields, and example responses.
All tools are exposed by the misar-mail MCP server. Authentication is handled automatically via MISARMAIL_API_KEY. All responses are JSON strings.
Send
send_email
Send a transactional email.
Required: from, to, subject
| Parameter | Type | Description |
|---|
from | object | { email: string (required), name?: string } |
to | array | Recipients [{ email, name? }] — 1–100 addresses |
cc | array | CC [{ email, name? }] — max 50 |
bcc | array | BCC [{ email, name? }] — max 50 |
reply_to | object | { email, name? } |
subject | string | Max 998 chars |
html | string | HTML body — max 500 KB |
text | string | Plain text body — max 500 KB |
alias_id | string | Route via a specific SMTP pool |
idempotency_key | string | Prevent duplicate sends — max 128 chars |
tags | array | Tracking tags — max 10, each max 64 chars |
metadata | object | Custom key-value pairs — max 20 pairs |
Campaigns
list_campaigns
List campaigns with optional status filter.
| Parameter | Type | Description |
|---|
page | number | Page number (default: 1) |
limit | number | Max 50 (default: 20) |
status | string | draft | scheduled | sending | sent | paused | cancelled |
get_campaign
Required: campaign_id
| Parameter | Type | Description |
|---|
campaign_id | string | Campaign UUID |
create_campaign
Required: name, subject, fromName, fromEmail
| Parameter | Type | Description |
|---|
name | string | Campaign name — max 100 chars |
subject | string | Subject line — max 255 chars |
fromName | string | Sender display name |
fromEmail | string | Sender email address |
replyTo | string | Reply-to address |
bodyHtml | string | HTML body — max 500 KB |
bodyText | string | Plain text body |
templateId | string | Template UUID |
segmentId | string | Contact segment UUID |
scheduledAt | string | ISO 8601 future datetime |
send_campaign
Required: campaign_id
| Parameter | Type | Description |
|---|
campaign_id | string | Campaign UUID to send immediately |
Contacts
list_contacts
| Parameter | Type | Description |
|---|
page | number | Page (default: 1) |
limit | number | Max 100 (default: 20) |
status | string | subscribed | unsubscribed | bounced | complained |
search | string | Search by email, first name, or last name |
create_contact
Required: email
| Parameter | Type | Description |
|---|
email | string | Contact email address |
firstName | string | First name |
lastName | string | Last name |
status | string | subscribed | unsubscribed (default: subscribed) |
source | string | Source identifier — max 255 chars |
tags | array | Tags to assign — max 50 |
customFields | object | Custom key-value pairs — max 50 keys |
import_contacts
Required: contacts
| Parameter | Type | Description |
|---|
contacts | array | Array of { email (required), firstName?, lastName?, status?, tags? } |
Analytics
get_analytics
| Parameter | Type | Description |
|---|
campaign_id | string | UUID for per-campaign stats; omit for account-level |
startDate | string | YYYY-MM-DD (default: 30 days ago) |
endDate | string | YYYY-MM-DD (default: today) |
groupBy | string | day | week | month (default: day) |
Templates
list_templates
| Parameter | Type | Description |
|---|
page | number | Page (default: 1) |
limit | number | Max 50 (default: 20) |
type | string | marketing | transactional | automation |
create_template
Required: name, subject, bodyHtml
| Parameter | Type | Description |
|---|
name | string | Template name — max 100 chars |
description | string | Optional description — max 1000 chars |
subject | string | Subject line — max 255 chars |
bodyHtml | string | HTML body — max 500 KB |
bodyText | string | Plain text fallback |
templateType | string | marketing | transactional | automation |
variables | array | Variable names used in template — max 100 |
render_template
Required: template_id
| Parameter | Type | Description |
|---|
template_id | string | Template UUID |
variables | object | Key-value pairs for {{variable}} substitution |
Validation
validate_email
Validate one or up to 500 email addresses. Checks syntax, MX records, SMTP reachability, disposable/role addresses. Deducts credits.
| Parameter | Type | Description |
|---|
email | string | Single address (use this OR emails, not both) |
emails | array | Batch up to 500 addresses |
options.skip_smtp | boolean | Skip SMTP check (faster, less accurate) |
Sandbox
list_sandbox_sends
No parameters. Returns up to 50 most recent sandbox test sends. Sandbox sends do not deliver real email.
clear_sandbox
No parameters. Clears all sandbox send records for the authenticated user.
AI
generate_subject_lines
Generate AI-optimized subject lines. Rate-limited to 10 req/min.
Required: topic
| Parameter | Type | Description |
|---|
topic | string | Campaign topic or content summary — 5–500 chars |
tone | string | professional | casual | urgent | playful | informative (default: professional) |
audience | string | Target audience description — max 200 chars |
count | number | Number of suggestions — 1–10 (default: 5) |
brand | string | Brand name for context — max 100 chars |
A/B Testing
list_ab_tests
| Parameter | Type | Description |
|---|
page | number | Page (default: 1) |
limit | number | Max 50 (default: 20) |
type | string | campaign | subject |
create_ab_test
Required: campaign_id, variant
| Parameter | Type | Description |
|---|
campaign_id | string | Campaign UUID |
variant | string | Variant label — 1–5 chars, e.g. "B" |
test_type | string | content | subject | send_time | from_name | preheader |
subject | string | Variant subject (for subject test) |
preheader | string | Variant preheader — max 255 chars |
body_html | string | Variant HTML — max 500 KB |
from_name | string | Variant sender name — max 100 chars |
send_percent | number | Audience % for variant — 1–99 (default: 50) |
auto_select_winner | boolean | Auto-select winner after wait |
winner_wait_hours | number | Hours before auto-select — 1–168 (default: 4) |
select_ab_test_winner
Required: test_id, winner_variant
| Parameter | Type | Description |
|---|
test_id | string | A/B test UUID |
winner_variant | string | Variant label to declare winner |
metric | string | opens | clicks | revenue | conversions (default: opens) |
Inbox
list_inbox_conversations
List unified-inbox conversations, ordered by last activity.
| Parameter | Type | Description |
|---|
status | string | active | closed | snoozed (default: active) |
intent | string | Filter by detected intent |
channel | string | Filter by channel (e.g. email) |
q | string | Search by lead email or name |
limit | number | Max 100 (default: 50) |
offset | number | Pagination offset (default: 0) |
get_inbox_conversation_messages
Required: conversation_id
| Parameter | Type | Description |
|---|
conversation_id | string | Conversation UUID — returns all messages chronologically |
categorize_inbox_emails
Required: email_ids
| Parameter | Type | Description |
|---|
email_ids | array | Array of email UUIDs (1–100) — AI intent + category detection |
Automations
list_automations
| Parameter | Type | Description |
|---|
page | number | Page (default: 1) |
limit | number | Max 50 (default: 20) |
status | string | active | paused | draft |
get_automation
Required: automation_id
| Parameter | Type | Description |
|---|
automation_id | string | Automation UUID — returns trigger + steps |
toggle_automation
Required: automation_id, active
| Parameter | Type | Description |
|---|
automation_id | string | Automation UUID |
active | boolean | true to activate, false to pause |
Domains
list_domains
| Parameter | Type | Description |
|---|
page | number | Page (default: 1) |
limit | number | Max 50 (default: 20) |
add_domain
Required: domain
| Parameter | Type | Description |
|---|
domain | string | Domain name to add — e.g. mail.example.com |
verify_domain
Required: domain_id
| Parameter | Type | Description |
|---|
domain_id | string | Domain UUID — triggers DNS verification check |
Forms
list_forms
| Parameter | Type | Description |
|---|
page | number | Page (default: 1) |
limit | number | Max 50 (default: 20) |
status | string | active | inactive |
get_form
Required: form_id
| Parameter | Type | Description |
|---|
form_id | string | Form UUID — returns form config + embed code |
get_form_submissions
Required: form_id
| Parameter | Type | Description |
|---|
form_id | string | Form UUID |
page | number | Page (default: 1) |
limit | number | Max 50 (default: 20) |
Integrations
list_integrations
| Parameter | Type | Description |
|---|
page | number | Page (default: 1) |
limit | number | Max 50 (default: 20) |
get_integration
Required: integration_id
| Parameter | Type | Description |
|---|
integration_id | string | Integration UUID |
toggle_integration
Required: integration_id, enabled
| Parameter | Type | Description |
|---|
integration_id | string | Integration UUID |
enabled | boolean | true to enable, false to disable |
Marketplace
list_marketplace_items
| Parameter | Type | Description |
|---|
category | string | template | integration | addon |
search | string | Search query |
page | number | Page (default: 1) |
limit | number | Max 50 (default: 20) |
get_marketplace_item
Required: item_id
| Parameter | Type | Description |
|---|
item_id | string | Marketplace item ID — returns pricing and full details |
Looking for lead finding, prospecting, or multi-channel outreach? Those features live in MisarReach (reach.misar.io), not MisarMail.