Mark a conversation read
mark_thread_readMark every email of a conversation as read.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes | `threadId` of any email in the conversation. |
mark_thread_readMark every email of a conversation as read.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes | `threadId` of any email in the conversation. |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description's one added fact — that the write applies to *every* email of the conversation, not just one — is genuinely useful scope disclosure. However, it is silent on whether the change is reversible, whether it clobbers any existing state, and what gets returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler or redundancy. The scope qualifier ('every email of a conversation') is placed where it matters most.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, low-complexity mutation with rich annotations and no output schema, the description is nearly sufficient. A note on irreversibility or the all-or-nothing nature of the thread-level write would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains that 'threadId' may be any email in the conversation plus its UUID pattern. The word 'conversation' in the description loosely maps to threadId but adds no format or resolution detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('mark ... as read') and resource ('every email of a conversation'), which is unambiguous. It does not explicitly differentiate from any sibling (no bulk_update_emails exists), but no sibling would be confused with it either, so this is clear rather than exemplary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, prerequisites, or alternatives — e.g. whether it should follow get_email or list_emails, or how it relates to count_unread_emails. The agent must infer all usage conditions from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.