> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toolshed.philo.ventures/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack Plugin

> Slack messaging operations.

**Plugin ID:** `slack` | **Auth:** OAuth2 (provider id `slack`) | **Scopes:** `channels:read`, `chat:write`, `groups:read`

Handlers call Slack's Web API at `https://slack.com/api/<method>`. List uses `conversations.list` with `types=public_channel,private_channel` and `exclude_archived=true`; post uses `chat.postMessage` and respects `thread_ts` when supplied. The destructive `messages.post` tool elicits user approval before sending — denied approvals throw before any API call is made.

## Tools

### slack.channels.list

**Name:** List Channels

List Slack channels accessible to the bot.

| Parameter | Type      | Required | Default | Description            |
| --------- | --------- | -------- | ------- | ---------------------- |
| `limit`   | `integer` | No       | `50`    | Max channels to return |

**Output:**

```json theme={null}
{
  "channels": [
    {
      "id": "C01ABC23DEF",
      "name": "engineering",
      "topic": "Engineering discussions",
      "memberCount": 42
    }
  ]
}
```

***

### slack.messages.post

**Name:** Post Message | **Destructive:** No

Post a new message to a Slack channel via `chat.postMessage`. Additive write —
creates new content; does not delete or overwrite existing data. The MCP host
presents the tool call to the user for approval before invoking.

| Parameter  | Type     | Required | Description                                                                                                                                                           |
| ---------- | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `channel`  | `string` | Yes      | Channel ID (e.g. `C0123456789`, preferred) or channel name with leading `#` (e.g. `#general`). Bare names without `#` are rejected by Slack with `channel_not_found`. |
| `text`     | `string` | Yes      | Message body. Must be non-empty (Slack returns `no_text` otherwise).                                                                                                  |
| `threadTs` | `string` | No       | Parent message `ts` to reply in-thread.                                                                                                                               |

**Output:**

```json theme={null}
{
  "ts": "1705312800.000100",
  "channel": "C01ABC23DEF"
}
```
