Fastmail MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fastmail MCP ServerDraft an email to jane@example.com with our meeting notes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fastmail MCP Server
An MCP server that exposes 13 tools for Fastmail via JMAP. It covers email actions (list, get, send, draft) and masked email alias management (create, delete, update). Drafts are written first by default unless you change FASTMAIL_DRAFT_BY_DEFAULT.
Requirements
Node.js 20+
A Fastmail account with an API token
Related MCP server: IMAP/SMTP Email MCP Server
Environment Variables
Variable | Required | Description |
| yes | Fastmail API token |
| no | Account ID; auto-detected when omitted |
| no | Set to |
| no | Name shown in the optional signature |
| no | Optional HTML footer added to sent mail |
MCP Client Configuration
Add this server to your MCP client's config:
{
"mcpServers": {
"fastmail": {
"command": "node",
"args": ["<path>/fastmail-mcp/dist/server.js"],
"env": {
"FASTMAIL_API_TOKEN": "your-api-token"
}
}
}
}Tools
13 tools cover JMAP email operations (list, get, send, draft), masked email management, and a draft-first safety policy.
License
MIT
Available Tools
12 toolsfastmail_create_masked_emailB
Create a new masked email address for privacy protection.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The masked email address to create (e.g., 'myname@domain.com') | ||
| forDomain | No | Domain to create the masked email for (optional) | |
| description | Yes | Description for this masked email |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only states that a masked email is created. It does not mention side effects, permission requirements, uniqueness constraints, or what happens on duplicate creation. The word 'create' signals mutation, but little else is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no redundant words. It front-loads the core action and resource, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no annotations and no output schema, the description is too sparse. It does not explain what happens after creation, whether creation is idempotent, what errors might arise, or what the agent should expect in the response. The schema covers parameters, but broader operational context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the input schema. The tool description adds no parameter-level meaning beyond what the schema provides, which is acceptable under the baseline, but it also does not compensate for any nuanced constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('masked email address'), which clearly distinguishes this tool from its siblings like list, update, and delete masked email tools. It also adds the privacy-protection purpose, reinforcing the domain intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the tool is for creating masked emails, but it provides no explicit guidance on when to use it versus alternatives, nor any conditions, prerequisites, or exclusions. An agent must infer usage solely from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_delete_masked_emailB
Delete a masked email address.
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | The masked email ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only repeats 'delete' without adding context beyond the tool name. It does not indicate whether deletion is permanent, whether it affects email delivery, or whether any confirmation or special permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no filler or repetition. However, it is so minimal that it borders on under-specification, contributing little more than the tool name already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete operation, the description is minimally viable: the agent can determine what to do and which parameter to supply. Still, it lacks critical context such as irreversibility, effects on masked email functionality, and any output or confirmation expectations, especially given that no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the only parameter, emailId, is already documented as 'The masked email ID to delete'. The description adds no extra meaning or guidance beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Delete') and a specific resource ('masked email address'), directly matching the tool's purpose. It distinguishes itself from sibling tools like list, create, and update masked email by clearly indicating a destructive removal action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as update_masked_email or list_masked_emails. There is no mention of prerequisites, irreversibility, or context in which deletion is appropriate, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_get_accountB
Get Fastmail account information and session details.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. 'Get' implies a read-only operation and the description names the return categories, but it does not disclose authentication expectations, session-token sensitivity, or whether any cached state is involved. This is thin but not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the operation, with no filler. The brevity is appropriate for a zero-parameter getter, and every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with zero parameters, and the description covers the high-level purpose. However, with no output schema, the agent is left without details on the shape or content of the returned account information and session details. This is adequate for calling the tool but not fully complete for interpreting its response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage, which is the baseline-4 case; there is no parameter-level meaning for the description to add. The description correctly focuses on the operation rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get') and resource ('Fastmail account information and session details'), which clearly separates it from the email, masked-email, and folder siblings. It does not explicitly state how it differs from other account-level operations, but no such sibling exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It simply states what it does, with no prerequisites, exclusions, or context to help an agent decide whether this is the right tool for account-related information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_get_emailA
Get detailed information about a specific email by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | The email ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The verb 'Get' implies a read-only retrieval, which is useful but minimally disclosed. With no annotations provided, the description carries the full burden for behavioral transparency; it does not explicitly state that the email is not modified, not marked as read, or that no side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It front-loads the action and resource, and every word earns its place for a tool of this simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter retrieval tool, the description is adequately complete: it names the input (email ID) and the general outcome (detailed information). The lack of an output schema makes the exact return fields unspecified, but this does not block correct invocation for a simple get-by-ID operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, so the schema already documents emailId sufficiently. The description only reinforces 'by its ID' without adding format, source, or usage nuance beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get detailed information') and the resource ('specific email') identified by ID. It is distinguishable from list_emails because it targets a single email, but it does not explicitly name or contrast sibling alternatives, and 'detailed information' is somewhat vague about what fields are returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its ID' implicitly communicates a prerequisite: the caller must already have an email ID. However, the description does not state when to prefer this over list_emails or other siblings, nor does it provide any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_get_unread_countA
Get unread email count for inbox or a specific folder.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Folder name (default: inbox) | inbox |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a non-mutating read operation and defines folder scoping, but it does not explicitly state that no emails are modified, how the count is computed, or what happens for invalid folder names. This is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence says exactly what the tool does and where it operates. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-optional-parameter read tool, the description and schema together cover the essential call context. Return value is implied by 'unread email count'. Minor gaps like invalid-folder behavior and explicit non-mutation are not critical for this tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the folder parameter already has a description and default value. The description reinforces 'inbox or a specific folder' but adds no new semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), a clear resource ('unread email count'), and defines scope ('inbox or a specific folder'). This clearly distinguishes it from siblings like list_emails, get_email, and mark_email_read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use the tool: whenever an unread count for the inbox or a named folder is needed. It does not explicitly mention alternatives or exclusions, but the use case is clear enough given the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_list_emailsA
List emails from your inbox or other folders. Supports filtering by folder, read status, and search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of emails to return (max 100) | |
| folder | No | Folder name (inbox, sent, drafts, trash, spam) | inbox |
| search | No | Search term to filter emails | |
| unreadOnly | No | Only show unread emails |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it only says 'List' and 'Supports filtering'. It does not state whether the operation is read-only, how results are ordered or paginated, or what data is returned about each message.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences carry the core purpose and available filters with no redundant words. The primary scope is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with no required parameters and full schema coverage, the description is adequate but not rich. There is no output schema, so the description should have at least hinted at return shape (summary vs full content) or ordering to make the tool fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description loosely echoes the folder, unread, and search parameters but adds no extra semantics such as what search targets (subject, body, etc.) or how limit interacts with pagination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (List) and resource (emails), and scopes it to inbox or other folders. This distinguishes it from sibling tools like fastmail_get_email (single message) and fastmail_list_masked_emails (masked addresses).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool for retrieving email messages with optional filters, but it never explicitly contrasts it with alternatives or states when-not-to-use. An agent can infer use from 'List emails' but receives no direct routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_list_foldersA
List all email folders.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description itself must communicate behavior. It correctly indicates a read-only listing operation, but it does not disclose output shape, whether hidden or system folders are included, ordering, or error behavior. Still, for a zero-parameter list tool, the core behavior is transparent enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence conveys the operation and scope with no filler. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, no parameters, and sibling context, the description is nearly complete for selecting and calling the tool. A minor gap is the lack of explicit return-format detail since no output schema exists, but 'List all email folders' sufficiently implies a returned collection of folders.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there is no parameter information to add. The baseline of 4 applies because the description does not need to compensate for undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('all email folders'), and the resource type distinguishes it from sibling tools such as fastmail_list_emails and fastmail_get_account. The scope ('all') also signals a no-filter enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call this when the agent needs the complete set of email folders. However, the description does not explicitly state when to prefer it over alternatives, mention related workflow steps (e.g., using folder IDs with fastmail_list_emails), or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_list_masked_emailsB
List all masked email addresses (privacy-focused aliases).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavior. It states only that all masked email addresses are listed, without addressing read-only guarantees, authentication needs, pagination, or response format. The parenthetical clarifies the resource but not the tool's behavioral characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with a useful parenthetical clarifier. Every word serves a purpose, and it avoids redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool without an output schema, the description gives the core purpose but omits return value structure, pagination, or any operational caveats. It is adequate for selecting the tool but not fully complete for an agent expecting to parse the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters with 100% coverage, so there is nothing for the description to add beyond the schema. Baseline for zero-parameter tools is 4, and the description does not need to explain parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('masked email addresses') with a clarifying parenthetical defining them as privacy-focused aliases. It is clearly distinct from listing regular emails, though it does not explicitly reference sibling tools to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus the sibling tools such as fastmail_create_masked_email or fastmail_list_emails. It only restates the tool's function without any exclusions or alternative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_mark_email_flaggedA
Flag or unflag an email (star).
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | The email ID | |
| flagged | No | Flag (true) or unflag (false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of disclosing that this is a state-changing operation. 'Flag or unflag an email' clearly states the mutation and its both possible outcomes, and '(star)' adds concrete semantic context. It does not cover permissions or return values, but for a simple boolean toggle these are less critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of five words plus a parenthetical; every word earns its place. The core action is front-loaded before any clarification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with full schema coverage, the description plus schema fully specify how to invoke the operation. It does not mention the response shape, but no output schema exists and the operation is simple enough that this omission does not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, and both parameters already have clear descriptions ('The email ID', 'Flag (true) or unflag (false)'). The description only adds the 'star' synonym, which is marginal extra meaning. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with the specific verbs 'Flag or unflag' and identifies the resource ('an email'), then clarifies the meaning with '(star)'. This makes the operation unambiguous even though it does not explicitly contrast with sibling tools like fastmail_mark_email_read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when the agent wants to set or remove the starred flag on an email, but it gives no explicit when-to-use or when-not-to-use guidance. No alternatives are named, so the agent must infer the boundary from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_mark_email_readA
Mark an email as read or unread.
| Name | Required | Description | Default |
|---|---|---|---|
| read | No | Mark as read (true) or unread (false) | |
| emailId | Yes | The email ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description itself carries the behavioral burden; it plainly states that the tool toggles read state in either direction. However, it does not disclose auth requirements, idempotency, error behavior, or whether the operation is reversible/side-effect-free, so disclosure is only partially complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence contains the full core behavior with no filler or repetition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple two-parameter state toggle; the description plus schema sufficiently covers correct invocation. It lacks response/error details, but those are not essential for selecting and invoking this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no parameter-level meaning beyond the schema; the read parameter's own description already explains true/false, and emailId is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('mark') and resource ('email') and names the exact state ('read or unread'), which clearly distinguishes it from the sibling fastmail_mark_email_flagged. An agent can tell at a glance what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to choose this tool over alternatives or any prerequisites/exclusions. It never mentions fastmail_mark_email_flagged or how read-state changes differ from other email operations, so the agent must infer usage solely from the operation name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_send_emailA
Compose and send (or save as draft) an email from the account's own Fastmail identity.
IMPORTANT — DEFAULT TO DRAFT: unless the context clearly implies the email should go out immediately (explicit instruction, routine automated alert, or an established-contact follow-up), save it as a draft so a human can review before it sends. Omit saveDraft to use the configured default (draft-first unless FASTMAIL_DRAFT_BY_DEFAULT=false).
Send as the account owner. Never add AI/agent signatures or self-identification; any machine-authorship marker is configured server-side via FASTMAIL_FOOTER_HTML.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | CC recipients | |
| to | Yes | Recipient email addresses | |
| bcc | No | BCC recipients | |
| body | No | Email body (plain text) | |
| from | No | From address (optional, uses default identity if not specified) | |
| subject | Yes | Email subject | |
| htmlBody | No | Email body (HTML). The configured FASTMAIL_FOOTER_HTML, if any, is appended as a footer. | |
| saveDraft | No | If true, save to Drafts folder for human review instead of sending. Default preference is true — only set false when immediate send is clearly appropriate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses the draft-first default, the configurable FASTMAIL_DRAFT_BY_DEFAULT behavior, the server-side FASTMAIL_FOOTER_HTML appending, and the prohibition on AI self-identification. It does not mention error handling or rate limits, but the key behavioral traits that affect invocation are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a clear one-sentence purpose, followed by an IMPORTANT directive on draft-vs-send behavior, then succinct identity/signature rules. Every sentence carries meaningful operational guidance, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and no annotations, the description covers the critical context: when to draft vs send, identity constraints, signature policy, and footer behavior. It doesn't describe return values or failure modes, but those are not essential for correct invocation and schema already documents parameters fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by explaining the saveDraft default preference and tying the from field to the account's own identity, which goes beyond the schema text. This lifts it above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: compose and send (or save as draft) an email from the account's own Fastmail identity. This clearly differentiates it from sibling tools like fastmail_list_emails, fastmail_get_email, and masked-email management tools, leaving no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit, actionable guidance: default to draft unless the context implies immediate send (explicit instruction, routine automated alert, or established-contact follow-up). It also clearly instructs to send as the account owner and never add AI/agent signatures, with server-side footer configuration noted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fastmail_update_masked_emailA
Update a masked email (enable, disable, or change description).
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | New state for the masked email | |
| emailId | Yes | The masked email ID | |
| description | No | New description (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral disclosure burden. It discloses that the tool mutates the masked email's state or description, which is valuable, but it does not explain side effects, permissions, reversibility, or the meaning/impact of the 'pending' state seen in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word earns its place by communicating the resource and the specific update operations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, the schema covers all parameters, and sibling tools provide surrounding context. However, with no annotations and no output schema, the description omits behavioral details like what a successful update returns, whether enabling/disabling has immediate effects, and what 'pending' implies—useful context for an agent invoking this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no parameter-specific meaning beyond confirming that enable/disable relate to state and description can be changed, which aligns with but does not enhance the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Update') and a clear resource ('a masked email'), and immediately enumerates the three actions it supports: enable, disable, or change description. This distinguishes it from sibling tools like create/delete/list masked emails without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly communicates that the tool is for modifying an existing masked email, which is distinct from creating, deleting, or listing them. It does not explicitly say when not to use it or name alternatives, but the context is clear enough from the action and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v1.0.0- First observed
fastmail_create_masked_email - First observed
fastmail_delete_masked_email - First observed
fastmail_get_account - First observed
fastmail_get_email - First observed
fastmail_get_unread_count - First observed
fastmail_list_emails - First observed
fastmail_list_folders - First observed
fastmail_list_masked_emails - First observed
fastmail_mark_email_flagged - First observed
fastmail_mark_email_read - First observed
fastmail_send_email - First observed
fastmail_update_masked_email
TDQS
Each tool targets a distinct resource and action: account info, email listing/detail/sending, masked email CRUD, read/flag state, folders, and unread count. There is no meaningful overlap that would cause an agent to select the wrong tool.
All tool names follow a consistent snake_case pattern with the fastmail_ prefix and verb_noun structure (get, list, send, create, update, delete, mark). The naming is predictable and makes the toolset easy to navigate.
With 12 tools, the server is well-scoped for its domain: email operations, masked email management, folders, and account info. Each tool has a clear purpose, and the count is neither bloated nor too thin.
Masked emails have full CRUD coverage and core email reading/sending/flagging is supported. However, notable gaps exist in the email lifecycle: there is no delete, move/archive, or folder mutation capability, so agents cannot perform common cleanup or organization workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
- PO6 MailboxOAuthcom.po6
Give AI agents secure access to your email via private aliases with dedicated mailbox storage.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables email management through SMTP and IMAP protocols with support for sending emails with attachments, searching and filtering messages, replying/forwarding with threading, organizing mailboxes, and managing multiple email accounts.5234MIT
- FlicenseNot gradedqualityDmaintenanceEnables email management via IMAP/SMTP, supporting list emails, read emails, send emails, and save drafts.-
- AlicenseNot gradedqualityCmaintenanceEnables email management via IMAP and SMTP with multi-account support, safe sending with confirmation, and read-only modes.MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Fastmail email accounts via JMAP, including reading, sending, organizing emails, and handling mailboxes, drafts, and masked emails.43MIT
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/mattmaas/fastmail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server