Slack ACTION
Post Message
Send a message to a channel, user, or group. Accepts a channel ID (e.g.
C1234567890) or channel name (e.g. #general or general) — names are resolved automatically. To post a note to yourself (save a personal note or reminder), pass your own user ID (e.g. U1234567890) as the Channel — use Get Current User to find your user ID first. To reply to a thread, provide threadTs (Slack calls this thread_ts) from Get Channel History. Supports plain text with Slack mrkdwn formatting and Block Kit blocks. Posts as the authenticated user by default; set sendAsBot to true to post as the Slack app's bot user instead. See the documentation- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Slack account once, then configure and run Post Message from your backend or agent.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "slack_v2-post-message",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
slack_v2: { authProvisionId: "apn_xxxxxxx" },
channel: "Channel",
text: "Text",
},
})
console.log(result)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "slack_v2-post-message",
"configured_props": {
"slack_v2": { "authProvisionId": "apn_xxxxxxx" },
"channel": "Channel",
"text": "Text"
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "slack_v2",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "slack_v2-post-message",
arguments: {
channel: "Channel",
text: "Text",
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
channel Channel | string | Channel ID (e.g. C1234567890), channel name (e.g. general or #general), user ID, or group ID. Channel names are resolved to IDs automatically. Required |
text Text | string | The message text. Supports Slack mrkdwn formatting (e.g. *bold*, _italic_, <https://example.com|link>). To mention a user, use <@U123> with their user ID. Do NOT append a display name after a pipe: Slack renders <@U123|Name> as literal text, not a mention. Required |
blocks Blocks | string | JSON array of Block Kit blocks for rich message layouts. Example: [{"type":"section","text":{"type":"mrkdwn","text":"Hello from Pipedream"}}]. Optional |
threadTs Thread Timestamp | string | The ts of a parent message to reply to. If provided, the message is posted as a threaded reply. Optional |
replyBroadcast Reply Broadcast | boolean | When replying to a thread, set to true to also post the reply to the channel. Optional |
unfurlLinks Unfurl Links | boolean | Enable unfurling of text-based content (URLs). Optional |
unfurlMedia Unfurl Media | boolean | Enable unfurling of media content. Optional |
mrkdwn Parse Markdown | boolean | Set to false to disable Slack mrkdwn parsing. Optional |
sendAsBot Send as Bot | boolean | Set to true to post the message as the Slack app's bot user instead of the authenticated user. The app is added to the channel automatically if it is not already a member (not possible for DMs). The bot cannot DM a user who has not opened its Messages tab. Defaults to false (posts as the authenticated user). Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- slack_v2-post-message
- Version
- 0.1.0
- App
- Slack
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗