Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

dev.mailkite/mailkite

NPM · @MAILKITE/MCP · 2 COMPONENTS · SCANNED SEP 20

Send email, manage domains, DNS, webhooks, templates, and inbound routing on MailKite

0 this week 82 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability77
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 3350 tokens (~83/item across 40 items; 40 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage88
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 63% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 10 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 40 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the dev.mailkite/mailkite MCP server?

dev.mailkite/mailkite runs locally as an npm package, launched with npx -y @mailkite/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @mailkite/mcp

# add to Claude Code
claude mcp add dev-mailkite-mailkite -- npx -y @mailkite/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "dev-mailkite-mailkite": {
      "command": "npx",
      "args": [
        "-y",
        "@mailkite/mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dev-mailkite-mailkite": {
      "command": "npx",
      "args": [
        "-y",
        "@mailkite/mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add dev-mailkite-mailkite -- npx -y @mailkite/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-mailkite-mailkite": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@mailkite/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-mailkite-mailkite --command npx --arg -y --arg @mailkite/mcp
# ~/.hermes/config.yaml
mcp_servers:
  dev-mailkite-mailkite:
    command: "npx"
    args: ["-y", "@mailkite/mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dev-mailkite-mailkite": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@mailkite/mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add dev-mailkite-mailkite -t stdio -c npx -a -y @mailkite/mcp
// mcp.json
{
  "mcpServers": {
    "dev-mailkite-mailkite": {
      "command": "npx",
      "args": [
        "-y",
        "@mailkite/mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 16 Sept 26 0
    • Stability: 0.97 → pass security
  • 15 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 9 Sept 26 0
    • Stability: 0.97 → pass security
  • 8 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/@mailkite/mcp@0.13.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 96 packages
Packages resolved 96
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 40 exposed · ~3,350 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
mailkite_add_list_contacts ~64

Add contacts (by id, ctr_…) to a list. Returns how many were newly added; contacts already on the list are ignored. Requires a management session token.

NameTypeReqDescription
contactIdsarrayyes
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_agent ~260

Send a message to one of your inbox agents and get its reply. Defaults to the account's default agent; pass `routeId` or `address` to target a specific agent, or `model` to override the model. This is separate from inbound routing — it does not match or override routes. Requires an API key (mk_live_…).

NameTypeReqDescription
addressstringTarget the agent whose route matches this address. Alternative to routeId.
fromstringOptional sender address the agent sees as the originator. Defaults to the account's API caller address.
htmlstringOptional HTML body. `text` is still required — the agent reasons over the plain-text content.
modelstringOverride the model the agent runs on for this call (e.g. claude-sonnet-4-6).
routeIdstringTarget a specific agent by its route id (rte_…). Omit to use the account's default agent (its most recently created agent route).
subjectstringOptional subject line the agent sees on the message.
textstringyesThe message for the agent — it reads this as the incoming email body and decides what to do.

No output schema declared.

No examples provided.

mailkite_check_domain_availability ~49

Check whether a domain is available to register, and at what price. Read-only — no charge. Requires a management session token.

NameTypeReqDescription
domainstringyesQuery parameter `domain`.

No output schema declared.

No examples provided.

mailkite_create_broadcast ~145

Create a broadcast draft. `from` is required; set `audience` to { type: "all" } or { type: "list", id: "lst_…" }. Returns the broadcast with its id (bct_…). Send it with sendBroadcast. Requires a management session token.

NameTypeReqDescription
audienceobject
footerAddressstring
fromstringyes
htmlstring
namestring
previewstring
replyTostring
subjectstring
templateIdstring
textstring

No output schema declared.

No examples provided.

mailkite_create_domain ~34

Add a domain. Returns the domain + DNS records. Requires a management session token.

NameTypeReqDescription
domainstringyes

No output schema declared.

No examples provided.

mailkite_create_list ~46

Create a contact list. Returns the list with its id (lst_…); add contacts with addListContacts. Requires a management session token.

NameTypeReqDescription
namestringyes

No output schema declared.

No examples provided.

mailkite_create_route ~102

Create a route (match, action, destination). Requires a management session token.

NameTypeReqDescription
actionstringWhat to do with matching mail. Defaults to webhook.
agentPromptstringRequired for action agent — instructions for the inbox agent.
destinationstringRequired for action webhook (URL) or forward (address).
matchstringyesAddress pattern: exact, *@domain, addr+*@domain, or /regex/.

No output schema declared.

No examples provided.

mailkite_create_template ~172

Create a template. Pass `baseId` to clone a base template into your own, or provide name/subject/html/text/theme directly. Requires a management session token.

NameTypeReqDescription
baseIdstringClone this base template (base_…) into your own. When set, name is optional (defaults to the base's name).
htmlstringRendered, send-ready HTML.
jsonstringEditor (TipTap) JSON source, for re-editing in the dashboard.
namestringTemplate name. Required unless baseId is given.
subjectstringDefault subject line for sends.
textstringPlaintext fallback.
themestringBrand tokens JSON (bg, surface, primary, text, logo, …).

No output schema declared.

No examples provided.

mailkite_delete_broadcast ~33

Delete a broadcast draft. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_delete_domain ~31

Remove a domain. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_delete_list ~43

Delete a contact list. The list is removed; the contacts themselves are kept. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_delete_route ~63

Delete an inbound routing rule by id. Pair with createRoute to register and tear down a webhook destination — e.g. an automation platform subscribing on enable and cleaning up on disable. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_delete_webhook ~34

Remove the domain's webhook. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_get_broadcast ~38

Get one broadcast with its status and recipient summary. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_get_domain ~36

Get one domain with DNS records + webhook. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_get_list ~36

Get one contact list with its member count. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_get_message ~35

Get a message with deliveries + attachments. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_get_template ~56

Get one template (full: subject, html, text, theme). Works for your templates (tpl_…) and base templates (base_…). Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_list_base_templates ~47

List the premade base templates (light metadata). Clone one with createTemplate({ baseId }) or send from it directly via send({ templateId }). Requires a management session token.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

mailkite_list_broadcasts ~33

List your broadcasts (one-to-many sends) with status and send stats. Requires a management session token.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

mailkite_list_domains ~26

List your domains, each with its webhook URL. Requires a management session token.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

mailkite_list_list_contacts ~96

List the contacts that are members of a list, newest first. Optionally page with `before` (a `last_seen_at`/`created_at` cursor) and `limit`. Response is a bare array — paginate by passing the last row's `last_seen_at` (or `created_at`) as the next `before`. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_list_lists ~33

List your contact lists (static, curated broadcast audiences), each with its member count. Requires a management session token.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

mailkite_list_messages ~89

List stored messages, newest first. Optionally filter with `search` (matches sender, recipient, or subject) and page with `before` (a `received_at` cursor) and `limit`; omit all for the default newest 100. Response is a bare array — paginate by passing the last row's `received_at` as the next `before`. Requires a management session token.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

mailkite_list_routes ~21

List inbound routing rules. Requires a management session token.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

mailkite_list_templates ~37

List your saved email templates (light metadata only — no body). Use getTemplate for the full template. Requires a management session token.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

mailkite_register_domain ~103

Register (buy) a domain on the customer's behalf; provisions mail DNS and adds it to the account in one call. Charges the registrar. Requires a management session token. Does NOT register automatically — returns a dashboard link for the user to review the price and confirm. An assistant can never purchase a domain on its own.

NameTypeReqDescription
contactobjectyes
domainstringyes
dryRunboolean
yearsinteger

No output schema declared.

No examples provided.

mailkite_remove_list_contact ~54

Remove one contact from a list (the contact itself is kept). Requires a management session token.

NameTypeReqDescription
contactIdstringyesPath parameter `contactId`.
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_retry_delivery ~37

Re-deliver a stored message to its webhook. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_route ~167

Route a message to one of your registered routes (by `routeId` or `address`), running that route's action — agent, webhook, or forward. The route must already exist on your account; arbitrary destinations are not allowed. Requires an API key (mk_live_…).

NameTypeReqDescription
addressstringTarget route by the address it matches. One of routeId or address is required.
fromstringyesSender address recorded on the message.
htmlstringHTML body.
routeIdstringTarget route by id (rte_…). One of routeId or address is required. The route must already be registered on this account.
subjectstringOptional subject line.
textstringPlain-text body.

No output schema declared.

No examples provided.

mailkite_semantic_search ~73

Semantic search over the MailKite documentation — returns the most relevant doc sections for a natural-language query (hybrid vector + keyword search over https://mailkite.dev/docs). Public; no authentication required. Requires an API key (mk_live_…).

NameTypeReqDescription
querystringyesQuery parameter `query`.

No output schema declared.

No examples provided.

mailkite_send ~286

Send a message over a verified domain. Pass `templateId` (+ optional `templateData`) to send from a saved or base template. Requires an API key (mk_live_…).

NameTypeReqDescription
attachmentsarray
bcc
cc
fromstringyesAn address on a verified domain.
headersobjectExtra raw MIME headers, applied after threading headers (caller wins). Use for what the structured fields can't express — e.g. `List-Unsubscribe`, a dedup/idempotency key (`X-Entity-Ref-ID`), or a ta…
htmlstring
inReplyTostring
replyTostring
subjectstringRequired unless supplied by a template.
templateDataobjectValues substituted into the template's {{merge_tags}} (e.g. {"name":"Ann"} fills {{name}}). HTML values are auto-escaped.
templateIdstringSend using a saved template — a user template (tpl_…) or a base template (base_…). Its subject/html/text seed the message; explicit subject/html/text here override them.
textstring
toyesOne recipient or a list.

No output schema declared.

No examples provided.

mailkite_send_broadcast ~102

Send a broadcast now, or pass an ISO 8601 `scheduledAt` to schedule it. A one-click unsubscribe is always added. Returns the status and resolved audience count. Requires a management session token. Does NOT register automatically — returns a dashboard link for the user to review the price and confirm. An assistant can never purchase a domain on its own.

NameTypeReqDescription
idstringyesPath parameter `id`.
scheduledAtstring

No output schema declared.

No examples provided.

mailkite_set_webhook ~45

Set or replace the domain's catch-all webhook. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.
urlstringyes

No output schema declared.

No examples provided.

mailkite_test_webhook ~39

Send a signed test event to the domain's webhook. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_update_broadcast ~121

Edit a draft broadcast (any of from/subject/audience/html/… ). Drafts only. Requires a management session token.

NameTypeReqDescription
audienceobject
footerAddressstring
fromstring
htmlstring
idstringyesPath parameter `id`.
namestring
previewstring
replyTostring
subjectstring
templateIdstring
textstring

No output schema declared.

No examples provided.

mailkite_update_list ~39

Rename a contact list. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.
namestringyes

No output schema declared.

No examples provided.

mailkite_upload_attachment ~399

Upload a file to MailKite storage and get back a secure, time-limited URL. Reference the returned `url` as an attachment in send() (`{ filename, url }`) or link it inline in your HTML — instead of base64-inlining large files on every send. Give the file ONE of four ways: a local `path` (read and streamed as raw bytes by the CLI/SDK/local MCP), a remote `url` (MailKite fetches and re-hosts it), base64 `content`, or — over raw HTTP — the file bytes as the POST body with `?filename=`. `retentionDays` (7/30/90/365, default 7) sets how long the file and URL live. Requires an API key (mk_live_…).

NameTypeReqDescription
contentstringThe file bytes, base64-encoded. The lowest-common-denominator fallback when you can't send a path, URL, or raw bytes.
contentTypestringMIME type, e.g. "application/pdf". Defaults to application/octet-stream (or is inferred from the file extension / fetched response).
filenamestringThe file's name, e.g. "invoice.pdf". Shown to recipients on download. Optional when it can be derived from `path` or `url`.
pathstringLocal filesystem path to the file. Read client-side by the CLI, SDKs, and the local MCP server, then uploaded as raw bytes. Not available on the hosted MCP (no filesystem).
retentionDaysintegerHow long the file (and its signed URL) stays valid. One of 7, 30, 90, 365. Defaults to 7.
urlstringA remote http(s) URL. MailKite fetches it and re-hosts the bytes under your account. Max 25 MB.

No output schema declared.

No examples provided.

mailkite_verify_domain ~33

Check DNS and update status. Requires a management session token.

NameTypeReqDescription
idstringyesPath parameter `id`.

No output schema declared.

No examples provided.

mailkite_verify_webhook ~193

Verify the `x-mailkite-signature` header on an inbound webhook delivery. Runs entirely locally (HMAC-SHA256 over `${t}.${payload}`) — no network call. Returns true only when the signature matches and the event is within the freshness window. Runs locally (no API call) — no credentials needed.

NameTypeReqDescription
payloadstringyesThe raw, unparsed webhook request body — the exact bytes you received.
secretstringyesYour webhook signing secret (from the dashboard).
signaturestringyesThe `x-mailkite-signature` header value, e.g. `t=1750000000000,v1=4f1a9c…`.
toleranceMsintegerReject events whose timestamp is more than this many milliseconds old, to block replays. Defaults to 300000 (5 minutes). Pass 0 to disable the freshness check.

No output schema declared.

No examples provided.

Common questions

What is the dev.mailkite/mailkite MCP server?

dev.mailkite/mailkite is an MCP server listed in the public MCP registry as dev.mailkite/mailkite. Send email, manage domains, DNS, webhooks, templates, and inbound routing on MailKite. This page covers its npm package (@mailkite/mcp).

Is the dev.mailkite/mailkite MCP server safe to use?

dev.mailkite/mailkite scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the dev.mailkite/mailkite MCP server expose?

dev.mailkite/mailkite exposes 40 tools: mailkite_send, mailkite_upload_attachment, mailkite_list_templates, mailkite_list_base_templates, mailkite_get_template, and 35 more. Their descriptions and schemas cost roughly 3,350 tokens of context every time the server is loaded.

Is the dev.mailkite/mailkite MCP server still maintained?

dev.mailkite/mailkite is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the dev.mailkite/mailkite MCP server under?

dev.mailkite/mailkite declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.