View as Markdown
Slack icon

Slack ACTION

Search

Search Slack messages, files, channels, and users using the Real-Time Search API. Supports keyword and semantic search across public and private channels. Use Get User Details first to find your user ID for filtering by 'my' messages. Set contentTypes to choose what to search: any combination of messages (default), files, channels, users. Returns a single array; each item has a content_type of message, file, channel, or user. Messages include channel context, timestamps, and permalinks; files, channels, and users are returned as Slack sends them (files include file_id, title, file_type, author_name, date_created, permalink, and extracted content; channels additionally include channel_id, extracted from permalink for use with other channel actions). Max Results applies per content type, so selecting more types can return proportionally more items. Max Results is capped at 100. Paging for a content type stops as soon as a page returns fewer than a full page of it, and paging overall stops after a fixed page budget, so a sparse type can come back with fewer than Max Results. User mentions come back in the canonical <@U123> form; echo it verbatim to post a real mention. Display names are returned separately as mentions, an array of { id, name } objects, omitted when no mention carried a name. Do NOT splice a name back inline: Slack renders <@U123|Name> as literal text, not a mention. See the documentation
  • Action
  • Read only
  • OAuth
  • SDK
  • MCP

IMPLEMENTATION

Call this tool

Connect a user's Slack account once, then configure and run Search 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-search",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    slack_v2: { authProvisionId: "apn_xxxxxxx" },
    query: "Query",
    channelTypes: "Channel Types",
  },
})

console.log(result)

SCHEMA

Inputs

Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.

Search inputs
Property Type Description
query Query string
The search query. Supports Slack search syntax — e.g. from:@user, in:#channel, before:2025-01-01.
Required
channelTypes Channel Types string
Comma-separated channel types to search. Default: public_channel,private_channel.
Optional
contentTypes Content Types string[]
Which kinds of results to return. Select any combination of messages, files, channels, users, e.g. ["messages", "files"]. Default: messages.
Optional
limit Max Results integer
Maximum number of results to return per content type, up to 100, e.g. 20.
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-search
Version
0.2.1
App
Slack
Authentication
OAuth
Read-only
Yes
Destructive
No
Open world
Yes