Skip to main content
Glama

read_channel

Read-only

Read one Slack channel's recent message history (conversations.history) — channel accepts a channel/group id (C…/G…), a DM conversation id (D…), or '#name'. Read-only: it never opens or creates a DM, so a user id (U…) or 'me' is refused; pass a DM's D… id instead. After reconnect grants user-token channels:history/groups:history, channels the person belongs to can be read even when the bot is absent; older connections still use the bot. Person-to-person DMs use user-token im:history, with the bot as fallback. Pass account when more than one workspace is connected. Slack caps this method at 15 messages per request and 1 request per minute per workspace — request small limits and respect the named retry delay after a rate-limit failure. Use a reply's external_id (channel:ts) with read_thread.

Input Schema

NameRequiredDescriptionDefault
limitNoMax messages (default 20).
latestNoOnly messages before this ts (exclusive).
oldestNoOnly messages after this ts (exclusive).
accountNoWorkspace label. Required when several history-capable workspaces are connected.
channelYesChannel/group id (C…/G…), DM conversation id (D…), or '#name' (see search_channels). A user id (U…) or 'me' is refused — reading never opens a DM; pass the DM's D… id (e.g. from a search_messages hit's external_id).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / channel / description
      Previous value: -"Channel id, '#name', or 'me' (see search_channels / list_accounts)."New value: +"Channel/group id (C…/G…), DM conversation id (D…), or '#name' (see search_channels). A user id (U…) or 'me' is refused — reading never opens a DM; pass the DM's D… id (e.g. from a search_messages hit's external_id)."
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Although readOnlyHint=true already covers the safety profile, the description adds substantial context: it never opens or creates a DM, refuses U…/'me', explains which token scopes apply after reconnect and the bot fallback, and discloses the hard Slack caps (15 messages per request, 1 request per minute per workspace) plus the retry-delay expectation. This is exactly the kind of enforcement detail annotations cannot express.

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 purpose and the channel-id rule, and every clause carries operational information. It is dense — the token-scope sentence is long and slightly buried mid-paragraph — but there is no filler to cut.

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?

Covers the decisions an agent must make before calling: which id form, which workspace via `account`, how small to set `limit`, and how to follow up with read_thread. With no output schema, the return shape is only hinted at via the `channel:ts` external_id reference, which is the remaining gap.

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: it enumerates accepted `channel` forms (C…/G…/D…/'#name') and the refusal case, and clarifies that `limit` should be kept small because Slack caps requests at 15 despite the schema's maximum of 200. `latest`/`oldest` are left entirely to the schema.

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 one Slack channel's recent message history' — and even names the underlying API method (conversations.history). It is clearly distinguishable from siblings like read_thread, read_direct_chat, and search_messages, and the scope ('one channel', 'recent') is explicit.

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

Usage Guidelines4/5

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

Gives concrete routing rules: use a DM's D… id rather than a user id, pass `account` when multiple workspaces are connected, and hand a reply's `external_id` to read_thread. It does not explicitly contrast with search_messages or read_chat for the same content, so the alternative-selection guidance is strong but not exhaustive.

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