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/mcpdo { 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.
- 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 - 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 keyapi_hostWhere your Mailgun lives: your api host
account { op: "connections.requirements", service: "mailgun" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates 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
Infrastructure
5120 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
Account
3110 read · 14 write · 7 destructive
List users · Get a user · Get the current user · Resend the activation email
Domains
287 read · 16 write · 5 destructive
List domains · Create a domain · Create an SMTP credential · List SMTP credentials
Templates
288 read · 14 write · 6 destructive
List account templates · List domain templates · Create an account template · Create a domain template
Alerts
259 read · 10 write · 6 destructive
List threshold hits · List Slack channels · List sending limits · Get a sending limit
Analytics
2420 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
Validation
2317 read · 3 write · 3 destructive
Get the platform validation threshold · Get the public validation threshold · Validate an email address · Validate an email address privately
Suppressions
208 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.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
mailgun.users.listList users | List users | read | identity.user.list474 connectors |
mailgun.lists.listList mailing lists | List mailing lists | read | comm.audience.list26 connectors |
mailgun.lists.members.listList mailing list members | List mailing list members | read | comm.audience_member.list23 connectors |
mailgun.events.listList events | List events | read | comm.delivery_event.list16 connectors |
mailgun.lists.list_pagesList mailing lists (paged) | List mailing lists (paged) | read | comm.audience.list26 connectors |
mailgun.lists.createCreate a mailing list | Create a mailing list | write | comm.audience.create24 connectors |
mailgun.lists.members.list_pagesList mailing list members (paged) | List mailing list members (paged) | read | comm.audience_member.list23 connectors |
mailgun.users.getGet a user | Get a user | read | identity.user.get399 connectors |
mailgun.lists.deleteDelete a mailing list | Delete a mailing list | destructive | comm.audience.delete21 connectors |
mailgun.templates.listList domain templates | List domain templates | read | comm.email_template.list40 connectors |
mailgun.messages.sendSend an email | Send an email | write | comm.email.send32 connectors |
mailgun.messages.resend_storedResend a stored message | Resend a stored message | write | comm.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.
- Readread
Who has access in Mailgun? List every user and their role.
calls
mailgun.users.list - Planwrite
Provision a subaccount with limits and features in Mailgun. Ask me before anything is sent or changed.
calls
mailgun.account.get_monthly_limitmailgun.subaccounts.createmailgun.subaccounts.enablemailgun.subaccounts.update_monthly_limitmailgun.subaccounts.update_features+2 more - Planwrite
Daily deliverability report for a domain in Mailgun.
calls
mailgun.stats.get_domain_totalmailgun.stats.get_aggregates_providersmailgun.stats.get_aggregates_countriesmailgun.bounces.listmailgun.complaints.list+1 more - Writewrite
Create a mailing list in Mailgun. Show me exactly what you will send before you save it.
calls
mailgun.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.
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.
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.
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 decides
Activate version version tag of template template name on domain. Live sends will use it immediately.
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.
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 decides
Run bulk validation over list list id (number of items subscribed members). This is billed per address.
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 decides
Create a new Mailgun sending domain domain. This consumes account domain quota.
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 decides
Create subaccount subaccount name with a monthly limit of monthly limit against the parent allowance.
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 decides
Clear suppressions on domain for number of addresses addresses and whitelist them. Mail will resume to these recipients.
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 decides
Rotate DKIM keys on number of items sending domains. New DNS records must be published or signing will fail.
account { op: "plans.install", slug: "mailgun-investigate-failed-delivery" }
# then ask for it by name; a schedule can run it on a timetableGovernance for Mailgun
Destructive actions wait for a yes.
57 Mailgun actions are destructive. The first 10:
- Delete a mailing list
mailgun.lists.delete - Delete a mailing list member
mailgun.lists.members.delete - Delete a domain template
mailgun.templates.delete - Delete all domain templates
mailgun.templates.delete_all - Delete an account template
mailgun.account_templates.delete - Delete all account templates
mailgun.account_templates.delete_all - Delete a bounce
mailgun.bounces.delete - Delete a complaint
mailgun.complaints.delete - Delete an allowlist entry
mailgun.whitelists.delete - Delete all bounces
mailgun.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.
Delete a mailing list?
intent: the user asked me to delete a mailing list
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]" } ]}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
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 poolwritemailgun.dynamic_pools.create_allConfigure dynamic IP pools for the accountwritemailgun.dynamic_pools.delete_allRemove the account dynamic IP pool configurationdestructivemailgun.dynamic_pools.delete_domain_overrideRemove a domain's dynamic pool overridedestructivemailgun.dynamic_pools.enroll_all_domainsEnroll all domains in dynamic poolswritemailgun.dynamic_pools.enroll_domainEnroll a domain in dynamic poolswritemailgun.dynamic_pools.get_domain_historyGet a domain's dynamic pool historyreadmailgun.dynamic_pools.listList dynamic IP poolsreadmailgun.dynamic_pools.list_assignable_domainsList domains assignable to dynamic poolsreadmailgun.dynamic_pools.list_domainsList domains enrolled in dynamic poolsreadmailgun.dynamic_pools.list_historyList dynamic pool historyreadmailgun.dynamic_pools.list_subaccount_poolsList delegated subaccount IP poolsreadmailgun.dynamic_pools.preview_domainPreview a domain's dynamic pool assignmentreadmailgun.dynamic_pools.set_domain_overrideOverride a domain's dynamic poolwritemailgun.dynamic_pools.unenroll_domainUnenroll a domain from dynamic poolsdestructivemailgun.dynamic_pools.updateUpdate a dynamic IP poolwritemailgun.ip_allowlist.createAdd an allowlisted IPwritemailgun.ip_allowlist.deleteRemove an allowlisted IPdestructivemailgun.ip_allowlist.listList allowlisted IPsreadmailgun.ip_allowlist.updateUpdate an allowlisted IPwritemailgun.ip_pools.add_ipAdd one IP to an IP poolwritemailgun.ip_pools.add_ipsAdd IPs to an IP poolwritemailgun.ip_pools.createCreate an IP poolwritemailgun.ip_pools.delegateDelegate an IP pool to a subaccountwritemailgun.ip_pools.deleteDelete an IP pooldestructivemailgun.ip_pools.getGet an IP poolreadmailgun.ip_pools.listList IP poolsreadmailgun.ip_pools.list_domainsList domains in an IP poolreadmailgun.ip_pools.remove_ipRemove an IP from an IP pooldestructivemailgun.ip_pools.undelegateRemove an IP pool delegationdestructivemailgun.ip_pools.updateUpdate an IP poolwritemailgun.ip_warmups.createStart an IP warmupwritemailgun.ip_warmups.deleteStop an IP warmupdestructivemailgun.ip_warmups.getGet an IP warmupreadmailgun.ip_warmups.listList IP warmupsreadmailgun.ips.assign_domainAssign a domain to an IPwritemailgun.ips.getGet an IP addressreadmailgun.ips.get_account_settingsGet account IP settingsreadmailgun.ips.get_domain_settingsGet IP settings for a domainreadmailgun.ips.get_new_requestGet the status of a new IP requestreadmailgun.ips.listList IP addressesreadmailgun.ips.list_detailsList IP addresses with detailsreadmailgun.ips.list_domainsList domains assigned to an IPreadmailgun.ips.replace_pool_with_ipReplace a domain's pool with a single IPdestructivemailgun.ips.request_newRequest a new dedicated IPwritemailgun.ips.set_bandSet the reputation band for an IPwritemailgun.ips.unassign_domainUnassign a domain from an IPdestructivemailgun.ips.unassign_from_domainUnassign an IP from a domaindestructivemailgun.ips.update_account_settingsUpdate account IP settingswritemailgun.ips.update_domain_settingsUpdate IP settings for a domainwritemailgun.ips.update_subaccount_settingsUpdate subaccount IP settingswrite
Account31
mailgun.account.create_sandbox_recipientAuthorise a sandbox recipientwritemailgun.account.delete_monthly_limitRemove the custom monthly message limitdestructivemailgun.account.delete_sandbox_recipientRemove an authorised sandbox recipientdestructivemailgun.account.enable_custom_limitEnable the custom message limitwritemailgun.account.get_http_signing_keyGet the HTTP signing keyreadmailgun.account.get_monthly_limitGet the custom monthly message limitreadmailgun.account.list_sandbox_recipientsList authorised sandbox recipientsreadmailgun.account.regenerate_http_signing_keyRegenerate the HTTP signing keywritemailgun.account.resend_activation_emailResend the activation emailwritemailgun.account.updateUpdate the accountwritemailgun.account.update_featuresUpdate account featureswritemailgun.account.update_monthly_limitUpdate the custom monthly message limitwritemailgun.keys.createCreate an API keywritemailgun.keys.create_publicCreate a public API keywritemailgun.keys.deleteDelete an API keydestructivemailgun.keys.listList API keysreadmailgun.subaccounts.assign_ip_poolAssign an IP pool to a subaccountwritemailgun.subaccounts.createCreate a subaccountwritemailgun.subaccounts.deleteDelete a subaccountdestructivemailgun.subaccounts.delete_monthly_limitRemove a subaccount's monthly limitdestructivemailgun.subaccounts.disableDisable a subaccountdestructivemailgun.subaccounts.enableEnable a subaccountwritemailgun.subaccounts.getGet a subaccountreadmailgun.subaccounts.get_monthly_limitGet a subaccount's monthly limitreadmailgun.subaccounts.listList subaccountsreadmailgun.subaccounts.unassign_ip_poolUnassign a subaccount's IP pooldestructivemailgun.subaccounts.update_featuresUpdate subaccount featureswritemailgun.subaccounts.update_monthly_limitUpdate a subaccount's monthly limitwritemailgun.users.getGet a userreadmailgun.users.get_meGet the current userreadmailgun.users.listList usersread
Domains28
mailgun.credentials.createCreate an SMTP credentialwritemailgun.credentials.deleteDelete an SMTP credentialdestructivemailgun.credentials.delete_allDelete all SMTP credentials for a domaindestructivemailgun.credentials.listList SMTP credentialsreadmailgun.credentials.updateUpdate an SMTP credential passwordwritemailgun.dkim_keys.activateActivate a DKIM keywritemailgun.dkim_keys.createCreate a DKIM keywritemailgun.dkim_keys.deactivateDeactivate a DKIM keywritemailgun.dkim_keys.deleteDelete a DKIM keydestructivemailgun.dkim_keys.listList DKIM keysreadmailgun.dkim_keys.list_for_authorityList DKIM keys for a signing authorityreadmailgun.dkim_keys.rotateRotate a domain's DKIM keydestructivemailgun.dkim_keys.update_authorityUpdate the DKIM authority for a domainwritemailgun.dkim_keys.update_rotationUpdate DKIM automatic rotationwritemailgun.dkim_keys.update_selectorUpdate the DKIM selector for a domainwritemailgun.domains.createCreate a domainwritemailgun.domains.create_tracking_certificateRequest a tracking TLS certificatewritemailgun.domains.deleteDelete a domaindestructivemailgun.domains.getGet a domainreadmailgun.domains.get_trackingGet domain tracking settingsreadmailgun.domains.get_tracking_certificate_statusGet tracking TLS certificate statusreadmailgun.domains.listList domainsreadmailgun.domains.regenerate_tracking_certificateRegenerate a tracking TLS certificatewritemailgun.domains.updateUpdate a domainwritemailgun.domains.update_click_trackingUpdate click trackingwritemailgun.domains.update_open_trackingUpdate open trackingwritemailgun.domains.update_unsubscribe_trackingUpdate unsubscribe trackingwritemailgun.domains.verifyVerify a domainwrite
Templates28
mailgun.account_templates.copyCopy an account templatewritemailgun.account_templates.createCreate an account templatewritemailgun.account_templates.deleteDelete an account templatedestructivemailgun.account_templates.delete_allDelete all account templatesdestructivemailgun.account_templates.getGet an account templatereadmailgun.account_templates.listList account templatesreadmailgun.account_templates.renameRename an account templatewritemailgun.account_templates.updateUpdate an account templatewritemailgun.account_templates.versions.copyCopy an account template versionwritemailgun.account_templates.versions.createCreate an account template versionwritemailgun.account_templates.versions.deleteDelete an account template versiondestructivemailgun.account_templates.versions.getGet an account template versionreadmailgun.account_templates.versions.listList account template versionsreadmailgun.account_templates.versions.updateUpdate an account template versionwritemailgun.templates.copyCopy a domain templatewritemailgun.templates.createCreate a domain templatewritemailgun.templates.deleteDelete a domain templatedestructivemailgun.templates.delete_allDelete all domain templatesdestructivemailgun.templates.getGet a domain templatereadmailgun.templates.listList domain templatesreadmailgun.templates.renameRename a domain templatewritemailgun.templates.updateUpdate a domain templatewritemailgun.templates.versions.copyCopy a domain template versionwritemailgun.templates.versions.createCreate a domain template versionwritemailgun.templates.versions.deleteDelete a domain template versiondestructivemailgun.templates.versions.getGet a domain template versionreadmailgun.templates.versions.listList domain template versionsreadmailgun.templates.versions.updateUpdate a domain template versionwrite
Alerts25
mailgun.alerts.create_event_settingCreate an alert event settingwritemailgun.alerts.delete_event_settingDelete an alert event settingdestructivemailgun.alerts.delete_slack_settingsDelete Slack alert settingsdestructivemailgun.alerts.disconnect_slackDisconnect the Slack integrationdestructivemailgun.alerts.get_settingsGet alert settingsreadmailgun.alerts.get_slack_channelGet a Slack channelreadmailgun.alerts.list_eventsList alert event typesreadmailgun.alerts.list_slack_channelsList Slack channelsreadmailgun.alerts.rotate_webhook_signing_keyRotate the alert webhook signing keydestructivemailgun.alerts.test_emailSend a test alert emailwritemailgun.alerts.test_slackSend a test Slack alertwritemailgun.alerts.test_webhookSend a test alert webhookwritemailgun.alerts.update_event_settingUpdate an alert event settingwritemailgun.alerts.update_slack_settingsUpdate Slack alert settingswritemailgun.limits.createCreate a sending limitwritemailgun.limits.deleteDelete a sending limitdestructivemailgun.limits.getGet a sending limitreadmailgun.limits.listList sending limitsreadmailgun.limits.updateUpdate a sending limitwritemailgun.send_alerts.createCreate a send alertwritemailgun.send_alerts.deleteDelete a send alertdestructivemailgun.send_alerts.getGet a send alertreadmailgun.send_alerts.listList send alertsreadmailgun.send_alerts.list_hitsList threshold hitsreadmailgun.send_alerts.updateUpdate a send alertwrite
Analytics24
mailgun.metrics.queryQuery account metricsreadmailgun.metrics.query_bounce_classificationQuery bounce classification metricsreadmailgun.metrics.query_usageQuery account usage metricsreadmailgun.stats.get_aggregates_countriesGet statistics aggregated by countryreadmailgun.stats.get_aggregates_devicesGet statistics aggregated by devicereadmailgun.stats.get_aggregates_providersGet statistics aggregated by providerreadmailgun.stats.get_domain_totalGet total statistics for a domainreadmailgun.stats.get_filteredGet filtered statisticsreadmailgun.stats.get_totalGet total account statisticsreadmailgun.stats.get_total_by_domainGet total statistics broken down by domainreadmailgun.tags.deleteDelete a tagdestructivemailgun.tags.delete_analyticsDelete an analytics tagdestructivemailgun.tags.getGet a tagreadmailgun.tags.get_domain_limitGet the tag limit for a domainreadmailgun.tags.get_limitsGet tag limitsreadmailgun.tags.get_statsGet tag statisticsreadmailgun.tags.get_stats_aggregatesGet aggregate tag statisticsreadmailgun.tags.listList tags for a domainreadmailgun.tags.list_countriesList tag statistics by countryreadmailgun.tags.list_devicesList tag statistics by devicereadmailgun.tags.list_providersList tag statistics by providerreadmailgun.tags.queryQuery tagsreadmailgun.tags.updateUpdate a tagwritemailgun.tags.update_descriptionUpdate a tag descriptionwrite
Validation23
mailgun.validate.addressValidate an email addressreadmailgun.validate.address_privateValidate an email address privatelyreadmailgun.validate.address_private_postValidate an email address privately (POST)readmailgun.validate.address_v3Validate an email address (v3)readmailgun.validate.address_v3_postValidate an email address (v3, POST)readmailgun.validate.create_list_jobStart a mailing list validation jobwritemailgun.validate.create_preview_jobCreate a list-health preview jobwritemailgun.validate.delete_bulk_jobDelete a bulk validation jobdestructivemailgun.validate.delete_list_jobDelete a mailing list validation jobdestructivemailgun.validate.delete_preview_jobDelete a list-health preview jobdestructivemailgun.validate.get_bulk_jobGet a bulk validation jobreadmailgun.validate.get_list_jobGet a mailing list validation jobreadmailgun.validate.get_platform_thresholdGet the platform validation thresholdreadmailgun.validate.get_preview_jobGet a list-health preview jobreadmailgun.validate.get_public_thresholdGet the public validation thresholdreadmailgun.validate.list_bulk_jobsList bulk validation jobsreadmailgun.validate.list_jobsList bulk and preview validation jobsreadmailgun.validate.list_preview_jobsList list-health preview jobsreadmailgun.validate.parseParse email addressesreadmailgun.validate.parse_postParse email addresses (POST)readmailgun.validate.parse_privateParse email addresses privatelyreadmailgun.validate.parse_private_postParse email addresses privately (POST)readmailgun.validate.promote_preview_jobPromote a list-health preview jobwrite
Suppressions20
mailgun.bounces.createAdd a bouncewritemailgun.bounces.deleteDelete a bouncedestructivemailgun.bounces.delete_allDelete all bouncesdestructivemailgun.bounces.getGet a bouncereadmailgun.bounces.listList bouncesreadmailgun.complaints.createAdd a complaintwritemailgun.complaints.deleteDelete a complaintdestructivemailgun.complaints.delete_allDelete all complaintsdestructivemailgun.complaints.getGet a complaintreadmailgun.complaints.listList complaintsreadmailgun.unsubscribes.createAdd an unsubscribewritemailgun.unsubscribes.deleteDelete an unsubscribedestructivemailgun.unsubscribes.delete_allDelete all unsubscribesdestructivemailgun.unsubscribes.getGet an unsubscribereadmailgun.unsubscribes.listList unsubscribesreadmailgun.whitelists.createAdd an allowlist entrywritemailgun.whitelists.deleteDelete an allowlist entrydestructivemailgun.whitelists.delete_allDelete all allowlist entriesdestructivemailgun.whitelists.getGet an allowlist entryreadmailgun.whitelists.listList allowlist entriesread
Webhooks14
mailgun.domain_webhooks.createCreate a domain webhookwritemailgun.domain_webhooks.create_v4Create a domain webhook (v4)writemailgun.domain_webhooks.deleteDelete a domain webhookdestructivemailgun.domain_webhooks.delete_v4Delete a domain webhook (v4)destructivemailgun.domain_webhooks.getGet a domain webhookreadmailgun.domain_webhooks.listList domain webhooksreadmailgun.domain_webhooks.updateUpdate a domain webhookwritemailgun.domain_webhooks.update_v4Update a domain webhook (v4)writemailgun.webhooks.createCreate an account webhookwritemailgun.webhooks.deleteDelete an account webhookdestructivemailgun.webhooks.delete_allDelete all account webhooksdestructivemailgun.webhooks.getGet an account webhookreadmailgun.webhooks.listList account webhooksreadmailgun.webhooks.updateUpdate an account webhookwrite
Lists13
mailgun.lists.createCreate a mailing listwritemailgun.lists.deleteDelete a mailing listdestructivemailgun.lists.getGet a mailing listreadmailgun.lists.listList mailing listsreadmailgun.lists.list_pagesList mailing lists (paged)readmailgun.lists.members.createAdd a mailing list memberwritemailgun.lists.members.create_bulkAdd mailing list members in bulkwritemailgun.lists.members.deleteDelete a mailing list memberdestructivemailgun.lists.members.getGet a mailing list memberreadmailgun.lists.members.listList mailing list membersreadmailgun.lists.members.list_pagesList mailing list members (paged)readmailgun.lists.members.updateUpdate a mailing list memberwritemailgun.lists.updateUpdate a mailing listwrite
Routing11
mailgun.forwards.createCreate a forwarding rulewritemailgun.forwards.deleteDelete a forwarding ruledestructivemailgun.forwards.getGet a forwarding rulereadmailgun.forwards.listList forwarding rulesreadmailgun.forwards.updateUpdate a forwarding rulewritemailgun.routes.createCreate a routewritemailgun.routes.deleteDelete a routedestructivemailgun.routes.getGet a routereadmailgun.routes.listList routesreadmailgun.routes.matchMatch a route against an addressreadmailgun.routes.updateUpdate a routewrite
Send5
mailgun.messages.delete_scheduledDelete all scheduled messagesdestructivemailgun.messages.get_storedGet a stored messagereadmailgun.messages.queue_statusGet sending queue statusreadmailgun.messages.resend_storedResend a stored messagewritemailgun.messages.sendSend an emailwrite
Events2
mailgun.events.listList eventsreadmailgun.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.