Skip to main content
Glama

slack-mcp

Multi-workspace Slack MCP server with draft+confirm safety, vault auto-export, and triple-mode auth.

One process, N workspaces, every write goes through draft → confirm. Built because the existing Slack MCP servers are single-workspace per instance and the Anthropic reference impl was deprecated.

Why use this over the alternatives

This

Anthropic connector

korotovsky/slack-mcp-server

Multi-workspace per server

Yes

No

No

Draft + confirm on writes

Yes

No

No

Vault auto-export of reads

Yes

No

No

Prompt-injection scrubber

Yes

No

No

Audit log

Yes

No

No

xoxc / xoxp / xoxb auth

Yes

n/a

Yes

Status

Active

Active (limited)

Active

Related MCP server: Slack Notify MCP

Install

Open Claude Code, paste:

/plugin marketplace add adelaidasofia/slack-mcp
/plugin install slack-mcp@slack-mcp

Then fill in tokens in .env (see SETUP.md for cookie extraction walkthrough).

git clone https://github.com/adelaidasofia/slack-mcp.git ~/.claude/slack-mcp
cd ~/.claude/slack-mcp
pip3 install --break-system-packages -r requirements.txt
cp .env.example .env
# fill in tokens — see SETUP.md for cookie extraction walkthrough

Register in your project .mcp.json (or via claude mcp add -s user):

{
  "mcpServers": {
    "slack": {
      "command": "python3",
      "args": ["-m", "slack_mcp.server"],
      "cwd": "/Users/YOU/.claude/slack-mcp"
    }
  }
}

Restart Claude Code, then run claude mcp list to verify slack shows up.

Tools (v0.1.1)

Meta: list_workspaces, healthcheck

Read: list_channels, search_channels, read_channel, read_thread, list_users, search_users, get_user_profile, search_messages

Write (draft+confirm): send_messageconfirm_send, send_reply_quoteconfirm_send, update_own_messageconfirm_send, cancel_draft

Write (low-consequence, immediate): add_reaction, mark_read, delete_own_message

Auth modes

Mode

Token shape

Capability

When to use

xoxc

xoxc-... + xoxd-... cookie

Full (search, internal APIs)

Default. Best for personal use across multiple workspaces.

xoxp

xoxp-...

Permanent, OAuth, search restricted on free plans

If you don't want occasional cookie re-extraction.

xoxb

xoxb-...

Bot-only, no search, invited channels only

Rare. Use only when you want bot semantics.

Cookie extraction takes ~3 minutes per workspace. See SETUP.md.

Vault auto-export

Every read_channel call mirrors the channel to <vault>/🤖 AI Chats/Slack/<workspace>/<channel>.md. Idempotent (same channel + day overwrites cleanly). Disable via SLACK_MCP_VAULT_EXPORT=false.

Configuration

All config via env vars (loaded from .env at process start):

  • SLACK_WORKSPACES — comma-separated list of aliases (e.g. onde,mycelium)

  • SLACK_PRIMARY_WORKSPACE — default workspace when tool calls omit workspace

  • Per-workspace: SLACK_WORKSPACE_<ALIAS>_TYPE, _TOKEN, _COOKIE (xoxc only), _TEAM_ID, _LABEL

  • SLACK_MCP_VAULT_PATH — vault root for the auto-export mirror (default ~/Documents/Vault)

  • SLACK_MCP_VAULT_EXPORTtrue/false (default true)

  • SLACK_MCP_AUDIT_LOG_PATH — JSONL audit log path

  • SLACK_MCP_DRAFT_TTL_SECONDS — draft expiration (default 3600)

  • SLACK_MCP_SCRUB_PROMPT_INJECTIONtrue/false (default true)

Safety patterns

  • Draft + confirm. Every send (send_message, send_reply_quote, update_own_message) returns a draft_id. Nothing posts until confirm_send(draft_id) is called. Drafts expire after 1 hour. One-time confirm. update_own_message drafts include a before/after preview so the operator can diff before confirming the edit.

  • Workspace required on writes. No global default for sends — every write tool requires workspace to prevent wrong-workspace posts when channel names collide.

  • Audit log. Every tool call appends a JSONL record. Tokens are redacted.

  • Prompt-injection scrubber. Incoming message text is sanitized for known prompt-injection patterns (zalgo, role-spoof headers, fake fences). Hits are wrapped not deleted so the operator sees the attempt.

  • Token redaction. list_workspaces returns redacted profiles only. Tokens never appear in tool responses.

Same author, same architecture pattern (FastMCP, draft+confirm on writes where applicable, vault auto-export, MIT):

Telemetry

This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.

What is sent:

  • Plugin name (e.g. slack-mcp)

  • Plugin version (e.g. 0.1.0)

What is NOT sent:

  • No user identifiers, names, emails, tokens, or API keys

  • No file paths, message content, or anything from your work

  • No IP address is stored after dedup processing

Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.

Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.

License

MIT — see LICENSE.

Available Tools

18 tools
add_reactionA

Add an emoji reaction to a message.

emoji is the colon-stripped name (e.g. "thumbsup", "fire", "white_check_mark"). Low-consequence write — no draft+confirm. Idempotent (Slack returns already_reacted as a soft success).

ParametersJSON Schema
NameRequiredDescriptionDefault
tsYes
emojiYes
channelYes
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: low-consequence write (non-destructive), idempotent behavior, and no draft/confirm. This is sufficient for a reaction tool.

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 sentences, no filler. Critical information is front-loaded. Excellent conciseness.

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?

For a simple reaction tool, the description covers key behaviors and one parameter. However, missing parameter details for channel/ts and workspace (optional) could lead to incorrect invocation. Output schema exists but not shown.

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

Parameters2/5

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

Schema coverage is 0%, so description must explain parameters. Only emoji is explained (colon-stripped name). channel and ts receive no explanation, and workspace is omitted. This leaves ambiguity.

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?

The description explicitly states the action (add) and resource (emoji reaction to a message). It clearly distinguishes from sibling tools like send_message or send_reply_quote by focusing on reactions.

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?

Provides usage context: explains the emoji format, notes low-consequence write without draft+confirm, and mentions idempotency with soft success on duplicates. Does not explicitly state when not to use, but the guidance is clear enough.

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

cancel_draftB

Cancel an unconfirmed draft. Idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
draft_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

The description adds the behavioral trait 'idempotent,' which is not in annotations or schema. However, with no annotations provided, it fails to disclose other traits such as whether the operation is destructive or reversible, leaving gaps.

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?

The description is extremely concise with two short sentences, no redundant information, and a clear front-loaded purpose.

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?

Given the tool's simplicity and the presence of an output schema, the description covers the basic purpose and key behavioral trait. However, it lacks details on prerequisites, side effects, or differentiation from the 17 sibling tools.

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

Parameters1/5

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

The single parameter draft_id has 0% schema description coverage, and the tool description provides no additional meaning or context about it (e.g., format, required values, or how to obtain it).

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?

The description clearly states the action ('Cancel') and the target resource ('unconfirmed draft'), with the qualifier 'idempotent.' It effectively distinguishes from sibling tools like confirm_send or send_message by focusing on the cancellation of drafts.

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?

No explicit guidance on when to use or avoid this tool. While 'unconfirmed draft' implies a context, there is no comparison with alternatives (e.g., confirm_send) or mention of prerequisites like ownership.

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

confirm_sendA

Commit a previously-drafted send. Dispatches by draft.kind:

  • send_message / send_reply_quote -> chat.postMessage (new message)

  • update_message -> chat.update (in-place edit of target_ts)

ParametersJSON Schema
NameRequiredDescriptionDefault
draft_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description adds behavioral context about dispatch per draft.kind and in-place editing, but omits side effects (e.g., draft state after commit) or error conditions.

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?

The description is concise, front-loads the core purpose, and lists variations without unnecessary words.

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?

Given an output schema exists, the description covers main behavior and draft variations, but misses prerequisites or error handling for invalid draft_id.

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?

With 0% schema coverage, the description explains that draft_id refers to a previously-drafted send and implies its use from draft creation, but lacks detail on format or how to obtain it.

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?

The description clearly states the tool commits a drafted send and details the dispatch behavior based on draft.kind, differentiating it from siblings like send_message and cancel_draft.

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?

The description implies use after drafting and lists the specific actions, but does not explicitly state when not to use or mention alternatives like cancel_draft.

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

delete_own_messageA

Delete one of your own messages.

Calls chat.delete with (channel, ts). xoxc user tokens can delete their OWN messages without special scopes. Returns ok=True on success. message_not_found is treated as a soft success (already-deleted or wrong ts).

Low-consequence (only your own messages, no destructive cascade) so no draft+confirm. The audit log records every call.

ParametersJSON Schema
NameRequiredDescriptionDefault
tsYes
channelYes
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description fully covers behavioral traits: it calls chat.delete, returns ok=True, treats message_not_found as soft success, is low-consequence (no destructive cascade), and mentions audit logging. This goes well beyond what the input schema reveals.

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?

Four sentences, each serving a distinct purpose: action, API details, edge cases, and behavioral context. No filler. Front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool, the description covers what the tool does, how it works, edge cases (soft success), and implications. An output schema exists but is not shown; the description already mentions the return value. No gaps given the low complexity.

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 coverage is 0%, but the description clarifies required parameters ('channel, ts') and their role in the underlying API call. The optional 'workspace' parameter is not explained, leaving some ambiguity. The description adds value but not comprehensive param-level detail.

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?

The description starts with 'Delete one of your own messages,' which is a clear verb+resource statement. It is distinct from siblings like update_own_message, send_message, etc., because it focuses on deletion of own messages only.

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?

The description states the tool is for deleting your own messages and mentions token/scopes. It implies low-consequence and no draft+confirm, which helps the agent decide to use it directly. However, it does not explicitly contrast with other tools like update_own_message or list alternatives.

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

get_user_profileC

Get full profile for a user_id (U... or W...).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose any behavioral traits such as whether it is read-only, requires permissions, or has rate limits. Only states 'Get full profile', which is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very brief (one sentence) and front-loaded with the action. However, it lacks necessary details, making it insufficiently informative. No extra fluff, but too tersely written.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 params, output schema exists but not shown) and absence of annotations, the description is incomplete. It does not explain what 'full profile' entails nor the role of the optional workspace parameter. More context is needed for an agent to use it correctly.

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

Parameters1/5

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

With schema description coverage at 0%, the description must explain parameters. It only indirectly mentions user_id in the description text but does not explain the workspace parameter or the format of user_id. The schema itself is minimal with no descriptions.

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?

The description clearly states the action (get full profile) and the resource (user_id with format U... or W...). It distinguishes from sibling tools like list_users or search_users by implying it retrieves a single user's complete profile, not a list.

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?

No guidance on when to use this tool versus alternatives like list_users or search_users. It does not mention prerequisites or scenarios where this is preferred over other tools.

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

healthcheckA

Verify token validity per workspace + report draft store + audit log path.

For each workspace, calls auth.test. Returns user_id and team domain on success, or error code on failure. Does not retry. A failed auth.test means the token has been invalidated (logout, password change, app revoke) and needs re-extraction per SETUP.md.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Discloses behavior: calls auth.test per workspace, returns success/error, no retries, and meaning of failure. With no annotations, the description fully informs the agent of safety and failure modes.

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 concise sentences front-load the purpose and then add necessary behavioral details. Every word serves a purpose—no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and presence of an output schema, the description fully covers the tool's operation, failure implications, and references external documentation (SETUP.md). Complete for a healthcheck.

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?

No parameters exist (0 params, 100% schema coverage), so parameter semantics are not needed. Baseline 4 applies as description adds no redundant param detail.

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?

Description uses specific verb 'Verify' and resource 'token validity per workspace', clearly distinguishing from sibling tools like list_workspaces or send_message. The purpose is immediately obvious.

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?

States 'Does not retry' and explains failure implies token invalidation, guiding when re-extraction is needed. While not explicitly listing when not to use, the context is sufficient given the tool's specificity.

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

list_channelsA

List channels in the workspace.

types: comma-separated subset of public_channel, private_channel, mpim, im. Default omits DMs to keep responses short. limit caps results at the API page size.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
typesNopublic_channel,private_channel
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It explains default types behavior and that limit caps at the API page size. It does not disclose pagination, rate limits, or authentication requirements, which are common for list endpoints.

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?

The description is extremely concise with two sentences. The first sentence states the core purpose, and the second sentence adds crucial parameter details. Every sentence adds value with no redundancy.

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?

Given the output schema exists, return values are not needed. The description covers the main filtering behavior but misses explaining the 'workspace' parameter and pagination details beyond 'caps results at the API page size'. It is adequate but leaves gaps.

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 0%, so the description must compensate. It explains the 'types' parameter (comma-separated subset and default) and 'limit' (caps results), but omits any explanation of the 'workspace' parameter, leaving its meaning unclear beyond the schema.

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 clearly states it lists channels in the workspace, specifying the verb 'list' and resource 'channels'. It hints at filtering by types and limit, but does not explicitly differentiate from sibling tools like search_channels, though the verb implies a full listing vs. search.

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

Usage Guidelines3/5

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

The description provides context on when to use it (list all channels) and a hint about default behavior (omitting DMs to keep responses short). However, it lacks explicit when-not-to-use guidance and does not mention alternatives such as search_channels for targeted queries.

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

list_usersC

List users in the workspace. Excludes deleted by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
workspaceNo
include_deletedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only discloses the exclusion of deleted users. Missing details like authentication requirements, rate limits, or mutability.

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 sentences, front-loaded with key information. Every word adds value; no wasted length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 undocumented parameters and no annotations, the description is insufficient. It omits important context like return format, pagination, and workspace scoping.

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

Parameters2/5

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

Schema description coverage is 0%. The description only indirectly references the 'include_deleted' parameter through the default behavior. No explanation of 'limit' or 'workspace' parameters.

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 clearly states the verb 'List' and the resource 'users in the workspace', and adds a key default behavior (excludes deleted). This distinguishes it from sibling search tools, though not explicitly.

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?

No guidance on when to use this tool versus alternatives like search_users or list_channel. The description does not mention exclusions or context for use.

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

list_workspacesA

List configured Slack workspaces with auth type and primary status.

Returns a dict with workspaces (list of redacted profiles), primary (alias of the default workspace), and errors (config errors found at load time, e.g. malformed env values). Tokens never appear in the response.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the response contains a list of redacted profiles, primary alias, and config errors, and explicitly states that tokens never appear. This provides meaningful behavioral context beyond the tool name.

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?

The description is two sentences, with the first sentence front-loading the core purpose. Every word adds value, with no redundant or unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, an output schema exists, and no annotations, the description fully covers the return structure, including redaction and error handling. It is complete for a simple list tool.

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?

The tool has zero parameters. Description does not need to add parameter details as none exist. The baseline for 0 parameters is 4, and no improvement is necessary.

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?

The description clearly states the tool lists configured Slack workspaces with auth type and primary status. The verb 'List' and resource 'workspaces' are specific, and it is distinct from sibling tools like list_channels or list_users, which operate on different Slack entities.

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?

The description implies usage is for retrieving workspace configuration, but it does not explicitly state when not to use it or mention alternatives. However, given that no other sibling tool lists workspaces, the context is clear enough.

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

mark_readA

Mark a channel read up to a given message ts.

Affects unread state across all your linked devices. Use the ts of the most recent message you've read.

ParametersJSON Schema
NameRequiredDescriptionDefault
tsYes
channelYes
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

The description discloses a key behavioral trait: 'Affects unread state across all your linked devices.' This is valuable beyond the annotations (none provided). However, it does not mention reversibility, required permissions, or potential side effects (e.g., notifications). The transparency is moderate.

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 sentences that are front-loaded with the core purpose. Every word adds value; no fluff. Ideal conciseness for a simple tool.

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?

Given the existence of an output schema, the description does not need to detail return values. It explains the main action and ts usage, but leaves out details about the 'channel' parameter format, the optional 'workspace' parameter, and any prerequisites or errors. Adequate but not fully complete.

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?

With 0% schema description coverage, the description must compensate. It adds meaning for 'ts' by specifying it should be the most recent message ts. For 'channel', the resource is implied. 'workspace' is not explained. Overall, partial but incomplete guidance.

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?

The description clearly states the verb ('Mark') and resource ('a channel') with a specific parameter ('up to a given message ts'). It distinguishes from sibling tools like read_channel, which likely retrieve messages without modifying unread state. The purpose is unambiguous.

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

Usage Guidelines3/5

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

The description provides guidance on how to set the 'ts' parameter ('Use the ts of the most recent message you've read'), but does not explicitly state when to use this tool over alternatives like read_channel, nor does it mention when not to use it. Some implicit context is present, but it lacks explicit usage boundaries.

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

read_channelA

Read recent messages from a channel.

channel accepts ID (C12345) or name (#general). Newest first. Auto-exports the result to the vault at 🤖 AI Chats/Slack//.md (best-effort).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
latestNo
oldestNo
channelYes
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

The description explicitly discloses the auto-export side effect to the vault, which is critical for an agent to understand. However, with no annotations, the description carries full burden, and it does not mention rate limits, auth needs, or handling of missing channels.

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?

The description is short (three sentences) and front-loaded with purpose. It is concise, but some parameter details are missing, which reduces effectiveness. Nonetheless, it avoids verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters and no annotations, the description lacks detail on limit, time filters (latest/oldest), and workspace selection. Even with an output schema, the agent cannot fully understand how to use parameters like latest and oldest without additional context.

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

Parameters2/5

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

Schema description coverage is 0%, meaning no parameter descriptions in the schema. The description only explains the 'channel' parameter (ID or name). Parameters like limit, latest, oldest, and workspace are not described, leaving their semantics ambiguous (e.g., whether latest/oldest are timestamps or message IDs).

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?

The description clearly states 'Read recent messages from a channel,' with a specific verb and resource. It differentiates from sibling tools like read_thread (thread-specific) and search_messages (search-oriented) by focusing on reading messages from a channel directly.

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

Usage Guidelines3/5

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

The description specifies input format (ID or name) and ordering ('Newest first'), but lacks guidance on when to use this tool vs. alternatives like search_messages for filtering or read_thread for threaded conversations. No exclusions or prerequisites are mentioned.

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

read_threadA

Read a thread's parent message and replies.

ts is the parent message timestamp (Slack message ID). channel accepts ID or name. The returned messages list includes the parent as element 0.

ParametersJSON Schema
NameRequiredDescriptionDefault
tsYes
limitNo
channelYes
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description adds value by disclosing that the returned messages list includes the parent as element 0, and explains that channel accepts ID or name. This goes beyond basic schema.

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?

The description is very concise with three sentences, front-loading the purpose. No unnecessary words, every sentence adds value.

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?

Given 4 parameters and an output schema, the description covers purpose, key params, and return format but misses explanation for 'limit' and 'workspace'. Overall adequate but not fully complete.

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 0%, so the description must compensate. It explains 'ts' (parent message timestamp) and 'channel' (ID or name), but does not explain 'limit' or 'workspace', leaving 2 of 4 parameters undocumented.

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?

The description clearly states 'Read a thread's parent message and replies,' specifying the verb and resource. It implicitly distinguishes from sibling tools like read_channel by focusing on threads.

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

Usage Guidelines3/5

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

The description implies usage for reading threads by explaining parameters, but lacks explicit guidance on when to use this tool versus alternatives or any when-not-to-use conditions.

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

search_channelsB

Substring match against channel names + topics. Case-insensitive.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
typesNopublic_channel,private_channel
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations exist, so the description must fully disclose behavior. It states substring matching and case-insensitivity but omits details about default behavior (e.g., empty query), pagination, or result limits. The existence of an output schema helps but isn't referenced.

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?

The description is extremely concise—two short sentences with no wasted words. It is front-loaded with the core functionality and case-insensitivity trait.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three parameters with no coverage in the description, no annotations, and an output schema that isn't explained, the description is incomplete. It fails to inform the agent about parameter roles or search behavior details necessary for correct invocation.

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

Parameters1/5

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

With 0% schema description coverage, the description adds no meaning to the three parameters (query, types, workspace). It does not explain their purpose, defaults, or allowed values, relying entirely on the schema which may be insufficient for the agent.

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?

The description clearly states the tool performs substring matching against channel names and topics, with case-insensitivity. This distinguishes it from sibling tools like list_channels (which lists all channels) and read_channel (single channel retrieval).

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

Usage Guidelines3/5

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

The description implies usage for finding channels by substring, but no explicit when-to-use or when-not-to-use guidance is provided. It does not contrast with alternatives like search_users or search_messages, leaving some ambiguity.

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

search_messagesA

Search messages with Slack's full-text search.

Slack search modifiers work in query: in:#channel, from:@user, before:YYYY-MM-DD, after:YYYY-MM-DD, "exact phrase". The explicit channel param is sugar — when provided, prepends in:<channel> to the query.

Requires xoxc or xoxp auth (xoxb cannot search). Errors loudly with the workspace's actual auth_type if search isn't available.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNotimestamp
limitNo
queryYes
channelNo
sort_dirNodesc
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It discloses auth requirements, error behavior (loud error with auth_type), and the channel sugar mechanism. It does not cover pagination or rate limits, but some behavioral context is present.

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?

The description is concise and well-structured, using bullet-like formatting for query modifiers. Every sentence adds value, and there is no redundancy or fluff.

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?

Given 6 parameters, 0% schema coverage, no annotations, but an output schema exists, the description covers the most critical parts (query and channel) and auth. It omits details on limit, sort, sort_dir, and workspace, leaving the agent to infer or rely on the output schema.

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 0%, so the description must compensate. It explains the `query` parameter with Slack modifiers and the `channel` parameter as sugar. However, parameters like `sort`, `limit`, `sort_dir`, and `workspace` are not described, leaving gaps.

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?

The description clearly identifies the tool as searching messages with Slack's full-text search. It explains the query syntax and distinguishes from sibling tools like search_channels via explicit channel usage guidance.

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?

The description states when to use and provides critical auth context (requires xoxc/xoxp, not xoxb). It does not explicitly list when not to use alternatives, but the context is sufficient for decision making.

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

search_usersA

Substring match against user real_name/display_name/email/name.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility. It only states the matching fields and substring behavior but omits details like case sensitivity, pagination, performance, or what happens when query is empty. This is a significant gap for a search tool.

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?

The description is a single, clear sentence with no waste. It is front-loaded with the key action and fields. Could benefit from slightly more structure, but remains efficient.

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 value explanation is unnecessary. However, the tool lacks behavioral details like empty query handling and workspace scope. The description is adequate but leaves some gaps.

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 coverage is 0%, so the description must compensate. It explains that 'query' is a substring matched against listed fields, adding value. However, it does not detail the 'workspace' parameter's role or behavior when null. Some meaning is provided, but not complete.

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?

The description clearly states that the tool performs substring matching against specific user fields (real_name, display_name, email, name). This distinguishes it from sibling tools like list_users (lists all users) and get_user_profile (fetches a specific user's profile).

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?

The description implies usage when you need to find users by partial name or email, but does not explicitly state when not to use it or mention alternatives. Given the sibling tools, the context is clear enough for an agent to infer appropriate use cases.

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

send_messageA

Stage a message send. Does NOT post until confirm_send is called.

Returns a draft_id, the resolved workspace + channel, the text preview, and an expires_at unix timestamp. Drafts expire after 1 hour and can only be confirmed once.

For thread replies, set thread_ts to the parent message's ts. For replies that quote (reply with quote-block in Slack UI), use send_reply_quote instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
channelYes
thread_tsNo
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Since no annotations are provided, the description carries full behavioral burden. It discloses that the tool only stages, requires confirm_send to post, returns a draft_id and other fields, drafts expire in 1 hour and can only be confirmed once. This fully communicates the behavioral traits.

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?

The description is five sentences, each adding distinct value: staging behavior, return values, expiry, thread usage, and alternative tool. No redundant or irrelevant information. Front-loaded with the key action.

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?

Given the tool has 4 parameters, an output schema, and no annotations, the description covers the staging workflow, return values, thread usage, and expiration. It doesn't handle error cases (e.g., invalid channel) or permission requirements, but the completeness is high for the stated purpose. The output schema provides return value details, so the description doesn't need to replicate that.

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 0%, so the description must compensate. It explains thread_ts is for thread replies and suggests using send_reply_quote for quotes. However, it does not explain workspace (though return mentions 'resolved workspace') or provide details on text and channel, which are somewhat self-explanatory but could be clarified. Partial value added.

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?

The description starts with 'Stage a message send. Does NOT post until confirm_send is called.' This clearly states the action (stage a send) and the resource (message), distinguishing it from sibling tools like confirm_send. It also differentiates from send_reply_quote for quote replies.

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?

The description provides explicit guidance for thread replies (set thread_ts) and redirects to send_reply_quote for quote replies. It implies the two-phase workflow (stage then confirm), but doesn't explicitly state when not to use this tool (e.g., for quick sends without staging). However, the context is clear enough for an agent.

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

send_reply_quoteA

Stage a reply that threads under target_ts.

Same draft+confirm semantics as send_message. The recipient sees the reply nested under the target message in their Slack UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
channelYes
target_tsYes
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It reveals the two-step draft+confirm process and the user-facing nesting behavior, but omits details on draft lifecycle, expiration, rate limits, or authorization requirements.

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?

The description is exceptionally concise: two sentences front-loaded with the core purpose and followed by behavioral context and user-facing effect. No extraneous content.

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?

Despite having an output schema (so return values are covered elsewhere), the description lacks details on parameter formats (e.g., timestamp syntax) and the confirmation step. For a 4-parameter tool with 3 required and no annotation, it is somewhat sparse but covers the essential workflow.

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

Parameters2/5

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

Schema coverage is 0%, requiring description to compensate. The description explains 'target_ts' as the target message timestamp and implies threading, but leaves other parameters (text, channel, workspace) without explanation. The workspace parameter's optional/nullable nature and format expectations are not addressed.

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?

The description clearly states the tool stages a reply threaded under a target message timestamp, using specific verb 'Stage a reply' and resource 'thread under target_ts'. It distinguishes from the sibling 'send_message' by focusing on replies without introducing ambiguity.

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?

The description references 'Same draft+confirm semantics as send_message,' guiding the agent on the usage pattern. However, it lacks explicit when-not-to-use instructions or alternatives to other sibling tools like 'add_reaction' or 'delete_own_message'.

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

update_own_messageA

Stage an edit to one of your own messages. Does NOT update until confirm_send is called.

Fetches the current message text up front so the draft preview shows BOTH the BEFORE and AFTER strings — a visual diff in plain Python. After confirm_send, the message is edited in place via chat.update.

Returns a draft_id, the resolved workspace + channel + target_ts, and a preview dict with before, after, target_ts. Drafts expire after 1 hour and can only be confirmed once.

ParametersJSON Schema
NameRequiredDescriptionDefault
tsYes
textYes
channelYes
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description fully bears this burden. It discloses that the tool does not update until confirm_send is called, fetches current text for a visual diff, returns a preview with before/after, states that drafts expire after 1 hour, and can only be confirmed once—very transparent.

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?

The description is multi-paragraph but each sentence contributes unique information. It is front-loaded with the key caveat about confirm_send. Could be slightly more concise, but overall well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (two-phase update, draft expiration, preview), the description is comprehensive. It covers return values (draft_id, preview, etc.), and the presence of an output schema further supports completeness for return types.

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 coverage is 0%, so the description must compensate. It mentions channel, ts, text, and workspace (optional) but does not provide detailed syntax or constraints (e.g., ts format). This adds some value but not enough to fully cover missing schema descriptions.

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?

The description clearly states the tool's purpose: 'Stage an edit to one of your own messages' and emphasizes it does NOT update until confirm_send is called, distinguishing it from sibling tools like send_message and confirm_send.

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?

The description explains the two-phase workflow (stage then confirm) and mentions that after confirm_send the message is edited via chat.update, providing context. It does not explicitly list when not to use, but the sibling list includes alternatives like delete_own_message, so the guidance is adequate.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv0.1.1
    • First observedadd_reaction
    • First observedcancel_draft
    • First observedconfirm_send
    • First observeddelete_own_message
    • First observedget_user_profile
    • First observedhealthcheck
    • First observedlist_channels
    • First observedlist_users
    • First observedlist_workspaces
    • First observedmark_read
    • First observedread_channel
    • First observedread_thread
    • First observedsearch_channels
    • First observedsearch_messages
    • First observedsearch_users
    • First observedsend_message
    • First observedsend_reply_quote
    • First observedupdate_own_message

TDQS

A3.7/5.0

Scored across 18 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing, searching, reading, sending (with draft/confirm), reactions, etc. No two tools appear to do the same thing; even send_message and send_reply_quote differ in threading behavior.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., list_channels, search_users, delete_own_message). The verbs are varied but appropriate, and there is no mixing of conventions.

Tool Count4/5

At 18 tools, the server is slightly above the ideal 3-15 range but still well-scoped. Each tool has a clear role, covering workspace, channel, user, and message operations without bloat.

Completeness4/5

The tool surface covers core Slack interactions: messaging (with drafts), searching, reactions, and user profiles. Minor gaps like channel creation or file uploads exist, but the set is complete for common read/write workflows.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    The most powerful MCP server for Slack Workspaces. This integration supports both Stdio and SSE transports, proxy settings and does not require any permissions or bots being created or approved by Workspace admins 😏.
    2
    1,814
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for posting messages to Slack channels via webhooks or bot API. Supports configurable usernames, emojis, and both webhook and bot token authentication modes.
    5 npm
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    A minimal MCP server for sending Slack messages, supporting both bot and user tokens with concurrent safety and an AI bot signature in user-token mode.
    1
    10 npm
    1
    MIT