Skip to main content
Glama

MCP Emails

Ownership verified

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.3/5 across 10 of 10 tools scored. Lowest: 3.6/5.

Server CoherenceA
Disambiguation5/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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoOptional CC recipient addresses.
toNoOptional recipient addresses. Drafts may be saved without recipients.
bccNoOptional BCC recipient addresses.
bodyNoPlain-text body of the draft.
inboxNoEmail address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given.
limitNoMaximum number of drafts to return. Defaults to 20.
actionYesWhich operation to perform. Determines which other arguments are used.
subjectNoDraft subject line.
draft_idNoProvider-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_idNoUUID 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_bodyNoOptional HTML body of the draft.
include_signatureNoWhether 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.
Behavior5/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoList of CC recipient email addresses. Optional.
toNoList of recipient email addresses. Each must be a valid RFC 5322 address. Maximum 50 recipients.
bccNoList of BCC recipient email addresses. Optional. BCC recipients are not visible to other recipients.
bodyNoEmail 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.
inboxNoEmail address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given.
actionYesWhich operation to perform. Determines which other arguments are used.
subjectNoEmail subject line. Must be non-empty. Maximum 998 characters per RFC 5322. The subject is sent as-is; no prefix is added automatically.
inbox_idNoUUID 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_toNoOptional Reply-To header address. When the recipient clicks 'Reply', their email client will address the reply to this address rather than the sender.
html_bodyNoOptional 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_allNoWhen 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_idNoProvider-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.
attachmentsNoOptional list of file attachments. Maximum 20 attachments. Total attachment size must not exceed 10 MB.
include_signatureNoWhether 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_attachmentsNoWhen 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.
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 EmailA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCarbon-copy (Cc) recipient to match: email address, display name, or fragment.
toNoPrimary (To) recipient to match: email address, display name, or fragment.
bodyNoFree text to find in the message body. (On Gmail this matches the whole message, not body-only.)
fromNoSender to match: email address, display name, or fragment (e.g. "alice@example.com" or "Alice").
textNoFree text to match anywhere in the message (headers and body).
inboxNoEmail address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given.
limitNoMaximum number of matching messages to delete. Default: 500.
queryNoRaw provider-native query string (escape hatch). Prefer the structured fields above. Combined with them where supported; ignored on Fastmail.
sinceNoISO 8601 date or datetime; return messages received on/after (>=) this instant. E.g. "2026-06-01".
actionYesWhich operation to perform. Determines which other arguments are used.
beforeNoISO 8601 date or datetime; return messages received strictly before (<) this instant.
unreadNotrue = only unread messages; false = only read messages; omit for either.
flaggedNotrue = only flagged/starred messages. Not supported on Outlook/Graph (ignored there).
subjectNoText to match in the subject line. Multi-word phrases are matched as-is.
inbox_idNoUUID 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).
permanentNoWhen true, hard-deletes the message (bypasses Trash). When false or omitted, moves the message to Trash. Default: false.
message_idNoProvider-native message ID as returned by email_list, email_read, or email_search.
message_idsNoProvider-native message IDs to delete. Maximum 500 IDs per call.
has_attachmentNotrue = only messages with an attachment. Not supported on generic IMAP (ignored there).
include_foldersNoOptional list of folder/mailbox names to restrict the search scope.
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCarbon-copy (Cc) recipient to match: email address, display name, or fragment.
toNoPrimary (To) recipient to match: email address, display name, or fragment.
bodyNoFree text to find in the message body. (On Gmail this matches the whole message, not body-only.)
fromNoSender to match: email address, display name, or fragment (e.g. "alice@example.com" or "Alice").
textNoFree text to match anywhere in the message (headers and body).
inboxNoEmail address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given.
limitNoMaximum number of matching messages to move. Default: 500.
queryNoRaw provider-native query string (escape hatch). Prefer the structured fields above. Combined with them where supported; ignored on Fastmail.
sinceNoISO 8601 date or datetime; return messages received on/after (>=) this instant. E.g. "2026-06-01".
actionYesWhich operation to perform. Determines which other arguments are used.
beforeNoISO 8601 date or datetime; return messages received strictly before (<) this instant.
unreadNotrue = only unread messages; false = only read messages; omit for either.
flaggedNotrue = only flagged/starred messages. Not supported on Outlook/Graph (ignored there).
subjectNoText to match in the subject line. Multi-word phrases are matched as-is.
inbox_idNoUUID 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_idNoProvider-native message ID as returned by email_list, email_read, or email_search.
flag_actionNoAction to apply to all messages: 'read' marks as read; 'unread' marks as unread; 'flag' stars/flags; 'unflag' removes the flag/star.
message_idsNoProvider-native message IDs to move (from email_list, email_read, or email_search). Maximum 500 IDs per call.
has_attachmentNotrue = only messages with an attachment. Not supported on generic IMAP (ignored there).
include_foldersNoOptional list of folder/mailbox names to restrict the search scope. When omitted the search covers all folders.
destination_folder_idNoDestination 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.
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 EmailA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCarbon-copy (Cc) recipient to match: email address, display name, or fragment.
toNoPrimary (To) recipient to match: email address, display name, or fragment.
bodyNoFree text to find in the message body. (On Gmail this matches the whole message, not body-only.)
fromNoSender to match: email address, display name, or fragment (e.g. "alice@example.com" or "Alice").
textNoFree text to match anywhere in the message (headers and body).
inboxNoEmail address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given.
limitNoMaximum number of email summaries to return. Defaults to 20. Larger values increase latency; prefer pagination over large limits.
queryNoRaw provider-native query string (escape hatch). Prefer the structured fields above. Combined with them where supported; ignored on Fastmail.
sinceNoISO 8601 date or datetime; return messages received on/after (>=) this instant. E.g. "2026-06-01".
actionYesWhich operation to perform. Determines which other arguments are used.
beforeNoISO 8601 date or datetime; return messages received strictly before (<) this instant.
folderNoMailbox 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
offsetNoZero-based pagination offset. To page through results, increment by the value of 'limit'. The inbox ordering is by received date, newest first.
unreadNotrue = only unread messages; false = only read messages; omit for either.
flaggedNotrue = only flagged/starred messages. Not supported on Outlook/Graph (ignored there).
subjectNoText to match in the subject line. Multi-word phrases are matched as-is.
filenameNoName 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_idNoUUID 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_idNoOpaque provider-native message identifier. Always obtained from a previous call to email_list or email_search.
message_idsNoProvider-native message IDs to read (from email_list or email_search). Max 50 per call.
unread_onlyNoWhen true, return only unread messages. Useful for agents that process unread email as a task queue.
include_htmlNoWhen 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_readNoWhen true, marks the message as read at the provider after successfully fetching its content. Defaults to false to avoid unintended state changes.
has_attachmentNotrue = only messages with an attachment. Not supported on generic IMAP (ignored there).
include_foldersNoRestrict 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_indexNo0-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_attachmentsNoWhen 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.
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the new folder or label.
inboxNoEmail address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given.
actionYesWhich operation to perform. Determines which other arguments are used.
inbox_idNoUUID 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_nameNoNew display name for the folder or label.
folder_idNoProvider-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.
Behavior1/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 InboxesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoOptional 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_capabilitiesNoWhether 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

ParametersJSON Schema
NameRequiredDescription
inboxesYes
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoList of CC recipient email addresses. Optional.
idNoUUID of the scheduled send to cancel, as returned by schedule_create and schedule_list. Alias of scheduled_send_id.
toNoList of recipient email addresses. Each must be a valid RFC 5322 address. Maximum 50 recipients.
bccNoList of BCC recipient email addresses. Optional.
bodyNoEmail body as plain text. If html_body is also provided, the message is sent as multipart/alternative.
inboxNoEmail address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given.
limitNoMaximum number of results to return. Defaults to 20.
actionYesWhich operation to perform. Determines which other arguments are used.
send_atNoISO 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.
subjectNoEmail subject line. Must be non-empty. Maximum 998 characters.
inbox_idNoUUID 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_toNoOptional Reply-To header address.
html_bodyNoOptional HTML version of the email body.
attachmentsNoOptional file attachments. Maximum 20 items. Total size must not exceed 10 MB.
scheduled_send_idNoUUID of the scheduled send to cancel. Alias of `id` — provide either field.
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

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 (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.

ParametersJSON Schema
NameRequiredDescriptionDefault
inboxNoEmail address of the inbox to use, as a friendly alternative to inbox_id. Optional; ignored if inbox_id is given.
actionYesWhich operation to perform. Determines which other arguments are used.
inbox_idNoUUID 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_htmlNoOptional 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_textNoPlain-text signature body. Omit to leave unchanged; pass an empty string to clear it.
signature_enabledNoWhether the signature is appended to outgoing mail. Defaults to true.
signature_reply_modeNoWhen to include the signature on replies/forwards: 'always', 'first_only' (default), or 'never'.
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources