Skip to main content
Glama

Edit a Slack message

edit_message
DestructiveIdempotent

Replace the content of a Slack message the bot posted, identified by channel and timestamp. New text, blocks, and context fully overwrite the old content, so resend any details you want to keep.

Instructions

Replace the content of a message the bot posted, identified by channel and ts (as returned by send_message). Slack only lets a bot edit its own messages. The new text, context and blocks fully replace the old content, so resend any context you want to keep.

Input Schema

NameRequiredDescriptionDefault
tsYesTimestamp of the bot's message to edit
textYesNew message content. When `blocks` is set, this is only the notification/fallback text
blocksNoCustom Slack Block Kit blocks (https://docs.slack.dev/reference/block-kit/blocks), e.g. header, section with fields, image, markdown, context, divider. Replaces the rendered `text`; `context` is still appended. Do not use interactive elements (buttons, menus): this server does not handle clicks.
formatNomarkdown: standard Markdown rendered by Slack. plain: sent as-ismarkdown
channelYesChannel ID, #channel-name, or user (ID, @handle, email) for a DM
contextNoSmall grey details shown under a divider at the bottom of the message, joined with ·. Example: [{label:"Jira", value:"VEC-123", url:"https://…"}, {label:"Comment", value:"#4521", url:"https://…"}]

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.1

TDQS

A4.6/5.0
Behavior5/5

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

Goes beyond the annotations' destructiveHint=true by explaining exactly what is destroyed: text, context and blocks fully replace the old content, so callers must resend anything they want kept. It also discloses the Slack-side permission restriction that the bot can only edit its own messages — an auth constraint neither the schema nor annotations carry.

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 sentences, front-loaded with the action and identity, then the permission caveat, then the replacement warning. No filler and nothing repeated from the schema verbatim.

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 mutation tool with no output schema, it covers the essentials: what it mutates, what is lost, and who is allowed to call it. Failure modes (invalid ts, editing another user's message) and the resulting edit timestamp are not addressed, though those are secondary.

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 description coverage is already 100%, so baseline is 3; the description adds cross-parameter semantics the schema only partly implies — that text, context and blocks jointly overwrite rather than merge, and that ts must originate from send_message. It does not touch the format parameter, which the schema already covers.

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 ('Replace the content of a message') and pins down the identifier ('channel and ts, as returned by send_message'). That naming distinguishes it cleanly from send_message, delete_message and reactions_* siblings.

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 a clear precondition — the bot may only edit messages it posted — and tells the agent where the ts comes from ('as returned by send_message'). It does not explicitly contrast with delete_message or with sending a fresh message, but the context is unambiguous.

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