With Gmail and Slack both connected to OpenCode, the agent can move messages between email and chat and act as a relay your team can talk to. It reads emails and posts the gist into a Slack channel, or takes a Slack request and sends an email on your behalf. The pair lets the agent fan out inbox activity to the right channel and route replies back out by mail.
Pick the operations you want and each becomes a tool the agent can call directly while it works.
Configuration for sending an email
Configuration for reading emails from inbox
Configuration for getting a specific message
Configuration for permanently deleting a message
Configuration for moving a message to trash
Configuration for removing a message from trash
Configuration for modifying message labels
Configuration for replying to an email
Configuration for forwarding an email
Configuration for creating a draft
Configuration for listing drafts
Configuration for getting a specific draft
Configuration for updating a draft
Configuration for deleting a draft
Configuration for sending a draft
Configuration for listing all labels
Configuration for creating a label
Configuration for getting a label
Configuration for updating a label
Configuration for deleting a label
Configuration for listing threads
Configuration for getting a specific thread
Configuration for moving a thread to trash
Configuration for restoring a thread from trash
Configuration for modifying thread labels
Configuration for permanently deleting a thread
Configuration for getting user profile
Post a message to a channel
Update an existing message
Delete a message
Send an ephemeral message (only visible to one user)
Schedule a message for later
Get a permalink URL for a message
List channels in the workspace
Get information about a channel
Get messages from a channel
Get members of a channel
Join a public channel
Leave a channel
Create a new channel
Archive a channel
Unarchive a channel
Invite users to a channel
Remove a user from a channel
Set the topic of a channel
Set the purpose of a channel
Rename a channel
Get thread replies
Open or resume a direct message or multi-person DM
Close a direct message or multi-person DM
Mark a channel as read
List all users in the workspace
Get information about a user
Find a user by their email address
Get a user's presence status
List conversations the calling user may access
Add a bookmark to a channel
Edit an existing bookmark
List bookmarks in a channel
Remove a bookmark from a channel
List user groups in the workspace
Create a new user group
Disable an existing user group
Enable a disabled user group
Update an existing user group
List users in a user group
Update the list of users in a user group
Turn on Do Not Disturb for the current user
End the current user's snooze mode
End the current user's Do Not Disturb session
Get Do Not Disturb status for a user
Get Do Not Disturb status for users on a team
List custom emoji in the workspace
Star a message, file, or channel
Remove a star from an item
List starred items for the current user
Get information about a bot
Create a reminder
Mark a reminder as complete
Delete a reminder
Get information about a reminder
List all reminders for the current user
Add an emoji reaction to a message
Remove an emoji reaction from a message
Get reactions on a message
Pin a message to a channel
Unpin a message from a channel
List pinned items in a channel
List files in the workspace
Get information about a file
Delete a file
Upload a file to Slack
Create a public URL for a file (files.sharedPublicURL)
Revoke public URL for a file (files.revokePublicURL)
Search for messages in the workspace
Search for files in the workspace (search.files)
Search for messages and files (search.all)
Delete a scheduled message (chat.deleteScheduledMessage)
List scheduled messages (chat.scheduledMessages.list)
Share a /me message into a channel (chat.meMessage)
Provide custom unfurl behavior for URLs (chat.unfurl)
Get a user's profile information (users.profile.get)
Set user presence (users.setPresence)
Test authentication and get info about the token
Get information about the workspace
Test the API connection (api.test)
Revoke an OAuth token (auth.revoke)
Uninstall an app from a workspace (apps.uninstall)
Get billable info for team members (team.billableInfo)
Get access logs for the workspace (team.accessLogs)
Get integration logs for the workspace (team.integrationLogs)
Accept a shared channel invite (conversations.acceptSharedInvite)
Decline a shared channel invite (conversations.declineSharedInvite)
List Slack Connect invites (conversations.listConnectInvites)
Get URL for uploading a file externally (files.getUploadURLExternal)
Complete a file upload after uploading to external URL (files.completeUploadExternal)
Set user profile fields (users.profile.set)
Approve an invitation to a Slack Connect channel (conversations.approveSharedInvite)
Invite a user to a Slack Connect channel (conversations.inviteShared)
Add a remote file (files.remote.add)
Remove a remote file (files.remote.remove)
Share a remote file to a channel (files.remote.share)
List remote files (files.remote.list)
List reactions for an item (reactions.list)
Get information about a remote file (files.remote.info)
Update a remote file (files.remote.update)
Delete a file comment (files.comments.delete)
Delete the user's profile photo (users.deletePhoto)
Mark user as active (users.setActive) - Deprecated but still functional
Create a canvas in a channel (conversations.canvases.create)
Set external invite permissions for a channel (conversations.externalInvitePermissions.set)
Approve a Slack Connect invite request (conversations.requestSharedInvite.approve)
Deny a Slack Connect invite request (conversations.requestSharedInvite.deny)
List Slack Connect invite requests (conversations.requestSharedInvite.list)
Get analytics data for a given date (admin.analytics.getFile)
Get logs for app activities (admin.apps.activities.list)
Approve an app for installation (admin.apps.approve)
List approved apps (admin.apps.approved.list)
Clear app resolution (admin.apps.clearResolution)
Look up app config (admin.apps.config.lookup)
Set app config (admin.apps.config.set)
Cancel an app request (admin.apps.requests.cancel)
List app requests (admin.apps.requests.list)
Restrict an app (admin.apps.restrict)
List restricted apps (admin.apps.restricted.list)
Uninstall an app (admin.apps.uninstall)
Get allowed audit anomaly item (admin.audit.anomaly.allow.getItem)
Update allowed audit anomaly item (admin.audit.anomaly.allow.updateItem)
Assign entities to auth policy (admin.auth.policy.assignEntities)
Get entities for auth policy (admin.auth.policy.getEntities)
Remove entities from auth policy (admin.auth.policy.removeEntities)
Create an information barrier (admin.barriers.create)
Delete an information barrier (admin.barriers.delete)
List information barriers (admin.barriers.list)
Update an information barrier (admin.barriers.update)
Archive a conversation (admin.conversations.archive)
Bulk archive conversations (admin.conversations.bulkArchive)
Bulk delete conversations (admin.conversations.bulkDelete)
Bulk move conversations to a team (admin.conversations.bulkMove)
Convert public channel to private (admin.conversations.convertToPrivate)
Convert private channel to public (admin.conversations.convertToPublic)
Create a conversation (admin.conversations.create)
Delete a conversation (admin.conversations.delete)
Disconnect a shared channel (admin.conversations.disconnectShared)
List original connected channel info for EKM (admin.conversations.ekm.listOriginalConnectedChannelInfo)
Get conversation preferences (admin.conversations.getConversationPrefs)
Get custom retention settings (admin.conversations.getCustomRetention)
Get teams for a conversation (admin.conversations.getTeams)
Invite users to a conversation (admin.conversations.invite)
Look up conversations (admin.conversations.lookup)
Remove custom retention settings (admin.conversations.removeCustomRetention)
Rename a conversation (admin.conversations.rename)
Add IDP group to channel (admin.conversations.restrictAccess.addGroup)
List IDP groups for channel (admin.conversations.restrictAccess.listGroups)
Remove IDP group from channel (admin.conversations.restrictAccess.removeGroup)
Search for conversations (admin.conversations.search)
Set conversation preferences (admin.conversations.setConversationPrefs)
Set custom retention settings (admin.conversations.setCustomRetention)
Set teams for a conversation (admin.conversations.setTeams)
Unarchive a conversation (admin.conversations.unarchive)
Add custom emoji (admin.emoji.add)
Add emoji alias (admin.emoji.addAlias)
List custom emoji (admin.emoji.list)
Remove custom emoji (admin.emoji.remove)
Rename custom emoji (admin.emoji.rename)
List functions (admin.functions.list)
Look up function permissions (admin.functions.permissions.lookup)
Set function permissions (admin.functions.permissions.set)
Approve invite request (admin.inviteRequests.approve)
List approved invite requests (admin.inviteRequests.approved.list)
List denied invite requests (admin.inviteRequests.denied.list)
Deny invite request (admin.inviteRequests.deny)
List invite requests (admin.inviteRequests.list)
Add role assignments (admin.roles.addAssignments)
List role assignments (admin.roles.listAssignments)
Remove role assignments (admin.roles.removeAssignments)
List team admins (admin.teams.admins.list)
Create a team (admin.teams.create)
List teams (admin.teams.list)
List team owners (admin.teams.owners.list)
Get team settings info (admin.teams.settings.info)
Set default channels for team (admin.teams.settings.setDefaultChannels)
Set team description (admin.teams.settings.setDescription)
Set team discoverability (admin.teams.settings.setDiscoverability)
Set team icon (admin.teams.settings.setIcon)
Set team name (admin.teams.settings.setName)
Add channels to usergroup (admin.usergroups.addChannels)
Add teams to usergroup (admin.usergroups.addTeams)
List channels in usergroup (admin.usergroups.listChannels)
Remove channels from usergroup (admin.usergroups.removeChannels)
Assign a user to a team (admin.users.assign)
Get expiration for a user (admin.users.getExpiration)
Invite a user to a team (admin.users.invite)
List users in a team (admin.users.list)
Remove a user from a team (admin.users.remove)
Clear session settings (admin.users.session.clearSettings)
Get session settings (admin.users.session.getSettings)
Invalidate user session (admin.users.session.invalidate)
List user sessions (admin.users.session.list)
Reset user session (admin.users.session.reset)
Bulk reset user sessions (admin.users.session.resetBulk)
Set session settings (admin.users.session.setSettings)
Set a user as admin (admin.users.setAdmin)
Set expiration for a user (admin.users.setExpiration)
Set a user as owner (admin.users.setOwner)
Set a user as regular (admin.users.setRegular)
Export unsupported version users (admin.users.unsupportedVersions.export)
Add workflow collaborators (admin.workflows.collaborators.add)
Remove workflow collaborators (admin.workflows.collaborators.remove)
Look up workflow permissions (admin.workflows.permissions.lookup)
Search workflows (admin.workflows.search)
Look up workflow trigger type permissions (admin.workflows.triggers.types.permissions.lookup)
Set workflow trigger type permissions (admin.workflows.triggers.types.permissions.set)
Unpublish a workflow (admin.workflows.unpublish)
OpenCode is an open, model-agnostic command-line coding agent. In NoClick it runs hosted and gains your apps as tools, so it can act on real systems rather than just edit files. Wire an integration into the agent and OpenCode can use that app’s operations directly while it works. It is a flexible choice when you want an open agent with broad model support and real tool access.
NoClick runs OpenCode for you with Gmail and Slack wired in as tools. Connect your account and run.