- Multi-product coverage. The OpenAPI driven tool registry now spans four
Mailgun products —
send,validate,optimize, andinspect. Endpoints are drawn from a curated allowlist, mapped to MCP tools from the bundled OpenAPI spec, and annotated with a product tag; all matching tools are registered at startup (scoped by tag filtering, see below). New endpoints added this release:- Validation —
validate_email(GET /v4/address/validate) checks address deliverability and syntax before sending. Taggedvalidate. - Optimize / Inbox Placement —
get_inbox_placement_result(GET /v4/inbox/results/{result}) retrieves seed/inbox placement test results. Taggedoptimize. - Inspect / Email Preview —
get_preview_result(GET /v1/preview/tests/{test_id}/results) retrieves email rendering/preview test results. Taggedinspect.
- Validation —
- New analytics tool:
get_metrics_summaryfor a convenient rollup of sending metrics analysis. - Custom tool framework: Introduced
src/custom-tools/directory for tools that require logic beyond OpenAPI-to-MCP mapping. - Plan-aware error messages: API errors now include actionable guidance based on HTTP status code (401, 403, 404, 400) with links to billing when relevant.
- Tag-based tool filtering. Operators can now scope which tools the server
registers via the
--tagsCLI flag orMAILGUN_MCP_TAGSenv var (values:send,validate,optimize,inspect). CLI takes precedence over the env var, and filtering uses OR semantics. Adds--helpand--list-tagsfor discoverability. Every registered tool also carries a_meta["com.mailgun/tags"]annotation for downstream client-side filtering.
makeMailgunRequestnow rejects withMailgunApiError(carryingstatusCodeandapiMessage) instead of a genericError.
- Split monolithic test file into module-specific test files under
test/.
- Dropped Node 18 support. The minimum required Node.js version is now 20.12.0.
Node 18 reached end-of-life on April 30, 2025, and current dev dependencies
(vitest 4.x / rolldown) require
node:util.styleTextwhich was introduced in Node 20.12. - Shortened MCP tool IDs. Redundant
_namesuffixes are now stripped from path-parameter segments in tool IDs (e.g.get-v3-domain_name-templates-template_namebecomesget-v3-domain-templates-template). This keeps combined server + tool name lengths within common client/API 60-character limit. Consumers that reference tool IDs by name will need to update to the new shorter names.
- Convert the codebase to Typescript
- Switched to vitest for testing