MCP Emails
Server Details
Email for AI agents: read, search, send, organize, and schedule across your inboxes.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.3/5 across 10 of 10 tools scored. Lowest: 3.6/5.
Each tool has a clearly distinct purpose: contact_search for finding contacts, draft for draft management, email_compose for sending, email_delete for deletion, email_organize for moving/flagging, email_read for reading/searching, folder for folder management, inbox_list for listing inboxes, schedule for delayed sending, and signature for signature management. No overlap in core functionality.
Tool names consistently use lowercase with underscores, but there is a mix of prefixes: some start with 'email_' (email_compose, email_delete, email_organize, email_read), while others do not (draft, folder, inbox_list, schedule, signature, contact_search). This is a minor inconsistency but still readable.
With 10 tools, the server covers core email operations—reading, sending, organizing, deleting, drafts, folders, schedules, contacts, inbox discovery, and signatures—without being bloated. The count is well-scoped for the domain.
The tool surface covers essential CRUD/lifecycle operations for email: read, compose, reply, forward, delete, organize, manage drafts, folders, signatures, schedules, and contact search. Minor gaps exist (e.g., no spam management), but agents can perform most common workflows without dead ends.
Available Tools
10 toolscontact_searchSearch ContactsARead-onlyIdempotentInspect
Find people matching a name or email fragment by scanning your LIVE mailbox — there is no stored contact list. Each call performs a bounded, header-only scan of recent matching mail and tallies the correspondents who match the query, sorted by most-recently-contacted first (display name, email address, matched-message count, and last-contacted timestamp). Honesty about the tradeoff: results reflect a live scan of a RECENT window of matching messages (not your full history), and the message_count reflects only matched messages within that window — not an all-time total. Nothing is stored between calls. For general or cross-inbox questions (e.g. 'who have I emailed most with X?'), OMIT inbox_id so ALL accessible inboxes are scanned; only set inbox_id when the user explicitly limits the search to one specific inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of contacts to return. Defaults to 20. | |
| query | Yes | Name or email address fragment to search for. Matched case-insensitively against both the display name and email address of correspondents found in a live scan of recent matching mail. Must be at least 1 character. Example: 'alice' matches 'Alice Smith' and 'alice@example.com'. | |
| inbox_id | No | Optional. When provided, restricts the live scan to that specific inbox. Omit this for general or cross-inbox questions (e.g. 'who have I emailed most with X?') so ALL accessible inboxes are scanned — only set inbox_id when the user explicitly limits the search to one specific inbox. Do not carry over an inbox_id from a previous unrelated turn. Nothing is stored — every call re-scans live mail. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| total | Yes | |
| contacts | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent, and non-destructive. Description adds valuable context: live scan, recent window, no storage between calls, sorting by recency, and limitations of message_count. No contradictions.
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?
Description is moderately long but well-structured with clear sections. It is front-loaded with the key purpose and includes important details without being overly verbose. Every sentence contributes.
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 complexity (live scan, temporary results), the description is comprehensive. It explains what results include, limitations, and when to use constraints. Output schema exists but description still covers return format.
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 covers 100% of parameters with descriptions. Description adds extra clarity for inbox_id (when to use vs. omit) and provides a realistic example for query. Adds moderate value beyond 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 explicitly states the tool searches for people by name or email fragment via live mailbox scan, distinguishing it clearly from tools like email_read or folder. It uses specific verbs and clarifies there is no stored contact list.
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?
Provides explicit guidance on when to omit vs. set inbox_id, warns about the live scan tradeoff (bounded window, not full history), and advises against carrying over inbox_id from unrelated turns. This helps correct tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draftDraftsAInspect
Manage draft messages. Set action: 'list', 'create' (subject/body, optional to/cc/bcc/html_body), 'update' (draft_id + fields), or 'send' (draft_id). On IMAP inboxes a draft_id changes on every update — always use the latest. 'delete' permanently removes a draft (draft_id) without sending it. The inbox signature is embedded into the draft on create/update (pass include_signature: false to skip); 'send' transmits the stored body as-is and never re-appends, so the signature is never doubled.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Optional CC recipient addresses. | |
| to | No | Optional recipient addresses. Drafts may be saved without recipients. | |
| bcc | No | Optional BCC recipient addresses. | |
| body | No | Plain-text body of the draft. | |
| inbox | No | Email address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given. | |
| limit | No | Maximum number of drafts to return. Defaults to 20. | |
| action | Yes | Which operation to perform. Determines which other arguments are used. | |
| subject | No | Draft subject line. | |
| draft_id | No | Provider-native draft identifier as returned by the most recent draft_create, draft_update, or draft_list. On IMAP inboxes this changes after every update, so always use the latest one. | |
| inbox_id | No | UUID of the inbox to use. Optional when the API key has access to exactly one inbox (it is auto-selected). Alternatively pass `inbox` with an email address. If you don't know the inbox_id and several are accessible, just omit it — the response then lists every inbox with its inbox_id so you can retry (calling inbox_list does the same). | |
| html_body | No | Optional HTML body of the draft. | |
| include_signature | No | Whether to append this inbox's configured email signature to the message. Defaults to true. Set to false to send without the signature — useful for terse one-line replies or when you've written your own sign-off. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral traits: IMAP draft_id changes on every update, signature embedding behavior, and send action transmitting stored body as-is to avoid signature doubling. This exceeds what annotations provide; the destructiveHint=false annotation contradicts the description's explicit 'delete permanently removes a draft' statement, making the description more 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 concise and front-loaded with the core purpose. It communicates multiple actions and key behaviors in a single paragraph without redundant information. Every sentence adds value for an agent.
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 no output schema, the description does not explain what is returned by actions like 'list' (e.g., fields of draft objects). It covers behavioral caveats well but misses return value documentation, which is needed for agents to process results.
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% with detailed parameter descriptions. The tool description adds value by explaining the action enum and the behavior of draft_id (always use latest) and include_signature (skip for one-liners). This enhances understanding beyond the schema alone.
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 specifies the tool's purpose: managing draft messages with explicit actions (list, create, update, send, delete). It distinguishes from sibling tools like email_compose by focusing on draft lifecycle management, though it doesn't explicitly contrast them.
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 explains each action and provides a key caveat about IMAP draft_id changes, but it does not provide explicit guidance on when to use this tool versus alternatives like email_compose or email_read. The usage context is implied but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_composeCompose EmailAInspect
Send new mail or respond. Set action: 'send' (to/subject/body, optional cc/bcc/html_body/attachments), 'reply' (to a message_id, optional reply_all), or 'forward' (a message_id to new recipients). The inbox's configured signature is appended automatically (for replies/forwards it goes above the quoted text); pass include_signature: false to suppress it for terse replies.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | List of CC recipient email addresses. Optional. | |
| to | No | List of recipient email addresses. Each must be a valid RFC 5322 address. Maximum 50 recipients. | |
| bcc | No | List of BCC recipient email addresses. Optional. BCC recipients are not visible to other recipients. | |
| body | No | Email body as plain text. If html_body is also provided, the message is sent as multipart/alternative with both parts. If only body is provided, the message is sent as text/plain. | |
| inbox | No | Email address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given. | |
| action | Yes | Which operation to perform. Determines which other arguments are used. | |
| subject | No | Email subject line. Must be non-empty. Maximum 998 characters per RFC 5322. The subject is sent as-is; no prefix is added automatically. | |
| inbox_id | No | UUID of the inbox to use. Optional when the API key has access to exactly one inbox (it is auto-selected). Alternatively pass `inbox` with an email address. If you don't know the inbox_id and several are accessible, just omit it — the response then lists every inbox with its inbox_id so you can retry (calling inbox_list does the same). | |
| reply_to | No | Optional Reply-To header address. When the recipient clicks 'Reply', their email client will address the reply to this address rather than the sender. | |
| html_body | No | Optional HTML version of the email body. If provided, the message is sent as multipart/alternative. The caller is responsible for ensuring the HTML is safe and correctly structured — this field is not sanitized before sending. | |
| reply_all | No | When true, the reply is addressed to all recipients of the original message (To and Cc), not just the sender. Total recipients are capped at 50. | |
| message_id | No | Provider-native message identifier of the email being replied to. The tool uses this to look up the original message headers and set In-Reply-To and References correctly. | |
| attachments | No | Optional list of file attachments. Maximum 20 attachments. Total attachment size must not exceed 10 MB. | |
| include_signature | No | Whether to append this inbox's configured email signature to the message. Defaults to true. Set to false to send without the signature — useful for terse one-line replies or when you've written your own sign-off. | |
| include_attachments | No | When true, re-attach the original message's attachments to the forward. Attachments that exceed the 10 MB per-call budget are silently omitted. Defaults to false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only or destructive. The description adds important behavioral context: signature appending behavior (including for replies/forwards), suppression via include_signature, and the interaction between body and html_body. No contradiction with annotations.
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 very concise, with the key purpose front-loaded. Every sentence adds essential information without redundancy. Two sentences cover actions, signature behavior, and key options efficiently.
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?
Despite 15 parameters and no output schema, the description sufficiently covers the core behavior, including nuances like multipart/alternative for html_body, signature handling, and attachment limitations. It provides enough context for the agent to use the 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 baseline is 3. The description adds value by explaining how action parameter determines which other arguments are used, the signature behavior for include_signature, and attachment forwarding. This clarifies parameter interplay beyond 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 clearly states the tool composes and sends emails, and distinguishes three actions (send, reply, forward) with specific details about required parameters for each. It differentiates from sibling tools like draft by focusing on sending.
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 context on when to use each action (send, reply, forward) and mentions optional parameters. However, it doesn't explicitly exclude use cases or compare with alternatives like draft or inbox_list, limiting guidance on when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_deleteDelete EmailADestructiveInspect
Delete messages. This is flagged as a DESTRUCTIVE action so your MCP client can prompt you to confirm before it runs. Set action: 'delete' (one message_id), 'delete_batch' (several message_ids), or 'search_and_delete' (delete every message matching a search). By default deleted mail goes to Trash and can be recovered; pass permanent: true to delete it irreversibly. Requires the delete:email scope.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Carbon-copy (Cc) recipient to match: email address, display name, or fragment. | |
| to | No | Primary (To) recipient to match: email address, display name, or fragment. | |
| body | No | Free text to find in the message body. (On Gmail this matches the whole message, not body-only.) | |
| from | No | Sender to match: email address, display name, or fragment (e.g. "alice@example.com" or "Alice"). | |
| text | No | Free text to match anywhere in the message (headers and body). | |
| inbox | No | Email address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given. | |
| limit | No | Maximum number of matching messages to delete. Default: 500. | |
| query | No | Raw provider-native query string (escape hatch). Prefer the structured fields above. Combined with them where supported; ignored on Fastmail. | |
| since | No | ISO 8601 date or datetime; return messages received on/after (>=) this instant. E.g. "2026-06-01". | |
| action | Yes | Which operation to perform. Determines which other arguments are used. | |
| before | No | ISO 8601 date or datetime; return messages received strictly before (<) this instant. | |
| unread | No | true = only unread messages; false = only read messages; omit for either. | |
| flagged | No | true = only flagged/starred messages. Not supported on Outlook/Graph (ignored there). | |
| subject | No | Text to match in the subject line. Multi-word phrases are matched as-is. | |
| inbox_id | No | UUID of the inbox to use. Optional when the API key has access to exactly one inbox (it is auto-selected). Alternatively pass `inbox` with an email address. If you don't know the inbox_id and several are accessible, just omit it — the response then lists every inbox with its inbox_id so you can retry (calling inbox_list does the same). | |
| permanent | No | When true, hard-deletes the message (bypasses Trash). When false or omitted, moves the message to Trash. Default: false. | |
| message_id | No | Provider-native message ID as returned by email_list, email_read, or email_search. | |
| message_ids | No | Provider-native message IDs to delete. Maximum 500 IDs per call. | |
| has_attachment | No | true = only messages with an attachment. Not supported on generic IMAP (ignored there). | |
| include_folders | No | Optional list of folder/mailbox names to restrict the search scope. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotation (destructiveHint=true), the description adds that deleted mail goes to Trash by default and can be recovered, with the option for irreversible deletion ('permanent: true'). It also specifies required scope ('delete:email'), providing valuable safety and authorization context.
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 concise (5 sentences) and front-loaded with the primary purpose. Every sentence adds value, though it could be slightly more structured (e.g., bullet points) for easier scanning.
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 complexity (20 parameters, no output schema), the description covers core behavior, auth, and recovery. It omits the return value format, but the high schema coverage compensates, making it mostly complete.
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 description's job is minimal. It adds no extra parameter-level meaning beyond the schema, meeting the baseline for a well-documented 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 clearly states 'Delete messages' and enumerates three specific actions (delete, delete_batch, search_and_delete), making the tool's purpose unambiguous. It distinguishes itself from siblings like email_read and email_compose by focusing on deletion.
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 usage guidance for each action (e.g., 'delete' for one message_id, 'delete_batch' for several) and explains default vs. permanent deletion. However, it does not compare with sibling tools like email_organize or provide alternatives, which would raise the score to 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_organizeOrganize EmailAInspect
Move, copy, flag or archive messages. Set action: 'move'/'move_batch' (relocate to a destination_folder_id), 'copy'/'copy_batch' (duplicate into a destination_folder_id, leaving the original in place; IMAP/Outlook/Fastmail only), 'flag' (set read/unread/flagged via flag_action on message_ids), 'archive', or 'search_and_move' (apply to all messages matching a search). Requires the scope matching the action (manage:folders / send:email). To delete messages, use the email_delete tool.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Carbon-copy (Cc) recipient to match: email address, display name, or fragment. | |
| to | No | Primary (To) recipient to match: email address, display name, or fragment. | |
| body | No | Free text to find in the message body. (On Gmail this matches the whole message, not body-only.) | |
| from | No | Sender to match: email address, display name, or fragment (e.g. "alice@example.com" or "Alice"). | |
| text | No | Free text to match anywhere in the message (headers and body). | |
| inbox | No | Email address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given. | |
| limit | No | Maximum number of matching messages to move. Default: 500. | |
| query | No | Raw provider-native query string (escape hatch). Prefer the structured fields above. Combined with them where supported; ignored on Fastmail. | |
| since | No | ISO 8601 date or datetime; return messages received on/after (>=) this instant. E.g. "2026-06-01". | |
| action | Yes | Which operation to perform. Determines which other arguments are used. | |
| before | No | ISO 8601 date or datetime; return messages received strictly before (<) this instant. | |
| unread | No | true = only unread messages; false = only read messages; omit for either. | |
| flagged | No | true = only flagged/starred messages. Not supported on Outlook/Graph (ignored there). | |
| subject | No | Text to match in the subject line. Multi-word phrases are matched as-is. | |
| inbox_id | No | UUID of the inbox to use. Optional when the API key has access to exactly one inbox (it is auto-selected). Alternatively pass `inbox` with an email address. If you don't know the inbox_id and several are accessible, just omit it — the response then lists every inbox with its inbox_id so you can retry (calling inbox_list does the same). | |
| message_id | No | Provider-native message ID as returned by email_list, email_read, or email_search. | |
| flag_action | No | Action to apply to all messages: 'read' marks as read; 'unread' marks as unread; 'flag' stars/flags; 'unflag' removes the flag/star. | |
| message_ids | No | Provider-native message IDs to move (from email_list, email_read, or email_search). Maximum 500 IDs per call. | |
| has_attachment | No | true = only messages with an attachment. Not supported on generic IMAP (ignored there). | |
| include_folders | No | Optional list of folder/mailbox names to restrict the search scope. When omitted the search covers all folders. | |
| destination_folder_id | No | Destination folder: a canonical alias (inbox, sent, drafts, trash, archive, spam), a folder/label name (e.g. 'Receipts'), or a provider-native folder ID from folder_list. Names and aliases are resolved automatically. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral traits such as the effect of each action (e.g., copy leaves the original), provider limitations (IMAP/Outlook/Fastmail only for copy, flagged not supported on Outlook/Graph), and the nature of the action (non-destructive as per destructiveHint: false). It adds valuable context beyond annotations, such as batch operations and scope requirements. No contradiction with annotations.
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 concise, using a few well-structured sentences that front-load the main purpose. Every sentence adds essential information, such as actions, provider notes, and scope requirements, without redundancy. It is appropriately sized for the tool's complexity.
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 complexity (21 parameters, 7 actions) and lack of output schema, the description covers the main behaviors, provider-specific constraints, and cross-references to sibling tools. It does not explain return values, but for a mutation tool this is acceptable. Overall, it is fairly complete and aids agent decision-making.
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 100% coverage with descriptions for all parameters. The description adds value by explaining how parameters interact (e.g., action determines which other arguments are used, message_ids vs message_id for single/batch operations) and providing context for the 'action' enum. This goes beyond the baseline of 3 for high schema coverage.
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 tool's purpose: 'Move, copy, flag or archive messages.' It lists specific actions (move, copy, flag, archive, search_and_move) and their effects, distinguishing it from the sibling tool email_delete by noting that deletion should use that tool. This provides a specific verb+resource combination with clear differentiation.
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 guidance on when to use each action, including provider-specific notes (e.g., copy only works on IMAP/Outlook/Fastmail) and required scopes (manage:folders / send:email). It also explicitly points to email_delete for deletion. However, it does not fully address when not to use this tool (e.g., alternative tools for other operations like scheduling), but the context is sufficient for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_readRead EmailARead-onlyIdempotentInspect
Read, list and search email in an inbox. Set action: 'list' (recent messages, optionally by folder/unread), 'read' (full content of one message_id), 'read_batch' (several message_ids), 'search' (structured filters: from/to/subject/body/since/before/unread/has_attachment/flagged), or 'attachment' (download one attachment by attachment_index or filename, returned as base64 data).
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Carbon-copy (Cc) recipient to match: email address, display name, or fragment. | |
| to | No | Primary (To) recipient to match: email address, display name, or fragment. | |
| body | No | Free text to find in the message body. (On Gmail this matches the whole message, not body-only.) | |
| from | No | Sender to match: email address, display name, or fragment (e.g. "alice@example.com" or "Alice"). | |
| text | No | Free text to match anywhere in the message (headers and body). | |
| inbox | No | Email address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given. | |
| limit | No | Maximum number of email summaries to return. Defaults to 20. Larger values increase latency; prefer pagination over large limits. | |
| query | No | Raw provider-native query string (escape hatch). Prefer the structured fields above. Combined with them where supported; ignored on Fastmail. | |
| since | No | ISO 8601 date or datetime; return messages received on/after (>=) this instant. E.g. "2026-06-01". | |
| action | Yes | Which operation to perform. Determines which other arguments are used. | |
| before | No | ISO 8601 date or datetime; return messages received strictly before (<) this instant. | |
| folder | No | Mailbox folder to list. Defaults to 'INBOX'. Common values: 'INBOX', 'SENT', 'DRAFTS', 'TRASH'. Provider-specific folder names are supported (e.g., '[Gmail]/Spam' for Gmail). Case-sensitive. | INBOX |
| offset | No | Zero-based pagination offset. To page through results, increment by the value of 'limit'. The inbox ordering is by received date, newest first. | |
| unread | No | true = only unread messages; false = only read messages; omit for either. | |
| flagged | No | true = only flagged/starred messages. Not supported on Outlook/Graph (ignored there). | |
| subject | No | Text to match in the subject line. Multi-word phrases are matched as-is. | |
| filename | No | Name of the attachment to download (case-insensitive exact match). Use when you know the filename but not its position. Ignored if `attachment_index` is given. | |
| inbox_id | No | UUID of the inbox to use. Optional when the API key has access to exactly one inbox (it is auto-selected). Alternatively pass `inbox` with an email address. If you don't know the inbox_id and several are accessible, just omit it — the response then lists every inbox with its inbox_id so you can retry (calling inbox_list does the same). | |
| message_id | No | Opaque provider-native message identifier. Always obtained from a previous call to email_list or email_search. | |
| message_ids | No | Provider-native message IDs to read (from email_list or email_search). Max 50 per call. | |
| unread_only | No | When true, return only unread messages. Useful for agents that process unread email as a task queue. | |
| include_html | No | When true, the response includes the sanitized HTML body in addition to the plain-text body. Set to true only when the agent needs to process formatting, links, or structure from the HTML. | |
| mark_as_read | No | When true, marks the message as read at the provider after successfully fetching its content. Defaults to false to avoid unintended state changes. | |
| has_attachment | No | true = only messages with an attachment. Not supported on generic IMAP (ignored there). | |
| include_folders | No | Restrict search to these folder names. Empty array (default) searches all folders. Provider support varies — Gmail searches the entire inbox regardless; IMAP providers support per-folder search. | |
| attachment_index | No | 0-based index of the attachment to download, matching the order of the `attachments` array returned by email_read (action: read). Takes precedence over `filename` when both are supplied. | |
| include_attachments | No | When true, attachments are included in the response as base64-encoded data fields, sharing a single 10 MB budget. For safety, files larger than 2 MB are NOT inlined here — they come back as metadata with a `note` telling you to fetch them individually. Attachment metadata (filename, mime_type, size_bytes, attachment_index) is ALWAYS returned regardless of this flag, so prefer leaving this false, inspect the list, then download just the file you need with email_read (action: attachment) by its attachment_index (that path handles files up to 25 MB). Set true only to pull several small attachments at once. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds value by detailing state-changing parameters like mark_as_read (default false) and attachment size limits, providing transparency beyond annotations.
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 two sentences: the first states the core purpose, the second enumerates actions with brief explanations. No redundant information, every word earns its place, and it 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 tool with 27 parameters and multiple actions, the description provides a solid overview. It explains return behavior for attachment (base64 data) and implies returns for other actions. It lacks explicit return descriptions for list/read/search, but the richness of the input schema compensates.
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 already covers 100% of parameters with descriptions. The tool description complements by grouping parameters under actions (e.g., search uses structured filters) and explaining action-specific usage, adding meaning 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 clearly states the tool reads, lists, and searches email in an inbox, and enumerates five specific actions (list, read, read_batch, search, attachment). It distinguishes itself from sibling tools like email_compose and email_delete by focusing on read-only operations.
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 usage for reading/searching email via its action list, but does not explicitly state when to avoid this tool or mention alternatives. The context from sibling tool names makes it clear, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
folderFoldersAInspect
Manage mailbox folders/labels. Set action: 'list' (all folders with ids and counts), 'create' (name), 'rename' (folder_id, new_name), or 'delete' (folder_id — irreversible). 'list' needs read:email; the rest need manage:folders.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the new folder or label. | |
| inbox | No | Email address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given. | |
| action | Yes | Which operation to perform. Determines which other arguments are used. | |
| inbox_id | No | UUID of the inbox to use. Optional when the API key has access to exactly one inbox (it is auto-selected). Alternatively pass `inbox` with an email address. If you don't know the inbox_id and several are accessible, just omit it — the response then lists every inbox with its inbox_id so you can retry (calling inbox_list does the same). | |
| new_name | No | New display name for the folder or label. | |
| folder_id | No | Provider-native folder/label ID as returned by folder_list. For IMAP this is the mailbox name (e.g. 'INBOX/Work'); for Gmail the label ID; for Outlook/Fastmail the opaque folder ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the delete action is 'irreversible', implying destructive behavior. However, the annotations set destructiveHint=false, creating a direct contradiction. This undermines trust in the tool's behavior.
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, well-structured sentence that front-loads the purpose and then enumerates actions. Every clause is informative and concise.
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 description covers actions, permissions, and irreversibility. It lacks explicit return value descriptions for create/rename/delete, but without an output schema, this is acceptable. Overall, it provides sufficient context for most use cases.
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 description adds only marginal value by grouping parameters per action. It does not provide new semantics beyond the schema definitions.
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 tool manages mailbox folders/labels with four specific actions (list, create, rename, delete), distinguishing it from sibling tools like email_compose or contact_search.
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 clear usage context by listing each action's required parameters and permissions (e.g., 'list needs read:email; the rest need manage:folders'). However, it does not explicitly mention when not to use this tool or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inbox_listList InboxesARead-onlyIdempotentInspect
List inboxes. Returns all email inboxes (mailboxes/accounts) the current API key is permitted to access. Call this FIRST to discover the inbox_id values that every other tool requires. Each result includes the inbox UUID, email address, display name, provider, optional service brand (icloud/yahoo/zoho/yandex/generic), and a capabilities object describing which features (flags, folders, labels, move, copy, delete, forward, drafts, contacts_api, scheduling) are supported for that inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Optional filter — return only inboxes (email accounts/mailboxes) served by this provider. One of: gmail, outlook, fastmail, imap. Omit to list every inbox the API key can access. | |
| include_capabilities | No | Whether each inbox includes its capabilities object (which inbox features — flags, folders, labels, move, copy, delete, forward, drafts, contacts_api, scheduling — are supported). Defaults to true; set false for a compact inbox list of just inbox_id, email address, display name, provider and service brand. |
Output Schema
| Name | Required | Description |
|---|---|---|
| inboxes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature. The description adds extra behavioral context, such as the optional provider filter, the default inclusion of capabilities, and the return structure (inbox UUID, email address, etc.). No contradictions with annotations.
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 paragraph that front-loads the purpose, then provides usage guidance, and finally details the return structure. It is moderately sized and every sentence adds value, though slightly verbose in listing all return fields.
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, annotations covering read-only and idempotent behavior, and the presence of an output schema, the description sufficiently covers purpose, prerequisites, and return information. It could be improved by explicitly linking to output schema fields, but overall complete.
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%, with both parameters described in the schema. The description mentions the optional filter and include_capabilities but does not add significant new meaning beyond what the schema provides. 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?
The description clearly states the tool lists inboxes and details the returned fields (UUID, email, display name, etc.). It distinguishes from siblings by noting that this tool is the first call required to discover inbox_id for other tools, making its purpose specific and differentiated.
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?
Explicitly instructs to call this tool first to discover inbox_id values needed by other tools, providing strong usage guidance. While it doesn't explicitly list when not to use it, the context makes it clear that other email tools depend on this one. No alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleScheduled SendAInspect
Schedule mail for later delivery. Set action: 'create' (to/subject/body + send_at ISO timestamp), 'list' (pending scheduled sends), or 'cancel' (pass id or its alias scheduled_send_id).
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | List of CC recipient email addresses. Optional. | |
| id | No | UUID of the scheduled send to cancel, as returned by schedule_create and schedule_list. Alias of scheduled_send_id. | |
| to | No | List of recipient email addresses. Each must be a valid RFC 5322 address. Maximum 50 recipients. | |
| bcc | No | List of BCC recipient email addresses. Optional. | |
| body | No | Email body as plain text. If html_body is also provided, the message is sent as multipart/alternative. | |
| inbox | No | Email address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given. | |
| limit | No | Maximum number of results to return. Defaults to 20. | |
| action | Yes | Which operation to perform. Determines which other arguments are used. | |
| send_at | No | ISO 8601 datetime string (with timezone) at which the message should be sent. Must be in the future. Example: '2026-06-01T09:00:00Z' or '2026-06-01T09:00:00+02:00'. The dispatcher runs every minute so the actual send time may be up to 60 seconds after send_at. | |
| subject | No | Email subject line. Must be non-empty. Maximum 998 characters. | |
| inbox_id | No | UUID of the inbox to use. Optional when the API key has access to exactly one inbox (it is auto-selected). Alternatively pass `inbox` with an email address. If you don't know the inbox_id and several are accessible, just omit it — the response then lists every inbox with its inbox_id so you can retry (calling inbox_list does the same). | |
| reply_to | No | Optional Reply-To header address. | |
| html_body | No | Optional HTML version of the email body. | |
| attachments | No | Optional file attachments. Maximum 20 items. Total size must not exceed 10 MB. | |
| scheduled_send_id | No | UUID of the scheduled send to cancel. Alias of `id` — provide either field. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) indicate mutability and non-destructiveness. The description adds the 'cancel' action, which implies a destructive operation, potentially conflicting with destructiveHint=false. However, canceling a scheduled send is arguably non-destructive. The description does not elaborate on side effects or constraints beyond what annotations provide.
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 concise sentences: first states the purpose, second details the action parameter with its three variants. No unnecessary words, front-loaded with key information.
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 description covers the core actions but omits details like the 'list' action's support for limit/inbox filtering and the 'create' action's optional parameters (cc, bcc, attachments). Given the tool's complexity (15 parameters), the description is incomplete but adequate for basic use.
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 descriptions cover 100% of parameters, so baseline is 3. The description adds value by explaining how the 'action' parameter determines which other parameters are relevant (e.g., 'create' uses to/subject/body+send_at), providing a logical grouping that the schema alone does not offer.
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 'Schedule mail for later delivery' and enumerates the three actions (create, list, cancel), making the tool's purpose and operation explicit. It distinguishes from sibling tools like email_compose (immediate send) by focusing on scheduling.
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 (e.g., email_compose for immediate sending). It only describes the actions without comparative context, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signatureSignatureAInspect
Read or set the inbox's email signature (appended server-side on send/reply/forward/draft/scheduled mail). Set action: 'get' (returns the current signature_html/text, enabled flag, reply_mode and source) or 'set' (write signature_text and/or signature_html, optionally signature_enabled and signature_reply_mode). Setting marks the signature source as 'manual', which overrides Gmail auto-import. 'get' needs read:email; 'set' needs send:email.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox | No | Email address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given. | |
| action | Yes | Which operation to perform. Determines which other arguments are used. | |
| inbox_id | No | UUID of the inbox to use. Optional when the API key has access to exactly one inbox (it is auto-selected). Alternatively pass `inbox` with an email address. If you don't know the inbox_id and several are accessible, just omit it — the response then lists every inbox with its inbox_id so you can retry (calling inbox_list does the same). | |
| signature_html | No | Optional HTML signature body. Omit to leave unchanged; pass an empty string to clear it. If only text is provided, an HTML version is derived automatically on send. | |
| signature_text | No | Plain-text signature body. Omit to leave unchanged; pass an empty string to clear it. | |
| signature_enabled | No | Whether the signature is appended to outgoing mail. Defaults to true. | |
| signature_reply_mode | No | When to include the signature on replies/forwards: 'always', 'first_only' (default), or 'never'. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, consistent with mutation on 'set'. The description discloses that 'set' marks the signature source as 'manual' and overrides auto-import. It does not detail error handling or rate limits, but for this simple tool, the behavioral coverage is adequate.
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 paragraph but is well-organized, starting with the core purpose and then detailing parameters. It is concise and informative without unnecessary repetition. Slightly more structural breaks could improve readability, but it remains effective.
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 that there is no output schema, the description compensates by describing what 'get' returns (signature_html/text, enabled flag, reply_mode, source). It covers the main use cases for both actions. It does not discuss error codes or pagination, but for a simple read/write tool with limited parameters, it is sufficiently complete.
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%, yet the description adds significant value: it explains the auto-selection of inbox_id when only one inbox exists, the fallback behavior of listing inboxes if omitted, the meaning of leaving parameters unset or passing empty strings, and defaults for signature_reply_mode. This goes well beyond the schema definitions.
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 it reads or sets the email signature, with two distinct actions 'get' and 'set'. It explains the resource (inbox's email signature) and context (appended server-side). This distinguishes it from sibling tools like email_compose or inbox_list, as it is the only tool dedicated to signature management.
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 when to use 'get' vs 'set', including required permissions (read:email vs send:email). It explains that setting overrides Gmail auto-import. While it does not explicitly exclude use cases, it gives sufficient context for correct invocation. A sister or alternative tool is not named, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!