Skip to main content
Glama

Cherami

Find conversations

list_threads
Read-onlyIdempotent

Find conversations where one message satisfies all supplied filters. Matching IDs identify relevant members; counts still describe the whole conversation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fromNoExact email address in From, case-insensitive; not the SMTP envelope sender.
afterNoInclusive receipt/submission time: YYYY-MM-DDTHH:mm:ss, optional 1–3 fractional digits, then Z or ±HH:mm.
limitNo
orderNoDefaults to newest. Relevance requires query; ties use newest first. Threads order by their latest activity.
queryNoMatch all words or quoted phrases in subject/body. Case-insensitive keyword search, not semantic similarity; up to 16 terms/phrases.
beforeNoExclusive receipt/submission time: YYYY-MM-DDTHH:mm:ss, optional 1–3 fractional digits, then Z or ±HH:mm.
cursorNoContinue with next_cursor from the previous result, keeping the same filters. Stop when next_cursor is null.
subjectNoLiteral case-insensitive substring of the subject.
inbox_idYes
recipientNoExact email address in To/Cc/Bcc where available, case-insensitive.
labels_allNoRequire every listed label. Filter groups combine with AND; empty arrays impose no condition.
labels_anyNoRequire at least one listed label.
labels_noneNoExclude messages with any listed label.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
threadsYes
next_cursorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds genuine behavioral context beyond them: filters match at the message level within a thread, matching IDs identify only the relevant members, and counts describe the whole conversation. It does not, however, address pagination behavior beyond what the cursor param already says.

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 core matching rule is front-loaded. Every clause carries semantic weight: the filter scope, the ID meaning, and the count meaning.

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?

With an output schema present, return values need not be explained, and the description does cover the subtle matching/counting semantics. However, for a 13-parameter search tool with many similar siblings, the absence of any alternative routing or usage context leaves a real gap for correct tool selection.

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 85%, so the schema already documents nearly all 13 parameters in detail. The description adds only the high-level rule that all supplied filters must be satisfied by one message; it does not add syntax or per-parameter meaning beyond the schema, which is the expected baseline at this coverage level.

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?

The description gives a specific verb and resource: 'Find conversations where one message satisfies all supplied filters.' The clause 'where one message satisfies all supplied filters' implicitly distinguishes thread-level search from message-level search (list_messages), but no sibling is named, so differentiation is left to inference.

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?

There is no explicit when-to-use guidance, no mention of when not to use this tool, and no routing to alternatives such as list_messages, count_messages, or get_thread. The reader must infer applicability from the purpose statement alone.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources