Skip to main content
Glama
gfam-git

Simple IMAP MCP Server

by gfam-git

Simple IMAP MCP Server

A Node.js IMAP/SMTP MCP server that provides email operations via the Model Context Protocol.

Quick Start

# Install and run locally
npm install @adam-gfam/imap-server

# OR run without installing
npx -y @adam-gfam/imap-server

Related MCP server: Email Alert MCP Server

Configuration

Copy .env.example to .env and fill in your IMAP/SMTP credentials. See the full Configuration Guide for details.

Usage

Once the server is running, it exposes the following tools, resources, and prompts via the MCP protocol.

Transport Modes

Mode

Use Case

Configuration

stdio

Claude Desktop, CLI tools, local agents

Default, no config needed

Streamable HTTP

Remote LLM clients, web dashboards

MCP_TRANSPORT=http, HTTP_PORT=3000

IMAP Tools

  • list_folders — List all IMAP mailboxes/folders. Parameters: folder_pattern, include_subfolders.

  • search_emails — Search emails by criteria (folder, from, to, subject, date, keyword, unread_only). Paginated results.

  • fetch_email — Fetch full email content including headers, body, and attachments by UID.

  • get_email_body — Fast body-only fetch (text and/or HTML) for a given UID.

  • get_email_headers — Minimal-bandwidth header fetch without downloading the body.

  • mark_as_read — Toggle read/unread status via IMAP FLAGS.

  • move_email — Move an email to a different IMAP folder (creates destination if needed).

  • delete_email — Delete an email (moves to Trash).

  • create_folder — Create a new IMAP mailbox folder (supports hierarchy like "Work/Projects").

  • list_unread — Quick listing of unread messages with pagination.

SMTP Tools

  • send_email — Send an email with text or HTML body. Supports to, subject, body, html, from, cc, bcc.

  • send_email_with_attachment — Send an email with file attachments ([{ name, content (base64), content_type }]).

  • list_drafts — List draft emails in the Drafts folder.

  • save_as_draft — Save an email as a draft (plain text or HTML).

  • delete_draft — Delete a draft email by UID.

MCP Resources

Resource

Description

URI Template

email_body

Parsed email body text

email://<folder>/<uid>/body

email_headers

Email headers

email://<folder>/<uid>/headers

MCP Prompts

Prompt

Description

Arguments

search_emails

"Help me search my emails"

query, date_range, folder

compose_reply

"Draft a reply to this email"

email_uid, tone

organize_inbox

"Help me organize my inbox"

criteria, folder

Documentation

All project documentation is hosted in the Simple IMAP MCP Project collective:

Contributing

All future design and technical documents must be created directly in the Nextcloud collective, not locally. The collective is the single source of truth for all project documentation.

Tech Stack

  • MCP Server: @modelcontextprotocol/server v2

  • IMAP: imapflow v1.7

  • SMTP: nodemailer v9

  • MIME Parser: mailparser v3.9

  • Schema: zod v4

  • Env: dotenv v17

Available Tools

16 tools
create_folderCreate FolderB

Create a new IMAP mailbox folder

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_nameYesFolder name (supports hierarchy: "Work/Projects")

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. It only states the action, omitting side effects like what happens if the folder already exists, whether hierarchy components are created, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, efficient sentence with no fluff, but slightly under-specified; still well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing return behavior and error handling. With no output schema, the description should mention what is returned or whether it throws on duplicate names. Incomplete for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema provides 100% coverage with a helpful description of folder_name including hierarchy support. The tool description adds no additional parameter context, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Create' and the resource 'new IMAP mailbox folder', distinguishing it from sibling tools like list_folders which list, not create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites or exclusions, leaving the agent to infer from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_draftDelete DraftC

Delete a draft email

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesDraft UID
folderNoDrafts folder

TDQS

C2.9/5.0
Behavior2/5

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. 'Delete a draft email' signals destructive intent but gives no information about reversibility, trash behavior, folder implications, or side effects beyond the operation name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler or redundant phrases. It is appropriately sized for a simple tool, though it duplicates the title almost exactly and adds only minimal differentiation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter deletion tool, the one-sentence description plus complete parameter schema is minimally usable. However, the absence of annotations, output schema, and usage guidance leaves side effects and tool-selection boundaries unaddressed, so it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'uid' and 'folder' already described in the input schema. The tool description adds no parameter-level meaning, so it neither compensates nor detracts; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete') and resource ('a draft email'), which is clear and distinct from the sibling tool delete_email by resource type. It doesn't explicitly name the alternative, but the meaning is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 delete_draft versus delete_email, save_as_draft, or list_drafts among the sibling tools. An agent must infer the boundary from the word 'draft' alone; no conditions or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_emailDelete EmailA

Delete an email (move to Trash folder)

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesMessage UID
folderNoSource folder

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Because no annotations are provided, the description carries the full behavioral disclosure burden. It does disclose an important non-obvious behavior: deletion is implemented as moving to Trash, not permanent destruction. However, it does not mention side effects, permission requirements, or how the optional folder parameter affects the operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that front-loads the action and then adds the essential qualifier about Trash. There is no redundant wording or unnecessary detail, so every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with no output schema, the description plus fully documented schema parameters are nearly sufficient. The main omissions are any statement about what the API returns and whether the delete can be reversed, though 'move to Trash' reasonably implies recoverability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with 'Message UID' and 'Source folder' already documented. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb ('Delete') and the resource ('an email'), and the parenthetical 'move to Trash folder' clarifies the exact semantic outcome. This distinguishes it from permanently erasing a message and from sibling operations like move_email or delete_draft.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives. With siblings like move_email and delete_draft present, an agent gets no explicit cue about which tool is appropriate or when this tool should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_waitingEmail Waiting (Polling)A

Poll a mailbox repeatedly until an email matching conditions is found or timeout elapses

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNoIMAP folder, default "INBOX"
timeoutNoMax seconds to wait, default 30
conditionsNoSearch conditions (same as search_emails)
poll_intervalNoSeconds between polls, default 2

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the polling loop, repeated checks, and timeout termination, but it does not state whether pre-existing matching emails are considered, whether messages are marked as read, what happens exactly on timeout, or what the return value looks like. Core behavior is visible, but edge behavior is undocumented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence front-loads the core operation ('Poll a mailbox repeatedly') and names both stopping conditions concisely. There is no wasted text, and the description is highly scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameter semantics are covered by the schema, and the conditions object is explicitly tied to search_emails, which helps. However, with no output schema, the description should clarify what a successful result vs a timeout result looks like, and whether pre-existing matching emails are included. These gaps require the agent to infer behavior beyond what is written.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description itself adds no parameter details beyond what the schema already provides; it only refers to 'conditions', which the schema defines thoroughly. This is acceptable but not additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('poll') and resource ('a mailbox'), and clearly states the two stopping conditions: a matching email is found or timeout elapses. This separates it from one-shot tools like search_emails and leaves no ambiguity about the tool's core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The polling behavior implies this is for waiting scenarios, and the schema notes conditions are 'same as search_emails', but the description never explicitly says when to use email_waiting instead of search_emails or what prerequisites apply. Usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_emailFetch EmailB

Fetch full email content including headers, body, and attachments

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesMessage UID in the folder
folderNoIMAP folder, default "INBOX"
include_bodyNoInclude parsed body, default true
include_attachmentsNoInclude attachment data, default false

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It does not state whether fetching affects read/unread state, what the default attachment behavior is, or what the response looks like; 'including attachments' is also stronger than the include_attachments default of false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It puts the core action and resource first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema or annotations, and the description does not clarify that attachments are off by default or explain how this tool relates to get_email_body/get_email_headers. An agent selecting among the many email siblings gets minimal decision-relevant context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description lightly maps output content (headers, body, attachments) to the include_body and include_attachments parameters but adds no syntax or additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and resource ('full email content') and enumerates the components (headers, body, attachments). This distinguishes it from the sibling granular tools get_email_body and get_email_headers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'full email content' implies you should use it when needing a complete message, but the description never explicitly states when to prefer it over get_email_body or get_email_headers, nor does it state exclusions. The guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_email_bodyGet Email BodyB

Fetch only the body (text and/or HTML) of an email

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesMessage UID
folderNoIMAP folder
text_onlyNoIf true, return only plain text

TDQS

B3.3/5.0
Behavior2/5

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. It mentions that both text and HTML body may be returned, but it does not state whether fetching marks the email as read, how MIME parts are handled, what the default return format is, or what happens when no body is found. This is a meaningful gap for an email tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with no filler. It immediately communicates the tool's purpose and key output distinction, making it easy for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with full schema coverage, the description gives the core idea but leaves out behavioral details that matter in an email context, such as whether the operation has side effects like marking the email as read. It also does not describe the output structure, which is notable because there is no output schema to fill that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full descriptions for all three parameters, so the baseline is 3. The description does not add extra semantic detail beyond mentioning text/HTML bodies, which partially aligns with the text_only parameter but does not elaborate on defaults or interactions between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Fetch') and a specific resource ('body of an email'), and the qualifier 'only' helps set it apart from sibling tools like get_email_headers. However, it does not explicitly distinguish itself from fetch_email, which could also return the body as part of a full message.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for retrieving just the email body rather than headers or full messages, but it does not explicitly say when to prefer it over fetch_email or get_email_headers. There are no explicit exclusions or alternative-routing statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_email_headersGet Email HeadersA

Fetch only email headers - minimal bandwidth, no body download

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesMessage UID
folderNoIMAP folder

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of explaining behavior. It discloses that only headers are fetched and that no body is downloaded, which is useful. However, it does not mention response format, error behavior for invalid UIDs, or whether folder selection has side effects, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. Every word contributes meaning, especially the bandwidth/no-body qualifier which earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-like tool with only two parameters, the description is largely sufficient. It lacks an output schema and annotations, so a bit more detail about what 'headers' includes could strengthen it, but the core invocation context is covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with uid described as 'Message UID' and folder as 'IMAP folder.' The description adds no parameter-specific meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Fetch only email headers' with the explicit qualifier 'no body download.' This clearly distinguishes it from siblings like get_email_body and fetch_email even without inspecting them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the intended use case: retrieving just headers for minimal bandwidth. It does not explicitly name alternatives or state when not to use this tool, but the context is clear enough for an agent to make the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_draftsList DraftsA

List draft emails in the Drafts folder

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
folderNoDrafts folder name, default "Drafts"

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of disclosing behavior. 'List' implies a read-only operation, but the description does not mention what is returned (e.g., summaries vs. full emails), pagination, or any side effects. It is adequate for a simple list operation but lacks richer detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that states the core behavior with no filler. The essential information is front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two optional parameters fully documented in the schema and no output schema, the description is sufficient to understand what the tool does. It lacks explicit usage guidance, but that gap is covered by the purpose clarity and schema; no critical operational detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'limit' and 'folder' already documented in the input schema. The description adds no additional meaning about the parameters, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the specific resource ('draft emails in the Drafts folder'). This is immediately distinct from sibling tools like list_unread (which lists unread messages) and search_emails (which searches broadly), so an agent can identify it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to choose this tool over alternatives such as search_emails or list_unread, nor does it mention any exclusions or prerequisites. An agent is left to infer usage from the tool name and brief phrase.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_foldersList IMAP FoldersC

List all IMAP mailboxes/folders in the account

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_patternNoIMAP wildcard pattern, default "*"
include_subfoldersNotrue for recursive listing

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavior. It only states that the tool lists folders; it does not mention whether the operation is read-only, what output format to expect, or how include_subfolders alters the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler. It is efficiently packaged, though it is short enough that some behavioral details are absent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has only optional parameters, and the schema documents those parameters well. However, without an output schema or annotations, the description does not disclose the return shape or any edge-case behavior, and it does not help differentiate from sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both folder_pattern and include_subfolders already documented in the input schema. The description adds no parameter-level detail, which is acceptable given the complete schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'List all IMAP mailboxes/folders in the account.' It distinguishes the tool from email-centric siblings like fetch_email and list_unread, though it doesn't explicitly name an alternative like list_folders versus create_folder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as list_unread or search_emails. The context is implied by the name but not stated, and no exclusions or preferred conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_unreadList Unread MessagesB

Quick listing of unread messages with pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, default 50
folderNoIMAP folder, default "INBOX"
offsetNoPagination offset

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It reveals pagination but does not state whether the tool is read-only, whether it marks messages as read, what fields are returned, or how it handles empty results or invalid folders. 'Quick' is too vague to substitute for concrete behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with no redundant detail. It front-loads the primary action and resource, then notes pagination. Every word earns its place, aside from the mildly subjective 'Quick,' which is not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple listing tool with all parameters documented in the schema, which helps. However, without an output schema or annotations, an agent still lacks clarity about what a listed message contains and whether any side effects occur. The description is minimally viable but leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 limit, folder, and offset meaning. The description adds only the word 'pagination,' which aligns with offset/limit but provides no additional semantic value beyond the structured schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb ('listing') and resource ('unread messages'), and mentions pagination. It is distinguishable from siblings like fetch_email or get_email_body, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Quick listing of unread messages' implies the tool is for lightweight enumeration of unread items, and pagination hints at large-result scenarios. However, it gives no explicit guidance about when to choose this over search_emails, fetch_email, or get_email_headers, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_as_readMark as ReadB

Mark messages as read or unread using IMAP FLAGS

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesMessage UID
readYestrue = mark read, false = mark unread
folderNoIMAP folder

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden, and it does reveal that this mutates IMAP flags and supports both read and unread states, implying reversibility via the read parameter. However, it does not disclose required permissions, whether marking read affects list_unread or other views, or what is returned on success or failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single action-first sentence with no filler. Every word contributes to the operation ('Mark', 'messages', 'read or unread', 'IMAP FLAGS').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation with two required parameters, the schema plus description is mostly usable. Gaps include behavior when the optional folder is omitted, whether the change affects unread lists, and any return or error contract, especially since no output schema or annotations are provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all three parameters with descriptions (100% coverage), including the UID, the read boolean meaning true/false, and the folder. The description restates the read behavior and adds the IMAP FLAGS context, but it does not add syntax details, defaults, or edge-case semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Mark'), a resource ('messages'), and the possible states ('read or unread'), and adds the protocol mechanism 'using IMAP FLAGS.' It is unambiguous against siblings like fetch_email or list_unread, but it does not explicitly call out alternative tools or scope boundaries, so it stops short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 siblings such as list_unread or fetch_email, nor any prerequisites, exclusions, or when-not-to-use conditions. The only inferable usage context is a direct restatement of the action itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_emailMove EmailA

Move an email to a different IMAP folder

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesMessage UID
to_folderYesDestination folder (creates if needed)
from_folderNoSource folder, default "INBOX"

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states the verb 'Move' and does not disclose side effects such as removal from the source folder, irreversibility, permissions, or what happens if the destination folder does not exist. It adds no behavioral context beyond the obvious action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant phrases. Every word is meaningful and directly communicates the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and its three parameters are fully documented in the schema, so an agent can determine how to call it. However, since no annotations exist and the move is effectively destructive, a brief note about source-removal behavior or return value would round out the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameters: uid, to_folder, and from_folder. The description adds no parameter-level detail beyond what the schema provides, meriting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Move' and identifies the resource 'email' with a destination qualifier 'different IMAP folder'. It clearly distinguishes this operation from sibling tools like delete_email, fetch_email, or create_folder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly conveys the action and context: moving an email between IMAP folders. It does not explicitly mention when to avoid this tool or suggest alternatives, but the context is unambiguous and sufficient for basic selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_as_draftSave as DraftC

Save an email as a draft

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC recipients
toNoRecipients
bodyYesDraft body (plain text)
htmlNoOptional HTML body
subjectYesDraft subject

TDQS

C2.8/5.0
Behavior1/5

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. It only repeats the basic action without any detail on side effects, permissions, whether existing drafts are overwritten, or what happens upon success. This is a mutation tool and the description offers zero behavioral context beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It is front-loaded with the core action. However, it is so minimal that it borders on under-specification, though that is captured under completeness rather than conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with five parameters, two required, no output schema, and no annotations, this description is severely incomplete. It does not explain what the tool returns, whether it creates a new draft or updates an existing one, or any side effects. An agent cannot anticipate the outcome or prerequisites from this description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters. The description adds no additional meaning about parameter relationships, constraints, or expected format. Baseline 3 is appropriate since the schema handles parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('save'), resource ('email'), and result ('as a draft'), clearly distinguishing it from siblings like send_email, list_drafts, and delete_draft. An agent can immediately tell what the tool does and what it does not do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention that it should be used instead of send_email when not ready to send, nor does it exclude any contexts. The intended usage is only implicitly understood from the action itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_emailsSearch EmailsB

Search emails by criteria, returning paginated results

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoRecipient address filter
fromNoSender address filter
limitNoMax results, default 50
folderNoIMAP folder, default "INBOX"
offsetNoPagination offset, default 0
date_toNoISO 8601 date
keywordNoGeneral body/keyword search
subjectNoSubject substring match
date_fromNoISO 8601 date, e.g. "2026-08-01"
unread_onlyNoOnly unread messages

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It does disclose that results are paginated, but it does not mention ordering, search semantics (AND vs OR), whether folder defaults apply, or any read-only guarantee. The disclosure is minimal but not absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It communicates the essential action and result shape efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This tool has 10 parameters, no output schema, and no annotations, yet the description is extremely terse. It does not clarify search behavior, result ordering, return structure, or how filters combine. More detail is needed for an agent to confidently select and invoke this tool in complex scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 10 parameters. The description does not add meaning beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Search'), a resource ('emails'), and a general behavior ('by criteria, returning paginated results'). It is clear enough to separate this from fetch_email or get_email_body, though it does not explicitly name or contrast sibling tools like list_unread.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as list_unread, fetch_email, or get_email_body. There are no exclusions, prerequisites, or context cues beyond the generic 'by criteria'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_emailSend EmailC

Send an email with text or HTML body

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC recipients
toYesRecipient(s)
bccNoBCC recipients
bodyYesEmail body (supports HTML)
fromNoOverride sender, uses config default
htmlNoOptional HTML body (if body is plain text)
subjectYesEmail subject

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It merely says 'send an email,' implying a side-effecting operation, but does not describe delivery guarantees, required authentication, validation of recipients, or how the body and html fields interact. Nothing beyond the basic action 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single eight-word sentence, front-loading the core action and content type. Every word earns its place; there is no redundant phrasing or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given seven parameters, three required, no annotations, and no output schema, the description is under-specified. It does not explain optional parameters (cc, bcc, from), disambiguate body vs html, or signal whether attachments are unsupported here. The presence of a sibling with attachment support makes this ambiguity costly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters, so baseline is 3. The description adds a small semantic cue that the body can contain text or HTML, but it does not clarify the relationship between the distinct body and html parameters, which is a likely source of confusion. It neither enriches schema meaning nor resolves ambiguity, so it stays at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send') and resource ('an email'), and specifies content type ('text or HTML body'). However, it does not differentiate from the sibling tool send_email_with_attachment, which is likely to be confused with this one. The lack of explicit 'without attachment' leaves some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives. There is no mention of the sibling send_email_with_attachment for emails with files, or save_as_draft for drafts. An agent must infer the appropriate context from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_email_with_attachmentSend Email with AttachmentC

Send an email with file attachments

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC recipients
toYesRecipient(s)
bodyYesEmail body
fromNoOverride sender, uses config default
subjectYesEmail subject
attachmentsYesList of file attachments

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden for disclosing behavior. 'Send' implies an outbound side effect, but the description does not mention sender defaults, recipient impact, attachment encoding expectations, failure behavior, or whether the action is reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler and the core action is front-loaded. It is efficient but minimal, so it earns a high score for conciseness even though it leaves behavioral guidance to the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters, nested attachment objects, no annotations, and no output schema, the description is too sparse to fully guide an agent. It omits routing between send_email and send_email_with_attachment, attachment constraints, sender default behavior, and expected results after sending.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema describes all 6 parameters, including to, cc, from, subject, body, and the attachments nested object with name, content, and content_type. Since schema coverage is 100%, the description does not need to compensate, but it also adds no parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('Send'), a resource ('email'), and scope ('with file attachments'), which distinguishes it from the sibling send_email tool. However, it is nearly identical to the title and does not explicitly describe what makes this tool different from other email-related siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus send_email or the draft/save variants. The sibling list suggests an alternative, but the description gives no explicit when-to-use or when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.3/5.0
Disambiguation4/5

Each tool targets a distinct operation—full fetch, body-only, headers-only, flags, folder ops, drafts—but send_email and send_email_with_attachment, plus the three retrieval variants, have close functional boundaries that require careful description reading.

Naming Consistency3/5

Most names follow snake_case verb_noun, but verbs are inconsistent (fetch vs get vs list), list_unread omits the object, and email_waiting reverses the expected verb-object order.

Tool Count4/5

Sixteen tools is on the high end but each maps to a real email workflow—retrieve, search, send, draft, folder management—so the count is only slightly above the ideal range.

Completeness4/5

The surface covers retrieval, search, read state, move/delete, folder listing/creation, sending with and without attachments, and draft CRUD. Missing folder deletion/rename and attachment-only retrieval are minor gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables email integration via IMAP and SMTP, allowing model assistants to read, send, search emails, and list folders.
    77
    14
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to send, read, search, and organize Proton Mail email via SMTP and IMAP through the Model Context Protocol.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables reading, searching, sending, replying, forwarding emails, and managing labels in Gmail through the Model Context Protocol.
    87
    3
    MIT

Latest Blog Posts

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/gfam-git/Imap-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server