Skip to content

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.

Deletes · 5Final · 1Changes · 18

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

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.
deny to break every path
{
  "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.

.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