@guildai-services/guildai~slack package provides agents with access to the Slack Web API through Guild’s OAuth integration.
Authentication
- Type: OAuth 2.0
- Token management: Slack tokens don’t expire — no refresh needed
Setup
OAuth scopes
| Category | Scopes |
|---|---|
| Channels | channels:history, channels:join, channels:manage, channels:read |
| Groups | groups:history, groups:read, groups:write |
| Direct messages | im:history, im:read |
| Group DMs | mpim:history, mpim:read |
| Messages | chat:write, app_mentions:read |
| Files | files:read, files:write |
| Reactions | reactions:read, reactions:write |
| Users | users:read, users:read.email, users.profile:read |
| User groups | usergroups:read, usergroups:write |
| Team | team:read |
Usage
Selecting specific tools
Agents perform better with fewer tools. Usepick() to include only what your agent needs. Tools are named with the slack_ prefix — for example, chat_post_message becomes slack_chat_post_message.
API endpoints
Messages
Messages
| Operation | Method | Path |
|---|---|---|
chat_post_message | POST | /chat.postMessage |
chat_update | POST | /chat.update |
chat_delete | POST | /chat.delete |
chat_post_ephemeral | POST | /chat.postEphemeral |
chat_schedule_message | POST | /chat.scheduleMessage |
chat_scheduled_messages_list | GET | /chat.scheduledMessages.list |
chat_delete_scheduled_message | POST | /chat.deleteScheduledMessage |
chat_get_permalink | GET | /chat.getPermalink |
Conversations
Conversations
| Operation | Method | Path |
|---|---|---|
conversations_list | GET | /conversations.list |
conversations_info | GET | /conversations.info |
conversations_history | GET | /conversations.history |
conversations_replies | GET | /conversations.replies |
conversations_members | GET | /conversations.members |
conversations_join | POST | /conversations.join |
conversations_leave | POST | /conversations.leave |
conversations_invite | POST | /conversations.invite |
conversations_archive | POST | /conversations.archive |
conversations_unarchive | POST | /conversations.unarchive |
conversations_set_topic | POST | /conversations.setTopic |
conversations_set_purpose | POST | /conversations.setPurpose |
Reactions
Reactions
| Operation | Method | Path |
|---|---|---|
reactions_add | POST | /reactions.add |
reactions_get | GET | /reactions.get |
reactions_list | GET | /reactions.list |
reactions_remove | POST | /reactions.remove |
Files
Files
| Operation | Method | Path |
|---|---|---|
files_info | GET | /files.info |
files_delete | POST | /files.delete |
Pins
Pins
| Operation | Method | Path |
|---|---|---|
pins_add | POST | /pins.add |
pins_list | GET | /pins.list |
pins_remove | POST | /pins.remove |
Reminders
Reminders
| Operation | Method | Path |
|---|---|---|
reminders_add | POST | /reminders.add |
reminders_complete | POST | /reminders.complete |
reminders_delete | POST | /reminders.delete |
reminders_list | GET | /reminders.list |
Users
Users
| Operation | Method | Path |
|---|---|---|
users_info | GET | /users.info |
users_list | GET | /users.list |
users_lookup_by_email | GET | /users.lookupByEmail |
users_profile_get | GET | /users.profile.get |
User groups
User groups
| Operation | Method | Path |
|---|---|---|
usergroups_create | POST | /usergroups.create |
usergroups_list | GET | /usergroups.list |
usergroups_update | POST | /usergroups.update |
usergroups_users_list | GET | /usergroups.users.list |
usergroups_users_update | POST | /usergroups.users.update |
Team
Team
| Operation | Method | Path |
|---|---|---|
team_info | GET | /team.info |
emoji_list | GET | /emoji.list |
bots_info | GET | /bots.info |
Webhook events
Slack uses an app-scoped webhook model — a single webhook receives all events and Guild routes them to matching triggers.| Event | Description |
|---|---|
app_mention | The Guild bot is mentioned in a channel |
message | A message is posted in a channel the bot is in |
reaction_added | A reaction is added to a message |
reaction_removed | A reaction is removed from a message |
member_joined_channel | A user joins a channel |
channel_created | A new channel is created |
channel_ids in the service configuration. Messages sent by the Guild bot itself are automatically excluded to prevent feedback loops.
Limitations
- The bot must be invited to channels to receive
messageevents (exceptapp_mention, which works without an invite) - If the app is uninstalled from the workspace, credentials must be reconnected in Guild