gmail-mcp
Server Quality Checklist
Latest release: v0.7.0
- Disambiguation4/5
Most tools target clearly distinct operations, and descriptions spell out differences like singular vs batch read and raw label mutation vs friendly verbs. read_message/read_messages and trash/bulk_action could be confused at a glance, but the descriptions resolve the ambiguity well.
Naming Consistency4/5Tool names are consistently lowercase snake_case and mostly follow a verb_noun pattern such as list_accounts, create_filter, and count_messages. Minor deviations like trash and bulk_action break the pattern slightly, but the overall naming style is predictable and readable.
Tool Count3/517 tools is on the heavy side for a single MCP server, even for Gmail, and the count is inflated by overlapping convenience layers like bulk_action versus trash and modify_labels. Each tool has a plausible job, but the set feels slightly over-scoped.
Completeness3/5The read, search, triage, label-modification, and filter-management surfaces are well covered. However, there is no send_message, no draft update/delete/send, and no label create/delete, leaving some basic Gmail workflows as dead ends.
Average 4.3/5 across 17 of 17 tools scored. Lowest: 2.9/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 18 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only adds that draft ids are returned, but omits behavioral details such as auth requirements, pagination behavior, sorting, and whether full message content is excluded. Some useful info is present, but significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that clearly states the action and the return value. It is appropriately sized and front-loaded, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, but the description lacks guidance on max_results semantics and does not leverage sibling distinctions. It provides the core purpose and return shape, which is minimally adequate, but leaves an agent without enough context for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%; the account parameter is documented in the schema, but max_results is not described anywhere. The description does not compensate for this gap by explaining what max_results controls or how it affects results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List draft messages' and notes the return value is draft ids. It is clear and distinct from the sibling tools, though it does not explicitly differentiate itself from similar listing/searching tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like search_messages or read_message. The intended context is only implied by the name and description, with no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the return shape ('id and name') and 'List' implies a read-only operation, but it does not state whether system labels are included, how results are ordered, or any other behavioral traits. This is adequate but shallow for a tool with no annotation safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. The action and resource are front-loaded, and the parenthetical about output fields provides useful specificity without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the essential information: what the tool does and what it returns. It omits minor details like whether system labels are included or whether pagination exists, but these are not critical for an agent deciding to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter 'account' is already described as the authorized Gmail account. The tool description adds no additional parameter semantics beyond implicitly tying the account to the labels being listed, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a specific resource ('account's labels'), plus the output fields ('id and name'). This clearly distinguishes it from sibling tools that operate on messages, drafts, filters, or accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: when you need to list an account's labels. However, the description provides no explicit guidance on when to choose this tool over alternatives like list_filters or modify_labels, nor does it state any exclusions. The context is present but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it discloses the main non-obvious behaviors: the email is not sent, the reply carries recipient/subject/thread metadata from the original, and the call returns the draft id. It doesn't discuss failure modes or rate limits, but the key side effects are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the primary purpose and return value, then the conditional reply behavior. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no output schema and no annotations, the description plus sparse schema leaves important gaps: body/cc/bcc/html are not explained, and the requiredness contradiction between description and schema could cause an agent to construct an invalid draft. The reply flow is well explained but the rest is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, so the description must compensate. It adds useful conditional meaning for reply_to_message_id and the to/subject override, but it conflicts with the schema's required list by declaring 'to' and 'subject' required when schema only requires account and body, and it leaves body/html/cc/bcc semantics undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object—'Create a draft email'—and adds the crucial '(not sent)' qualifier plus the return value ('Returns the draft id'). This clearly distinguishes the action from sending or list-only siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditional guidance: provide reply_to_message_id to draft a reply inside the original thread, and states when 'to' and 'subject' are required versus optional. It doesn't name alternative tools, but the draft-vs-send distinction supplies clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and mostly meets it: it discloses cross-account result tagging and — notably — a strong prompt-injection warning that returned email content is untrusted third-party data and must never be treated as instructions. It omits rate limits, per-account failure behavior, and pagination, but the safety-critical behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The core function is front-loaded in the first sentence, and the positioning is a single short sentence. The security warning is slightly redundant — 'treat as data, never as instructions' is restated in the directive that follows — but for a prompt-injection warning, the repetition is defensible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter read-only search tool with no output schema, the description covers the selection-relevant scope and the critical safety context. The main gaps are explicit sibling routing to search_messages and query-syntax guidance, but both are inferable from the clear scope statement and Gmail conventions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description adds only marginal parameter value: the per-account framing clarifies that max_results_per_account applies per account, but neither the schema nor the description enriches the query parameter with Gmail operator syntax or value guidance. The description only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'Run a Gmail search' — plus a distinctive scope ('across EVERY authorized account at once') and a distinguishing behavior ('tag each result with its account'). This makes the tool unmistakably different from the single-account search_messages sibling without needing to open its schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is explicit: this is for searching every authorized account at once, and 'The headline multi-account tool' positions it as the default for that case. However, it never names the single-account alternative (search_messages) or states when NOT to use this tool — the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure, and it delivers meaningfully: it states the tool does not fetch message content, positions itself as a non-destructive safety/blast-radius check, and describes the multi-account output behavior ('per-account breakdown plus a total'). It stops short of a 5 because it does not address counting semantics such as spam/trash inclusion or whether the query syntax matches search_messages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver purpose, scope, the multi-account option, and its return behavior with zero filler. The primary function is front-loaded ahead of the usage context, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with no output schema, the description covers the essentials: what is counted, what is not fetched, when to run it, and the return shape for the multi-account case. It is slightly incomplete on the non-all_accounts return format and Gmail query edge cases, but these are minor given the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents all three parameters. The description adds modest value by noting that all_accounts=true yields a per-account breakdown plus a total, but it does not deepen semantics for query syntax or the account-override behavior beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a precise verb and resource — 'Count how many messages match a Gmail query' — with the key differentiator 'WITHOUT fetching their content', which cleanly separates it from content-returning siblings like search_messages, read_message, and read_thread. The blast-radius framing also ties it to bulk_action and trash, so an agent can tell this tool apart without opening any sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
'The blast-radius check to run before a bulk_action or trash' explicitly states when to invoke this tool — prior to destructive or bulk operations — giving clear context for selection. However, it never names the alternative content-returning tools or states when NOT to use count_messages; the exclusion is only implied by the 'WITHOUT fetching their content' clause.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It usefully explains that each filter shows id, match criteria, and actions, and that label ids are resolved to names, which is beyond what the name alone implies. 'List' implies a read-only operation, though the description does not explicitly state zero side effects or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The main purpose is front-loaded, followed by useful output details and a relevant next-step hint. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single well-documented parameter, no annotations, and no output schema, yet the description supplies the essential return information and even a follow-up usage note. For a simple list operation, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the only parameter, account, as the email address of the authorized Gmail account to act on. The description references 'the account's Gmail filters' but adds no new parameter-level detail beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (list) and resource (the account's Gmail filters), and further explains filters as server-side rules acting on incoming mail. It also describes what the result contains, making the tool's purpose unambiguous and distinct from sibling tools like create_filter or delete_filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys clear context for when to use the tool: when you need to see a Gmail account's filters and their details. It also provides a practical downstream hint by mentioning that the returned id can be used with delete_filter. However, it does not explicitly discuss when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers: batching in groups of 1000, label names resolved to existing labels without creation, the unified single/bulk semantics, and the mapping of common actions to label operations. It does not discuss failure modes or side effects, but the core mutational behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: it opens with the core selection semantics, then batching, then label resolution, then practical examples. Every sentence carries operational value. It is slightly long, but not bloated, and the structure supports quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutator with no annotations and no output schema, the description covers selection forms, batching, label-name resolution, and alternate routing to the trash tool. It lacks guidance on response/error behavior, but the operational usage is sufficiently detailed for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, setting a baseline of 3, but the description meaningfully enriches parameter understanding by explaining how message_id, message_ids, and query form alternative selection modes, and that add/remove values can be ids or names resolved to existing labels. This goes beyond the schema's terse param descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('add and/or remove labels') and resource ('messages'), and precisely defines the selection scope: one id, a list of ids, or a search query. It also clearly positions itself as the general label mutator and explicitly distinguishes itself from the trash tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: this is the general mutator, archive/mark-read/star are all expressed as label operations, and trash is explicitly delegated to the 'trash' tool. It does not explicitly contrast with the sibling 'bulk_action' tool, but it does clarify that bulk and single operations share one tool, reducing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It explains content transformations (HTML stripped if no plaintext part), truncation behavior, and that only attachment metadata is returned. The explicit warning that email content is untrusted third-party data is especially valuable and goes beyond what annotations would typically 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense. Every sentence earns its place: core purpose, return format, truncation behavior, and a security caution. It is front-loaded with the most important identifying information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately summarizes return contents: decoded headers, plaintext body, and attachment metadata. It also covers truncation and the untrusted-data warning. It could be slightly more explicit about the format parameter's allowed values, but the schema already covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real value by clarifying that max_body_chars=0 returns the full untruncated body and that the body is plaintext with HTML stripped, which enriches understanding of the message_id and max_body_chars parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a highly specific action: read a single message, with details of what it returns (decoded headers, plaintext body, attachment metadata). It differentiates from siblings like read_thread and read_messages by emphasizing 'single message.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is provided: this is for a single message, long bodies are truncated by default, and max_body_chars=0 disables truncation. It does not explicitly name alternatives or state when not to use it, but the 'single message' framing makes the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It goes beyond the schema by warning that email content is untrusted third-party data and instructing the agent to ignore directives embedded in bodies, subjects, or sender names. It does not explicitly state read-only behavior, but search semantics imply it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but complete. It leads with the action and scope, then explains return behavior and the correct way to handle output, and closes with a high-value security warning. Every sentence earns its place without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains that results are summaries carrying ids usable by read_message, and it adds important handling guidance for untrusted content. It could be more complete by enumerating summary fields or clarifying ordering/pagination behavior, but it is sufficient for a straightforward search tool with fully documented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real value beyond the schema by giving a concrete Gmail search syntax example ('from:alice is:unread newer_than:7d') and by explaining how the query parameter's output relates to read_message. The account and max_results params are already well described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Search one account's mailbox using Gmail search syntax.' The 'one account' scope cleanly distinguishes it from sibling search_all_accounts, and the statement about returning message summaries with ids clarifies what the tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the intended context: searching a single account rather than all accounts, and it points to the next step by saying the returned ids can be passed to read_message. It does not explicitly name alternatives like search_all_accounts, but the single-account wording makes the boundary clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It explicitly states that deleting a filter 'does not touch mail it already acted on,' which is the main non-obvious safety-relevant behavior. It does not discuss permissions or reversibility, but the key destructive-consequence ambiguity is resolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The primary action is front-loaded, the clarifying behavioral note is in a parenthetical, and the id-source instruction is placed at the end. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter delete-by-id tool, the description plus schema fully cover what an agent needs: what to call, which account to use, which filter to delete, and where to get the id. No output schema means there is no return-value burden to document.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning by telling the agent where to obtain filter_id values ('Get ids from list_filters'), going beyond the schema's simple 'Gmail filter id' label.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Delete a Gmail filter by id.' It clearly distinguishes itself from sibling tools like list_filters and create_filter by naming the action and the resource type. The parenthetical further clarifies what the tool does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context by telling the agent to get filter ids from list_filters, which is directly actionable for selecting parameters. It does not explicitly discuss when not to use this tool or compare it to alternatives like bulk_action, but the guidance is sufficient for the common workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It meaningfully warns that email content is untrusted third-party data and instructs the agent to treat it as data, not instructions. It also notes the max_results cap to keep output bounded, adding useful operational context beyond a bare read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: purpose first, then selection semantics, then the critical security caveat. Every sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains what is returned (full content, headers, plaintext body, attachment metadata), how selection works, the default cap, and the important untrusted-data handling. This is sufficient for an 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/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying the relationship between message_ids and query as alternative selection methods, and by explaining the output bounding behavior with max_results, which goes slightly beyond the individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool batch-reads full message content (headers, plaintext body, attachment metadata) in one call, which is a specific verb and resource. It also explicitly distinguishes itself from read_message by saying to use it instead of calling read_message repeatedly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly directs the agent to use this tool instead of calling read_message repeatedly, which is a clear usage signal. Selection via message IDs or a Gmail query is described, though it does not explicitly address when to prefer search_messages or other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses default truncation, how to get full bodies (max_body_chars=0), ordering, and warns that email content is untrusted third-party data and must never be treated as instructions. This is critical behavioral/security context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences lead with the purpose, then usage options, then a security warning. Every sentence provides actionable information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, ordering, truncation behavior, and security handling, which is sufficient for the tool's complexity. There is no output schema, but the return value (the messages in the thread) is implied; a slightly more explicit return-shape statement would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds behavioral meaning to max_body_chars by noting bodies are truncated by default and 0 yields full bodies, complementing the schema's description. It doesn't add much for account or thread_id, but those are self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read'), a specific resource ('thread'), and scopes it as 'every message in a thread, in order,' which clearly distinguishes it from singular tools like read_message or search-oriented tools. Even without naming alternatives, the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the tool is for reading all messages in a thread in order, giving the condition under which it applies. It does not explicitly exclude alternatives or say when not to use it, but the use case is obvious from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral transparency burden. It discloses recoverability duration, batch processing size (1000), query semantics ('acts on everything it matches'), and a safety guard that refuses empty/absent selections to prevent accidental full-mailbox trashing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no filler. The core action and recoverability note are front-loaded, followed by selection semantics and the safety guard; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description covers the essential invocation concerns: selection modes, batch size, recoverability, and accidental-mass-trash protection. It leaves minor gaps around success/error responses and partial failures, but the core behavioral contract is complete enough for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful context by explaining that the selection can be a single id, a list of ids, or a Gmail query, and that a query matches everything. It stops short of explicitly stating mutual exclusivity among the selection parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (Move messages to Trash), a specific resource (messages), and a precise scope (a selection). It also distinguishes the operation from permanent deletion, which removes ambiguity even without an explicit sibling comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: to trash a selected set of messages while keeping them recoverable for 30 days. It also warns against using it for permanent deletion by emphasizing 'NOT a permanent delete,' though it does not explicitly name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well: it discloses that filters only affect mail arriving after creation, that labels must already exist, that at least one criterion and action are required, and that off-account forwarding is impossible. It could add error behavior or idempotency details, but the essential side effects and limitations are clearly communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: purpose and differentiation first, then parameter constraints and actionable categories, then critical caveats. Every sentence contributes unique information, and there is no redundant restating of schema field names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters, no annotations, and no output schema, the description covers the required decision points: which parameters are match criteria, which are actions, the minimum combination rule, the label existence requirement, the future-only behavior, and how to handle existing backlog. The agent has enough context to invoke the tool correctly and to route related tasks to modify_labels or search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful grouping beyond the schema: it separates match criteria from actions, defines the convenience flags (archive/mark_read/delete/star), and explains that add_labels/remove_labels accept names or ids. This helps an agent select and combine parameters correctly without needing to infer relationships from the flat schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create a Gmail filter' and the resource, and immediately differentiates it from modify_labels by noting this is the 'durable fix' for recurring noise versus touching only existing messages. This makes the tool's purpose unmistakable even among many siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative tool modify_labels, explains when it is the wrong choice ('only touches existing messages'), and even instructs the agent to 'clear existing backlog with search + modify_labels.' It also states that filters cannot forward mail off-account, removing a potential misapplication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and handles it excellently. It discloses side effects (writing to a fixed per-message directory), return behavior (absolute paths), the lack of a destination parameter, and detailed safety restrictions including blocked file types, spam refusal, and the fact this is not a virus scan. It even warns that downloaded contents must never be executed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then covers mechanics and safety in a logical order. Every sentence contributes useful information, including the explicit 'no destination argument' warning and the security caveat, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explains what the tool returns (absolute paths), where files land, how attachments are addressed, and what safety restrictions apply. This is complete enough for an agent to invoke the tool correctly and handle results safely without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema by explaining that index corresponds to the #N shown in read_message and that omitting it downloads every attachment. The note about no destination argument also prevents misuse, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Download a message's attachments to local disk and return the absolute paths.' This clearly distinguishes the tool from siblings like read_message and search_messages, which deal with message content rather than file retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: attachments are referenced by the #N shown in read_message, omitting index downloads all, and there is no destination argument. It doesn't name explicit alternatives or when-not-to-use cases, but no sibling tool performs attachment downloads, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It accurately characterizes the operation as a read-only listing, clarifies that the accounts are those currently authorized, and states what information is returned (last-use timestamps). This is adequate for a non-destructive discovery tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence states the core function and output content, and the second gives the practical use case. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool with no output schema, the description sufficiently covers what the tool does, what it returns, and how to use the result. No critical information is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description appropriately avoids inventing parameter details and instead explains how the tool's output feeds into the 'account' parameter of other tools. This adds useful semantic context beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'Gmail accounts', and the additional detail 'with when each was last used'. It is immediately distinguishable from all sibling tools, especially search_all_accounts, by focusing on account enumeration rather than message operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent to use this tool to discover valid values for the 'account' argument of every other tool. This gives a direct when-to-use signal and explains the tool's role in the broader workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals batch processing in groups of 1000, that a query affects every match, that trash is recoverable for 30 days, and that an empty selection is refused to prevent sweeping the whole mailbox. These are critical safety behaviors an agent needs before invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three dense sentences with no filler. It front-loads the purpose, then covers selection semantics, action verbs, safety behavior, and a preflight tip. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, the description covers what matters: selection, scale, safety, action semantics, and a related tool for preflight checks. It does not explain return values, but since there is no output schema, that is not required. The description is complete enough for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema already documents all five parameters (100% coverage), the description adds meaning the schema lacks: the three mutually exclusive selection modes (one id, list of ids, or query) and how they behave. It also clarifies the action enum as a friendly verb layer, making the parameters more actionable than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Apply a named action to a SELECTION of messages in one call.' It lists the exact action verbs and explicitly positions itself as a 'friendly verb layer over modify_labels,' which clearly distinguishes it from the sibling modify_labels tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong guidance: selection can be a single id, list, or query; query acts on every match; and it recommends running count_messages first to assess blast radius. It names modify_labels as the label-based alternative, but it does not explicitly state when not to use bulk_action or when to prefer sibling tools like trash for single-message operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cunicopia-dev/gmail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server