Skip to main content
Glama
oviron

slack-personal-mcp

by oviron

slack_send_message

Send a Slack message as yourself using a personal token, avoiding bot badges. Enforces plain ASCII and blocks AI phrasing before sending.

Instructions

Post a Slack message AS THE USER (no app badge), via personal user token. Style gate (enforced before send unless SLACK_STYLE_GATE=off): no AI typography (em/en dash, ellipsis char, curly quotes, nbsp, bullet) - use plain ASCII; no AI-slop phrases; no concrete promises/deadlines unless allow_promise=true. Write short and plain, in the user's own voice and language. workspace: explicit alias from slack_list_workspaces. channel_id: C.../G.../D..., or a user id U... to write into the DM with that person (needs im:write). thread_ts: reply in a thread. reply_broadcast: with thread_ts, also show the reply in the channel. format: markdown (default; standard Markdown, up to 12,000 chars) or mrkdwn (Slack's own: bold, <url|label>). unfurl_links: show link previews (off by default).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYes
formatNomarkdown
thread_tsNo
workspaceYes
channel_idYes
unfurl_linksNo
allow_promiseNo
reply_broadcastNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.3

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the generic write/open-world/non-idempotent profile; the description adds genuinely non-obvious behavior: the message posts under the user's identity with no app badge, a style gate actively rewrites or blocks output unless SLACK_STYLE_GATE=off, promises are blocked unless allow_promise=true, and unfurls are off by default. These are exactly the side effects an agent must know before calling.

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

Conciseness4/5

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

Front-loaded with identity and scope, then per-parameter guidance in a tight run of fragments; little is wasted. The style-gate block is dense and reads as one long sentence chain rather than clearly delimited rules, which slightly slows scanning.

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

Completeness4/5

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

With an output schema present, return values needn't be explained, and all six non-obvious parameters are covered. What's missing is failure behavior: what an agent sees when the style gate rejects a message, and whether any rate limiting applies to high-volume posting.

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 carries the full burden and does: it defines workspace provenance, the three channel_id id classes including the U→DM case, thread_ts for threaded replies, reply_broadcast as 'also show in channel,' format options with length/charset differences, unfurl_links default, and allow_promise semantics. Only 'text' is left implicit, which is self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

States a specific verb and resource ('Post a Slack message') plus the distinguishing scope 'AS THE USER (no app badge), via personal user token,' which separates it from sibling send paths. An agent can tell this apart from slack_schedule_message or slack_edit_message without inspecting schemas.

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

Usage Guidelines4/5

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

Gives concrete routing guidance: workspace must be an explicit alias from slack_list_workspaces, channel_id accepts C/G/D ids or a U id to open a DM (requiring im:write), and reply_broadcast only applies with thread_ts. It stops short of explicitly naming when to prefer slack_schedule_message over an immediate send, so it's strong context without full alternative routing.

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