slackapi / slackapi/slack-skills-plugin

Feature: Add `slack_update_draft` and `slack_delete_draft` MCP tools

Open
#93 5 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:mcp enhancement
Dominant language
Python
Stars
132
Forks
34
Avg merge
1d 6h
Merged PRs (30d)
16

Description

Summary

Please expose draft update and delete tools on the hosted Slack MCP server (https://mcp.slack.com/mcp), alongside the existing create path (slack_send_message_draft).

Today agents can create a draft for review, but cannot revise or discard it via MCP without either:

  • asking the human to delete it in Slack Drafts & Sent, then creating again, or
  • sending via slack_send_message with draft_id (deletes only as a side effect of sending).

Current surface

Capability Tool
Create draft slack_send_message_draft
Delete draft without sending ❌ none
Update draft text in place ❌ none
Delete draft after send slack_send_message optional draft_id

Proposed tools

slack_update_draft
  • Inputs: draft_id (required), message (required), optionally channel_id / thread_ts if needed for validation
  • Behavior: Replace the body of an existing unsent draft; return the same draft_id + channel link
  • Errors: draft_not_found, channel_not_found, auth failures
slack_delete_draft
  • Inputs: draft_id (required), optionally channel_id
  • Behavior: Discard an unsent draft without posting
  • Errors: draft_not_found, auth failures

Motivation

Agent workflows routinely prepare a draft for human review, then iterate on wording before send. Without update/delete:

  1. Duplicate creates are unsafe (see companion bug: false success when a draft already exists).
  2. Humans must manually delete drafts in the Slack UI to unblock a rewrite.
  3. The only MCP “delete” path forces sending (draft_id on slack_send_message).

Token / API note

Internal Slack client methods (drafts.update, drafts.delete, drafts.list) reportedly exist but may require client/session token types beyond standard OAuth user tokens used by the MCP. If that is the blocker, please document it on the create tool and keep create’s draft_already_exists behavior honest so agents do not silently no-op.

If OAuth can support update/delete, exposing them would close a large hole in the draft lifecycle for AI clients (Cursor, Claude Code, etc.).

Related

  • Companion bug: slack_send_message_draft returns success when a draft already exists (should draft_already_exists)
  • #18 — draft newline stripping
  • Feature precedent in this repo: other write-tool requests (e.g. status/DND tools)

Fix lives on the hosted MCP at mcp.slack.com; this repo is the public place to track it.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the hosted MCP endpoint and the existing slack_send_message_draft tool, then verify whether the reported drafts.update, drafts.delete, and drafts.list client methods support the OAuth tokens used by MCP. Done means exposing update and delete operations with the specified inputs, draft lifecycle errors, and returned draft link, or documenting the token limitation and honest create behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.