read_thread
Read a thread's metadata, outcome, and subscription state.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes |
Read a thread's metadata, outcome, and subscription state.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation, and the description aligns with it by saying 'Read'. The description adds some context about the thread-specific data scope, but does not disclose additional behaviors such as error cases, return format, or whether subscription state reflects the current agent.
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?
The description is a single, front-loaded sentence with no filler. Every word contributes to the tool's purpose, and it is easy to scan quickly.
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 simple, single-parameter read-only tool, the description is mostly sufficient: it states what is read and the annotation confirms safety. It does not describe return format or error behavior, but the absence of an output schema and the simple scope make this a minor 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 0%, so the description should compensate for parameter meaning. It does not mention threadId or explain how to supply it. The schema's name and UUID format are helpful, but the description itself adds no parameter-level guidance beyond what the structured schema already provides.
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?
The description uses a specific verb ('Read') and a specific resource ('a thread'), and explicitly names the data aspects covered: metadata, outcome, and subscription state. This clearly differentiates it from siblings like read_messages and list_threads, which handle different resources or granularities.
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 use case is implied by the name and description: call this when you need thread-level metadata, outcome, or subscription state. However, it does not explicitly say when not to use it or name alternatives such as read_messages for message contents or list_threads for enumerating threads.
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.