Skip to main content
Glama

slack_read_thread

Read the REPLIES of a Slack thread — where decisions actually land.

slack_read_history returns top-level messages only; a parent with reply_count > 0 hides its replies. This opens it.

Returns {parent, replies[], has_more, next_cursor} — parent is kept out of replies because Slack repeats it on every page. Paginate by feeding next_cursor back as cursor; pages walk the thread newest → oldest.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "channel": "<channel>",
      "thread_ts": "<thread_ts>"
    },
    "name": "slack_read_thread"
  }
}

Input Schema

NameRequiredDescriptionDefault
_orgNoOrg (id) de CET APPEL. `oto_list_orgs()`.
limitNoMax replies per page (the parent does not count against it).
_groupNoÉquipe (id) de CET APPEL, sous son org parente.
cursorNo`next_cursor` from a previous call.
latestNoOnly replies before this ts — exclusive.
oldestNoOnly replies after this ts — exclusive.
_run_idNoOBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas.
channelYesChannel ID (C…/D…/G…) holding the thread.
_projectNoProjet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`.
_instanceNoInstance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`.
inclusiveNoAlso return replies sitting exactly on oldest/latest.
thread_tsYes`ts` of the PARENT message (a reply's `thread_ts`). Passing a reply's own `ts` is refused, with the parent's ts to retry with.

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full burden, and it does substantial work: it discloses the return envelope {parent, replies[], has_more, next_cursor}, explains why parent sits outside replies, and states pagination direction (newest → oldest). It omits permission/auth requirements and rate-limit behavior, which is the remaining gap for a tool with zero annotation coverage.

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?

Front-loaded with the purpose and the sibling distinction before the return/pagination detail. Slightly padded by the editorial aside 'where decisions actually land', but the rest of the text is dense and earns its place.

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?

With 12 parameters, no annotations, and no output schema, the description compensates well by describing the return shape and pagination contract. The context/injection parameters (_org, _group, _run_id, _project, _instance) are not addressed, but they are self-documented in the schema and are cross-cutting boilerplate rather than thread-specific behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning on top: it tells the agent that next_cursor must be fed back as cursor and what order pages arrive in, which is operational semantics the schema's one-line cursor description does not convey. The limit/counting rule and thread_ts refusal are already in the schema, so no extra credit there.

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?

States a specific verb and resource (read the REPLIES of a Slack thread) and immediately distinguishes itself from the sibling slack_read_history, which returns top-level messages only. An agent can pick between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the exact selection condition: when a parent has reply_count > 0, its replies are hidden from slack_read_history and this tool opens them. The alternative is named explicitly along with the situation that calls for it.

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