mxroute-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MXROUTE_SERVER | Yes | Your MXroute mail server hostname, e.g. eagle.mxroute.com. | |
| MXROUTE_API_KEY | Yes | Your MXroute API key. Send the complete key unchanged, without a 'keyid:' prefix. | |
| MXROUTE_API_BASE | No | Optional API base URL override. | https://api.mxroute.com |
| MXROUTE_USERNAME | Yes | Your DirectAdmin username. Resellers can send 'reseller|user' to act as an owned user. |
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_verification_keyA | Returns the account's domain verification key. To add a new domain: create a TXT record at your registrar named |
| list_domainsA | Lists all domains on the account. Returns an array of domain names, e.g. ["example.com", "mydomain.org"]. Use get_domain for the details of a single domain. |
| create_domainA | Adds a new domain to the account for email hosting. The domain must be verified first: call get_verification_key, then add a TXT record named |
| get_domainA | Returns the details of one domain: mail hosting status, SSL status, and the names of any domain pointers (aliases) attached to it. Use list_domains to discover the domain names on the account. |
| delete_domainA | Removes the domain from the account. Destructive: mailboxes and forwarders under this domain stop working and mail to the domain is no longer handled. Use set_domain_mail_hosting to pause mail service without deleting the domain. |
| set_domain_mail_hostingA | Enables or disables mail hosting for a domain. Set enabled=true to have MXroute handle mail for the domain, enabled=false to pause mail hosting. Pure state change: the domain, its mailboxes, and their settings are kept. |
| list_domain_pointersA | Lists the domain pointers (aliases and redirects) attached to a domain. Each entry has the pointer domain name, its type ("alias" or "redirect"), and the target domain it serves. |
| create_domain_pointerB | Attaches a pointer domain to an existing domain. With alias=true (the default) the pointer is an alias serving the same mailboxes as the target domain; with alias=false it is a redirect. |
| delete_domain_pointerA | Removes a domain pointer (alias or redirect) from a domain. The pointer domain stops serving the target domain's mailboxes; the target domain itself is unchanged. |
| list_email_accountsA | Lists the mailboxes under a domain. Each entry includes the local part, full email address, quota in MB (0 = unlimited), current usage in MB, daily send limit, messages sent today, and suspended status. |
| create_email_accountB | Creates a mailbox under a domain. username is the local part before the @; password is 8-72 characters (the mail server additionally enforces its own character and strength rules server-side). quota is the storage limit in MB; limit is the daily send limit. Omitted quota and limit use the API defaults. |
| get_email_accountA | Returns the details of one mailbox: username, full email address, quota in MB (0 = unlimited), current usage in MB, daily send limit, messages sent today, and suspended status. user is the mailbox local part (the part before the @). |
| update_email_accountA | Updates a mailbox's password, storage quota, or daily send limit. Only provided fields change; omitted fields keep their current values. The mailbox is looked up case-insensitively by local part. Password rejections (outside 8-72 characters or failing server-side strength rules) return field-specific errors naming the password field. |
| delete_email_accountA | Permanently deletes a mailbox and its stored mail. Destructive and irreversible: the address immediately stops accepting mail. user is the mailbox local part (the part before the @). Read the exact username casing back from list_email_accounts or get_email_account before deleting: updates resolve the local part case-insensitively and reject an ambiguous match, but deletes should use the exact stored casing. |
| list_forwardersA | Lists all email forwarders on a domain. Each entry carries the alias (local part), the full forwarder email address, and the destination addresses it forwards to. |
| create_forwarderA | Creates an email forwarder for an alias on a domain. Special destinations: |
| delete_forwarderA | Deletes an email forwarder by its alias. Mail sent to the alias is no longer forwarded after deletion. Read the alias's exact stored casing back from list_forwarders before deleting, and pass it unchanged. |
| get_spam_settingsA | Returns the spam settings for a domain. |
| update_spam_settingsA | Sets the spam auto-deletion threshold ( |
| get_spam_whitelistA | Lists the spam whitelist entries for a domain. Whitelisted senders bypass spam filtering. Entries support wildcards (for example |
| add_spam_whitelist_entryA | Adds an entry to the spam whitelist; whitelisted senders bypass spam filtering. Supports wildcards (for example |
| remove_spam_whitelist_entryA | Removes an entry from the spam whitelist. Entries match case-insensitively, so the stored casing may differ. Sender lists are shared across all domains on the account, so this affects every domain on the account. |
| get_spam_blacklistA | Lists the spam blacklist entries for a domain. Blacklisted senders are always treated as spam. Entries support wildcards (for example |
| add_spam_blacklist_entryA | Adds an entry to the spam blacklist; blacklisted senders are always treated as spam. Supports wildcards (for example |
| remove_spam_blacklist_entryA | Removes an entry from the spam blacklist. Entries match case-insensitively, so the stored casing may differ. Sender lists are shared across all domains on the account, so this affects every domain on the account. |
| get_dns_recordsA | Returns the DNS records to configure at the domain's registrar for MXroute mail delivery: MX records plus the SPF, DKIM, and verification TXT records. |
| get_catch_allA | Returns the domain's catch-all setting: how mail addressed to nonexistent local parts is handled. |
| set_catch_allA | Sets how the domain handles mail addressed to nonexistent local parts: |
| get_disk_quotaA | Returns account disk usage: total bytes used and quota limit (0 = unlimited), percent used, a category breakdown (email, web, databases, backups, other — in bytes), and the grace period when the account is over quota. Data is refreshed hourly. |
| get_email_usageA | Returns per-mailbox disk usage for the account, largest mailbox first (email address, size in bytes, last update time). Useful for finding which mailboxes to trim when the account nears its quota. Data is refreshed hourly. |
| list_reseller_usersA | Lists the usernames of all users under the reseller account. Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 403 means the credential lacks reseller privileges or is impersonating. |
| create_reseller_userA | Creates a user under the reseller account with the given username, contact email, password, and package. Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. The package must already exist (see list_packages); 422 means it does not. |
| get_reseller_userA | Returns one reseller user's details: username, email, domain, package, suspended flag, and quota (limit in MB, null when unlimited). Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 404 means the user does not exist. |
| update_reseller_userA | Updates a reseller user's disk quota and/or password. Only provided fields are sent; the rest keep their current values. Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 404 means the user does not exist. |
| delete_reseller_userA | Destructive: deletes the user and everything under it, irreversibly. Per DirectAdmin behavior the deletion may fail or cascade, so double-check the username first. Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 404 means the user does not exist. |
| suspend_reseller_userA | Suspends a reseller user, blocking their access without deleting data. Repeating the call is harmless. Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 404 means the user does not exist. |
| unsuspend_reseller_userA | Reverses the suspension of a reseller user, restoring their access. Repeating the call is harmless. Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 404 means the user does not exist. |
| set_reseller_user_packageA | Moves a reseller user to a different package and returns the updated user. Changing the package can change the quota and limits of every domain under the user. A 422 means the package does not exist (see list_packages). Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. |
| list_packagesA | Lists the names of all packages defined under the reseller account. Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 403 means the credential lacks reseller privileges or is impersonating. |
| create_packageA | Creates a package that reseller users can be assigned to. Unset limits take the API defaults: quota 1 GB, 1 domain, 100 email accounts, 100 email forwarders, 10 domain pointers. Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. |
| get_packageA | Returns one package's settings: quota_gb (null when unlimited), domains, email_accounts, email_forwarders, and domain_pointers limits (null = unlimited; email_accounts excludes the system mailbox). Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 404 means the package does not exist. |
| update_packageA | Updates a package's limits; only provided fields are sent, the rest keep their current values. Quota is in GB here (the reseller user quota endpoint uses MB). Changes affect every user on the package. Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 404 means the package does not exist. |
| delete_packageA | Deletes a package. Fails with 422 while any user is still on the package; move affected users to another package first (set_reseller_user_package). Reseller-level operation: call while authenticated as the reseller (plain reseller username), not while impersonating a user. A 404 means the package does not exist. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 43 tools
Tools are organized into clear resource families (domains, pointors, mailboxes, forwarders, spam, DNS, reseller users, packages) with distinct verbs per resource. A few pairs need the descriptions to disambiguate (get_disk_quota vs get_email_usage, get_verification_key vs get_dns_records, domain pointers vs forwarders), but none are truly interchangeable.
Nearly all tools follow a clean snake_case verb_noun pattern (list_domains, create_email_account, update_reseller_user, delete_package). Minor deviation: the spam lists use add_/remove_ while other resources use create_/delete_, and set_/update_ are used slightly inconsistently, but the convention is overwhelmingly predictable.
43 tools is heavy and spans two distinct functional areas (domain/mailbox administration and reseller account/package management) that could reasonably be split. That said, the tools are genuinely distinct and each covers a real operation rather than being redundant, so it is feature-rich rather than bloated.
Coverage is broad and mostly full-lifecycle: domains, mailboxes, spam settings/whitelist/blacklist, catch-all, DNS, quotas, and reseller users/packages all have create/get/list/update/delete where meaningful. Minor gaps exist (no update for forwarders or domain pointers, no mailbox rename), but core workflows are fully supported.