Skip to main content
Glama

slack-mpm

A Python MCP (Model Context Protocol) server and API library for Slack workspace integration. Exposes 40+ Slack operations as MCP tools for use with Claude Desktop, and provides a clean async Python API for building Slack integrations.

What It Is

  • Python API library: from slack_mpm.api import messages; await messages.send_message(...)

  • MCP server: wraps the API for Claude Desktop via slack-mpm mcp

  • Agent scripts: standalone automation scripts in agents/

Related MCP server: Slack MCP Server

Prerequisites

  1. Python 3.10+ and uv

  2. A Slack App with a bot token

Creating a Slack App

  1. Go to https://api.slack.com/apps and click "Create New App"

  2. Choose "From scratch", give it a name and select your workspace

  3. Go to "OAuth & Permissions" and add these Bot Token Scopes:

    • channels:read, channels:write, channels:manage

    • chat:write, chat:write.public

    • users:read

    • files:read, files:write

    • reactions:write

    • pins:write

    • bookmarks:read, bookmarks:write

    • emoji:read

    • groups:read, groups:write

    • im:read, im:write

    • mpim:read, mpim:write

  4. Install the app to your workspace

  5. Copy the "Bot User OAuth Token" (starts with xoxb-)

For search_messages and reminders, also create a User Token with search:read, reminders:read, reminders:write.

Quick Start

git clone <repo>
cd slack-mpm
cp .env.local.example .env.local
# Edit .env.local and add your SLACK_BOT_TOKEN=xoxb-...

uv sync
uv run slack-mpm setup   # Verify your token works
uv run slack-mpm doctor  # Health check

Claude Desktop Configuration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "slack": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/slack-mpm", "slack-mpm", "mcp"]
    }
  }
}

Restart Claude Desktop. You should see the Slack tools available.

Available Tools

Channel Tools (8)

Tool

Description

list_channels

List all channels (public + private)

get_channel_info

Get details about a channel

create_channel

Create a new channel

archive_channel

Archive a channel

invite_to_channel

Invite users to a channel

kick_from_channel

Remove a user from a channel

join_channel

Join a channel

set_channel_topic

Set channel topic

Message Tools (13)

Tool

Description

send_message

Send a message (supports blocks + threading)

send_ephemeral

Send a message visible only to one user

update_message

Edit an existing message

delete_message

Delete a message

get_permalink

Get a permanent link to a message

search_messages

Search messages (requires user token)

list_history

Fetch channel message history

add_reaction

Add emoji reaction

remove_reaction

Remove emoji reaction

pin_message

Pin a message

unpin_message

Unpin a message

reply_in_thread

Reply in a thread

get_thread_replies

Fetch all thread replies

User Tools (5)

Tool

Description

list_users

List all workspace users

get_user_info

Get user details

get_user_by_email

Look up a user by email

open_dm

Open a DM channel with user(s)

list_user_channels

List channels a user belongs to

File Tools (5)

Tool

Description

upload_file

Upload a file to channel(s)

list_files

List workspace files

get_file_info

Get file details

delete_file

Delete a file

share_file

Share an existing file to channels

Workspace Tools (4)

Tool

Description

get_workspace_info

Get workspace/team info

list_emojis

List custom emoji

get_bot_info

Get bot details

auth_test

Validate token

Reminder Tools (4)

Tool

Description

add_reminder

Create a reminder

list_reminders

List reminders

complete_reminder

Mark reminder complete

delete_reminder

Delete a reminder

Bookmark Tools (3)

Tool

Description

list_bookmarks

List channel bookmarks

add_bookmark

Add a bookmark to a channel

remove_bookmark

Remove a bookmark

Scheduled Message Tools (3)

Tool

Description

schedule_message

Schedule a future message

list_scheduled_messages

List pending scheduled messages

delete_scheduled_message

Cancel a scheduled message

Using the Python API Directly

import asyncio
from slack_mpm.api import messages, channels, users
from slack_mpm.auth.token_manager import TokenManager

async def main():
    token = TokenManager().get_token()

    # Send a message
    await messages.send_message(token, "#general", "Hello from Python!")

    # List channels
    data = await channels.list_channels(token)
    for ch in data["channels"]:
        print(ch["name"])

    # Get user info
    user = await users.get_user_by_email(token, "person@example.com")
    print(user["user"]["real_name"])

asyncio.run(main())

Agent Scripts

Standalone automation scripts in the agents/ directory.

slack_listener.py — Real-time channel monitor

Polls a channel and prints new messages as they arrive.

uv run agents/slack_listener.py --channel C1234567890
uv run agents/slack_listener.py --channel C1234567890 --interval 10
uv run agents/slack_listener.py --channel C1234567890 --no-history

slack_notifier.py — Send notifications

Sends messages or file uploads to Slack channels from the command line or stdin.

uv run agents/slack_notifier.py --channel C1234567890 --message "Deploy complete"
echo "alert!" | uv run agents/slack_notifier.py --channel C1234567890
cat report.txt | uv run agents/slack_notifier.py --channel C1234567890 --as-file --filename report.txt

slack_responder.py — Auto-responder bot

Monitors for @mentions or DMs and auto-replies with a configured message.

uv run agents/slack_responder.py --response "Thanks, I'll get back to you!"
uv run agents/slack_responder.py --channel C1234567890 --response "Got it!" --interval 60
uv run agents/slack_responder.py --response "Out of office" --dry-run

slack_digest.py — Activity digest

Generates a summary of recent channel activity: message counts, active users, top threads.

uv run agents/slack_digest.py --channel C1234567890
uv run agents/slack_digest.py --channel C1234567890 --hours 168  # 1 week
uv run agents/slack_digest.py --channel C1234567890 --hours 24 --top-users 10

slack_archiver.py — Channel history export

Exports complete channel message history to JSON or Markdown files with thread support.

uv run agents/slack_archiver.py --channel C1234567890 --output ./archive/
uv run agents/slack_archiver.py --channel C1234567890 --output ./archive/ --format markdown
uv run agents/slack_archiver.py --channel C1234567890 --output ./archive/ --days 30

Development

# Install dev dependencies
uv sync

# Run tests
uv run pytest
uv run pytest --cov=src --cov-report=html

# Type checking
uv run mypy --strict src/

# Linting
uv run ruff check src/ agents/
uv run ruff format src/ agents/

Project Structure

src/slack_mpm/
├── api/
│   ├── _client.py      # Shared httpx client + SlackAPIError
│   ├── channels.py     # Channel operations
│   ├── messages.py     # Message operations
│   ├── users.py        # User operations
│   ├── files.py        # File operations
│   ├── workspace.py    # Workspace operations
│   ├── reminders.py    # Reminder operations
│   ├── bookmarks.py    # Bookmark operations
│   └── scheduled.py    # Scheduled message operations
├── auth/
│   ├── models.py       # SlackToken, TokenStatus, WorkspaceInfo
│   └── token_manager.py # TokenManager (loads from .env.local)
├── cli/
│   └── main.py         # CLI: setup, doctor, mcp commands
└── server/
    └── slack_mpm_server.py  # SlackMCPServer (MCP adapter)

agents/
├── slack_listener.py   # Channel message poller
├── slack_notifier.py   # Send notifications
├── slack_responder.py  # Auto-responder bot
├── slack_digest.py     # Activity digest
└── slack_archiver.py   # History export

Available Tools

64 tools
add_bookmarkB

Add a bookmark to a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
linkYesURL for the bookmark
emojiNoOptional emoji name without colons (e.g., 'bookmark')
titleYesDisplay title for the bookmark
channel_idYesChannel ID to add the bookmark to

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden, but it only restates the core mutation: adding a bookmark. It does not disclose whether duplicates are rejected, whether permissions are required, or what side effects occur. No contradiction exists, but no behavioral transparency beyond the action itself is added.

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 a single, front-loaded sentence with no wasted words. It efficiently communicates the tool's purpose without padding.

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 create-like tool, the description plus the fully documented schema gives enough to attempt a correct invocation. However, with no annotations or output schema, it lacks guidance on duplicate behavior, errors, and response expectations, so completeness is only minimal.

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 100%, so the schema already documents all four parameters (link, emoji, title, channel_id). The description adds no additional parameter semantics beyond identifying Slack as the target, which is the baseline case.

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 states a clear action ('Add') and resource ('bookmark' to a Slack channel), which unambiguously conveys the operation. It does not explicitly contrast with sibling operations like list_bookmarks or remoe_bookmark, but the verb itself separates it from those tools.

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?

There is no guidance on when to choose this tool vs list_bookmarks/remoe_bookmark or channel-management alternatives. No prerequisites such as channel membership or permissions are mentioned, and no alternative routing is given.

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

add_reactionA

Add an emoji reaction to a Slack message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEmoji name without colons (e.g., 'thumbsup')
channelYesChannel ID containing the message
timestampYesMessage timestamp
use_user_tokenNoReact as the authenticated user (requires xoxp- user token) rather than the bot

TDQS

A3.5/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 the full burden of behavioral disclosure. It only restates the basic action and does not mention required scopes/permissions, side effects, behavior when the emoji is invalid, or response/error characteristics.

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?

A single, front-loaded sentence with no filler or redundancy. Every word contributes to understanding the tool's 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?

For a simple tool with a fully documented schema, this is minimally viable. However, with no annotations and no output schema, the description does not cover authentication context, error cases, or expected result, leaving some operational ambiguity.

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 100%, so the baseline is 3. The description adds no parameter-level meaning beyond the schema, but the schema already documents channel, timestamp, name, and use_user_token clearly.

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 states a specific verb ('Add'), a clear object ('emoji reaction'), and a resource ('Slack message'). It is immediately distinguishable from related sibling tools like remove_reaction or send_message.

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?

Usage is implied by the action itself: use this when you want to add an emoji reaction. However, the description does not explicitly mention when not to use it or contrast it with alternatives such as remove_reaction, so guidance is only implicit.

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

add_reminderB

Create a reminder for the authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesReminder message text
timeYesWhen to remind — Unix timestamp or natural language (e.g., 'in 30 minutes', 'tomorrow at 9am')

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without mentioning persistence, side effects, authentication requirements, return value, or how the reminder will be delivered. This is minimal transparency for a creation 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?

The description is a single, efficient sentence with no wasted words. It front-loads the verb and resource and includes the relevant scope ('for the authenticated user') without verbose elaboration.

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 two-parameter tool, the description is adequate but not complete. It lacks information about the return format or confirmation behavior, and there is no output schema to compensate. An agent can invoke it correctly but may not know what to expect in response.

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 100%, so the input schema fully documents both parameters ('text' and 'time'). The description adds no additional meaning about parameter usage, but this is acceptable given the schema already provides thorough 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 ('Create'), the resource ('a reminder'), and the scope ('for the authenticated user'). This distinguishes it from sibling tools like list_reminders, complete_reminder, and delete_reminder, which handle other lifecycle stages.

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?

The description gives no guidance on when to use this tool versus alternatives. It does not mention conditions, exclusions, or why an agent might prefer add_reminder over schedule_message or list_reminders. Usage must be inferred purely from the name and description.

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

archive_channelA

Archive a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel ID to archive

TDQS

A3.5/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 the full burden of behavioral disclosure. 'Archive' indicates a state-changing operation, but the description does not mention permissions, reversibility, effects on messages, or response behavior. For a mutation with zero annotation coverage, more transparency would be expected.

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 an extremly concise single sentence that states the action and object in five words. No filler, no repetition of the schema, and no unnecessary background. It is front-loaded and easy to parse.

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 single-parameter tool with no output schema, the core invocation is clear: provide a channel ID and archive it. However, the absence of annotations means the description is the only source of behavioral context, and it omits side effects, permissions, and return value expectations. This is adequate for a low-complexity task 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 100%, and the one parameter `channel` is already documented as 'Channel ID to archive' in the schema. The tool description adds no extra parameter-level meaning, so the baseline score of 3 applies.

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 uses a specific verb and resource, 'Archive a Slack channel,' which unambiguously identifies the operation. There is no sibling tool that archives, so this clearly differs from the other channel-management and messaging tools.

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: use this tool when you want to archive a Slack channel. However, it provides no explicit when-to-use, when-not-to-use, prerequisite, or alternative routing guidance. The action is simple enough that the implication is mostly sufficient, but there is no explicit guidance.

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

auth_testB

Validate the Slack token and get workspace/user info.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state what happens on an invalid token, confirm that the operation has no side effects, or describe the shape of the returned workspace/user info. It only restates the basic action without adding behavioral depth.

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 efficient sentence with no filler, front-loading the core purpose. It is appropriately concise, though the slash-separated 'workspace/user info' is slightly compressed.

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 zero-parameter utility, this is minimally viable: an agent can infer that calling it validates the token and returns basic info. However, with no output schema and no annotations, the missing error semantics and vague return details leave a notable gap in contextual completeness.

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, so parameter documentation is not a concern. The input schema already covers everything, which matches the baseline of 4 for zero-parameter tools.

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 states a specific verb and resource: 'Validate the Slack token'. This clearly identifies the tool's unique purpose and distinguishes it from all sibling tools, none of which are token validation operations. The additional 'get workspace/user info' clarifies the output without creating serious ambiguity.

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 is given about when to use this tool versus alternatives like get_workspace_info or get_user_info, nor does it mention exclusions or fallback scenarios. An agent is left to infer that auth_test is for token validation rather than for general workspace/user lookups.

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

complete_reminderB

Mark a reminder as complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
reminderYesReminder ID to complete

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the state transition and omits important details such as whether completion is irreversible, idempotent, requires permissions, or affects the reminder listing. There is no contradiction with annotations because none exist.

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 a single five-word sentence with no filler or irrelevant detail. It front-loads the action and resource while remaining immediately scannable. Every word earns its place.

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 one-parameter mutation with no output schema and no annotations, the description provides the minimum viable action. The schema covers all parameters, so the invocation details are present. However, it lacks side-effect information and any relationship to sibling reminders operations, which would help an agent use it safely.

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 100%: the only parameter, 'reminder,' is already described as 'Reminder ID to complete.' The tool description adds no additional parameter semantics or usage details beyond what the schema provides, so the baseline score of 3 is appropriate.

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 uses the imperative 'Mark' with a specific resource 'a reminder' and target state 'complete,' which clearly identifies the operation. It distinguishes itself from sibling tools like add_reminder, list_reminders, and delete_reminder by the unique action of completing rather than creating, listing, or deleting.

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?

The description gives no guidance on when to use this tool instead of related reminder tools. It does not mention prerequisites, such as the reminder needing to exist, or context such as completing a reminder after it has fired. An agent must infer usage solely from the tool name.

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

create_canvasA

Create a workspace-level canvas with markdown content. Requires canvases:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesCanvas title
document_contentYesMarkdown content for the canvas

TDQS

A4.2/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 behavioral burden. It discloses the required OAuth scope ('Requires canvases:write scope') and clearly states that the operation creates a new workspace-level canvas. It does not mention response behavior, but the core mutation and permission traits are transparent.

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 a single front-loaded sentence with no filler. The core action and resource are stated immediately, and the permission requirement is appended efficiently.

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?

For a simple two-parameter creation tool, the description covers the essential aspects: what is created, at what scope, and what permission is required. It could be more complete by stating what the tool returns, especially since there is no output schema, but the current information is sufficient for basic correct invocation.

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 100%, so the schema already documents both parameters. The description only adds 'with markdown content', which restates what the document_content schema description already says. It provides no additional semantic value for either parameter.

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 uses a specific verb ('Create') and a clear resource ('workspace-level canvas'), and specifies that content is markdown. The phrase 'workspace-level' also distinguishes this tool from the sibling create_channel_canvas, making its purpose unambiguous.

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 gives a clear context signal: use this to create a workspace-level canvas rather than a channel-level one. It does not explicitly name alternatives or state when not to use it, but the 'workspace-level' qualifier provides enough differentiation.

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

create_channelC

Create a new Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesChannel name (lowercase, no spaces, use hyphens)
is_privateNoCreate as private channel

TDQS

C2.9/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 the full behavioral disclosure burden. It only states that the tool creates a channel, but does not mention workspace-wide visibility, required permissions, name uniqueness, or what happens on duplicate creation. This is minimal mutation context with no added behavioral transparency.

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 a single short sentence with no filler or redundancy that detracts from clarity. It is appropriately brief for a simple creation tool and front-loads the core purpose.

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?

There is no output schema and no annotations, and the description only states the action. An agent would benefit from knowing what the tool returns, whether permission is required, or how it behaves if the channel already exists. The schema covers parameters but not the broader behavioral context needed for confident invocation.

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 100%, so the schema already documents both parameters: name and is_private. The description adds no parameter-level detail, which is acceptable per baseline since the schema handles the semantics fully.

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 identifies the verb and resource: create a Slack channel. It is easy to distinguish from sibling tools like create_canvas or create_channel_canvas. However, it does not add any scope or distinguishing detail beyond restating the resource in the tool name.

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?

The description gives no guidance about when to use this tool versus alternatives like join_channel, archive_channel, or invite_to_channel. The intended usage is only implied by the name and description, with no mention of prerequisites, exclusions, or when a different tool should be selected.

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

create_channel_canvasA

Create a canvas attached to a Slack channel. Requires canvases:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesCanvas title
channelYesChannel ID to attach the canvas to
document_contentYesMarkdown content for the canvas

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description must carry the behavioral burden. It discloses an important authorization requirement (canvases:write scope) and clearly signals a mutating creation action. It does not describe return values or failure modes, but the auth context is a meaningful behavioral disclosure.

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 short sentences with no filler. The first sentence states the core purpose, and the second adds the required scope. Information is front-loaded and every sentence 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?

For a simple three-parameter creation tool, the description plus complete schema is sufficient for selection and invocation: it gives the action, the resource attachment point, required fields, and required scope. It could be slightly more complete by naming the standalone create_canvas alternative, but this does not create a significant gap.

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 100%, and each parameter already has a clear description: channel, title, and document_content. The tool description adds no material parameter-level detail beyond what the schema provides, so the baseline 3 is appropriate.

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 states a specific action and resource: "Create a canvas attached to a Slack channel." The qualifier "attached to a Slack channel" clearly distinguishes this from the sibling create_canvas, which is for standalone canvas creation.

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 clear context for when to use this tool: it creates a canvas that is attached to a Slack channel, and it states the required authorization ("Requires canvases:write scope"). It does not explicitly name an alternative or exclusion, but the channel-attached qualifier gives an agent enough guidance.

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

create_listA

Create a new Slack List in a channel. Requires lists:write scope and a paid Slack plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesList name
itemsNoOptional initial list items (each is a dict with key-value pairs)
channelYesChannel ID to create the list in

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description bears the behavioral burden. It discloses auth requirements and plan restrictions, which is valuable, but says nothing about response format, side effects beyond creation, or error behavior. Adequate but not rich.

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 short sentences, front-loaded with the core action, followed by the most important requirement. No filler.

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?

For a simple 3-parameter create tool, the description covers purpose and prerequisites; the schema handles parameter details. It does not describe return output, and the absence of an output schema means that is a minor gap, but the tool can be invoked correctly with the given information.

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 100%, so parameters are fully documented there. The description only adds 'in a channel,' which echoes the channel parameter and provides no new semantic value.

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?

Describes a specific action ('Create a new Slack List in a channel') with the resource and location. However, it does not explicitly contrast with sibling tools like update_list or create_list_item, relying on the verb 'create' and 'new' to differentiate.

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?

States a clear prerequisite (lists:write scope, paid plan) but offers no explicit guidance on when to choose this tool over siblings such as update_list or create_list_item. The usage context is implied rather than spelled out.

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

create_list_itemA

Add a new item to a Slack List. Requires lists:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesItem text/value
statusNoOptional status (e.g., 'incomplete', 'complete')
list_idYesList ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It clearly states the required OAuth scope, which is useful, and the mutation intent. However, it does not mention error behavior, duplicate handling, or what happens on success, leaving some behavioral 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?

Two concise sentences with no filler. The core action is front-loaded and the required scope follows immediately. Every word 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?

For a simple create tool, the description plus fully-documented schema provides enough for correct invocation. The requirement scope is disclosed and the action is unambiguous. Minor missing context like return values is not critical here.

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 100%, so the schema already documents value, status, and list_id. The description adds no parameter-level semantics beyond the schema, so the baseline of 3 is appropriate.

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 exactly what the tool does: 'Add a new item to a Slack List.' The verb is specific and the resource is clear, distinguishing it from sibling tools like update_list_item, delete_list_item, and list_list_items.

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 by saying 'Add a new item' and mentions the required lists:write scope, but it does not explicitly say when to choose this tool over related items such as update_list_item or delete_list_item. Usage guidance is adequate but not explicit.

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

delete_canvasA

Delete a canvas. Requires canvases:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
canvas_idYesCanvas ID to delete

TDQS

A3.5/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 the full burden of behavioral disclosure. It reveals the required scope but does not mention that deletion is likely permanent, what side effects occur (e.g., removing associated access or sections), or any error/idempotency behavior. 'Delete' implies destruction, but the description adds little beyond the tool's 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?

Two short sentences with no filler. The action is front-loaded and the auth requirement is stated succinctly.

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?

The essentials are present: action, resource, required scope, and the schema fully covers the one parameter. However, the description omits permanence and side-effect information, which is notable for a destructive operation with no annotations or 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?

The schema already documents canvas_id as 'Canvas ID to delete' with 100% schema description coverage. The description adds no additional semantic meaning, so the baseline score of 3 applies.

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 uses a specific verb and resource: 'Delete a canvas.' This clearly identifies the operation and distinguishes it from siblings like delete_message or delete_canvas_access by object type.

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 the prerequisite auth scope ('canvases:write scope') but gives no explicit guidance about when to use this tool versus alternatives. Deletion is a standalone operation with no close sibling, so usage is largely implied by the name and resource.

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

delete_canvas_accessB

Revoke access to a canvas for a user or group.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoUser ID to revoke access for
group_idNoGroup ID to revoke access for
canvas_idYesCanvas ID

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Revoke' implies a mutating/destructive operation, but the description does not disclose irreversibility, permission requirements, whether both user_id and group_id can be supplied or only one, or what happens if only canvas_id is given. The schema's optional user_id and group_id create ambiguity that the description does not resolve.

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 a single clear sentence with no filler. It is front-loaded with the action and resource, making it easy to scan and remember.

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?

Despite its simplicity, the description is incomplete for a mutating tool without annotations or output schema. It does not state the important precondition that access must already exist, nor clarify how user_id, group_id, and canvas_id combine. An agent could reasonably call this with only canvas_id since that is the only required parameter, and fail. The description does not adequately prepare the agent for that behavior.

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 100%, so the structured fields already explain each parameter. The description adds that the operation targets 'a user or group', which maps to user_id and group_id, but it does not clarify the relationship between them or whether one must be provided. This is adequate but not additive beyond the baseline.

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 uses a specific verb ('Revoke') and resource ('canvas access') and clearly distinguishes itself from deletion of the canvas itself or setting/updating access. It names the target ('a user or group'), making its purpose unambiguous relative to sibling tools like delete_canvas and set_canvas_access.

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 when-to-use or when-not-to-use guidance is given. It does not contrast with set_canvas_access or explain whether this tool is for full removal versus permission changes. An agent must infer usage solely from the name and one-line description.

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

delete_fileB

Delete a file from Slack.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile ID to delete

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It identifies the tool as destructive, but does not state whether deletion is permanent, what happens to shared links or references, or whether permission is required. This is a significant gap for a delete operation.

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 a single, direct sentence with no filler or redundant information. It is appropriately front-loaded and easy to parse, fitting the tool's simplicity.

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?

The definition is minimally sufficient for a one-parameter delete tool, especially with full schema coverage. However, with no annotations and no usage guidance, it does not fully prepare an agent to understand the consequences or appropriate context of deleting a file.

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?

The schema covers the single parameter 'file' with 100% description coverage, defining it as 'File ID to delete'. The description adds no extra parameter meaning, so the baseline score of 3 applies.

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 uses the specific verb 'Delete' with the resource 'file from Slack', making the action unambiguous. It is clearly distinct from sibling file tools like upload_file, list_files, get_file_info, and share_file.

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?

The description provides no guidance on when to use this tool versus alternatives, nor any mention of prerequisites, permissions, or when deletion would be inappropriate. The agent is left to infer usage solely from the tool name and action.

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

delete_list_accessA

Revoke access to a Slack List for a user or group.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_idYesList ID
user_idNoUser ID to revoke access for
group_idNoGroup ID to revoke access for

TDQS

A3.5/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 the full burden of behavioral disclosure. It communicates that this is a mutating removal operation, but it omits whether the revocation is reversible, whether special permissions are required, and whether user_id and group_id interact (e.g., mutually exclusive or one required). These are material details for a tool that deletes access.

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 a single short sentence with no filler. It front-loads the action and packs the resource and target into a compact, understandable phrase.

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 low-complexity tool, the core action is clear, but important invocation context is missing: the description never says that a user or group identifier is needed to actually revoke access, and it offers no behavioral or error context. With no annotations and no output schema, the description leaves an agent with an adequate but not fully complete picture.

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 100%, so the baseline is 3 and the schema already documents each parameter. The description adds little beyond paraphrasing the schema, and it does not clarify the real-world constraint that at least one of user_id or group_id should be provided when only list_id is marked required.

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 uses a specific verb ('Revoke'), names the resource ('access to a Slack List'), and clarifies the target ('a user or group'). This makes the operation unambiguous and distinguishes it from siblings like set_list_access, which grants or changes access.

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 correct usage is implied by the word 'Revoke' — use this tool when access should be removed. However, it does not explicitly mention alternatives, when not to use it, or that set_list_access is the complementary operation. An agent has to infer the decision context.

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

delete_list_itemA

Delete a single item from a Slack List. Requires lists:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYesItem ID to delete
list_idYesList ID

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It clearly identifies the operation as destructive and states the required OAuth scope (lists:write), which is useful for authorization decisions. It does not mention irreversibility or return behavior, but 'delete' makes the core behavior clear.

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 short sentences with no filler. The primary action is front-loaded, and the scope requirement is appended as a separate, easily parsed sentence.

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?

For a simple two-parameter delete operation, the description is largely complete: it names the resource, indicates singular scope, and provides the required permission. It could be slightly richer by noting that deletion is permanent or that the item must exist in the list, but these are not critical 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 100%, so the parameters are already fully documented by the schema. The description adds no additional meaning beyond the literal schema properties, making baseline 3 appropriate.

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 states a specific action ('Delete a single item') on a specific resource ('Slack List'), which clearly distinguishes it from the sibling tool 'delete_list_items' that handles multiple items. The verb and object are 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 implies usage for exactly one item and requires lists:write scope, but it does not explicitly direct the agent to use delete_list_items when deleting multiple items. The distinction from the sibling tool is implied rather than stated.

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

delete_list_itemsA

Delete multiple items from a Slack List in one call. Requires lists:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_idYesList ID
item_idsYesList of item IDs to delete

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It does disclose an important auth requirement ('Requires lists:write scope'), which is valuable beyond the schema. However, it does not mention potential partial failure, irreversibility, or what happens if some item IDs are invalid.

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?

One sentence with no filler, action and resource front-loaded, and the scope requirement neatly appended. Every word 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?

For a simple two-parameter delete operation with a fully described schema, the description captures the resource, the batch behavior, and the required scope. The absence of an output schema is acceptable here because a successful delete response is generally predictable, though explicit mention of return value or partial-failure behavior would make it 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 100%, so both parameters are already documented in the input schema. The description adds no additional parameter-level meaning, so the baseline score of 3 applies.

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 states a specific verb ('Delete'), a specific resource ('items from a Slack List'), and a key distinguishing trait ('multiple items... in one call'). This clearly differentiates it from the sibling tool delete_list_item, which handles single-item deletion.

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 phrase 'multiple items... in one call' implies the batch-use case and suggests a contrast with the singular delete_list_item tool, but it never explicitly names the alternative or states when to prefer one over the other. Usage context is clear but left to inference.

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

delete_messageB

Delete a Slack message.

ParametersJSON Schema
NameRequiredDescriptionDefault
tsYesTimestamp of the message to delete
channelYesChannel ID containing the message

TDQS

B3.2/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 the full behavioral burden. It only says 'Delete' and does not disclose whether deletion is permanent, whether special permissions are required, or what happens to associated content like replies and pins. This is a meaningful gap for a destructive operation.

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 wasted words or superfluous information. It is appropriately short for a simple operation, though it mostly restates what the tool name already conveys.

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 two-parameter delete operation with full schema coverage and no output schema, the core invocation details are present. However, because there are no annotations, the description should also cover operational context like irreversibility and authorization requirements. It is minimally adequate but leaves behavioral 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?

The input schema fully documents both parameters: channel and ts. Schema description coverage is 100%, so the description does not need to add parameter details. The baseline of 3 applies because the description contributes no additional semantic nuance beyond 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?

The description uses a direct imperative verb and names the exact resource ('Slack message'). It is clearly distinct from sibling tools like update_message, delete_file, and delete_scheduled_message. Even though brief, it unambiguously states what action is performed on what object.

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?

There is no guidance on when this tool should be used versus alternatives. The description does not mention exclusions, such as using delete_scheduled_message for scheduled messages, or any context about when deletion is appropriate. An agent must infer usage solely from the tool name.

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

delete_reminderC

Delete a reminder.

ParametersJSON Schema
NameRequiredDescriptionDefault
reminderYesReminder ID to delete

TDQS

C2.9/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 the full burden of behavioral disclosure. 'Delete a reminder' only conveys that the action is destructive; it does not state whether deletion is permanent, whether there are side effects, what happens for a missing ID, or any 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.

Conciseness4/5

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

The description is one short declarative sentence with no unnecessary filler, and the core operation is immediately clear. It is appropriately concise, though it could have used the brevity to add useful behavioral context without losing clarity.

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 single-parameter deletion tool, the schema provides the essential invocation detail. However, with no annotations, no output schema, and no mention of success/error behavior or the relationship to complete_reminder, the description leaves moderate gaps in context.

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?

The input schema already documents the sole parameter as 'Reminder ID to delete' with 100% coverage. The description adds no extra semantic detail beyond the parameter's purpose, so the baseline of 3 applies.

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 states the exact action and object: 'Delete a reminder.' This is clear and unambiguous about what the tool does, but it does not explicitly differentiate from sibling tools such as complete_reminder or list_reminders, so it stops short of a 5.

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?

There is no guidance on when to use this tool versus alternatives. It does not mention complete_reminder as the non-destructive option, nor does it state prerequisites such as the reminder existing or the user having permission to delete it.

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

delete_scheduled_messageA

Cancel/delete a scheduled message before it is sent.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel ID the message was scheduled for
scheduled_message_idYesScheduled message ID to cancel

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It does disclose a key constraint: the scheduled message must be canceled 'before it is sent,' and the destructive nature is apparent from 'Cancel/delete.' However, it does not mention permissions, what happens if the message was already sent, or whether the operation is reversible.

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 a single efficient sentence that front-loads the action and constraint. Every word earns its place and there is no filler or redundancy.

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?

For a simple two-parameter tool with fully described schema and no output schema, the description plus schema provides enough information for an agent to invoke it correctly. The only minor gap is that it does not mention how to obtain the scheduled_message_id or the behavior if the message is already sent.

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?

The input schema already documents both required parameters with meaningful descriptions: 'Channel ID the message was scheduled for' and 'Scheduled message ID to cancel.' With 100% schema description coverage, the tool description adds no additional parameter semantics, so a baseline 3 is appropriate.

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 uses explicit action verbs 'Cancel/delete' and names the precise resource 'a scheduled message' with the temporal qualifier 'before it is sent.' This clearly distinguishes it from the sibling delete_message tool, which targets already-sent messages.

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 phrase 'before it is sent' provides a clear context for when the tool applies and sets the boundary that the message must not have been delivered. It does not explicitly name alternatives or state when not to use it, but the scheduled-message resource makes the intended use case clear enough.

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

edit_canvasA

Edit (replace content of) an existing canvas. Requires canvases:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
canvas_idYesCanvas ID to edit
operation_idNoOptional idempotency key for the edit
document_contentYesNew markdown content

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 carries the behavioral burden. It explicitly discloses that the operation replaces content, signaling destructive overwrite behavior, and it notes the authentication requirement. It does not describe return values or idempotency details, but the core behavioral trait is clearly communicated.

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 a single, front-loaded sentence that states the action, clarifies the destructive nature, and adds the required scope. There is no filler or redundant information.

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?

The description is adequate for a simple mutation tool, covering purpose and auth. However, it does not mention the optional operation_id semantics, what the response will be, or when another canvas tool would be more appropriate. Given no output schema and no annotations, these gaps leave the agent with some uncertainty.

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 100%, so the parameters are already fully documented. The description adds no additional parameter-level meaning beyond what the schema provides. This meets the baseline for fully covered schemas.

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 uses a specific verb and resource: 'Edit (replace content of) an existing canvas.' The parenthetical clarifies that the tool overwrites content, which distinguishes it from sibling operations like create_canvas or set_canvas_access. The scope is immediately recognizable.

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 use on an existing canvas and states a required OAuth scope, 'Requires canvases:write scope.' However, it does not explicitly mention when to prefer this tool over alternatives such as create_canvas or when not to use it. Usage context is present but mostly implicit.

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

get_bot_infoA

Get information about the bot associated with the current token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description must carry the burden of behavioral disclosure. It does implicitly communicate a read-only operation through 'Get' and adds the context that the bot is tied to the current token. However, it does not describe the expected response shape, error behavior, or any side effects, leaving some behavioral aspects undisclosed.

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 a single, focused sentence with no waste. It front-loads the operation and the key scoping detail (the bot associated with the current token), making it immediately actionable for an agent.

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?

For a zero-parameter, read-only informational tool, this description is nearly complete. It clearly states the resource and the auth context. The lack of an output schema is not a major issue here because the tool's purpose is simple and the agent can generically handle the returned bot info, though explicitly naming example fields would make it fully complete.

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, so the input schema is trivially complete at 100% coverage. The description correctly adds no parameter information because none is needed. Baseline for zero parameters is 4, and there is no gap for the description to compensate for.

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 uses the specific verb 'Get' with a clearly identified resource: 'the bot associated with the current token.' This distinguishes it from sibling tools like get_user_info and get_workspace_info by specifying the bot and the token-based association, leaving no ambiguity about what the tool returns.

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?

The description gives no guidance on when to use this tool versus alternatives such as get_user_info or get_workspace_info. There are no explicit conditions, exclusions, or context hints beyond the tool's name and resource, so an agent must infer appropriate usage 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.

get_channel_infoA

Get detailed information about a specific Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel ID (e.g., C1234567890)

TDQS

A3.5/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 the full burden of disclosing behavior. The verb 'get' implies a read operation, but the description does not mention required permissions, error behavior, rate limits, or what fields of 'detailed information' will actually be returned.

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 a single, direct sentence with no filler or redundancy. It front-loads the purpose clearly and is appropriately sized for a simple one-parameter getter 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?

The tool is simple and has no nested parameters, so the input side is complete. However, there is no output schema, and the description only says 'detailed information' without specifying what that includes, leaving some ambiguity about the return value for an agent.

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?

The schema already fully documents the single parameter ('Channel ID (e.g., C1234567890)') with 100% coverage, so the description does not need to add much. It reinforces that the information is about a 'specific' channel, but adds no meaningful semantic detail beyond 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?

The description clearly states the action ('get'), the resource ('specific Slack channel'), and the nature of the result ('detailed information'). It is easily distinguished from siblings like list_channels, which return multiple channels, and get_user_info, which targets a different resource.

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 the tool should be used when detailed information about one specific channel is needed, but it does not explicitly state when to prefer this over alternatives or mention any exclusions. The context is understandable but relies on inference rather than direct guidance.

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

get_file_infoB

Get detailed information about a Slack file.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile ID (e.g., F1234567890)

TDQS

B3.3/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 the full burden of behavioral disclosure. It only says 'get detailed information' and provides no context about whether this is read-only, what metadata fields are returned, whether deleted files cause errors, or any permissions needed. The verb 'get' implies read behavior, but the description adds little transparency beyond common sense.

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, front-loaded sentence that directly conveys the core operation with no filler. It is appropriately concise for a simple one-parameter tool, though it could earn a 5 with more substantive detail.

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?

With no output schema and no annotations, the description leaves the agent without a clear picture of what 'detailed information' actually includes. The tool name and parameter identify the target file, but the lack of return-value specifics and edge-case handling makes the description incomplete for an agent selecting and invoking the tool correctly.

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?

The input schema already documents the sole parameter as 'File ID (e.g., F1234567890)' with 100% coverage. The description itself doesn't add parameter-specific detail, but the schema fully covers semantics, so the baseline score of 3 is appropriate.

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 states a clear verb and resource: 'Get detailed information about a Slack file.' It unambiguously identifies the operation as retrieving metadata for a single file, distinct from sibling tools like list_files, delete_file, or upload_file.

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 the tool is used when you need details about a specific file identified by its file ID, and the context signals show a single required 'file' parameter. However, it does not explicitly contrast with alternatives such as list_files or get_file_info vs. search, nor does it mention when a different tool would be more appropriate.

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

get_list_itemA

Get details for a single Slack List item. Requires lists:read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYesItem ID
list_idYesList ID

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. 'Get details' clearly signals a read-only, side-effect-free operation, and the required scope is stated. It does not mention error behavior or return format, but this is a simple getter where those omissions are minor.

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 with no filler: the core action is stated first, followed by the essential auth prerequisite. Every word contributes to understanding what the tool does and how to call it.

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?

For a simple read operation with two required IDs, the description and schema together are sufficient for correct invocation. The only notable gap is not explicitly pointing to list_list_items as the plural alternative, but this is a minor weakness.

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?

The input schema already describes both parameters with 100% coverage, albeit tersely as 'Item ID' and 'List ID'. The description adds no extra meaning about ID formats, relationships, or how the parameters are used, so the baseline 3 applies.

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 states a specific verb ('Get details') and resource ('single Slack List item'), making the tool's purpose immediately clear. It also distinguishes this from sibling list-, create-, update-, and delete-item tools without ambiguity.

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?

It clearly provides the required scope ('Requires lists:read scope') and the word 'single' implies use for one item rather than listing all items. However, it never explicitly names list_list_items as the alternative for bulk retrieval, so usage guidance is implied rather than direct.

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

get_thread_repliesA

Fetch all replies in a Slack thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel ID containing the thread
thread_tsYesTimestamp of the parent message

TDQS

A3.5/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full behavioral burden. 'Fetch' indicates read-only and 'all' implies a collection, but the description does not disclose return shape, auth/permission requirements, pagination, ordering, or behavior when there are no replies. With no output schema, this gap matters.

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?

A single seven-word sentence that front-loads the action and content with no filler. It does not repeat schema field names or waste words.

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 low-complexity getter with two well-described parameters, the definition enables confident invocation. However, without an output schema or annotations, the agent is left to guess what the returned replies look like and whether 'all' may involve pagination, making the definition minimally complete but not richly contextual.

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?

The input schema covers both parameters fully with descriptions ('Channel ID containing the thread' and 'Timestamp of the parent message'), so the baseline is 3. The description adds only the 'Slack thread' context and provides no additional value constraints or format details.

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 verb 'Fetch' plus the resource 'all replies in a Slack thread' is specific and unambiguous. It also stands apart from sibling tools like send_message and get_channel_info because it is the only one describing thread-reply 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 the intended use case, retrieving all replies for a thread, but provides no explicit when-to-use guidance and names no alternatives. For a simple getter this is adequate, though there is no exclusion or alternative routing.

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

get_user_by_emailA

Look up a Slack user by their email address.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address to look up

TDQS

A3.8/5.0
Behavior3/5

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

The verb 'look up' signals a read-only operation, but with no annotations the description carries the full burden. It does not disclose error behavior, required scopes, rate limits, or what the returned user object contains. It is adequate for a simple lookup but leaves notable 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 a single focused sentence with no filler, and the key qualifier 'by their email address' is placed immediately. Every word 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?

For a one-parameter read-only lookup with no output schema, the description and schema together are nearly sufficient. Missing return-format and error details would be useful, but the agent has enough to invoke the tool correctly.

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 100% and the parameter is self-explanatory ('Email address to look up'). The tool description adds no additional semantic meaning beyond what the input schema already provides, so the baseline score of 3 applies.

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 states a specific verb ('look up'), a specific resource ('Slack user'), and the lookup key ('email address'). This clearly distinguishes it from sibling user tools like list_users and get_user_info, which operate by different criteria.

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 the tool should be used when you have an email address and need the corresponding Slack user. However, it provides no explicit guidance about when not to use it or which alternative tool to choose, such as get_user_info for ID-based lookups.

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

get_user_infoB

Get detailed information about a Slack user.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUser ID (e.g., U1234567890)

TDQS

B3.2/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 the full burden. It mentions 'detailed information' but does not disclose what fields are returned, whether the operation is read-only, any rate limits, or what happens for invalid/unknown user IDs. This is a meaningful gap for an API call 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, front-loaded sentence with no wasted words. It is appropriately concise 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?

The tool is simple with one parameter and no output schema, so the needed context is minimal. However, the lack of any behavioral disclosure (what 'detailed information' includes, error behavior) leaves minor gaps; the description is adequate but not rich.

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 100%, so the schema already documents the single parameter. The description adds only 'detailed information', which does not meaningfully clarify the parameter beyond the schema's 'User ID' example. Baseline 3 is appropriate given full schema coverage.

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 states a specific verb ('get') and resource ('detailed information about a Slack user'), making the purpose clear. It does not explicitly differentiate from sibling tools like list_users or get_user_by_email, but the singular 'user' scope helps distinguish it.

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 this tool retrieves details for a single user by ID, which suggests usage when a specific Slack user ID is known. It does not state when to use alternatives like get_user_by_email or list_users, leaving some selection guidance to inference.

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

get_workspace_infoA

Get information about the current Slack workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

The verb 'Get' conveys a read-only, non-mutating operation, which is useful since no annotations are provided. However, the description does not disclose what data is returned, whether any special authorization is needed, or any other behavioral details. It is honest but minimal.

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 one short sentence with no filler. The action and target resource are front-loaded, making the tool's purpose immediately understandable.

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 zero-parameter tool, correctness of invocation is trivially satisfied. However, with no output schema and no mention of what workspace fields are returned, an agent is left guessing about the result shape, which matters when using the output in later steps.

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 takes zero parameters and the schema description coverage is 100%, so there are no parameters requiring semantic explanation. The baseline of 4 applies because the description does not need to compensate for any undocumented inputs.

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 'Get' and the resource 'current Slack workspace', distinguishing it from sibling tools that operate on channels, messages, users, or files. Even though it does not enumerate the returned fields, the resource scope is unambiguous and none of the siblings cover workspace-level info.

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?

There is no guidance on when to use this tool versus alternatives like get_bot_info or auth_test, which could also be relevant for workspace-level context. The description implies a general workspace information need but gives no conditions, exclusions, or alternative routing.

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

invite_to_channelC

Invite one or more users to a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
usersYesList of user IDs to invite
channelYesChannel ID to invite users to

TDQS

C2.9/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 the burden of disclosing side effects. It only describes the basic action and does not mention permissions, whether the inviter must already be a member, failure modes for already-invited users, or what the response contains.

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?

A single clear sentence with no filler or duplication of parameter details. It is well-structured and readable, though it is arguably too thin for a tool with no annotations or output schema.

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?

With no annotations, no output schema, and no usage guidance, the description leaves important context unstated, such as prerequisites and failure behavior. The two parameters are documented, but that is only a small part of invoking this operation successfully.

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 100%, and both parameters ('users' and 'channel') have clear descriptions in the schema. The tool description adds little beyond 'one or more users' and 'Slack channel,' which the schema already conveys, so the baseline of 3 applies.

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 states a specific verb ('invite') and resource ('one or more users to a Slack channel'), which clearly identifies the core action. It does not explicitly differentiate this from sibling membership tools like join_channel or kick_from_channel, though the unique 'invite' action mostly carries that distinction.

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?

There is no guidance on when to prefer this tool over alternatives (e.g., join_channel for self-joining, kick_from_channel for removal) and no exclusions or preconditions. The use case must be inferred entirely from the tool name and verb.

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

join_channelC

Join a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel ID to join

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description bears the full burden of behavioral disclosure. It only states the action and does not mention idempotency, permission requirements, behavior for already-joined channels, or any side effects.

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 filler or unnecessary detail. It is efficient and immediately understandable, though it is minimal enough that more context could be valuable.

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?

With no annotations, no output schema, and a one-line description, the tool lacks meaningful context. Important aspects such as whether this joins as the current user, how it differs from inviting someone, and failure conditions are left unspecified.

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?

The schema description covers the single parameter 100%, stating it is the 'Channel ID to join.' The tool description adds no extra semantic information beyond the schema, which aligns with the baseline for full schema coverage.

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 uses a specific verb ('Join') and a clear resource ('a Slack channel'). It is not a tautology and distinguishes at a basic level from sibling tools like invite_to_channel, though it does not explicitly state that it acts on the authenticated user.

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 is provided about when to use this tool versus alternatives such as invite_to_channel or create_channel. The context is not explicitly stated, and there are no exclusions or alternative-routing hints.

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

kick_from_channelB

Remove a user from a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUser ID to remove
channelYesChannel ID

TDQS

B3.2/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 the full burden. It states only the core effect ('Remove a user') and does not disclose permission requirements, irreversibility, failure behavior, or side effects like notifications.

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?

Single sentence, no filler, and the action and object are front-loaded. The entire description earns its place.

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?

For a mutating tool with no annotations and no output schema, this one-sentence description is thin. It omits preconditions, error semantics, and response behavior, so an agent is left with only the action and raw IDs.

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 100%, with both 'user' and 'channel' fields documented directly in the schema. The description adds no extra parameter meaning, which is acceptable at the baseline.

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 uses a specific verb ('Remove') and names the exact resource ('a user' from 'a Slack channel'), making the operation unmistakable. It is clearly distinct from sibling tools like invite_to_channel or archive_channel.

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 is given on when to choose this tool over siblings or what preconditions apply (e.g., admin/owner permission). The intended use must be inferred from the tool name and action phrase.

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

list_bookmarksA

List all bookmarks in a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesChannel ID to list bookmarks for

TDQS

A4/5.0
Behavior3/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 of behavioral disclosure. It correctly implies a read-only listing operation, but does not disclose response format, pagination behavior, or error conditions. It does not contradict any annotations.

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 a single sentence with no filler words. It front-loads the action and resource, and every word contributes to understanding the tool's function.

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?

For a simple one-parameter list operation, the description plus schema provide sufficient information to invoke the tool correctly. However, since there is no output schema, a brief note on the return shape (e.g., an array of bookmark objects) would improve completeness.

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?

The input schema already provides 100% coverage of the single parameter with the description 'Channel ID to list bookmarks for'. The tool description adds no additional semantic value beyond what the schema provides, so the baseline score of 3 applies.

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 uses the specific verb 'List' with the resource 'bookmarks', and clearly scopes it to 'a Slack channel'. This unambiguously distinguishes it from sibling operations like add_bookmark and remove_bookmark.

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 makes the tool's purpose clear: retrieve all bookmarks for a specified channel. While it does not explicitly name alternatives or exclusions, there are no close sibling alternatives for listing bookmarks, so an agent can infer the appropriate usage context.

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

list_channelsA

List all channels in the Slack workspace (public and private).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of channels to return
typesNoComma-separated channel types: public_channel, private_channel, mpim, impublic_channel,private_channel
name_filterNoOptional substring to filter channel names (case-insensitive)
exclude_archivedNoExclude archived channels from results

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It clearly conveys the read-only listing behavior and explicitly includes private channels. It does not mention pagination, required OAuth scopes, or the fact that private channel visibility may be limited to channels the app has access to, but the core semantics are not misleading.

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 a single, front-loaded sentence with no filler. It states the resource, scope, and channel types in a compact way that an agent can parse quickly.

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?

The tool has no required parameters and all optional parameters are fully described in the schema, so an agent can invoke it correctly from the description alone. It lacks an explicit output-format hint and pagination note, but for a simple read-only list operation this is a minor gap.

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?

All four parameters are fully documented in the input schema (100% coverage), so the description does not need to add parameter-level detail. The description adds no extra semantics beyond the schema, so the baseline score of 3 applies.

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 uses a specific verb ('List'), a clear resource ('channels'), and a well-defined scope ('in the Slack workspace (public and private)'). It clearly distinguishes itself from siblings like get_channel_info (single channel) and list_user_channels (user-specific channels), even without naming them.

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 phrase 'all channels in the Slack workspace' implies workspace-wide enumeration, which indirectly contrasts with list_user_channels. However, it does not explicitly state when to prefer this tool over alternatives or mention exclusions such as archived channels.

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

list_emojisA

List all custom emoji in the Slack workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. 'List' clearly signals a read-only enumeration, but the description does not disclose details such as pagination, output shape, permission requirements, or whether any filtering is available.

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?

A single front-loaded sentence with no filler or redundancy. Every word earns its place and the core action and scope are stated immediately.

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?

For a zero-parameter, read-only list tool, the description is adequate: it states the exact resource and scope with no input ambiguity. It does not describe the response format, but the low complexity and obvious return value make this a minor 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?

The tool has zero parameters, so the empty input schema already covers everything. The description aligns with the no-parameter interface and adds no conflicting or missing parameter information.

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 uses a specific verb ('List') and a specific resource ('all custom emoji in the Slack workspace'), making the tool's purpose immediately clear. It also distinguishes itself from sibling list_* tools by naming a unique resource type.

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 when to use the tool: whenever the full set of workspace custom emoji is needed. However, it provides no explicit comparison to alternatives, no exclusions, and no conditions under which a different tool should be preferred.

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

list_filesB

List files in the Slack workspace or a specific channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoMaximum number of files to return
channelNoOptional channel ID to filter files by

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must bear the full burden of behavioral disclosure. It signals a read-only enumeration via 'List' and adds the optional channel scope, but it does not disclose pagination behavior, result ordering, file visibility/access rules, or whether metadata is returned.

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 a single, front-loaded sentence with no filler. It conveys the action, resource, and optional scope in minimal words.

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 two-parameter list operation, this is nearly usable and the schema covers parameter semantics. However, with no output schema, the description does not explain what the tool returns (metadata, pagination, format) or any access caveats, leaving some inference to the agent.

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?

The input schema already describes both parameters with 100% coverage, so the baseline is 3. The description's mention of 'workspace or a specific channel' reinforces the channel parameter but adds no new semantic detail beyond what the schema already provides.

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 action ('List'), the resource ('files'), and the scoping dimension ('workspace or a specific channel'). It is distinct from sibling file-related tools like upload_file, get_file_info, and delete_file, so an agent can tell it apart based on the stated verb and resource.

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?

The description implies when to use the tool but gives no explicit guidance about when to prefer it over alternatives like get_file_info or search_messages. It lacks any exclusions, prerequisites, or comparison with sibling tools.

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

list_historyC

Fetch message history from a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of messages to return
latestNoOnly messages before this Unix timestamp
oldestNoOnly messages after this Unix timestamp
channelYesChannel ID to fetch history from

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'fetch' which implies a read operation, but it does not reveal ordering, pagination behavior, whether replies are included, or any limits/constraints beyond the schema. This is a minimal description that leaves significant behavior unspecified.

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 short sentence with no filler, and the main action and target are front-loaded. It earns its place in terms of brevity, though it sacrifices valuable detail for conciseness.

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?

Without an output schema or annotations, the description is the only source of contextual information. It fails to explain what a successful response looks like, the ordering of returned messages, or any edge cases (e.g., time range behavior). For a tool with four parameters and no other structured context, this is incomplete.

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 100%, so all four parameters are already documented in the schema itself. The description adds no additional meaning about the parameters, which is acceptable given the schema coverage, but it also provides no context about how limit, latest, and oldest interact in practice.

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 'Fetch message history from a Slack channel' clearly identifies the verb (fetch), resource (message history), and scope (from a Slack channel). It is unambiguous for basic understanding, though it does not explicitly differentiate from siblings like search_messages or get_thread_replies.

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 is provided on when to use this tool versus alternatives. It does not mention that this is for direct channel history retrieval, whereas search_messages is for searching, or get_thread_replies for thread-specific replies. The agent must infer usage from the name and schema alone.

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

list_list_itemsA

Fetch all items in a Slack List (paginated). Requires lists:read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items per page (default 100)
list_idYesList ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the disclosure burden. It does disclose pagination behavior and a required scope, which is useful. However, it does not explain how pagination works (e.g., cursor-based, whether all pages are automatically fetched), what the response format is, or explicitly state that this is a non-mutating read operation.

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 a single concise sentence that front-loads the core action and resource, then adds pagination and scope requirements. No filler or redundant phrasing is present.

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?

For a simple read-only list tool with two parameters and full schema coverage, the description provides the key operational facts: what is fetched, that pagination is involved, and what scope is needed. It does not describe response structure or pagination mechanics, but this is a relatively simple tool and the main invocation requirements are covered.

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 100%: list_id is described as 'List ID' and limit as 'Max items per page (default 100)'. The description adds context about pagination and fetching all items but does not substantially enrich parameter semantics 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and names the exact resource ('all items in a Slack List'), also noting pagination. This clearly distinguishes it from sibling tools like get_list_item (singular item) and create_list_item (creation), so an agent can tell them apart.

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 when to use the tool: when you need all items in a Slack List, and it provides a prerequisite ('Requires lists:read scope'). However, it does not explicitly contrast it with alternatives or mention cases where get_list_item or other list-related tools would be more appropriate.

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

list_remindersA

List all reminders for the authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No 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 the full behavioral burden. It communicates a read-style listing operation scoped to the authenticated user, so an agent can infer safety. However, it does not disclose output format, ordering, pagination, or whether all reminder states are included.

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 a single sentence with no redundant wording. The key information—action, resource, and scoping—is front-loaded and every word contributes value.

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?

For a simple, zero-parameter list operation, the description is largely complete and gives an agent enough to select the tool correctly. The main gaps are the absence of an output shape description and no routing to sibling tools, but the low complexity of this tool makes those less critical.

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?

There are zero parameters and the schema covers all of them, so the baseline is 4. The description adds meaningful context by clarifying that the operation uses the authenticated user's identity rather than requiring explicit parameters.

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 uses a specific verb ('List'), a clear resource ('reminders'), and a scope ('for the authenticated user'). This distinguishes it from sibling tools like get_reminder, create_reminder, and delete_reminder, and from other list-type tools such as list_channels and list_files.

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?

The description states what the tool does but gives no guidance about when to use it versus alternatives, such as get_reminder for retrieving a single reminder or search-style tools. There are no explicit conditions, exclusions, or when-not-to-use indications.

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

list_scheduled_messagesB

List all pending scheduled messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoOptional channel ID to filter by

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. 'List all pending scheduled messages' conveys a read-only operation and the 'pending' status adds scope, but it does not disclose output format, ordering, or whether scheduling metadata is included. It is adequate but minimal.

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?

A single sentence with no filler, front-loads the action and resource. Every word earns its place.

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 tool with one optional parameter and no output schema, the description plus schema is mostly sufficient. However, it leaves gaps such as what 'pending' means, whether the result set spans all users, and what the returned data looks like. It is minimally viable but not rich.

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?

The input schema already describes the only parameter ('Optional channel ID to filter by') with 100% coverage. The description adds no additional semantic detail beyond the schema, so the baseline of 3 is appropriate.

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 a specific verb ('List') and resource ('pending scheduled messages'), which is distinct from sibling tools like list_history or list_reminders. However, it does not explicitly contrast it with any sibling, so it stops short of full differentiation.

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?

There is no guidance on when to use this tool versus alternatives such as list_history, list_reminders, or schedule_message. The context must be inferred entirely from the tool name and resource phrase.

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

list_user_channelsA

List all channels a specific Slack user is a member of.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUser ID to list channels for

TDQS

A3.8/5.0
Behavior3/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 of behavioral disclosure. It clearly communicates that the tool returns channels the user belongs to, but it does not mention safety profile, authorization needs, or whether it includes private channels. For a simple read-style tool this is adequate but not rich.

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 a single, front-loaded sentence with no redundant words. It states the action, the resource, and the scope efficiently.

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?

For a one-parameter tool with a simple purpose, the description is nearly complete. It lacks explicit return-format details and sibling differentiation, but the low complexity and clear parameter schema make the description sufficient for an agent to invoke the tool correctly.

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 100%, and the single parameter 'user' is already described as 'User ID to list channels for'. The description adds no meaningful parameter detail beyond that, so the baseline score of 3 is appropriate.

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 uses a specific verb ('List') and resource ('channels') and scopes it to a single Slack user, which clearly distinguishes it from the sibling tool list_channels. An agent can immediately understand the tool's purpose without opening the schema.

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 when channel membership for a specific user is needed, but it does not explicitly contrast with the sibling list_channels or explain when one should be chosen over the other. Usage context is inferable but not fully articulated.

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

list_usersC

List all users in the Slack workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of users to return

TDQS

C2.9/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 the full burden of behavioral disclosure. It only states a basic listing action and does not mention pagination, the effect of the limit parameter, or the tension between 'all users' and the default limit of 200.

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 a single clear sentence with no filler. It is front-loaded with the action and resource, making it easy to scan.

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?

With no output schema and no annotations, the description should explain call behavior more fully. It omits limit-related behavior, pagination, and return expectations, leaving an important gap between 'list all users' and the actual limit parameter.

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 100%, and the single limit parameter already has a clear schema description. The tool description adds no extra parameter meaning, so the baseline of 3 applies.

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 uses a specific verb ('List') and resource ('all users in the Slack workspace'), making the tool's purpose clear. It is implicitly distinguishable from single-user siblings like get_user_info, but it does not explicitly name an alternative or scope boundary.

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?

There is no guidance on when to use this tool versus alternatives such as get_user_info or get_user_by_email. The intended usage must be inferred from the tool name and sibling list.

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

lookup_canvas_sectionsA

Look up sections/blocks in a canvas. Requires canvases:read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
canvas_idYesCanvas ID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It states the required auth scope ('Requires canvases:read scope') and implies a non-mutating read operation via 'look up', but does not disclose return structure, pagination, or error behavior.

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?

One concise sentence communicates the action, resource, and required scope with no filler. All content is relevant and front-loaded.

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?

For a simple one-parameter lookup tool, the description plus schema provide adequate context to invoke it correctly. It could be slightly more complete by stating what the return value contains, but the lack of output schema and simple signature make the current definition mostly sufficient.

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 100%, so the schema documents the only parameter canvas_id sufficiently for a baseline. The description adds no additional meaning about the parameter beyond what the schema already contains.

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 ('look up') and resource ('sections/blocks in a canvas'), clearly distinguishing it from sibling tools like create_canvas, edit_canvas, and delete_canvas. The scope requirement reinforces the read-only nature.

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 verb 'look up' implies use when the agent needs to retrieve canvas sections, but there is no explicit guidance about when not to use it or which alternative to choose. The canvases:read scope is a useful prerequisite but does not provide direct comparison to sibling tools.

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

markdown_to_canvasA

Validate and prepare markdown content for canvas creation. Accepts a markdown string or a file path, returns the validated content suitable for create_canvas() or create_channel_canvas().

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoMarkdown string (mutually exclusive with file_path)
file_pathNoPath to a .md file to read (mutually exclusive with content)

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It discloses that the tool accepts a markdown string or file path and returns validated content, which is helpful, but it does not explain what validation or preparation actually involves, what happens on invalid input, or whether the returned content is a string or a structured object.

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 no filler. It front-loads the core purpose, then states inputs and outputs in a compact, scannable way. Every sentence contributes necessary information for selecting and calling the tool.

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?

For a simple two-parameter helper tool with no output schema, the description is fairly complete: it names accepted inputs, the return value, and the downstream functions that consume the result. It leaves validation rules and error behavior implicit, but an agent can reasonably invoke the tool using the provided guidance.

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 100%, so the schema already documents content and file_path with mutually exclusive semantics. The description adds the high-level purpose of both inputs but does not provide additional format, constraint, or usage details beyond the schema, keeping this at the baseline.

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 states a specific verb ('validate and prepare') applied to a clear resource ('markdown content') with an explicit purpose ('for canvas creation'). It distinguishes itself from canvas-creation tools by clarifying it returns prepared content rather than creating anything, and the canvas-specific target separates it from the sibling markdown_to_list.

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 clearly implies when to use the tool: before calling create_canvas() or create_channel_canvas(), by providing content that needs validation and preparation. It does not explicitly state when not to use it or name alternatives like markdown_to_list, so it stops just short of full exclusion guidance.

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

markdown_to_listA

Convert markdown to Slack List items. Parses checklists (- [ ] / - [x]), bullet lists (- item), and tables. Returns a list of dicts with 'value' and optional 'status'.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoMarkdown string (mutually exclusive with file_path)
file_pathNoPath to a .md file to read (mutually exclusive with content)

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It discloses the accepted input styles, the parsing scope, and the return format ('list of dicts with 'value' and optional 'status''). It does not describe handling of unsupported markdown, but this is a modest gap for a conversion utility.

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?

Three concise sentences with no fluff. The core action is front-loaded, supported inputs are enumerated in the second sentence, and the return shape is stated in the third. Every sentence contributes.

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?

For a simple two-parameter converter, the description is nearly complete: it states inputs, supported markdown constructs, and the return shape. The main missing piece is usage guidance relative to markdown_to_canvas and behavior on unsupported input, but the essential calling contract is clear.

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 100%, with content and file_path already described and marked mutually exclusive in the schema. The tool description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.

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 uses a specific verb ('Convert') with a clear source ('markdown') and target ('Slack List items'), and names the exact constructs it parses (checklists, bullet lists, tables). This distinguishes it from the sibling markdown_to_canvas and other list tools.

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 intended use is implied by the description: use this when you have markdown and need Slack List items. However, there is no explicit guidance about when not to use it or why it should be chosen over the closely related sibling markdown_to_canvas.

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

open_dmB

Open a direct message channel with one or more Slack users.

ParametersJSON Schema
NameRequiredDescriptionDefault
usersYesList of user IDs to open a DM with

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It does not state whether opening a DM is idempotent, creates a new channel or retrieves an existing one, requires permissions, or returns a channel ID. This is a meaningful gap for a mutation-like operation.

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 a single front-loaded sentence with no filler. Every word contributes meaning and there is no redundant repetition of the schema.

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?

The tool is simple with one well-documented parameter, making the description minimally viable. However, with no output schema and no annotations, the description leaves out the return value and behavioral consequences, so it is adequate but not 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 100%, so the schema already documents the users parameter as a list of user IDs. The description adds the phrase 'one or more' but provides no additional semantic detail about format, validation, or behavior with invalid 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 uses a specific verb ('open') and resource ('direct message channel') and specifies the target ('one or more Slack users'). It clearly distinguishes the tool from siblings like send_message or list_users.

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 is provided about when to use this tool versus alternatives, such as opening a DM before sending messages or how it differs from listing users. The agent must infer usage from the tool name and description.

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

pin_messageB

Pin a message in a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
tsYesMessage timestamp to pin (e.g. '1234567890.123456')
channelYesChannel ID containing the message

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but does not disclose side effects, permission requirements, idempotency, reversibility, or what happens if the message is already pinned. This is a mutating operation with no extra context.

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 a single efficient sentence with no wasted words. It is front-loaded with the action and resource, which is appropriate 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?

The description is minimally sufficient for a simple two-parameter tool with full schema coverage. However, with no annotations and no output schema, it leaves gaps around permissions, error behavior, and whether pinning is idempotent, so it is 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 100%, and both parameters (channel, ts) are already documented in the schema. The description adds no additional parameter meaning, so the baseline score of 3 applies.

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 uses a specific verb ('Pin') with a clear resource ('a message in a Slack channel'), making the tool's function immediately obvious. It also distinguishes itself from siblings like unpin_message and send_message by naming the exact action.

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?

The description gives no guidance on when to use this tool versus alternatives. It does not mention unpin_message as the counterpart, nor any conditions or prerequisites such as needing the message to exist in the channel or having permission to pin.

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

remove_bookmarkB

Remove a bookmark from a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesChannel ID containing the bookmark
bookmark_idYesBookmark ID to remove

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations present, the description carries the full burden of behavioral disclosure, but it only states the mutation without noting permanence, required permissions, idempotency, or response behavior. For a destructive operation this is a meaningful gap.

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?

A single front-loaded sentence states the action, object, and location with no filler or repetition. It is appropriately sized for a simple two-parameter removal 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?

The operation is simple and the schema fully covers the required parameters, so an agent can invoke it with channel_id and bookmark_id. However, there is no output schema, no effect/permission detail, and no pointer to list_bookmarks for discovering valid IDs, leaving minor but real 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 100%, so the schema already documents both channel_id and bookmark_id. The description adds no parameter-level detail beyond the schema, so the baseline of 3 is appropriate.

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 names a specific verb ('Remove'), a resource ('bookmark'), and a scope ('from a Slack channel'), so an agent can immediately distinguish it from sibling tools like add_bookmark and list_bookmarks. It is not a tautology because it adds the Slack-channel context.

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?

The description gives no explicit when-to-use guidance, prerequisites, or contrasts with alternatives such as add_bookmark or list_bookmarks. The intended use is only lightly implied by the verb 'Remove'.

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

remove_reactionB

Remove an emoji reaction from a Slack message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEmoji name without colons (e.g., 'thumbsup')
channelYesChannel ID containing the message
timestampYesMessage timestamp
use_user_tokenNoRemove reaction as the authenticated user (requires xoxp- user token) rather than the bot

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It only states the core action and does not disclose whether the bot removes its own reaction by default, whether use_user_token is needed for user-authored reactions, or what happens if the reaction does not exist.

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 a single sentence with no redundant words, and the core action is front-loaded. It is appropriately concise and easy to parse.

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?

The description plus full parameter schema is adequate for basic invocation of a straightforward reaction-removal tool. However, with no annotations, no output schema, and no mention of authentication or failure behavior, an agent is left with some gaps around token usage and edge cases.

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?

All four parameters are already documented in the schema, which has 100% description coverage. The tool description adds no extra parameter meaning beyond what the schema already provides, so the baseline of 3 applies.

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 names a specific verb ('Remove') and resource ('emoji reaction from a Slack message'), making the tool's function immediately clear. The verb 'Remove' also differentiates it from sibling tools like add_reaction without requiring schema details.

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?

The description gives no explicit guidance about when to choose this tool over alternatives such as add_reaction, nor does it mention prerequisites or authentication behavior. The intended use is only implied by the action verb, so an agent receives no routing help.

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

reply_in_threadB

Reply to a message in a Slack thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesReply text
channelYesChannel ID containing the thread
thread_tsYesTimestamp of the parent message
use_user_tokenNoSend as the authenticated user (requires xoxp- user token) rather than the bot

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description alone must carry behavioral disclosure. It only states the basic action and does not mention auth behavior, bot vs. user token differences, rate limits, errors, or what happens when the reply is posted.

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 one short sentence with no filler. It front-loads the action and context efficiently.

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?

This is a mutating tool with no annotations and no output schema, yet the description explains none of the operational context such as required permissions, token behavior, or expected response. The schema covers parameter names, but the description still leaves important behavioral gaps unaddressed.

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 100%, so the parameters are already well documented in the schema. The description adds no extra parameter semantics beyond what the schema provides, making the baseline score of 3 appropriate.

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 uses a specific verb ('Reply') and a clear resource ('a message in a Slack thread'), which distinguishes it from sibling tools like send_message or get_thread_replies. It immediately tells the agent the exact action and scope.

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 thread context implies when this tool should be used, but there is no explicit guidance about when to choose it over send_message or how to obtain the required thread_ts. No alternatives or exclusions are mentioned.

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

schedule_messageA

Schedule a message to be sent at a future time.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesMessage text
channelYesChannel ID to send the message to
post_atYesUnix timestamp (seconds since epoch) when to send the message

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral disclosure burden, but it only restates the basic scheduling action. It does not mention that the message is stored as a scheduled entry, that it can be later listed/deleted via sibling tools, that post_at must be in the future, or any permission/rate-limit considerations.

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 a single sentence with no filler, front-loading the core verb and resource and immediately stating the distinguishing future-time behavior. Every word contributes meaning.

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?

The tool is simple and all parameters are documented, but because there are no annotations and no output schema, the description leaves gaps about the response shape, cancellation/listing behavior, and scheduling constraints. It is minimally 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 100%, so all three parameters are already documented in the schema. The description adds no additional parameter-level semantics, which matches the baseline of 3.

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 uses a specific verb ('Schedule') and resource ('a message') with a clear temporal qualifier ('at a future time'), directly distinguishing it from the sibling send_message tool. An agent can immediately understand that this is the delayed-send counterpart.

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 clearly implies when to use it: when a message must be delivered later rather than immediately. It does not explicitly name alternatives or state when not to use it, but the contrast with send_message is evident from the future-time qualifier.

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

search_messagesA

Search for messages across the workspace. Requires a user token (xoxp-) with search:read scope — bot tokens (xoxb-) are not supported by Slack's search API.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results to return
queryYesSearch query string

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are present, so the description carries the full disclosure burden. It adds genuinely useful context by requiring a user token (xoxp-) with search:read scope and explicitly excluding bot tokens (xoxb-), a real-world constraint that prevents failed calls. However, it omits rate limits, pagination behavior, and result-return details.

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 with zero filler; the purpose is front-loaded and the auth constraint earns the second sentence. Efficient and appropriately sized for the tool's complexity.

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 2-param search tool with no output schema, the description covers the purpose and the critical auth constraint well. It leaves gaps around result shape and pagination, which an agent would need to handle multi-page Slack search results.

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 100%, so the schema already documents query and count, setting the baseline at 3. The description adds no param-level syntax, query operators, or count constraints beyond what the schema provides.

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?

States a specific verb ('Search'), resource ('messages'), and scope ('across the workspace'), which clearly distinguishes it from channel-scoped tools like list_history. However, it doesn't explicitly name or differentiate from siblings, so it stops short of a 5.

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 as a workspace-wide message search but provides no explicit when-to-use guidance or named alternatives such as list_history for browsing a single channel. The token requirement reads as a prerequisite rather than usage direction.

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

send_ephemeralA

Send an ephemeral message visible only to a specific user.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesMessage text
userYesUser ID who will see the message
channelYesChannel ID where the ephemeral message appears

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It accurately conveys ephemerality and the visibility scope, both of which are meaningful behavioral traits. It does not elaborate on error conditions or whether the message appears in history, but the core ephemeral behavior is clearly stated.

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 one sentence with no filler. The core behavior is stated first, and every word contributes meaning. It is appropriately sized for a simple tool.

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?

For a three-parameter tool with fully documented schema properties, the description plus schema is sufficient to understand how to invoke it. The main omission is usage guidance versus siblings, but that is already penalized under usage guidelines. No output schema exists, so return-value documentation is not required.

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 100%, so the schema already explains text, user, and channel. The description adds the 'visible only to a specific user' nuance, which reinforces the user parameter but provides little beyond the schema. A baseline score of 3 is appropriate.

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 uses a clear verb ('Send') with a specific resource ('an ephemeral message') and states the audience constraint ('visible only to a specific user'). This clearly differentiates it from regular message-sending sibling tools like send_message.

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?

The description gives no explicit guidance on when to choose this tool over alternatives such as send_message or reply_in_thread. The context is evident from the name and description, but the tool does not state exclusions or conditions for its use.

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

send_messageC

Send a message to a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesMessage text
blocksNoBlock Kit blocks array for rich formatting
channelYesChannel ID or name to send to
thread_tsNoThread timestamp to reply in a thread
unfurl_linksNoWhether to unfurl links
use_user_tokenNoSend as the authenticated user (requires xoxp- user token) rather than the bot

TDQS

C2.9/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 the full burden. 'Send a message to a Slack channel' states the basic effect but does not mention whether it sends as the bot or user by default, required scopes like chat:write, message visibility, or other side effects such as surfacing in channel history. It is not misleading, but it is thin.

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 a single, front-loaded sentence with no filler or redundancy. Every word adds clarity to the core operation. It is concise in structure, even if it is thin on contextual detail.

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 six parameters, no annotations, no output schema, and a large sibling set, this description is incomplete. It does not help the agent decide between send_message and reply_in_thread or send_ephemeral, nor does it describe expected response behavior or authorization requirements. The schema covers parameters, but the overall context for correct invocation is missing.

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 100%, so the schema already documents all six parameters. The description adds no parameter-level meaning beyond identifying that the destination is a Slack channel, which is the baseline expectation for this tool.

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 says 'Send a message to a Slack channel,' which clearly identifies the verb (send), resource (message), and destination (Slack channel). However, it does not distinguish this tool from closely related siblings such as reply_in_thread, send_ephemeral, or schedule_message.

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?

There is no guidance about when to use send_message versus alternatives. With many sibling tools like reply_in_thread, send_ephemeral, and update_message, the agent is left to guess which one fits the user's intent. No exclusions or contextual cues are provided.

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

set_canvas_accessB

Set access rules for a canvas (grant read/write/owner to users or groups).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idsNoList of user IDs to grant access to
canvas_idYesCanvas ID
group_idsNoList of group IDs to grant access to
access_levelYesAccess level: 'read', 'write', or 'owner'

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations at all, the description must disclose behavioral side effects itself. It only says 'set access rules' without explaining whether existing access rules are overwritten or merged, whether granting owner to one user removes other owners, or whether there are any destructive consequences. This leaves a mutation tool's most important behavior ambiguous.

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 one clear, front-loaded sentence that states the action, resource, and permission levels with no filler. Every word contributes to understanding the tool's core operation.

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?

This is a mutating tool with no annotations, no output schema, and four parameters, yet the description covers only the basic action. Important context is missing: whether the call adds or replaces access, any permission requirements, and how the optional user/group lists interact with the required access_level. For a permission-changing tool, this is insufficient.

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?

The schema description coverage is 100%, so all four parameters already have descriptions. The tool description adds no new semantic detail beyond restating the access levels and user/group targets that are alreedy in the schema. It does not clarify why user_ids and group_ids are optional or what happens if neither is provided.

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 uses a specific verb ('set') with a clear resource ('access rules for a canvas') and names the exact permission levels ('read/write/owner') and target types ('users or groups'). This makes the tool's purpose immediately distinguishable from siblings like delete_canvas_access and set_list_access.

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?

The description provides no guidance on when to use this tool versus alternatives such as delete_canvas_access for revoking access or edit_canvas for changing canvas content. It also fails to mention prerequisites, such as whether the canvas must already exist or whether caller needs owner permissions.

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

set_channel_topicB

Set the topic for a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesNew topic text
channelYesChannel ID

TDQS

B3.1/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 the full burden of behavioral disclosure. It only says 'Set the topic' and does not describe the visible effect on the channel, permission requirements, or what happens on failure.

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 a single declarative sentence with zero filler and the action is front-loaded. It is as concise as a description can be.

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 two-parameter setter with complete schema coverage, the description provides enough to understand the core operation. However, without annotations or an output schema, it leaves side effects, permissions, and failure behavior unmentioned, making it only partially 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 100%, with both 'channel' and 'topic' already documented clearly. The description adds no additional meaning beyond naming the resource as a Slack channel, so the baseline of 3 applies.

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 states the action ('Set') and the resource ('topic for a Slack channel') clearly, so an agent can tell what the tool does. It does not add meaningful detail beyond the tool name and does not explicitly differentiate from siblings, but the operation is unambiguous given the sibling 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 is given about when to use this tool versus alternatives, nor are any prerequisites or exclusions mentioned. The description is purely a statement of function with no usage context.

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

set_list_accessB

Set access rules for a Slack List (grant read/write/owner to users or groups).

ParametersJSON Schema
NameRequiredDescriptionDefault
list_idYesList ID
user_idsNoList of user IDs to grant access to
group_idsNoList of group IDs to grant access to
access_levelYesAccess level: 'read', 'write', or 'owner'

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavior. It only says 'grant read/write/owner', but does not clarify whether this replaces existing access rules or appends to them, whether it is idempotent, or what permissions the caller needs. For a mutation tool, this is a meaningful gap.

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 a single, well-formed sentence with no filler or redundant restatement. It front-loads the action and resource, then specifies the key parameters in a compact parenthetical.

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?

The description does not explain whether providing neither user_ids nor group_ids is valid, whether the operation overwrites existing access, or what the response indicates. Given the required access_level without required target lists, the agent could invoke the tool in a way that is undefined from the description alone.

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 100%, so the schema itself already documents list_id, user_ids, group_ids, and access_level. The description adds the conceptual mapping that access_level can be 'read', 'write', or 'owner' and that targets are users or groups, but it does not add significant detail beyond 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?

The description clearly states a specific verb 'Set access rules' on a specific resource 'a Slack List', and specifies the effect: granting read/write/owner to users or groups. This distinguishes it from sibling tools like delete_list_access, which removes access, and create_list/update_list, which manage the list itself.

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 is given for when to use this tool versus alternatives. It does not explicitly mention delete_list_access as the counterpart for removing access, nor does it describe when this should be chosen over similar access-management tools like set_canvas_access. The context must be inferred entirely from the description.

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

share_fileA

Share an existing Slack file to additional channels.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile ID to share
channelsYesList of channel IDs to share the file to

TDQS

A4/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 the full burden of behavior disclosure. It states the operation but does not mention whether permissions are required, whether sharing creates visible messages, whether duplicate shares are possible, or what the response contains. For a mutating operation, this is a notable gap.

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?

A single concise sentence that front-loads the core action and resource. Every word earns its place and there is no redundant or filler content.

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?

The tool is low-complexity with only two well-documented required parameters, and the description clarifies the operation's nature. No output schema is present, but the absence is not critical for this simple sharing action. The main gap is lack of behavioral detail, but the core invocation context is complete.

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 the baseline is 3. The description adds meaningful nuance beyond the schema by emphasizing the file must be 'existing' and that channels are 'additional,' which clarifies that this is not the initial upload or first share.

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 names a specific verb ('share'), a specific resource ('existing Slack file'), and the target action ('to additional channels'). This clearly distinguishes the tool from siblings like upload_file, list_files, get_file_info, and delete_file.

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 phrase 'existing file' and 'additional channels' implies the file must already exist in Slack and already be shared somewhere, which gives useful context. It does not explicitly name alternatives or state when not to use it, but the guidance 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.

unpin_messageB

Unpin a message from a Slack channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
tsYesMessage timestamp to unpin (e.g. '1234567890.123456')
channelYesChannel ID containing the message

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the basic action and does not explain side effects, permissions required, behavior when the message is not pinned, or the expected response. This is a significant gap for a mutation 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?

The description is a single, direct sentence with no filler. It is front-loaded with the core verb and resource, and every word contributes to the meaning.

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?

The tool is simple with two well-documented parameters, so the description is minimally sufficient for invocation. However, it lacks usage context, alternative tool routing, and behavioral caveats, leaving clear gaps for an agent deciding between this and closely related tools.

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?

The input schema provides 100% description coverage for both parameters, so the schema already explains channel and ts. The description adds little beyond the phrase 'from a Slack channel,' which does not materially enrich the parameter semantics. Baseline 3 is appropriate.

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 uses the specific verb 'Unpin' with a clear resource ('a message from a Slack channel'), so an agent can tell what action is performed. However, it does not explicitly differentiate itself from siblings like pin_message, though the inverse relationship is evident from the verb.

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?

The description gives no guidance on when to use this tool instead of alternatives such as pin_message, delete_message, or update_message. There is no mention of prerequisites, exclusions, or the fact that the message must already be pinned.

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

update_listB

Update a Slack List's metadata (name, description). Requires lists:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew list name (optional)
list_idYesList ID to update
descriptionNoNew list description (optional)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that updates require lists:write scope, which is useful, but it does not explain what happens when only one optional field is provided, whether the operation replaces both fields, or what the response contains. For a mutation tool this is a meaningful transparency gap.

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 a single sentence that front-loads the action and resource, then states the required scope. Every word earns its place and there is no redundant or filler 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?

For a simple 3-parameter tool with fully documented schema, the description covers the core purpose and permission requirement. However, the lack of partial-update behavior and absence of any output explanation leaves an agent uncertain about the effect of omitting optional fields, so it is 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 100%, so each parameter is already documented in the input schema. The description only restates that name and description are updatable, adding little beyond the schema; the baseline of 3 is appropriate.

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 states a specific action (Update) on a specific resource (a Slack List's metadata) and names the exact fields affected (name, description). This clearly distinguishes it from sibling tools like create_list, delete_list, and especially update_list_item, which handles items rather than metadata.

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?

The description provides the required OAuth scope but gives no guidance on when to use this tool versus alternatives such as update_list_item or set_list_access. There is no explicit when/when-not or alternative tool routing, so an agent must infer usage from the tool name alone.

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

update_list_itemA

Update an existing Slack List item. Requires lists:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNoNew item text (optional)
statusNoNew status (optional)
item_idYesItem ID to update
list_idYesList ID

TDQS

A3.5/5.0
Behavior3/5

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

Annotations are absent, so the description carries the full burden. It does disclose the required lists:write scope, which is useful auth context. However, it does not state whether updates are partial (only provided fields) or full replacements, nor any side effects on the item.

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?

One sentence front-loads the verb and resource, followed by the scope requirement. Every word earns its place; 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?

The schema covers parameters well and the purpose is clear, but there is no output schema and no mention of whether omitted fields are left unchanged or what the return value looks like. These are notable gaps for an agent predicting the result of an update operation.

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 descriptions cover 100% of parameters (list_id, item_id, value, status) with clear explanations, so the baseline is 3. The description adds no parameter-level details beyond 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?

Specific verb 'Update' plus resource 'Slack List item' makes the operation unambiguous. The word 'existing' distinguishes it from create/delete siblings, allowing an agent to differentiate without opening the schema.

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 this tool versus create_list_item, update_list, or delete_list_item. 'Existing' implies a prerequisite but no alternatives or exclusions are mentioned; the scope requirement is auth context, not usage guidance.

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

update_messageC

Update/edit an existing Slack message.

ParametersJSON Schema
NameRequiredDescriptionDefault
tsYesTimestamp of the message to update
textYesNew text for the message
channelYesChannel ID containing the message
use_user_tokenNoSend as the authenticated user (requires xoxp- user token) rather than the bot

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the mutation (updating/editing) and says nothing about authentication requirements, token behavior, message ownership constraints, or side effects.

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 very short and front-loaded, with almost no filler. However, 'Update/edit' is slightly redundant, and the terseness leans toward under-specification rather than efficient completeness.

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?

For a 4-parameter mutation tool with no annotations and no output schema, the description is under-specified. It omits key operational context such as authentication expectations, use_user_token implications, constraints on editable messages, and any failure behavior.

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 100%, so the parameters are already well documented in the schema. The description adds no parameter-level detail, so the baseline score of 3 applies.

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 uses a specific verb ('Update/edit') and a clear resource ('an existing Slack message'). It distinguishes this from sending or deleting a message by noting it operates on an existing message, but it does not explicitly contrast it with sibling tools like send_message or delete_message.

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?

The description provides no explicit guidance on when to use this tool versus alternatives. The word 'existing' implies it is not for creating or sending new messages, but there are no stated conditions, prerequisites, or exclusions.

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

upload_fileA

Upload a file to one or more Slack channels. Provide either 'content' (UTF-8 text only) or 'file_path' (disk path for binary or text files), not both.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional display title for the file
contentNoFile content as text (mutually exclusive with file_path)
channelsYesList of channel IDs to share the file in (max 100)
filenameYesName for the uploaded file
file_pathNoPath to file on disk (mutually exclusive with content)
thread_tsNoOptional thread timestamp to attach upload to a thread

TDQS

A3.6/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It mentions the action and the content/file_path constraint, but does not disclose required permissions, file size limits, side effects such as file visibility to channel members, or what happens on failure. This is a write operation with minimal safety or side-effect context.

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 a single, tightly constructed sentence that front-loads the core action and then delivers the most important parameter constraint. There is no redundant wording or filler.

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?

For a straightforward upload tool with a fully described schema, the description covers the critical usage decision (content vs file_path) and the destination. It could add auth requirements or output details, but the essential information needed to invoke the tool correctly is present.

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 the baseline is 3, but the description adds meaningful semantic detail beyond the schema: content must be UTF-8 text only, while file_path accepts binary or text files, and the two are mutually exclusive. This directly helps the agent choose the correct parameter.

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 operation ('Upload a file'), the resource ('file'), and the destination ('one or more Slack channels'). It is distinct from sibling tools like share_file or list_files because it explicitly says 'upload,' which signals creating/uploading a new file.

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?

The description does not mention when to use this tool versus alternatives, particularly the close sibling share_file. It provides no exclusion criteria such as 'use share_file for sharing an existing file,' leaving the agent to infer the distinction from the tool name alone.

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. 64 tool updatesv0.1.8
    • First observedadd_bookmark
    • First observedadd_reaction
    • First observedadd_reminder
    • First observedarchive_channel
    • First observedauth_test
    • First observedcomplete_reminder
    • First observedcreate_canvas
    • First observedcreate_channel
    • First observedcreate_channel_canvas
    • First observedcreate_list
    • First observedcreate_list_item
    • First observeddelete_canvas
    • First observeddelete_canvas_access
    • First observeddelete_file
    • First observeddelete_list_access
    • First observeddelete_list_item
    • First observeddelete_list_items
    • First observeddelete_message
    • First observeddelete_reminder
    • First observeddelete_scheduled_message
    • First observededit_canvas
    • First observedget_bot_info
    • First observedget_channel_info
    • First observedget_file_info
    • First observedget_list_item
    • First observedget_permalink
    • First observedget_thread_replies
    • First observedget_user_by_email
    • First observedget_user_info
    • First observedget_workspace_info
    • First observedinvite_to_channel
    • First observedjoin_channel
    • First observedkick_from_channel
    • First observedlist_bookmarks
    • First observedlist_channels
    • First observedlist_emojis
    • First observedlist_files
    • First observedlist_history
    • First observedlist_list_items
    • First observedlist_reminders
    • First observedlist_scheduled_messages
    • First observedlist_user_channels
    • First observedlist_users
    • First observedlookup_canvas_sections
    • First observedmarkdown_to_canvas
    • First observedmarkdown_to_list
    • First observedopen_dm
    • First observedpin_message
    • First observedremove_bookmark
    • First observedremove_reaction
    • First observedreply_in_thread
    • First observedschedule_message
    • First observedsearch_messages
    • First observedsend_ephemeral
    • First observedsend_message
    • First observedset_canvas_access
    • First observedset_channel_topic
    • First observedset_list_access
    • First observedshare_file
    • First observedunpin_message
    • First observedupdate_list
    • First observedupdate_list_item
    • First observedupdate_message
    • First observedupload_file

TDQS

B3.4/5.0

Scored across 64 tools

Disambiguation5/5

Each tool pairs a distinct resource with a clear action, spanning channels, messages, users, files, reminders, canvases, and lists. Close pairs like list_channels/list_user_channels and create_canvas/create_channel_canvas are clearly differentiated by their descriptions and target nouns.

Naming Consistency4/5

The vast majority of tools follow a consistent verb_noun snake_case pattern, such as list_channels, create_channel, send_message, and delete_file. Minor deviations like send_ephemeral, open_dm, auth_test, reply_in_thread, markdown_to_canvas, and markdown_to_list slightly break the pattern but remain readable and predictable.

Tool Count1/5

With 64 tools, the server far exceeds the well-scoped 3-15 range and even crosses the 50+ extreme threshold. While Slack has a large API surface, exposing this many endpoints in one MCP server creates a heavy, overwhelming toolset for agents to navigate.

Completeness4/5

The tool surface covers most major Slack domains: channels, messages, threads, files, users, reminders, bookmarks, scheduled messages, canvases, and lists. Common missing operations like listing pinned messages, getting a single message, leaving a channel, or renaming a channel are notable gaps but can usually be worked around.

Maintenance

ActivityStale
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers