Search slack

Answers a workspace question: POST /v1/provider/slack/search.

POST /v1/provider/slack/search

Addresshttps://api.hanzo.ai/v1/provider/slack/search
MethodPOST
Operationpost_provider_slack_search
AuthAuthorization: Bearer $HANZO_API_KEY

Answers a workspace question: POST /v1/provider/slack/search.

Slack's search.messages wants a USER token for a person's own view of a workspace; a bot token searches what the app can see. Whichever the install granted, the token custodied for this org is the one sent.

Request

3 fields, body application/json (required).

FieldInTypeRequiredDescription
countbodyinteger (int64)—Count bounds the page, 1-100.
pagebodyinteger (int64)—Page is the 1-based page of results.
querybodystring—Query is Slack's own search syntax — bare words, or in:#channel, from:@someone, before:2026-09-01, has:link.

Response

StatusBodyMeaning
200provider.slackSearchOutok
defaultproblem-detailsrefused

200 body — 11 fields.

FieldInTypeAlwaysDescription
matchesbodyprovider.slackSearchHit[]—Matches are this page's hits, most relevant first.
matches[].channelbodystring—Channel is the conversation ID the match sits in.
matches[].channel_namebodystring—ChannelName is that conversation's name, when Slack reports one.
matches[].permalinkbodystring—Permalink addresses the message in a browser.
matches[].textbodystring—Text is the matching message's text.
matches[].tsbodystring—TS is the message's exact Slack timestamp, the handle for replying to or reacting to it.
matches[].userbodystring—User is the author's Slack user ID.
matches[].usernamebodystring—Username is the author's display name, when Slack reports one.
pagebodyinteger (int64)—Page is the page these matches came from.
pagesbodyinteger (int64)—Pages is how many pages the query has in total.
totalbodyinteger (int64)—Total is how many messages matched, across every page.

Failure carries the platform error shape — see Errors.

Examples

hanzo provider slack search
import { Configuration, ProviderApi } from 'hanzoai';

const api = new ProviderApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postProviderSlackSearch({ count: 0, page: 0 });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import ProviderApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = ProviderApi(client).post_provider_slack_search(count=0, page=0)
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.ProviderAPI.PostProviderSlackSearch(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, provider_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = provider_api::post_provider_slack_search(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.ProviderApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new ProviderApi(client).postProviderSlackSearch();
curl -X POST https://api.hanzo.ai/v1/provider/slack/search \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "count": 0,
       "page": 0
     }'

MCP reaches provider through the provider tool, which names its 38 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_connections"
         }
       }
     }'

Provider API · All Hanzo APIs · Interactive reference

Was this page useful?