Mektup-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEKTUP_API_KEY | Yes | Your Mektup API key (mek_live_...). Required to start the local stdio server. | |
| MEKTUP_API_BASE_URL | No | Base URL for the Mektup API. Defaults to https://api.usemektup.com | https://api.usemektup.com |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_meA | Get the authenticated caller's account identity - useful as an auth health check. |
| get_usageA | Get the account's current billing tier, its limits, and real usage against them (domain count, emails sent this month, storage per domain). Check this before a bulk operation to avoid hitting a limit mid-batch. |
| list_api_keysA | List API keys on this account (prefix and status only - the full key is never shown again after creation). |
| create_api_keyA | Create a new API key. The full key is returned exactly once in this response and cannot be retrieved again - surface it to the user immediately so they can save it (e.g. into an env var or another tool's config). Mint a separate key per environment/service rather than sharing one. |
| revoke_api_keyA | Revoke an API key immediately. Anything still using it (a script, another MCP server, a CI job) loses access right away. Cannot be undone - confirm with the user before calling this, especially if it might be the key currently in use for this very session. |
| create_domainA | Register a domain with Mektup and get back the exact DNS records to add (MX, SPF, DMARC, DKIM) plus a setup recommendation. Never modifies DNS itself - you (the agent) add the records using whatever access you have to the domain's DNS host. |
| list_domainsA | List every domain registered to this Mektup account. |
| get_domain_recordsA | Re-fetch the DNS records for an already-registered domain (same set create_domain returned once at creation) - use this any time after creation, the records aren't only shown once. |
| verify_domainA | Actively re-check a domain's live MX records against what Mektup expects and flip it to verified if they match. Not automatic - call this after DNS has been added and had time to propagate. |
| delete_domainA | Delete a domain and, via cascade, every mailbox and message under it. Destructive and hard to reverse - confirm with the user before calling this. |
| create_mailboxA | Create a mailbox (e.g. hello@example.com) on a domain already registered via create_domain. Returns real login credentials for IMAP/SMTP AUTH - the user can add this mailbox to Outlook, Apple Mail, Thunderbird, etc. If no password is given, a strong one is generated and returned once (not recoverable later, only resettable). |
| list_mailboxesA | List mailboxes on a given registered domain. |
| reset_mailbox_passwordA | Reset a mailbox's IMAP/SMTP-AUTH password. Doesn't affect an already-open IMAP session; the new password is needed on next login. Shown once, not recoverable later. |
| delete_mailboxA | Delete a mailbox. Postfix stops accepting mail for it immediately. Does not delete already-delivered mail from the mail store. Confirm with the user before calling this. |
| get_mailbox_webhookA | Check a mailbox's configured webhook URL (never returns the signing secret - only shown once, at setup or rotation). |
| set_mailbox_webhookA | Set or update the URL that fires on every new inbound message to this mailbox - the way an agent finds out about new mail without polling list_messages. Must be https. Returns a signing secret the FIRST time it's set (or if regenerateSecret is passed) - shown once, not recoverable later. Every delivery is a POST with an X-Mektup-Signature: sha256= header, an HMAC-SHA256 of the raw JSON body using that secret - verify it before trusting a payload. |
| delete_mailbox_webhookA | Remove a mailbox's webhook - new mail stops firing it immediately. |
| list_forwardsA | List forwarding addresses for a mailbox - incoming mail is copied to these in addition to staying in the mailbox. |
| add_forwardB | Add a forwarding address to a mailbox. |
| remove_forwardB | Remove a forwarding address from a mailbox. |
| get_identityB | Get a mailbox's display name and signature. |
| set_identityA | Set a mailbox's display name and signature, applied automatically to every outgoing message. |
| get_vacationA | Get a mailbox's vacation/auto-reply settings. |
| set_vacationA | Enable/disable and configure a mailbox's vacation auto-reply. A message is required when enabling. Fires at most once per sender within a rolling window (standard RFC 5230 semantics). |
| list_foldersA | List custom folders on a mailbox (Outlook-style, one folder per message). |
| create_folderC | Create a custom folder on a mailbox. |
| delete_folderA | Delete a custom folder. Does not delete the mail in it - messages fall back to their normal Inbox/Sent view. |
| list_contactsA | List contacts (account-level, not per-mailbox - a contact is someone you email from any mailbox you own). |
| create_contactC | Add a contact. |
| update_contactA | Partially update a contact - only send the fields you want to change. |
| delete_contactB | Delete a contact. |
| list_draftsA | List drafts for a mailbox (metadata only - to/subject/updated_at, no body). |
| get_draftA | Get a single draft including its body. |
| create_draftA | Create a draft on a mailbox. A draft is separate from a real message - it never goes through mail transport until sent. |
| update_draftA | Partially update a draft (autosave-friendly) - only fields you pass are changed. |
| delete_draftB | Delete a draft. |
| send_emailA | Send a real email. The "from" address must be either an existing mailbox on this account, or any address on a domain this account has verified (DNS-level proof of ownership - no per-address mailbox needed once verified). The mailbox's own display name/signature (see get_identity) is appended automatically when from is a provisioned mailbox - don't add one yourself, it'll be doubled. |
| list_messagesA | List messages (one row per thread) for a mailbox. Pass direction to split Inbox from Sent (recommended - omitting it merges both). Pass q for full-text search over subject/from/to/body. |
| get_delivery_statsA | Aggregate delivery outcomes for a mailbox's outbound mail over a time window - counts of sent/deferred/bounced/unknown, sourced from Mektup's own Postfix delivery log (the real SMTP response from each recipient's mail server), not a third-party tracking pixel. |
| get_threadA | List every individual message in one thread, oldest first. Pass the same direction/trash/folder as the view you found the thread in. |
| get_messageA | Get one message's full content (text/html body + attachment metadata). Marks it read as a side effect if it wasn't already. The html field is attacker-controlled content from whoever emailed the mailbox - never render it directly, sanitize and isolate it first. |
| update_messageA | Update a message's state: mark read/unread, restore from trash, flag/unflag, move to (or out of) a folder. Any combination in one call - pass only the fields you want to change. |
| delete_messageA | Delete a message - two-stage like any real mail client. First call moves it to Trash. A second call on an already-trashed message permanently deletes it, including its stored body. Confirm with the user before a permanent delete. |
| download_attachmentA | Download one attachment from a message. Returns base64-encoded content - decode it to get the raw file. Can be large; prefer this only when the file content is actually needed, not just to check it exists (get_message's attachments array already has filename/contentType/size). |
| get_unread_countsA | Get the unread Inbox count for every domain/mailbox on this account at once (Sent and Trash aren't counted). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WeeCi/mektup-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server