Managoat is the hosted Fountain. Fountain is the open-source engine, and its name is on the CLI, the API, the SDK and this manual. Everything here applies to Managoat unless a page says it is for a self-hosted server.
slack (connection)
A platform provider. The operator registers one Slack app, and every tenant connects a workspace with it. The connection holds a user token, so an agent acts as the connected person, not as a bot.
Summary
| Id | slack. |
| Kind | oauth2, platform. It has no row, and platform: true in the API. |
| Configured by | The operator, with SLACK_OAUTH_CLIENT_ID and SLACK_OAUTH_CLIENT_SECRET. |
| Scopes | channels:history, channels:read, chat:write, im:history, im:write, users:read, search:read. SLACK_OAUTH_USER_SCOPES overrides the list. |
| Env key | SLACK_ACCESS_TOKEN. A second account takes SLACK_ACCESS_TOKEN_2. |
| Token hosts | slack.com. |
| Redirect URI | <PUBLIC_URL>/connections/slack/callback. |
| Account label | The Slack handle, from auth.test. |
| Status | Beta. Only for accounts the egress broker is on for. Read Feature status. |
Configure it
Create a Slack app with the redirect URL above. Set SLACK_OAUTH_CLIENT_ID
and SLACK_OAUTH_CLIENT_SECRET on the instance. Unset, the Connections
page says the provider is not configured. Read
SLACK_OAUTH_CLIENT_ID.
The scopes are user scopes, not bot scopes. Fountain sends them in
Slack's user_scope parameter, and the token that comes back is the
person's own. List the same names under User Token Scopes in the Slack
app configuration.
Endpoints
| Authorize | https://slack.com/oauth/v2/authorize. |
| Token | https://slack.com/api/oauth.v2.access. |
| Revoke | https://slack.com/api/auth.revoke. |
| Userinfo | https://slack.com/api/auth.test, path user. |
| Token endpoint auth | client_secret_post. |
| PKCE | Off. |
A tenant cannot edit these, and slack is a reserved slug. PATCH and
DELETE on /api/connection-providers/slack answer 404.
Connect a workspace
- Open Account, then Connections in the console.
- Click Connect next to Slack, pick the workspace, and approve.
- Copy the connection id from the page.
One connection covers one workspace. Connect again from another workspace for a second token. The label is the Slack handle, so two workspaces with the same handle replace each other. Reconnect the one you need.
Use it
The broker holds the token, and the sandbox holds the placeholder
__slack_access_token__. The broker attaches the real token as a bearer on
requests to slack.com. An MCP server you run in the sandbox reads
SLACK_ACCESS_TOKEN from its environment, or the agent calls the Slack Web
API with it. There is no Fountain-served tool server for Slack. Read
Connections.
Token expiry
A Slack user token does not expire, and Slack issues no refresh token
unless the app opts in to rotation. The connection stays active until you
revoke it, or until Slack refuses the token. Revoke tells Slack to
forget the token, through auth.revoke.
Related
- Connections, the catalog hub.
- Google and Microsoft, the other platform providers.
- Connect a service with your own OAuth app, for every other service.