Mailcannon
by AinaLuc · remote · no sign-in to list tools · v0.1.0 · published by GitHub user AinaLuc
AI-powered email outreach platform — send campaigns with deliverability tracking.
34 tools: 5 can delete or cancel things, 1 do something that can't be undone, 18 change things and 10 only read.
Scanned Oct 21, 2026
- Deletes or cancels5Claude Code: deny: see these tools
- Can't be undone1Claude Code: ask: see these tools
- Changes things18Claude Code: ask: see these tools
- Only reads10Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http mailcannon https://www.thinkandautomate.dev/api/mcp --header 'Authorization: <your-authorization>'Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
34 tools
Deletes or cancels 5Claude Code: deny
delete_campaignDelete a campaign and all its stepsNo findings
Why it is in this group
- The name "delete_campaign" says "delete": a word for removing or ending something.
Description, as the server wrote it Delete a campaign and all its steps
delete_campaign_stepDelete a step from a campaignNo findings
Why it is in this group
- The name "delete_campaign_step" says "delete": a word for removing or ending something.
Description, as the server wrote it Delete a step from a campaign
delete_taskDelete a task by IDNo findings
Why it is in this group
- The name "delete_task" says "delete": a word for removing or ending something.
Description, as the server wrote it Delete a task by ID
remove_contactRemove a contact by IDNo findings
Why it is in this group
- The name "remove_contact" says "remove": a word for removing or ending something.
Description, as the server wrote it Remove a contact by ID
remove_providerRemove a provider by IDNo findings
Why it is in this group
- The name "remove_provider" says "remove": a word for removing or ending something.
Description, as the server wrote it Remove a provider by ID
Can't be undone 1Claude Code: ask
send_test_emailSend a test email to yourself to preview formattingCan send data outNo findings
Why it is in this group
- The name "send_test_email" says "send": a word for sending, and what is sent cannot be taken back.
What it can reach
- outboundThe name "send_test_email" says "send": it sends or publishes something to other people.
Description, as the server wrote it Send a test email to yourself to preview formatting
Changes things 18Claude Code: ask
add_campaign_stepAdd a sequence step (delay in hours, subject, body)No findings
Why it is in this group
- The name "add_campaign_step" says "add": a word for a change.
Description, as the server wrote it Add a sequence step (delay in hours, subject, body)
add_contactAdd a single contactNo findings
Why it is in this group
- The name "add_contact" says "add": a word for a change.
Description, as the server wrote it Add a single contact
add_contactsBulk add contacts (max 100)No findings
Why it is in this group
- The name "add_contacts" says "add": a word for a change.
Description, as the server wrote it Bulk add contacts (max 100)
add_providerAdd an email providerCan send data outNo findings
Why it is in this group
- The name "add_provider" says "add": a word for a change.
- The input takes a statement or command to run (input.command), which can change anything it can reach.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Add an email provider
check_domain_deliverabilityCheck SPF, DKIM, DMARC records for a domainNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Check SPF, DKIM, DMARC records for a domain
check_step_spam_scoreCheck a campaign step's subject and body for spam triggersNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Check a campaign step's subject and body for spam triggers
create_campaignCreate a new email campaignNo findings
Why it is in this group
- The name "create_campaign" says "create": a word for a change.
Description, as the server wrote it Create a new email campaign
create_taskCreate a new taskNo findings
Why it is in this group
- The name "create_task" says "create": a word for a change.
Description, as the server wrote it Create a new task
pause_campaignPause a campaign — stops processing all active schedules for this campaignNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Pause a campaign — stops processing all active schedules for this campaign
process_campaignsProcess all due campaign schedules (includeFailed: true to retry failed ones)No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Process all due campaign schedules (includeFailed: true to retry failed ones)
resume_campaignResume a paused campaign — reactivates all paused schedulesNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Resume a paused campaign — reactivates all paused schedules
retry_failedReset all failed schedules to active for retryNo findings
Why it is in this group
- The description's first verb is "reset": a word for a change.
Description, as the server wrote it Reset all failed schedules to active for retry
schedule_campaignAssign contacts to a campaign and schedule itNo findings
Why it is in this group
- The name "schedule_campaign" says "schedule": a word for a change.
Description, as the server wrote it Assign contacts to a campaign and schedule it
set_settingSet a user setting (e.g.No findings
Why it is in this group
- The name "set_setting" says "set": a word for a change.
Description, as the server wrote it Set a user setting (e.g. timezone to 'America/New_York')
update_campaignUpdate a campaign's nameNo findings
Why it is in this group
- The name "update_campaign" says "update": a word for a change.
Description, as the server wrote it Update a campaign's name
update_campaign_stepUpdate a campaign step's day, subject, or bodyNo findings
Why it is in this group
- The name "update_campaign_step" says "update": a word for a change.
Description, as the server wrote it Update a campaign step's day, subject, or body
update_contact_tagsSet tags on a contact (replaces all tags)No findings
Why it is in this group
- The name "update_contact_tags" says "update": a word for a change.
Description, as the server wrote it Set tags on a contact (replaces all tags)
update_taskUpdate a task's status, priority, or fieldsNo findings
Why it is in this group
- The name "update_task" says "update": a word for a change.
Description, as the server wrote it Update a task's status, priority, or fields
Only reads 10Claude Code: allow
check_email_spam_scoreAnalyze email subject/body for spam trigger wordsReads private dataReads text others writeNo findings
Why it is in this group
- The description's first verb is "analyze": a word for reading.
What it can reach
- private-dataThe name "check_email_spam_score" says "email": it reads mail.
- private-dataThe description's first sentence says "analyze" and "email": it reads mail.
- untrusted-inputThe name "check_email_spam_score" says "email": it reads inbound email, which other people can write.
- untrusted-inputThe description's first sentence says "analyze" and "email": it reads inbound email, which other people can write.
Description, as the server wrote it Analyze email subject/body for spam trigger words
get_deliverabilityGet deliverability stats (sent, opens, bounces, replies)Reads text others writeNo findings
Why it is in this group
- The name "get_deliverability" says "get": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "get" and "reply": it reads comments, which other people can write.
Description, as the server wrote it Get deliverability stats (sent, opens, bounces, replies)
get_settingGet a user setting (e.g.No findings
Why it is in this group
- The name "get_setting" says "get": a word for reading.
Description, as the server wrote it Get a user setting (e.g. timezone)
list_campaignsList all campaigns with their stepsNo findings
Why it is in this group
- The name "list_campaigns" says "list": a word for reading.
Description, as the server wrote it List all campaigns with their steps
list_contactsList all contactsReads private dataNo findings
Why it is in this group
- The name "list_contacts" says "list": a word for reading.
What it can reach
- private-dataThe name "list_contacts" says "list" and "contact": it reads contacts.
- private-dataThe description's first sentence says "list" and "contact": it reads contacts.
Description, as the server wrote it List all contacts
list_providersList all email providersReads private dataReads text others writeNo findings
Why it is in this group
- The name "list_providers" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "email": it reads mail.
- untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
Description, as the server wrote it List all email providers
list_schedulesList all scheduled campaign runsNo findings
Why it is in this group
- The name "list_schedules" says "list": a word for reading.
Description, as the server wrote it List all scheduled campaign runs
list_settingsList all user settingsNo findings
Why it is in this group
- The name "list_settings" says "list": a word for reading.
Description, as the server wrote it List all user settings
list_tagsList all unique tags across your contactsReads private dataNo findings
Why it is in this group
- The name "list_tags" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "contact": it reads contacts.
Description, as the server wrote it List all unique tags across your contacts
list_tasksList all tasksNo findings
Why it is in this group
- The name "list_tasks" says "list": a word for reading.
Description, as the server wrote it List all tasks
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
24 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 outbound tools breaks every one.
- Reads private data4
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write3
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out2
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__mailcannon__add_provider",
"mcp__mailcannon__send_test_email"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 0.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http mailcannon https://www.thinkandautomate.dev/api/mcp --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__mailcannon__list_contacts",
"mcp__mailcannon__list_tags",
"mcp__mailcannon__list_campaigns",
"mcp__mailcannon__list_schedules",
"mcp__mailcannon__list_providers",
"mcp__mailcannon__get_deliverability",
"mcp__mailcannon__list_tasks",
"mcp__mailcannon__get_setting",
"mcp__mailcannon__list_settings",
"mcp__mailcannon__check_email_spam_score"
],
"ask": [
"mcp__mailcannon__add_contact",
"mcp__mailcannon__add_contacts",
"mcp__mailcannon__update_contact_tags",
"mcp__mailcannon__create_campaign",
"mcp__mailcannon__add_campaign_step",
"mcp__mailcannon__update_campaign",
"mcp__mailcannon__update_campaign_step",
"mcp__mailcannon__schedule_campaign",
"mcp__mailcannon__process_campaigns",
"mcp__mailcannon__add_provider",
"mcp__mailcannon__create_task",
"mcp__mailcannon__update_task",
"mcp__mailcannon__set_setting",
"mcp__mailcannon__send_test_email",
"mcp__mailcannon__check_domain_deliverability",
"mcp__mailcannon__pause_campaign",
"mcp__mailcannon__resume_campaign",
"mcp__mailcannon__retry_failed",
"mcp__mailcannon__check_step_spam_score"
],
"deny": [
"mcp__mailcannon__remove_contact",
"mcp__mailcannon__delete_campaign",
"mcp__mailcannon__delete_campaign_step",
"mcp__mailcannon__remove_provider",
"mcp__mailcannon__delete_task"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as mailcannon. Review it before you use it.
Capability tags behind 7 rules
- mcp__mailcannon__list_contacts private-data
- mcp__mailcannon__list_tags private-data
- mcp__mailcannon__add_provider outbound
- mcp__mailcannon__list_providers private-data, untrusted-input
- mcp__mailcannon__get_deliverability untrusted-input
- mcp__mailcannon__send_test_email outbound
- mcp__mailcannon__check_email_spam_score private-data, untrusted-input
