IM
Slack
API integration
Ship IM features without building the integration. Full Slack API access via Proxy, normalized data through Unified APIs, and 40+ MCP-ready tools for AI agents — all extensible to your exact use case.
Talk to usUse Cases
Why integrate with Slack
Common scenarios for SaaS companies building Slack integrations for their customers.
Push contextual alerts and notifications into Slack channels
SaaS platforms can deliver real-time notifications — like deal updates, ticket escalations, or deployment failures — directly into the Slack channels their customers already monitor, reducing context switching and improving response times.
Resolve user identities across platforms via email lookup
By mapping a user's email address to their Slack user ID, SaaS products can send targeted DMs or @mentions to the right person — enabling personalized notifications like assigning a lead owner or paging an on-call engineer.
Sync Slack conversation history back into your system of record
Support, CRM, and incident management platforms can pull threaded Slack discussions and channel history to keep their own records complete — capturing the informal decisions and context that happen in chat but never make it into the ticket or deal.
Automate channel lifecycle management for structured collaboration
SaaS products can programmatically create dedicated Slack channels for deals, incidents, or onboarding cohorts, join relevant bots or service accounts, and archive channels when the workflow concludes — all without manual setup by end users.
Deliver files and reports natively inside Slack
Analytics, BI, and compliance platforms can upload generated PDFs, CSV exports, or screenshots directly into Slack channels using the file upload endpoints, eliminating the need for users to log into a separate dashboard.
What You Can Build
Ship these features with Truto + Slack
Concrete product features your team can ship faster by leveraging Truto’s Slack integration instead of building from scratch.
Deal Room auto-provisioning
Automatically create a Slack channel for each new enterprise deal, look up the account team by email, open DMs to invite them, and post a rich kickoff message with deal context using the conversations and chat APIs.
Threaded ticket sync for support platforms
Post a parent message when a support ticket is created, push status updates as threaded replies, and pull conversation replies back into the helpdesk as internal notes to maintain a complete audit trail.
Targeted user notifications via email-to-Slack resolution
Use the email lookup endpoint to resolve a user's Slack ID, open a direct message channel, and send them a private, actionable notification — like a task assignment or approval request — without requiring manual Slack ID configuration.
Incident alerting with attached evidence
When an alert fires, post a message to an ops channel, upload a screenshot or log file via the external file upload flow, and later fetch the channel's conversation history to auto-generate an incident timeline.
Workspace user directory sync
Pull the full list of Slack workspace users and their profiles into your product's user directory to power features like access reviews, license optimization, or cross-referencing active employees against your own user base.
Slack workspace search integration
Let your users search across their Slack workspace's messages and files from within your product's UI, using the search endpoint to surface relevant conversations tied to a customer, project, or incident.
SuperAI
Slack AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_slack_users
Get a list of all users in the Slack workspace. Returns user objects including id, team_id, name, deleted status, real_name, timezone info, profile with email and images, admin and bot flags.
get_single_slack_user_by_id
Get information about a specific user in Slack by user id. Returns user fields including id, team_id, name, real_name, timezone info, profile details (avatar, status, email, images), and admin/owner flags.
list_all_slack_team_billable_info
Get billable users information for the current team in Slack. Returns billing_active status for each user indicating billing eligibility per Slack's Fair Billing policy.
get_single_slack_team_billable_info_by_id
Get billable users information for the current team in Slack. Returns billing_active status per user indicating eligibility for billing under Slack's Fair Billing policy.
list_all_slack_team_access_logs
Get access logs for the current team in Slack. Returns user_id, username, date_first, date_last, count, ip, user_agent, isp, country, and region for each access log entry.
list_all_slack_search
Search messages and files matching query in Slack. Requires query parameter. Returns matches with details like channel, user, text, timestamp, and file info if applicable.
list_all_slack_me
Use this endpoint to retrieve profile information for the authenticated user in Slack. It returns details such as user ID, name, email, timezone, and profile metadata. This is typically used to display or manage the current user's information.
list_all_slack_conversations
Get a list of all channel-like conversations in Slack. Returns channels with fields like id, name, is_channel, is_group, is_im, created, creator, is_archived, is_general, topic, purpose, and num_members.
slack_conversations_join
Join an existing conversation by channel in Slack. Requires channel. Returns the conversation object including id, name, is_channel, is_member, topic, and purpose fields.
create_a_slack_chat
Send a message to a channel in Slack. Requires channel and at least one of text, attachments, or blocks. Returns message object including text, username, attachments, type, subtype, and timestamp (ts).
delete_a_slack_chat_by_id
Delete a message in Slack by specifying channel and ts. Returns channel and ts of the deleted message.
update_a_slack_chat_by_id
Update a message in Slack channel using channel and ts. Returns updated message text, user, channel, and timestamp.
list_all_slack_conversation_replies
Get a thread of messages in a conversation in Slack by channel and ts. Returns messages array with fields like type, user, text, thread_ts, reply_count, subscribed, last_read, unread_count, and ts.
list_all_slack_conversation_history
Get message history for a conversation in Slack by channel. Requires channel. Returns messages array with message type, user, text, and timestamp fields.
list_all_slack_teams
Get information about the current team in Slack. Requires token. Returns team id, name, domain, email_domain, icon images, enterprise_id, and enterprise_name.
list_all_slack_team_billing_info
Get workspace billing plan information in Slack. Returns the plan type in the response under the 'plan' field, indicating the workspace's billing plan such as free, pro, or enterprise.
create_a_slack_conversations_open
Open or resume a direct message or multi-person direct message in Slack. Requires token. Returns channel id and, if return_im is true, full channel details including created, is_im, user, last_read, unread_count, and is_open.
list_all_slack_files
List files filtered by channel, user, team_id, types, ts_from, ts_to, and show_files_hidden_by_limit in Slack. Returns file objects including id, name, mimetype, user, size, url_private, permalink, and channels.
get_single_slack_file_by_id
Get information about a specific file in Slack by file. Returns file object with id, name, mimetype, user, size, url_private, permalink, comments_count, and shares.
slack_files_get_upload_url_external
Get an external upload URL and file ID for uploading a file in Slack. Requires filename and length. Returns upload_url for file upload and file_id identifying the file.
slack_files_complete_upload_external
Complete upload of external files with required files array in Slack. Returns file id and title in response. If channel_id is omitted, file remains private. This method finalizes upload started with files.getUploadURLExternal and can only be called once.
create_a_slack_file
Use this endpoint to upload and create a file in Slack, making it available for sharing within the workspace.
list_all_slack_lookup_by_email
Get user information by email in Slack. Requires email. Returns user fields including id, team_id, name, real_name, profile with email and images, is_admin, and other status flags.
create_a_slack_list
Create a new Slack List. Requires name. Optionally define columns via schema, or copy an existing List with copy_from_list_id. Returns list_id and list_metadata (schema and subtask_schema). Lists are only available on paid Slack plans.
update_a_slack_list_by_id
Update a Slack List's name, description, or todo mode by List ID. The id path parameter is the List ID. Returns ok on success.
list_all_slack_lists
List Slack Lists visible to the token, using files.list filtered to Lists. Returns List file objects with id (use it as list_id for list items and other List methods), title, created, user, channels, permalink, list_limits (row_count, column_count) and list_metadata (schema with column ids, names, types and select options, plus views). Includes list templates (filetype list_template).
list_all_slack_list_items
List items (rows) in a Slack List. Requires list_id. Returns items, each with id, list_id, date_created, created_by, updated_timestamp, and fields (per-column values with column_id, key, value, and typed values such as text, select, user, date).
get_single_slack_list_item_by_id
Get a single item (row) from a Slack List by item ID. Requires list_id. Returns the record with its fields, timestamps and creator.
create_a_slack_list_item
Create a new item (row) in a Slack List. Requires list_id. Set initial cell values with initial_fields, duplicate an item with duplicated_item_id, or create a subtask with parent_item_id. Returns the created item with id, list_id and fields.
slack_list_items_update_cells
Update cells of one or more items in a Slack List. Requires list_id and cells (1 to 100). Each cell names the row_id and column_id plus a typed value. Can also create a row by passing row_id_to_create: true in a cell. Returns ok on success.
delete_a_slack_list_item_by_id
Delete a single item (row) from a Slack List by item ID. Requires list_id. Returns ok on success.
slack_list_items_delete_multiple
Delete multiple items (rows) from a Slack List at once. Requires list_id and ids. Returns ok on success.
slack_list_access_set
Grant or change access to a Slack List for channels or users. Requires list_id and access_level, plus either channel_ids or user_ids. Returns ok on success.
slack_list_access_revoke
Revoke access to a Slack List from channels or users. Requires list_id plus either channel_ids or user_ids. Returns ok on success.
create_a_slack_list_download
Start an export job for a Slack List. Requires list_id. Returns job_id; poll the get method with that job_id until status is COMPLETED to obtain download_url.
get_single_slack_list_download_by_id
Get the status of a Slack List export job by job ID (from the create method). Requires list_id. Returns status (e.g. COMPLETED) and download_url once ready.
create_a_slack_canvas
Create a standalone Slack canvas, optionally with a title and markdown content. Returns canvas_id. On free Slack plans, channel_id is required and the canvas is added as a channel tab.
get_single_slack_canvas_by_id
Get a Slack canvas's file metadata by canvas ID (the canvas's file ID), using files.info. Returns the file object with id, title, name, created, user, filetype (canvas), permalink and url_private. The canvas body is not returned inline; download it from url_private.
update_a_slack_canvas_by_id
Edit a Slack canvas by canvas ID. Send exactly one change in changes: insert_at_start, insert_at_end, insert_before, insert_after, replace, delete, or rename. Use lookup-sections to find section_id values first. Returns ok on success.
delete_a_slack_canvas_by_id
Permanently delete a Slack canvas by canvas ID. This cannot be undone. Returns ok on success.
slack_canvases_lookup_sections
Find sections of a Slack canvas that match criteria (section types and/or text), to get section IDs for editing. Requires canvas_id and criteria. Returns sections, an array of objects with id.
list_all_slack_canvases
List Slack canvases visible to the token, using files.list filtered to canvases. Returns canvas file objects with id (use as the canvas id for get, update, delete, lookup-sections and canvas access), title, created, updated, user, channels, access, editors and permalink. Canvas content is not included; fetch it from url_private.
slack_canvas_access_set
Grant or change access to a Slack canvas for up to 20 channels or users. Requires canvas_id and access_level, plus either channel_ids or user_ids. Returns ok on success.
slack_canvas_access_revoke
Remove access to a Slack canvas from channels or users. Requires canvas_id plus either channel_ids or user_ids. Does not work for DMs or group DMs. Returns ok on success.
create_a_slack_channel_canvas
Create the channel canvas (the canvas tabbed in a channel) for a Slack channel. Requires channel_id; fails if the channel already has a channel canvas. Returns canvas_id.
Why Truto
Why use Truto’s MCP server for Slack
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for Slack
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified Instant Messaging API
Attachments
Attachments are files or links that are attached to messages in the source application.
Channels
Channels are a way to group the communication happening between users in the source application. Channels can be used for group messaging, team messaging, etc.
Members
Members are users, apps, bots and integrations part of the organization. To differentiate between the type of member, use the `type` attribute.
Messages
Messages are the communication between users in the source application.
Unified User Directory API
Activities
Activities are the actions performed by users in the source application.
Groups
Groups are a collection of users in the source application. In some applications, they might also be called Teams.
Me
Roles
The Role object represents a role of a User.
Users
The User object represents a User.
Unified Search API
Search
Search endpoint for all the apps.
How It Works
From zero to integrated
Go live with Slack in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Slack account
Use Truto’s frontend SDK to connect your customer’s Slack account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Slack
Truto’s Proxy API is a 1-to-1 mapping of the Slack API. You call us, we call Slack, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Slack’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Slack on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What authentication method does Truto use for Slack integrations?
Slack integrations through Truto use OAuth 2.0. Your end users authorize their Slack workspace through Truto's managed auth flow, and Truto handles token storage, refresh, and lifecycle management so you never deal with credentials directly.
How do I send a message to a specific Slack user if I only have their email?
Use the list_all_slack_lookup_by_email endpoint to resolve the email to a Slack user ID, then call create_a_slack_conversations_open to open a DM channel with that user, and finally use create_a_slack_chat to post your message into that channel.
Can I read threaded replies and full channel history?
Yes. Use list_all_slack_conversation_history to retrieve messages from any channel the authorized bot or user has access to, and list_all_slack_conversation_replies to fetch all replies within a specific thread by its parent message timestamp.
Does Truto handle Slack's pagination and rate limits?
Yes. Truto abstracts away cursor-based pagination across list endpoints and manages rate limit handling, so you can iterate over large result sets — like full user directories or lengthy conversation histories — without implementing retry logic yourself.
Which Unified APIs does the Slack integration support?
Slack is mapped to three Unified APIs: the Unified Instant Messaging API (covering Channels, Members, Messages, and Attachments), the Unified User Directory API (covering Users, Me, Groups, Roles, and Activities), and the Unified Search API.
How do file uploads work through the Slack integration?
Slack uses a two-step external upload flow. First, call slack_files_get_upload_url_external to get a pre-signed upload URL, upload your file to that URL, then call slack_files_complete_upload_external to finalize the upload and attach it to a channel or message.
From the Blog
Slack integration guides
Deep dives, architecture guides, and practical tutorials for building Slack integrations.
Slack
Get Slack integrated into your app
Our team understands what it takes to make a Slack integration successful. A short, crisp 30 minute call with folks who understand the problem.