Skip to content

Connectors · Email & messaging

Mailgun MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Mailgun and the rest of your systems. It gives your agent 275 Mailgun actions (118 reads, 100 writes and 57 that wait for a confirmation) and holds the Mailgun credential itself, so the agent never does. It paces Mailgun's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "mailgun.users.list",  intent: "check which Mailgun account is connected"}# List users · read · 1 upstream call
  • 275actionsin one signed file
  • 118readlook, never change
  • 100writecreate and update
  • 57wait for a yesdestructive, confirmed first

Set up

Connect Mailgun in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Mailgun.

    Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • api_keyMailgun API key
    • api_hostWhere your Mailgun lives: your api host
    account { op: "connections.requirements", service: "mailgun" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "mailgun.users.list" }# list users · read · 1 upstream callcheck { action: "mailgun.lists.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Mailgun at a glance

Sign-in
Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
api_key
Setup fields
api_host
Limits we pace to
300 calls a minute, at most 10 at a time, per connection
API covered
Mailgun Email API API v3/v4/v5, at your Mailgun instance's API base URL, which you enter when connecting
Built from
Mailgun's documentation, read 19 September 2026documentation.mailgun.comdocumentation.mailgun.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
116 of 118 reads, for up to an hour; a write clears what it affects
Ready-made plans
9 in the store
Shared entities
4, so ask can line Mailgun up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Mailgun.

275 actions in 13 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 118readlook, never change
  • 100writecreate and update
  • 57destructivewait for a confirmation
  1. Infrastructure

    51

    20 read · 20 write · 11 destructive

    List domains assignable to dynamic pools · List domains enrolled in dynamic pools · List domains in an IP pool · List domains assigned to an IP

  2. Account

    31

    10 read · 14 write · 7 destructive

    List users · Get a user · Get the current user · Resend the activation email

  3. Domains

    28

    7 read · 16 write · 5 destructive

    List domains · Create a domain · Create an SMTP credential · List SMTP credentials

  4. Templates

    28

    8 read · 14 write · 6 destructive

    List account templates · List domain templates · Create an account template · Create a domain template

  5. Alerts

    25

    9 read · 10 write · 6 destructive

    List threshold hits · List Slack channels · List sending limits · Get a sending limit

  6. Analytics

    24

    20 read · 2 write · 2 destructive

    Get statistics aggregated by country · Get statistics aggregated by device · Get statistics aggregated by provider · List tag statistics by device

  7. Validation

    23

    17 read · 3 write · 3 destructive

    Get the platform validation threshold · Get the public validation threshold · Validate an email address · Validate an email address privately

  8. Suppressions

    20

    8 read · 4 write · 8 destructive

    List bounces · List complaints · List unsubscribes · List allowlist entries

5 more areas · 45 actions
  • Webhooks 14
  • Lists 13
  • Routing 11
  • Send 5
  • Events 2

Top actions

The Mailgun API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 108 of Mailgun's 117 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
mailgun.users.listList usersList usersreadidentity.user.list474 connectors
mailgun.lists.listList mailing listsList mailing listsreadcomm.audience.list26 connectors
mailgun.lists.members.listList mailing list membersList mailing list membersreadcomm.audience_member.list23 connectors
mailgun.events.listList eventsList eventsreadcomm.delivery_event.list16 connectors
mailgun.lists.list_pagesList mailing lists (paged)List mailing lists (paged)readcomm.audience.list26 connectors
mailgun.lists.createCreate a mailing listCreate a mailing listwritecomm.audience.create24 connectors
mailgun.lists.members.list_pagesList mailing list members (paged)List mailing list members (paged)readcomm.audience_member.list23 connectors
mailgun.users.getGet a userGet a userreadidentity.user.get399 connectors
mailgun.lists.deleteDelete a mailing listDelete a mailing listdestructivecomm.audience.delete21 connectors
mailgun.templates.listList domain templatesList domain templatesreadcomm.email_template.list40 connectors
mailgun.messages.sendSend an emailSend an emailwritecomm.email.send32 connectors
mailgun.messages.resend_storedResend a stored messageResend a stored messagewritecomm.email.send32 connectors

Try it

Prompts to paste into Claude.

Each one names the Mailgun actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Who has access in Mailgun? List every user and their role.

    callsmailgun.users.list

  2. Planwrite

    Provision a subaccount with limits and features in Mailgun. Ask me before anything is sent or changed.

    callsmailgun.account.get_monthly_limitmailgun.subaccounts.createmailgun.subaccounts.enablemailgun.subaccounts.update_monthly_limitmailgun.subaccounts.update_features+2 more

  3. Planwrite

    Daily deliverability report for a domain in Mailgun.

    callsmailgun.stats.get_domain_totalmailgun.stats.get_aggregates_providersmailgun.stats.get_aggregates_countriesmailgun.bounces.listmailgun.complaints.list+1 more

  4. Writewrite

    Create a mailing list in Mailgun. Show me exactly what you will send before you save it.

    callsmailgun.lists.create

The plan store

Ready-made plans for Mailgun.

9 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

  1. Investigate why a recipient did not receive mail

    Use it when A specific recipient says an email never arrived and you need the delivery history and suppression state for that address.

    Effect
    read
    Steps
    6
    Needs
    address and domain
    Install
    mailgun-investigate-failed-delivery
  2. Audit and repair webhook coverage on a domain

    Use it when Event notifications have stopped arriving, or a new endpoint needs its webhook coverage checked.

    Effect
    write
    Steps
    5 · loops
    Needs
    domain, endpoint url and event types
    Install
    mailgun-audit-webhooks
  3. Publish a new template version after a test send

    Use it when A transactional email template has been edited and the new version needs testing then publishing.

    A person decidesActivate version version tag of template template name on domain. Live sends will use it immediately.

    Effect
    write
    Steps
    6
    Needs
    domain, from address, reviewer, template body, template name and version tag
    Install
    mailgun-publish-template-version
  4. Daily deliverability report for a domain

    Use it when Someone wants the overnight sending health of a domain summarised and mailed to the team each morning.

    Effect
    write
    Steps
    7
    Needs
    domain, report from and report to
    Install
    mailgun-deliverability-morning-report
  5. Validate a mailing list before a campaign

    Use it when A campaign is about to go out and the list needs validating for bad addresses first.

    A person decidesRun bulk validation over list list id (number of items subscribed members). This is billed per address.

    Effect
    write
    Steps
    7
    Needs
    domain, list address, list id, notify from and notify to
    Install
    mailgun-validate-mailing-list
  6. Onboard a new sending domain end to end

    Use it when A customer or team is adding a brand new sending domain and wants it created, verified and tracking-enabled in one pass.

    A person decidesCreate a new Mailgun sending domain domain. This consumes account domain quota.

    Effect
    write
    Steps
    8
    Needs
    dkim key size and domain
    Install
    mailgun-onboard-sending-domain
  7. Provision a subaccount with limits and features

    Use it when A new customer or brand needs its own isolated Mailgun subaccount set up.

    A person decidesCreate subaccount subaccount name with a monthly limit of monthly limit against the parent allowance.

    Effect
    write
    Steps
    8
    Needs
    monthly limit, pool id and subaccount name
    Install
    mailgun-provision-subaccount
  8. Clear suppressions for a list of recipients

    Use it when Support has recipients who say they stopped receiving mail and you need their suppressions reviewed and cleared.

    A person decidesClear suppressions on domain for number of addresses addresses and whitelist them. Mail will resume to these recipients.

    Effect
    destructive
    Steps
    5 · loops
    Needs
    addresses and domain
    Install
    mailgun-clear-suppressions-for-recipients
  9. Rotate DKIM keys across sending domains

    Use it when Security asks for DKIM keys to be rotated on the account's sending domains.

    A person decidesRotate DKIM keys on number of items sending domains. New DNS records must be published or signing will fail.

    Effect
    destructive
    Steps
    5 · loops
    Needs
    state
    Install
    mailgun-rotate-dkim-keys
install a plan
account { op: "plans.install", slug: "mailgun-investigate-failed-delivery" }
# then ask for it by name; a schedule can run it on a timetable

Governance for Mailgun

Destructive actions wait for a yes.

57 Mailgun actions are destructive. The first 10:

  • Delete a mailing listmailgun.lists.delete
  • Delete a mailing list membermailgun.lists.members.delete
  • Delete a domain templatemailgun.templates.delete
  • Delete all domain templatesmailgun.templates.delete_all
  • Delete an account templatemailgun.account_templates.delete
  • Delete all account templatesmailgun.account_templates.delete_all
  • Delete a bouncemailgun.bounces.delete
  • Delete a complaintmailgun.complaints.delete
  • Delete an allowlist entrymailgun.whitelists.delete
  • Delete all bouncesmailgun.bounces.delete_all

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

domailgun.lists.deleteconfirm_policy: human

Delete a mailing list?

intent: the user asked me to delete a mailing list

run suspended · waiting for a named person · key mailgun-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "mailgun-agent",  allowed_actions: ["mailgun.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "mailgun.lists.delete", approver: "[email protected]" },    { match: "mailgun.lists.members.delete", approver: "[email protected]" },    { match: "mailgun.templates.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Mailgun only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Mailgun costs on actionlake.

Every Mailgun action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Mailgun refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 275 Mailgun actions
  • 30actions pageeach page of a long list is one call
  • 116reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Mailgun action.

275 actions by area: the id your agent calls, what it does, and its effect.

Infrastructure51
  • mailgun.dynamic_pools.add_ipAdd an IP to a dynamic poolwrite
  • mailgun.dynamic_pools.create_allConfigure dynamic IP pools for the accountwrite
  • mailgun.dynamic_pools.delete_allRemove the account dynamic IP pool configurationdestructive
  • mailgun.dynamic_pools.delete_domain_overrideRemove a domain's dynamic pool overridedestructive
  • mailgun.dynamic_pools.enroll_all_domainsEnroll all domains in dynamic poolswrite
  • mailgun.dynamic_pools.enroll_domainEnroll a domain in dynamic poolswrite
  • mailgun.dynamic_pools.get_domain_historyGet a domain's dynamic pool historyread
  • mailgun.dynamic_pools.listList dynamic IP poolsread
  • mailgun.dynamic_pools.list_assignable_domainsList domains assignable to dynamic poolsread
  • mailgun.dynamic_pools.list_domainsList domains enrolled in dynamic poolsread
  • mailgun.dynamic_pools.list_historyList dynamic pool historyread
  • mailgun.dynamic_pools.list_subaccount_poolsList delegated subaccount IP poolsread
  • mailgun.dynamic_pools.preview_domainPreview a domain's dynamic pool assignmentread
  • mailgun.dynamic_pools.set_domain_overrideOverride a domain's dynamic poolwrite
  • mailgun.dynamic_pools.unenroll_domainUnenroll a domain from dynamic poolsdestructive
  • mailgun.dynamic_pools.updateUpdate a dynamic IP poolwrite
  • mailgun.ip_allowlist.createAdd an allowlisted IPwrite
  • mailgun.ip_allowlist.deleteRemove an allowlisted IPdestructive
  • mailgun.ip_allowlist.listList allowlisted IPsread
  • mailgun.ip_allowlist.updateUpdate an allowlisted IPwrite
  • mailgun.ip_pools.add_ipAdd one IP to an IP poolwrite
  • mailgun.ip_pools.add_ipsAdd IPs to an IP poolwrite
  • mailgun.ip_pools.createCreate an IP poolwrite
  • mailgun.ip_pools.delegateDelegate an IP pool to a subaccountwrite
  • mailgun.ip_pools.deleteDelete an IP pooldestructive
  • mailgun.ip_pools.getGet an IP poolread
  • mailgun.ip_pools.listList IP poolsread
  • mailgun.ip_pools.list_domainsList domains in an IP poolread
  • mailgun.ip_pools.remove_ipRemove an IP from an IP pooldestructive
  • mailgun.ip_pools.undelegateRemove an IP pool delegationdestructive
  • mailgun.ip_pools.updateUpdate an IP poolwrite
  • mailgun.ip_warmups.createStart an IP warmupwrite
  • mailgun.ip_warmups.deleteStop an IP warmupdestructive
  • mailgun.ip_warmups.getGet an IP warmupread
  • mailgun.ip_warmups.listList IP warmupsread
  • mailgun.ips.assign_domainAssign a domain to an IPwrite
  • mailgun.ips.getGet an IP addressread
  • mailgun.ips.get_account_settingsGet account IP settingsread
  • mailgun.ips.get_domain_settingsGet IP settings for a domainread
  • mailgun.ips.get_new_requestGet the status of a new IP requestread
  • mailgun.ips.listList IP addressesread
  • mailgun.ips.list_detailsList IP addresses with detailsread
  • mailgun.ips.list_domainsList domains assigned to an IPread
  • mailgun.ips.replace_pool_with_ipReplace a domain's pool with a single IPdestructive
  • mailgun.ips.request_newRequest a new dedicated IPwrite
  • mailgun.ips.set_bandSet the reputation band for an IPwrite
  • mailgun.ips.unassign_domainUnassign a domain from an IPdestructive
  • mailgun.ips.unassign_from_domainUnassign an IP from a domaindestructive
  • mailgun.ips.update_account_settingsUpdate account IP settingswrite
  • mailgun.ips.update_domain_settingsUpdate IP settings for a domainwrite
  • mailgun.ips.update_subaccount_settingsUpdate subaccount IP settingswrite
Account31
  • mailgun.account.create_sandbox_recipientAuthorise a sandbox recipientwrite
  • mailgun.account.delete_monthly_limitRemove the custom monthly message limitdestructive
  • mailgun.account.delete_sandbox_recipientRemove an authorised sandbox recipientdestructive
  • mailgun.account.enable_custom_limitEnable the custom message limitwrite
  • mailgun.account.get_http_signing_keyGet the HTTP signing keyread
  • mailgun.account.get_monthly_limitGet the custom monthly message limitread
  • mailgun.account.list_sandbox_recipientsList authorised sandbox recipientsread
  • mailgun.account.regenerate_http_signing_keyRegenerate the HTTP signing keywrite
  • mailgun.account.resend_activation_emailResend the activation emailwrite
  • mailgun.account.updateUpdate the accountwrite
  • mailgun.account.update_featuresUpdate account featureswrite
  • mailgun.account.update_monthly_limitUpdate the custom monthly message limitwrite
  • mailgun.keys.createCreate an API keywrite
  • mailgun.keys.create_publicCreate a public API keywrite
  • mailgun.keys.deleteDelete an API keydestructive
  • mailgun.keys.listList API keysread
  • mailgun.subaccounts.assign_ip_poolAssign an IP pool to a subaccountwrite
  • mailgun.subaccounts.createCreate a subaccountwrite
  • mailgun.subaccounts.deleteDelete a subaccountdestructive
  • mailgun.subaccounts.delete_monthly_limitRemove a subaccount's monthly limitdestructive
  • mailgun.subaccounts.disableDisable a subaccountdestructive
  • mailgun.subaccounts.enableEnable a subaccountwrite
  • mailgun.subaccounts.getGet a subaccountread
  • mailgun.subaccounts.get_monthly_limitGet a subaccount's monthly limitread
  • mailgun.subaccounts.listList subaccountsread
  • mailgun.subaccounts.unassign_ip_poolUnassign a subaccount's IP pooldestructive
  • mailgun.subaccounts.update_featuresUpdate subaccount featureswrite
  • mailgun.subaccounts.update_monthly_limitUpdate a subaccount's monthly limitwrite
  • mailgun.users.getGet a userread
  • mailgun.users.get_meGet the current userread
  • mailgun.users.listList usersread
Domains28
  • mailgun.credentials.createCreate an SMTP credentialwrite
  • mailgun.credentials.deleteDelete an SMTP credentialdestructive
  • mailgun.credentials.delete_allDelete all SMTP credentials for a domaindestructive
  • mailgun.credentials.listList SMTP credentialsread
  • mailgun.credentials.updateUpdate an SMTP credential passwordwrite
  • mailgun.dkim_keys.activateActivate a DKIM keywrite
  • mailgun.dkim_keys.createCreate a DKIM keywrite
  • mailgun.dkim_keys.deactivateDeactivate a DKIM keywrite
  • mailgun.dkim_keys.deleteDelete a DKIM keydestructive
  • mailgun.dkim_keys.listList DKIM keysread
  • mailgun.dkim_keys.list_for_authorityList DKIM keys for a signing authorityread
  • mailgun.dkim_keys.rotateRotate a domain's DKIM keydestructive
  • mailgun.dkim_keys.update_authorityUpdate the DKIM authority for a domainwrite
  • mailgun.dkim_keys.update_rotationUpdate DKIM automatic rotationwrite
  • mailgun.dkim_keys.update_selectorUpdate the DKIM selector for a domainwrite
  • mailgun.domains.createCreate a domainwrite
  • mailgun.domains.create_tracking_certificateRequest a tracking TLS certificatewrite
  • mailgun.domains.deleteDelete a domaindestructive
  • mailgun.domains.getGet a domainread
  • mailgun.domains.get_trackingGet domain tracking settingsread
  • mailgun.domains.get_tracking_certificate_statusGet tracking TLS certificate statusread
  • mailgun.domains.listList domainsread
  • mailgun.domains.regenerate_tracking_certificateRegenerate a tracking TLS certificatewrite
  • mailgun.domains.updateUpdate a domainwrite
  • mailgun.domains.update_click_trackingUpdate click trackingwrite
  • mailgun.domains.update_open_trackingUpdate open trackingwrite
  • mailgun.domains.update_unsubscribe_trackingUpdate unsubscribe trackingwrite
  • mailgun.domains.verifyVerify a domainwrite
Templates28
  • mailgun.account_templates.copyCopy an account templatewrite
  • mailgun.account_templates.createCreate an account templatewrite
  • mailgun.account_templates.deleteDelete an account templatedestructive
  • mailgun.account_templates.delete_allDelete all account templatesdestructive
  • mailgun.account_templates.getGet an account templateread
  • mailgun.account_templates.listList account templatesread
  • mailgun.account_templates.renameRename an account templatewrite
  • mailgun.account_templates.updateUpdate an account templatewrite
  • mailgun.account_templates.versions.copyCopy an account template versionwrite
  • mailgun.account_templates.versions.createCreate an account template versionwrite
  • mailgun.account_templates.versions.deleteDelete an account template versiondestructive
  • mailgun.account_templates.versions.getGet an account template versionread
  • mailgun.account_templates.versions.listList account template versionsread
  • mailgun.account_templates.versions.updateUpdate an account template versionwrite
  • mailgun.templates.copyCopy a domain templatewrite
  • mailgun.templates.createCreate a domain templatewrite
  • mailgun.templates.deleteDelete a domain templatedestructive
  • mailgun.templates.delete_allDelete all domain templatesdestructive
  • mailgun.templates.getGet a domain templateread
  • mailgun.templates.listList domain templatesread
  • mailgun.templates.renameRename a domain templatewrite
  • mailgun.templates.updateUpdate a domain templatewrite
  • mailgun.templates.versions.copyCopy a domain template versionwrite
  • mailgun.templates.versions.createCreate a domain template versionwrite
  • mailgun.templates.versions.deleteDelete a domain template versiondestructive
  • mailgun.templates.versions.getGet a domain template versionread
  • mailgun.templates.versions.listList domain template versionsread
  • mailgun.templates.versions.updateUpdate a domain template versionwrite
Alerts25
  • mailgun.alerts.create_event_settingCreate an alert event settingwrite
  • mailgun.alerts.delete_event_settingDelete an alert event settingdestructive
  • mailgun.alerts.delete_slack_settingsDelete Slack alert settingsdestructive
  • mailgun.alerts.disconnect_slackDisconnect the Slack integrationdestructive
  • mailgun.alerts.get_settingsGet alert settingsread
  • mailgun.alerts.get_slack_channelGet a Slack channelread
  • mailgun.alerts.list_eventsList alert event typesread
  • mailgun.alerts.list_slack_channelsList Slack channelsread
  • mailgun.alerts.rotate_webhook_signing_keyRotate the alert webhook signing keydestructive
  • mailgun.alerts.test_emailSend a test alert emailwrite
  • mailgun.alerts.test_slackSend a test Slack alertwrite
  • mailgun.alerts.test_webhookSend a test alert webhookwrite
  • mailgun.alerts.update_event_settingUpdate an alert event settingwrite
  • mailgun.alerts.update_slack_settingsUpdate Slack alert settingswrite
  • mailgun.limits.createCreate a sending limitwrite
  • mailgun.limits.deleteDelete a sending limitdestructive
  • mailgun.limits.getGet a sending limitread
  • mailgun.limits.listList sending limitsread
  • mailgun.limits.updateUpdate a sending limitwrite
  • mailgun.send_alerts.createCreate a send alertwrite
  • mailgun.send_alerts.deleteDelete a send alertdestructive
  • mailgun.send_alerts.getGet a send alertread
  • mailgun.send_alerts.listList send alertsread
  • mailgun.send_alerts.list_hitsList threshold hitsread
  • mailgun.send_alerts.updateUpdate a send alertwrite
Analytics24
  • mailgun.metrics.queryQuery account metricsread
  • mailgun.metrics.query_bounce_classificationQuery bounce classification metricsread
  • mailgun.metrics.query_usageQuery account usage metricsread
  • mailgun.stats.get_aggregates_countriesGet statistics aggregated by countryread
  • mailgun.stats.get_aggregates_devicesGet statistics aggregated by deviceread
  • mailgun.stats.get_aggregates_providersGet statistics aggregated by providerread
  • mailgun.stats.get_domain_totalGet total statistics for a domainread
  • mailgun.stats.get_filteredGet filtered statisticsread
  • mailgun.stats.get_totalGet total account statisticsread
  • mailgun.stats.get_total_by_domainGet total statistics broken down by domainread
  • mailgun.tags.deleteDelete a tagdestructive
  • mailgun.tags.delete_analyticsDelete an analytics tagdestructive
  • mailgun.tags.getGet a tagread
  • mailgun.tags.get_domain_limitGet the tag limit for a domainread
  • mailgun.tags.get_limitsGet tag limitsread
  • mailgun.tags.get_statsGet tag statisticsread
  • mailgun.tags.get_stats_aggregatesGet aggregate tag statisticsread
  • mailgun.tags.listList tags for a domainread
  • mailgun.tags.list_countriesList tag statistics by countryread
  • mailgun.tags.list_devicesList tag statistics by deviceread
  • mailgun.tags.list_providersList tag statistics by providerread
  • mailgun.tags.queryQuery tagsread
  • mailgun.tags.updateUpdate a tagwrite
  • mailgun.tags.update_descriptionUpdate a tag descriptionwrite
Validation23
  • mailgun.validate.addressValidate an email addressread
  • mailgun.validate.address_privateValidate an email address privatelyread
  • mailgun.validate.address_private_postValidate an email address privately (POST)read
  • mailgun.validate.address_v3Validate an email address (v3)read
  • mailgun.validate.address_v3_postValidate an email address (v3, POST)read
  • mailgun.validate.create_list_jobStart a mailing list validation jobwrite
  • mailgun.validate.create_preview_jobCreate a list-health preview jobwrite
  • mailgun.validate.delete_bulk_jobDelete a bulk validation jobdestructive
  • mailgun.validate.delete_list_jobDelete a mailing list validation jobdestructive
  • mailgun.validate.delete_preview_jobDelete a list-health preview jobdestructive
  • mailgun.validate.get_bulk_jobGet a bulk validation jobread
  • mailgun.validate.get_list_jobGet a mailing list validation jobread
  • mailgun.validate.get_platform_thresholdGet the platform validation thresholdread
  • mailgun.validate.get_preview_jobGet a list-health preview jobread
  • mailgun.validate.get_public_thresholdGet the public validation thresholdread
  • mailgun.validate.list_bulk_jobsList bulk validation jobsread
  • mailgun.validate.list_jobsList bulk and preview validation jobsread
  • mailgun.validate.list_preview_jobsList list-health preview jobsread
  • mailgun.validate.parseParse email addressesread
  • mailgun.validate.parse_postParse email addresses (POST)read
  • mailgun.validate.parse_privateParse email addresses privatelyread
  • mailgun.validate.parse_private_postParse email addresses privately (POST)read
  • mailgun.validate.promote_preview_jobPromote a list-health preview jobwrite
Suppressions20
  • mailgun.bounces.createAdd a bouncewrite
  • mailgun.bounces.deleteDelete a bouncedestructive
  • mailgun.bounces.delete_allDelete all bouncesdestructive
  • mailgun.bounces.getGet a bounceread
  • mailgun.bounces.listList bouncesread
  • mailgun.complaints.createAdd a complaintwrite
  • mailgun.complaints.deleteDelete a complaintdestructive
  • mailgun.complaints.delete_allDelete all complaintsdestructive
  • mailgun.complaints.getGet a complaintread
  • mailgun.complaints.listList complaintsread
  • mailgun.unsubscribes.createAdd an unsubscribewrite
  • mailgun.unsubscribes.deleteDelete an unsubscribedestructive
  • mailgun.unsubscribes.delete_allDelete all unsubscribesdestructive
  • mailgun.unsubscribes.getGet an unsubscriberead
  • mailgun.unsubscribes.listList unsubscribesread
  • mailgun.whitelists.createAdd an allowlist entrywrite
  • mailgun.whitelists.deleteDelete an allowlist entrydestructive
  • mailgun.whitelists.delete_allDelete all allowlist entriesdestructive
  • mailgun.whitelists.getGet an allowlist entryread
  • mailgun.whitelists.listList allowlist entriesread
Webhooks14
  • mailgun.domain_webhooks.createCreate a domain webhookwrite
  • mailgun.domain_webhooks.create_v4Create a domain webhook (v4)write
  • mailgun.domain_webhooks.deleteDelete a domain webhookdestructive
  • mailgun.domain_webhooks.delete_v4Delete a domain webhook (v4)destructive
  • mailgun.domain_webhooks.getGet a domain webhookread
  • mailgun.domain_webhooks.listList domain webhooksread
  • mailgun.domain_webhooks.updateUpdate a domain webhookwrite
  • mailgun.domain_webhooks.update_v4Update a domain webhook (v4)write
  • mailgun.webhooks.createCreate an account webhookwrite
  • mailgun.webhooks.deleteDelete an account webhookdestructive
  • mailgun.webhooks.delete_allDelete all account webhooksdestructive
  • mailgun.webhooks.getGet an account webhookread
  • mailgun.webhooks.listList account webhooksread
  • mailgun.webhooks.updateUpdate an account webhookwrite
Lists13
  • mailgun.lists.createCreate a mailing listwrite
  • mailgun.lists.deleteDelete a mailing listdestructive
  • mailgun.lists.getGet a mailing listread
  • mailgun.lists.listList mailing listsread
  • mailgun.lists.list_pagesList mailing lists (paged)read
  • mailgun.lists.members.createAdd a mailing list memberwrite
  • mailgun.lists.members.create_bulkAdd mailing list members in bulkwrite
  • mailgun.lists.members.deleteDelete a mailing list memberdestructive
  • mailgun.lists.members.getGet a mailing list memberread
  • mailgun.lists.members.listList mailing list membersread
  • mailgun.lists.members.list_pagesList mailing list members (paged)read
  • mailgun.lists.members.updateUpdate a mailing list memberwrite
  • mailgun.lists.updateUpdate a mailing listwrite
Routing11
  • mailgun.forwards.createCreate a forwarding rulewrite
  • mailgun.forwards.deleteDelete a forwarding ruledestructive
  • mailgun.forwards.getGet a forwarding ruleread
  • mailgun.forwards.listList forwarding rulesread
  • mailgun.forwards.updateUpdate a forwarding rulewrite
  • mailgun.routes.createCreate a routewrite
  • mailgun.routes.deleteDelete a routedestructive
  • mailgun.routes.getGet a routeread
  • mailgun.routes.listList routesread
  • mailgun.routes.matchMatch a route against an addressread
  • mailgun.routes.updateUpdate a routewrite
Send5
  • mailgun.messages.delete_scheduledDelete all scheduled messagesdestructive
  • mailgun.messages.get_storedGet a stored messageread
  • mailgun.messages.queue_statusGet sending queue statusread
  • mailgun.messages.resend_storedResend a stored messagewrite
  • mailgun.messages.sendSend an emailwrite
Events2
  • mailgun.events.listList eventsread
  • mailgun.logs.queryQuery analytics logsread

Questions

The Mailgun MCP server, answered.

Is there a Mailgun MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 275 Mailgun actions across infrastructure, account, domains and templates, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Mailgun.

What do I need to connect Mailgun?

Mailgun API key. Plus your api host. The free call account { op: "connections.requirements", service: "mailgun" } lists exactly what to paste.

Can an AI agent delete or change things in Mailgun?

Only if its key allows it, and only with an explicit confirmation. 57 Mailgun actions are destructive, including delete a mailing list, delete a mailing list member and delete a domain template. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Mailgun API limit?

actionlake paces every call to the limits in the Mailgun service file: 300 calls a minute, at most 10 at a time per connection. Repeated reads are answered from cache (116 Mailgun actions can be), which never reaches Mailgun.

What does a Mailgun action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (30 Mailgun actions page). Cache hits, searches, dry runs and calls Mailgun refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Mailgun API does it cover?

The Mailgun Email API API v3/v4/v5 at your Mailgun instance's API base URL, which you enter when connecting. It is built from Mailgun's documentation as read on 19 September 2026. 275 actions in 13 areas, each one in the signed service file (version 1.0.0).

Does actionlake keep my Mailgun data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Mailgun credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Mailgun today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.