Skip to main content
Glama
gmail-tidy-mcp

gmail-tidy-mcp

create_filter

Destructive

Create Gmail filters to label, archive, or organize incoming mail by sender, subject, or search query.

Instructions

Creates a filter for mail that arrives from now on. To apply it to older mail too, run organize_emails with the same search.

Input Schema

NameRequiredDescriptionDefault
toNo
fromNo
queryNoGmail search the mail must match
accountYesEmail address or label of the account (see list_accounts).
subjectNo
add_labelsNoLabel names or IDs. System labels: INBOX, UNREAD, STARRED, IMPORTANT.
skip_inboxNoMust be true to remove INBOX, i.e. to hide matching mail from the inbox. Only set it when the user asked for that explicitly.
remove_labelsNoLabel names or IDs. System labels: INBOX, UNREAD, STARRED, IMPORTANT.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful trait the annotations cannot convey: the filter is forward-only, not retroactive, plus the remediation path. It does not explain what makes the call destructive, i.e. that the filter will keep mutating future mail by adding/removing labels or skipping the inbox.

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 short sentences with no filler, and the key constraint (future mail only) is front-loaded before the alternative. Every clause carries information.

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

Completeness2/5

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

For an 8-parameter, destructive, open-world tool with no output schema, the description is thin. An agent gets no sense of what the filter will actually do to future mail, whether creation is idempotent or how it interacts with existing filters, and nothing about the label parameters that drive the behavior.

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

Parameters2/5

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

Schema description coverage is 63% and the description mentions no parameters at all, leaving 'to', 'from' and 'subject' undocumented in both places. It also never states that add_labels/remove_labels/skip_inbox define the filter's action, which is the core semantic of the call. Well below the baseline for a mid-coverage schema.

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

Purpose4/5

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

States a specific verb and resource ('Creates a filter') plus a scoping qualifier ('for mail that arrives from now on'), which immediately separates it from list_filters and delete_filter. It also names a sibling (organize_emails) whose behavior differs, though it does not say how a filter relates to label-side siblings such as create_label.

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?

Gives an explicit conditional route: use this for future mail, and run organize_emails with the same search to cover older mail. That is real when-to-use guidance with a named alternative. It stops short of exclusions such as what to do when a similar filter already exists (there is no update_filter sibling).

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