CONNECT APP
Build with Bot for Slack
Communication
- API key
MCP
Give your agent Bot for Slack tools
Every Bot for Slack action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Bot for Slack account for each tool call — you store no tokens.
// 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_bot",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Add Emoji Reaction:
const result = await mcp.callTool({
name: "slack_bot-add-emoji-reaction",
arguments: {
conversation: "Channel",
timestamp: "Message Timestamp",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"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_bot",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Add Emoji Reaction:
result = await session.call_tool("slack_bot-add-emoji-reaction", {
"conversation": "Channel",
"timestamp": "Message Timestamp",
})API PROXY
Call the Bot for Slack API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Bot for Slack API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://slack.com/api/auth.test",
})
// Any allowed Bot for Slack endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://slack.com/api/auth.test
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9zbGFjay5jb20vYXBpL2F1dGgudGVzdA?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Bot for Slack actions from your backend
Connect a user's Bot for Slack account once, then run Add Emoji Reaction on their behalf from your own code — TypeScript, Python, or plain HTTP.
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_bot-add-emoji-reaction",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
slack_bot: { authProvisionId: "apn_xxxxxxx" },
conversation: "Channel",
timestamp: "Message Timestamp",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="slack_bot-add-emoji-reaction",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"slack_bot": {"authProvisionId": "apn_xxxxxxx"},
"conversation": "Channel",
"timestamp": "Message Timestamp",
},
)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_bot-add-emoji-reaction",
"configured_props": {
"slack_bot": { "authProvisionId": "apn_xxxxxxx" },
"conversation": "Channel",
"timestamp": "Message Timestamp"
}
}'TOOLS
Bot for Slack actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Add Emoji Reaction
actionAdd an emoji reaction to a message. See the documentationWritev0.0.3 -
Archive Channel
actionArchive a channel (Bot). See the documentationWritev0.0.5 -
Create a Channel
actionCreate a new channel (Bot). See the documentationWritev0.0.5 -
Delete File
actionDelete a file (Bot). See the documentationWritev0.0.5 -
Delete Message
actionDelete a message (Bot). See the documentationWritev0.0.5 -
Find User by Email
actionFind a user by matching against their email (Bot). See the documentationWritev0.0.5 -
Get File
actionReturn information about a file (Bot). See the documentationWritev0.0.5 -
Invite User to Channel
actionInvite a user to an existing channel (Bot). See the documentationWritev0.0.5 -
List Channels
actionReturn a list of all channels in a workspace (Bot). See the documentationWritev0.0.5 -
List Files
actionReturn a list of files within a team (Bot). See the documentationWritev0.0.5 -
List Group Members
actionList all users in a User Group (Bot). See the documentationWritev0.0.3 -
List Members in Channel
actionRetrieve members of a channel (Bot). See the documentationWritev0.0.5 -
List Replies
actionRetrieve a thread of messages posted to a conversation (Bot). See the documentationWritev0.0.6 -
List Users
actionReturn a list of all users in a workspace (Bot). See the documentationWritev0.0.5 -
Reply to a Message Thread
actionSend a message as a threaded reply (Bot). See postMessage or scheduleMessage docs hereWritev0.0.6 -
Send a Large Message (3000+ characters)
actionSend a large message (more than 3000 characters) to a channel, group or user (Bot). See postMessage or scheduleMessage docs hereWritev0.0.6 -
Send Message
actionSend a message to a user, group, private channel or public channel (Bot). See postMessage or scheduleMessage docs hereWritev0.0.5 -
Send Message (Advanced)
actionCustomize advanced setttings and send a message to a channel, group or user (Bot). See postMessage or scheduleMessage docs hereWritev0.0.6 -
Send Message Using Block Kit
actionSend a message using Slack's Block Kit UI framework to a channel, group or user (Bot). See postMessage or scheduleMessage docs hereWritev0.0.2 -
Set Channel Description
actionChange the description or purpose of a channel (Bot). See the documentationWritev0.0.3 -
Set Channel Topic
actionSet the topic on a selected channel (Bot). See the documentationWritev0.0.5 -
Update Groups Members
actionUpdate the list of users for a User Group (Bot). See docs hereWritev0.0.3 -
Update Message
actionUpdate a message (Bot). See the documentationWritev0.0.5 -
Upload File
actionUpload a file (Bot). See the documentationWritev0.0.6
EVENTS
Bot for Slack triggers
Event sources your backend can deploy for users and receive through a webhook.
-
New Direct Message
triggerEmit new event when a message is posted in a direct message channel (Bot). To open a conversation, use the Pipedream Action "Send a Direct Message" to send a message from the Bot, or enable direct messages to the Bot in your App Settings (Settings->App Home->Show Tabs->Messages Tab), and send a direct message to the Bot.v0.0.5 -
New Message In Channel
triggerEmit new event when a new message is posted to a public, private or group channel (Bot)v0.0.6
MULTI-APP
Use Bot for Slack with other popular apps
Most products don't stop at one integration. Pair Bot for Slack with the other apps your users rely on, and ship use cases that span both.
- App slug
- slack_bot
- Authentication
- API key
- Categories
- Communication
- Actions
- 24
- Triggers
- 2
- API proxy
- Available