# Connect a workspace

Connect your team's Slack workspace and Salfio auto-joins shared channels in the background — no per-channel setup required.

A **workspace** is your organization's shared connection to a chat platform. Today, Salfio supports **Slack**; Microsoft Teams is on the roadmap.

This is different from the per-user integrations under **Settings → Integrations**: a workspace is connected **once for the organization** by an admin, and every team member benefits.

## Connect your Slack workspace

1.  In the app, open **Settings → Workspaces**.
2.  Click **Connect Slack workspace**. You are redirected to Slack's app installation screen.
3.  Choose the Slack workspace you want to connect and approve the requested permissions.
4.  You are redirected back to Salfio. The workspace is listed with status **Active** — that's the whole setup.

## What happens after you connect

The moment Slack returns you to Salfio, two things start in the background:

- **Channels** — Salfio joins every public channel in the workspace and every channel shared with another organization (Slack Connect). Internal-only private channels are not joined; the bot has no visibility into them.
- **Members** — Salfio fetches the workspace member list and links each Slack user to a Salfio user by email (case-insensitive). New Slack members and new Salfio users get linked automatically the next time either side adds them.

There is nothing to configure on either of these. Salfio re-checks for new channels and members periodically, so anything created in Slack later gets picked up without operator action.

## Disconnect a workspace

To disconnect, click the trash icon on the workspace card and confirm. Salfio leaves Slack's side of the connection. The historical member record (used to attribute past Slack activity to Salfio users) is preserved so the assistant continues to make sense of older conversations.

## What gets synced

| Item | Frequency |
|----|----|
| Member list (Slack `users.list`) | Hourly |
| Channel membership reconcile (new public / shared channels) | Every few hours |

## Mention Salfio in Slack

Salfio can answer questions from inside Slack. Anywhere the Salfio bot is already a member, mention `@Salfio` followed by a question. The bot adds a 🤔 reaction within a couple of seconds to confirm it's working on it, and replies as a thread on the message once the answer is ready. Replies are short — typically one to three sentences — and grounded in the same data the assistant uses in the web app.

A few notes on how this behaves:

- **You need a Salfio account in this organization.** Salfio matches your Slack profile to a Salfio user by email — automatically, the first time you mention the bot, so you don't have to wait for the periodic member sync to pick you up. If no Salfio account in the organization matches your Slack email, the bot replies once explaining that and pointing you to ask an admin for an invite — it does nothing else.
- **The bot picks the right client from context.** If you mention it in a channel like `#cust-acme`, it answers about Acme. If the channel name doesn't clearly map to a client, the bot may ask which client you mean.
- **Keep the conversation going in the thread.** Once Salfio has replied, post follow-up questions in the same thread — you don't need to mention `@Salfio` again. Salfio reads the whole thread, so it answers with the full context of what's already been discussed rather than treating each message in isolation.
- **If a question takes a while**, you'll see a "Still on it — give me a moment." message in the thread, followed by the real answer when it's ready. Most replies arrive within ten to thirty seconds.
- **Anything the bot says is visible to every member of the channel.** Treat client information accordingly when choosing where to mention it.

## Message Salfio directly

You can also send Salfio a **direct message** instead of mentioning it in a channel. Open a DM with the Salfio app in Slack and ask your question — no `@`-mention needed, since messaging the bot directly is the signal that you're talking to it. The same rules apply: you need a matching Salfio account in the organization, and replies are short and grounded in your organization's data.

A DM is private to you, so it's the right place for questions you'd rather not put in a shared channel.

If you connected your Slack workspace before a given capability shipped — the channel-mention surface, or direct messages — the bot can't use that capability until you disconnect and reconnect the workspace from **Settings → Workspaces** to grant the additional Slack permissions Salfio now needs. The new install picks up the right scopes automatically; there's nothing else to configure.

## Next

If you have not connected your per-user data sources yet, head to [Connect an integration](/docs/getting-started/connect-integration).

## Related pages

- [Administrator Tools](./administrator-tools.md)
- [Agent Tools](./mcp-external-servers.md)
- [Assign a Slack channel to a client over the API](./guides-assign-slack-channel.md)
- [Authenticated health check](./api-reference-gethealth.md)
- [Authentication](./api-authentication.md)
- [Cards](./cards.md)
- [Changelog](./changelog.md)
- [Changelog](../changelog.md)
- [Connect an integration](./getting-started-connect-integration.md)
- [Connect from Claude Desktop](./mcp-connect-claude-desktop.md)

# Agent Instructions

This portal answers questions programmatically. To receive a synthesized,
source-cited answer instead of crawling page by page, append the `?ask=`
query parameter to any page URL on this site:

    /guides/quickstart?ask=how+do+I+authenticate

Optional parameters:

- `&goal=<what-you-are-trying-to-do>` steers the answer toward your
  objective (e.g. `&goal=write+a+python+client`).
- `&version=<label>` scopes the answer to a mounted version when the
  portal publishes more than one.

The response is `text/markdown`: the answer followed by a `# Sources` list
of the portal pages it was grounded in. Status codes are the contract:

- `200` — the answer; `402` — the portal owner’s plan or answer credits are
  exhausted (surface this to your operator; do NOT retry); `429` — you are
  rate-limited; back off for the `Retry-After` seconds; `503` — the answer
  lane is temporarily unavailable; fall back to crawling the `.md` pages.

For the full corpus map read `llms.txt` at the site root; for the tool
surface (search + page fetch as MCP tools) see `/mcp`.
