Skip to main content
Glama
Timbre

Timbre

search_mail

Read-only

Search all Apple Mail accounts locally by full-text, sender, recipient, mailbox, dates, unread, flagged, or attachments; returns IDs for read_mail. Use before other mail connectors.

Instructions

Search the user's email: every account in Apple Mail on this Mac (iCloud, Gmail, Outlook…), locally; use it before other mail connectors. Full-text over subject, people, body and attachment names, ranked by relevance and recency; or filter by sender, recipient, mailbox, account, dates, unread, flagged, attachments. Junk and Trash are skipped unless asked. Returns ids for read_mail.

Input Schema

NameRequiredDescriptionDefault
toNoA To/Cc recipient name or address contains this.
fromNoSender name or address contains this.
sortNo"relevance" (default with a query) or "newest" / "oldest".
afterNoOn or after this date (YYYY-MM-DD or ISO 8601).
limitNoResults per page, 1-50 (default 20). Use next_offset for more.
queryNoWords to find in subject, people, body and attachment names. Accent-insensitive. Supports "exact phrase", prefix*, a OR b, -exclude, and operators from: to: subject: in: is:unread is:flagged has:attachment after:YYYY-MM-DD before:YYYY-MM-DD.
beforeNoBefore this date (YYYY-MM-DD or ISO 8601).
offsetNoSkip this many results (pagination).
unreadNo
accountNoAccount name (as in list_mailboxes), e.g. "iCloud".
flaggedNo
mailboxNoMailbox name or path ("Archive/2024"), or a role: inbox, sent, drafts, archive, junk, trash.
subjectNoSubject contains this.
group_threadsNoOne result per conversation (default true): thread_matches counts its other matching messages, get_thread shows them. false lists each message.
has_attachmentsNo
include_junk_and_trashNoJunk and Trash are skipped unless a mailbox is named or this is true.

Output Schema

NameRequiredDescriptionDefault
totalYes
engineYes"fulltext" or "metadata" (subjects and senders only).
noticeNo
resultsYes
took_msYes
next_offsetNo
timbre_updateNoA newer Timbre exists (said once per session).
total_is_lower_boundNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.5

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, but the description adds genuinely new behavioral facts: the search runs locally against the Mac's mail store, results are "ranked by relevance and recency," junk/trash are silently omitted by default, and IDs are returned for a follow-up read_mail call. These are defaults and side effects an agent cannot infer from the annotation set alone.

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 scope statement and the sibling-routing hint are front-loaded in the first clause, and the second sentence compresses capability into one pass. It is dense and slightly run-on with semicolon-chained clauses, but every clause carries information.

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 16-parameter search tool with an output schema, the description covers the things structured fields cannot: local-only scope, default folder exclusions, ranking behavior, and the downstream read_mail workflow. Pagination behavior is left to the schema's limit/offset descriptions, which is reasonable, though a one-line note on paging would make it airtight.

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 81%, so the schema already documents nearly every parameter, including the query operator syntax and pagination fields. The description restates the filter categories (sender, recipient, mailbox, account, dates, unread, flagged, attachments) without adding syntax or edge-case meaning beyond what the schema says, so the baseline 3 applies.

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

Purpose5/5

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

The description opens with a specific verb and resource ("Search the user's email") and immediately scopes it to "every account in Apple Mail on this Mac" searched locally, which separates it from any server-side or single-account mail tool. It also enumerates the searchable fields (subject, people, body, attachment names) so the agent knows exactly what the index covers.

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?

It gives an explicit directive -- "use it before other mail connectors" -- which is actionable routing guidance, and it states the default exclusion (Junk and Trash skipped unless asked) plus the handoff ("Returns ids for read_mail"). It stops short of distinguishing itself from close siblings such as selected_mail or get_thread, so it falls just short of a top score.

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