Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/guides/tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,4 +173,5 @@ When they confirm, start again at [Find the tools](#find-the-tools).
- [Reasoning function format](../reference/reasoning-format.md#tools) has the rules and limits of `tools`.
- [Add a tool server](../self-host/tool-servers.md) is for whoever runs Auto. It adds a server, limits its tools and keeps its key out of the settings file.
- [Use Auto with Apollo](../integrations/apollo.md) connects a function to your business graph as a tool server.
- [Connect Zoom](../integrations/zoom.md) and [Connect Slack](../integrations/slack.md) let a function use your own Zoom or Slack account through its tools.
- [Interaction function format](../reference/interaction-format.md) shows an interaction function that calls one tool, or sends its request through one, without a model.
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Follow the [quick start](get-started/local.md) to run Auto on your computer and

## Do a task

The guides show how to [give a function tools](guides/tools.md), [run a workflow on a schedule or event](guides/triggers.md), [make a playbook remember](guides/remember.md), [calculate with a computation function](guides/computation.md), [forecast with a prediction function](guides/forecast.md) and [use Auto with Apollo](integrations/apollo.md).
The guides show how to [give a function tools](guides/tools.md), [run a workflow on a schedule or event](guides/triggers.md), [make a playbook remember](guides/remember.md), [calculate with a computation function](guides/computation.md), [forecast with a prediction function](guides/forecast.md), [use Auto with Apollo](integrations/apollo.md) and connect [Zoom](integrations/zoom.md) or [Slack](integrations/slack.md) for your playbooks to use.

## Run it for a team

Expand Down
97 changes: 97 additions & 0 deletions docs/integrations/slack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
---
description: Connect your Slack account to Auto, use your messages, channels and threads in a playbook, and remove the connection when you no longer want it.
---

# Connect Slack

Connect your Slack account to Auto, so that the functions in your playbooks can search and read your messages, channels and threads, and send messages and add reactions as you. Your agent does the setup. You sign in to Slack and allow access.

## What you need

- Auto running, with your agent connected to it as you. The [quick start](../get-started/local.md) sets this up on your own computer. On an Auto your team runs, your agent is signed in as you, with permission to change your org; an agent connected with a key cannot add a connection.
- A Slack account in the workspace you want to connect. Auto reaches Slack at `slack.com` and `mcp.slack.com`.
- If your workspace takes only the apps its owners approve, Slack asks you to request the app, and you allow access once a workspace owner or app manager approves it.

You connect as yourself, through Slack's MCP server. The connection has your access to the workspace: it reads the channels, conversations and people you can see, and a message it sends is from you. The connection belongs to your org, so a function in a playbook it is for acts in Slack as you, whoever in your org runs it.

Acting as a Slack app's bot instead is the `slack-api` provider, connected with the bot token of a Slack app installed in your workspace, as [the providers Auto ships](../self-host/connections.md#the-providers-auto-ships) lists. This page is about connecting as yourself.

## Add Slack

1. Ask your agent to connect Slack as you:

```text
Connect my own Slack account to Auto, so that the functions in my
"<playbook name>" playbook can search and read my Slack messages.
```

Your agent may ask which playbook the connection is for. Name the playbooks that may use it, or say that every playbook of your org may. A connection that names no playbook is for every playbook of the org.

2. Your agent asks you to open a page of Studio, or gives you its link. The link works for ten minutes. On an Auto that signs people in, only you can use it, signed in as yourself.
3. Check what the page says you are connecting, and press Continue.
4. Slack asks you to sign in, if you are not signed in already, and shows the workspace you are connecting; you can switch to another there. Check that it is the workspace you mean, and allow access.
5. Slack sends you back to Studio, which finishes the connection and shows Slack as connected. Your agent sees it connected too.

If the link runs out before Slack is connected, ask your agent to remove the connection and add it again, for a new link.

### What you see when you allow access

The Slack app you allow depends on how your Auto is set up:

| How your Auto is set up | What you see |
| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Whoever runs your Auto registered a Slack app of their own | Slack asks you to allow their app, and then sends you back to Studio. Their app comes first, even where consent through Auto is on |
| They registered none, and [consent through Auto](../self-host/connections.md#consent-through-auto) is on | Slack asks you to allow Auto, under Auto's name. It then sends you to the hosted Studio, `https://studio.on.auto`, where you sign in to Auto if you have not already, and on to the Studio you started from |
| Neither | Your agent cannot add Slack, and says that Slack takes a client whoever runs Auto registers, which is not set up here. Ask whoever runs your Auto to set one up |

## Use Slack in a playbook

Once Slack is connected, ask your agent to give a function in your playbook the Slack tools it needs, as [Give a function tools](../guides/tools.md) shows. Say what you want done, in your own words:

| A playbook can | You might ask |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Search messages in public and private channels, direct messages and group direct messages | "Find what the team said about the spring price change this month." |
| Read a channel's history and a thread | "Summarize yesterday's thread in the support channel about the delayed order." |
| Look up people and channels | "Find the channel about the trade show, and the job titles of the people who post there." |
| Send a message | "Post the weekly summary in the marketing channel." |
| Add a reaction | "Add a check mark to each question in the support channel we answered today." |

The `slack` row of [the providers Auto ships](../self-host/connections.md#the-providers-auto-ships) is the full list of what a function may do with Slack.

What Slack answers each call, the messages a function reads among it, is kept in the playbook's history, for anyone who may read the playbook, as [the configuration reference](../self-host/configuration.md#fields-of-an-entry) says of every tool server. Someone who may read the playbook can then read messages from your private channels and direct messages that Slack would not show them. If you would rather the history keep only the size of each answer, ask your agent to add Slack that way.

## Remove Slack

You can remove Slack in Auto or at Slack.

### In Auto

In Studio, find Slack among your org's connections, press Remove and confirm. Or ask your agent:

```text
Remove my Slack connection from Auto.
```

Auto then forgets the connection's tokens, and no playbook may use the connection any more. What Slack publishes for signing in to its MCP server names no address that revokes a token, so Auto does not ask Slack to revoke them, and your authorization of the app stands at Slack until you revoke it there, as below.

### At Slack

To revoke your own authorization, in Slack on your desktop:

1. Click your workspace name in the sidebar.
2. Select Tools & settings, then Manage apps.
3. Select Installed apps, find the app you allowed and click App details.
4. Open the Configuration tab. Under Authorizations, find Authorized members, click See all and Revoke.

To remove the app for the whole workspace instead, choose Remove app on the same Configuration tab. Where app approval is on, only workspace owners and app managers can remove apps. Slack's help on [removing apps](https://slack.com/help/articles/360003125231-Remove-apps-and-custom-integrations-from-your-workspace) has the steps.

Either way, Slack then refuses the connection's tokens, and the functions that use the connection can no longer reach Slack. A connection cannot be mended, so remove it in Auto too, as above, and add Slack again to use it again.

### What remains

Removing Slack does not remove what Slack answered before. The playbook's history keeps what earlier calls answered, for anyone who may read the playbook, for as long as whoever runs your Auto keeps it. Where you allowed Auto's own app, Auto's consent service keeps a line for each time you allowed access, each renewal and each removal, naming you, Slack and the Studio you went back to, and no token. It also keeps a line for each notice Slack sends it that the app was removed or its tokens revoked, naming the workspace, the Slack members and the time Slack gives.

## Get help

- For help with Slack in Auto, use Auto's [support page](https://on.auto/contact-us).
- Read Auto's [privacy policy](https://on.auto/privacy) and [terms](https://on.auto/terms).
2 changes: 1 addition & 1 deletion docs/integrations/zoom.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Sign in to the [Zoom App Marketplace](https://marketplace.zoom.us), open Manage,

### What remains

Removing Zoom does not remove what Zoom answered before. The playbook's history keeps what earlier calls answered, for anyone who may read the playbook, for as long as whoever runs your Auto keeps it. Where you allowed Auto's own app, Auto's consent service keeps a line for each time you allowed access, each renewal and each revocation, naming you, Zoom and the Studio you went back to, and no token.
Removing Zoom does not remove what Zoom answered before. The playbook's history keeps what earlier calls answered, for anyone who may read the playbook, for as long as whoever runs your Auto keeps it. Where you allowed Auto's own app, Auto's consent service keeps a line for each time you allowed access, each renewal and each revocation, naming you, Zoom and the Studio you went back to, and no token. It also keeps a line for each notice Zoom sends it that you removed the app, naming your Zoom user and account, the app and the time Zoom gives.

## Get help

Expand Down
4 changes: 4 additions & 0 deletions docs/nav.json
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@
{
"text": "Connect Zoom",
"link": "/integrations/zoom"
},
{
"text": "Connect Slack",
"link": "/integrations/slack"
}
]
}
Expand Down
2 changes: 1 addition & 1 deletion docs/self-host/connections.md
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ Each way names as its issuer the authorization server its server names in its ow

Zoom's way writes out its revocation endpoint, so removing a connection to `zoom` asks Zoom to revoke its tokens there. None of the other three authorization servers publishes an endpoint that revokes a token, so removing a connection to one forgets its tokens without revoking them at the vendor. Of the authorization servers of Microsoft's, Amazon's and Adobe's providers, Adobe IMS publishes one, `https://ims-na1.adobelogin.com/ims/revoke`, which the metadata of Adobe's MCP server names too, so removing a connection to `adobe-analytics` or `adobe-analytics-mcp` made by consent revokes its tokens there; Microsoft's and Login with Amazon publish none, so removing a connection to `microsoft-advertising`, `outlook`, `amazon-ads` or `amazon-ads-mcp` revokes nothing at the vendor, and its tokens end on their own. GitHub's access token ends within eight hours and its refresh token after six months unused. Slack's tokens do not expire unless the app turns on token rotation, after which an access token lasts twelve hours: without it, a removed connection's token stays valid at Slack until the person removes the app there.

A Zoom app serves people outside your own Zoom account only once Zoom has reviewed it. As a beta, Zoom approves on request a link that adds the app, for four weeks at a time, renewed twice at most, and for 100 additions of a user-level app, unless Zoom raises the limit on request; the link stops working once the app is published. As a published app, it passes Zoom's app review and gives Zoom a deauthorization notification address, to which Zoom posts when a person removes the app, and after which the app deletes what it holds of that person. Auto's own app at Zoom, the client [consent through Auto](#consent-through-auto) uses, gives Zoom an address of Auto's consent service, which acknowledges each such notice and keeps a line naming the identifiers Zoom sent. The service holds nothing of the person's to delete: a start and the tokens it hands on last ten minutes at most, it keeps a connection key by its hash beside the person as Auto knows them and never as Zoom does, and the person's runtime holds the tokens. A runtime serves no such address: it learns that a person removed the app when Zoom refuses the connection's tokens, which breaks the connection, and deleting what it kept of that person falls on you. An app you publish yourself offers Zoom an address of your own.
A Zoom app serves people outside your own Zoom account only once Zoom has reviewed it. As a beta, Zoom approves on request a link that adds the app, for four weeks at a time, renewed twice at most, and for 100 additions of a user-level app, unless Zoom raises the limit on request; the link stops working once the app is published. As a published app, it passes Zoom's app review and gives Zoom a deauthorization notification address, to which Zoom posts when a person removes the app, and after which the app deletes what it holds of that person. Auto's own app at Zoom, the client [consent through Auto](#consent-through-auto) uses, gives Zoom an address of Auto's consent service, which acknowledges each such notice and keeps a line naming the identifiers Zoom sent. The service holds nothing of the person's to delete: a start and the tokens it hands on last ten minutes at most, it keeps a connection key by its hash beside the person as Auto knows them and never as Zoom does, and the person's runtime holds the tokens. A runtime serves no such address: it learns that a person removed the app when Zoom refuses the connection's tokens, which breaks the connection, and deleting what it kept of that person falls on you. An app you publish yourself offers Zoom an address of your own. Auto's own app at Slack gives Slack the same service's address for its notices that the app was removed from a workspace or that its tokens were revoked, and the service keeps a line for each, naming the workspace, the members and the time Slack sent; a runtime learns of it when Slack refuses the connection's tokens.

What `zoom`'s calls answer is kept as every answer is, whole and scrubbed of secrets in the playbook's history, for anyone who may read the playbook, unless the connection is added with `record_content: false`. A meeting's answer holds its start link, with which anyone who has it signs in to Zoom as the meeting's host, and its passwords, and a recording's answer holds its passwords. No call fetches the file of a recording or a transcript, which an answer names by an address outside the API.

Expand Down