Good question. Here's what I found working well and what could be improved:
What worked well
search_in_message + center_at drill-down is clever and effective once you know to use it
search_message_bodies with implicit AND is intuitive
aggregate is useful for quick orientation
What tripped me up
1. search_messages defaults to newest-first with no sort option
This was the biggest problem. When searching [part number] — 121 results, newest-first — the first relevant email (May 13, 2025) was on page 3 (offset 50+). I never paginated far enough because I assumed the early results would be sufficient.
Fix: Add a sort parameter — e.g., sort=asc for oldest-first when doing historical research. Or at minimum document in the description that results are newest-first and encourage using before: / after: filters.
2. search_message_bodies returns total: -1
I have no idea if I'm looking at 5 results or 500, so I don't know whether to paginate or stop. The has_more flag helps but only after fetching.
Fix: If a real total isn't feasible, at least document total=-1 in the parameter description so I know not to rely on it.
3. FTS requires at least one free-text term
If I want to search message bodies for everything from a specific sender in a date range, I can't — the tool rejects from:xxx after:yyyy-mm-dd as a filter-only query. So I have to search metadata first (search_messages), then dig into individual bodies.
Fix: Allow filter-only queries, or add a note in the description that bodies require free-text terms and direct users to search_messages for metadata-only queries (you already do this, but it's buried).
4. Context snippets are useful but hit-or-match on long threads
The 300-byte window might land on a repeated quote rather than the actual new content. The search_in_message + center_at workaround is great but requires knowing the drill.
Fix: Might just be documentation — the workflow instructions I was given already describe this, I just didn't follow them consistently.
5. Missing: a "search by conversation/thread" body search
If I find one interesting message in a thread, there's no easy way to say "show me all messages in this conversation ordered by date." I can use list_messages(conversation_id=...) which shows dates/subjects but not bodies.
Fix: This might already be fine — list_messages gives the thread map, then I fetch individual messages. Just took me a while to learn that pattern.
TL;DR: The single biggest improvement would be a sort parameter on search_messages (oldest-first as an option). Everything else is manageable with better documentation of existing patterns.
Good question. Here's what I found working well and what could be improved:
What worked well
search_in_message+center_atdrill-down is clever and effective once you know to use itsearch_message_bodieswith implicit AND is intuitiveaggregateis useful for quick orientationWhat tripped me up
1.
search_messagesdefaults to newest-first with no sort optionThis was the biggest problem. When searching [part number] — 121 results, newest-first — the first relevant email (May 13, 2025) was on page 3 (offset 50+). I never paginated far enough because I assumed the early results would be sufficient.
Fix: Add a
sortparameter — e.g.,sort=ascfor oldest-first when doing historical research. Or at minimum document in the description that results are newest-first and encourage usingbefore:/after:filters.2.
search_message_bodiesreturnstotal: -1I have no idea if I'm looking at 5 results or 500, so I don't know whether to paginate or stop. The
has_moreflag helps but only after fetching.Fix: If a real total isn't feasible, at least document
total=-1in the parameter description so I know not to rely on it.3. FTS requires at least one free-text term
If I want to search message bodies for everything from a specific sender in a date range, I can't — the tool rejects
from:xxx after:yyyy-mm-ddas a filter-only query. So I have to search metadata first (search_messages), then dig into individual bodies.Fix: Allow filter-only queries, or add a note in the description that bodies require free-text terms and direct users to
search_messagesfor metadata-only queries (you already do this, but it's buried).4. Context snippets are useful but hit-or-match on long threads
The 300-byte window might land on a repeated quote rather than the actual new content. The
search_in_message+center_atworkaround is great but requires knowing the drill.Fix: Might just be documentation — the workflow instructions I was given already describe this, I just didn't follow them consistently.
5. Missing: a "search by conversation/thread" body search
If I find one interesting message in a thread, there's no easy way to say "show me all messages in this conversation ordered by date." I can use
list_messages(conversation_id=...)which shows dates/subjects but not bodies.Fix: This might already be fine —
list_messagesgives the thread map, then I fetch individual messages. Just took me a while to learn that pattern.TL;DR: The single biggest improvement would be a
sortparameter onsearch_messages(oldest-first as an option). Everything else is manageable with better documentation of existing patterns.