Skip to main content
Glama
shivankj11

slack-file-upload-mcp

by shivankj11

slack_upload_file

Upload a local file to a Slack channel, DM, or thread with an optional message.

Instructions

Upload a local file to a Slack channel, DM, or thread, with an optional message.

This is the piece the Slack MCP is missing: it posts files, not just text. Use it whenever the thing to share lives on disk (a screenshot, CSV, log, PDF) instead of pasting the contents into a message.

Args: file_path: Absolute path to the local file (~ is expanded). Must be a regular, non-empty file. channel: Channel id (C…/G…), DM id (D…), #channel-name, or a user id (U…) to upload into a DM with that person. Prefer the id: resolving a name costs an extra API call and needs channels:read, so a token without it fails with missing_scope — retry with the id, which the Slack MCP's own results already carry. message: Text posted with the file (Slack's initial_comment). Supports Slack mrkdwn — *bold*, _italic_, <url|label>. title: File title shown in Slack. Defaults to the filename. filename: Override the name Slack stores. Defaults to the local basename. thread_ts: Post the file as a reply in this thread instead of the channel root.

Returns: A one-line confirmation with the file id and permalink.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleNo
channelYes
messageNo
filenameNo
file_pathYes
thread_tsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint false, destructiveHint false), the description discloses concrete behavioral traits: name resolution requires an extra API call and channels:read, thread_ts posts as a reply, defaults for title/filename, and the return format (one-line confirmation with file id and permalink). It also warns against non-regular or empty files. No contradiction with 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 front-loaded with the core purpose, followed by a focused usage rationale, then a clearly labeled Args block and a Returns line. Every sentence carries real content—failure modes, defaults, formatting support—with no filler. The structured layout makes it easy to scan.

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

Completeness5/5

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

For a six-parameter tool with a return value, the description covers everything an agent needs to invoke it correctly: parameter formats, defaults, prerequisite permissions, error behavior, and expected output. The output schema exists, but the description still adds the one-line confirmation detail, making the tool fully self-contained.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate—and it does thoroughly. Each of the six parameters gets meaningful semantics: file_path requires absolute path with ~ expansion and a non-empty regular file; channel lists all accepted formats and the ID-preference rationale; message explains Slack mrkdwn support; title and filename have explicit defaults; thread_ts explains posting as a reply.

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 opens with a specific verb and resource: 'Upload a local file to a Slack channel, DM, or thread, with an optional message.' It also frames the tool as 'the piece the Slack MCP is missing,' clearly distinguishing it from text-only posting tools despite having no siblings. The scope and action are unmistakable.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool: 'Use it whenever the thing to share lives on disk (a screenshot, CSV, log, PDF) instead of pasting the contents into a message.' It also gives practical selection guidance on channel IDs vs names, including the extra API call and 'missing_scope' failure mode. This is strong, actionable usage direction.

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

Deploy Server

Other Tools