WithinLocal development

Welcome back

Sign in to your company’s control plane.

The company identifier supplied by your administrator.
For local development or owner recovery. This is not your MCP API key.
Sign in as a teammateLeave blank to use the company owner account.
Use the email address invited to this company. No password needed.

Continue with development linkThis one-time link was returned by your local server. No email was sent.
Need help signing in?

Ask your administrator for your company slug and an invitation. For local token access, use the dashboard token configured on your Within server. Never share it with customers.

Email sign-in requires local mail delivery or development-link mode. Token sign-in does not require email delivery.

Your company. Your customers. One place to help.

Within
COMPANYVendor
CompanyManage
AgentNo email added

SUPPORT COMPANY

Conversations

NotificationsItems that need attention

GET READY FOR CUSTOMERS

Company setup

Complete these steps before inviting a pilot customer.

0 of 5 complete

OPERATIONS

What needs attention

Checking production configuration…

Live users

Sorted by urgency. Offer help when the moment is right.

Live
ConversationsWaiting and active
Conversations update automatically

Select a conversation

Messages, customer context, and live activity appear here.

Loading accounts and observed users…

Support team

Manage access, roles, presence, Slack identities, and current workload.

Team members0
Available now0
Open assignments0
i
Team directory access

You can see who is available. Company owners and managers control teammate access and roles.

Pending invitationsInvitation links expire after seven days

TEAM MEMBER

Invite team member

Send a secure invitation to a teammate. They create their own session; the dashboard token is never shared.

REPRESENTATIVE REVIEW

Recommended interventions

Review high-signal moments identified outside deterministic support rules. The user is never contacted without a representative’s approval.

✦
Reasoning recommenderChecking configuration…
Local only

Needs review0Assigned or unstaffed
Unstaffed0Team was unavailable
Approved0Offer created
✦

Select a recommendation

Evidence and safe representative actions will appear here.

Support rules

Choose exactly when Within offers or requires human support.

i
Manager access required

You can review published support rules, but only a company owner or manager can draft or change them.

SUPPORT RULE BUILDER

New support rule

INTEGRATION STATUS

Connected systems

Release versions and connection health for this control plane.

Latest SDK
Checking…
Control plane
Checking…
Environment
Checking…
MCP connections
Checking…
Slack
Checking…

MCP connections

Connections and credentials are isolated to this company.

i
Manager access required

You can review connection health, but only a company owner or manager can create or change MCP credentials.

#

Slack

Notifications are not configured.

Not connected
Slack credentials and channel settings

Notifications

Set alert rules, delivery mode, and message previews on their own page.

Loading notification settings…

A
AgentSupport agent
?
Need help?Review setup details in Integrations or contact your company owner.

PERSONAL ACCOUNT

My profile

Keep your support identity accurate for assignments and customer conversations.

Agent

Profile details

This information is visible to teammates and in support conversations.

COMPANY

Company

Manage the identity and operating context shared by your support team.

Owner access
Team members0Across all roles
MCP connections0No SDK contact
Active support rules0Published to connected SDKs

Company details

Use a recognizable name so teammates know they are in the right account.

i
Read-only access

Only company owners and managers can change company details.

CONNECTED SYSTEMS

Connected services

See the health of the systems that power support delivery.

M

MCP integrations

SDK telemetry, support rules and support handoff.

Waiting
Connections
0
Latest SDK
Checking…
#

Slack

Threaded alerts and agent replies.

Not connected
Delivery
Not configured
Direction
—
i
Integration credentials stay isolated

Each MCP connection has its own revocable key. Secrets are never shown again after creation.

ACCOUNT ACCESS

Security and sessions

Review every signed-in browser and revoke access immediately.

Session active

Current session

Authentication is stored in a secure, HTTP-only browser cookie.

Account
—
Company
—
Permission level
—
Session expires
—
Sign out of this browser

Revokes this server-side session and immediately marks you offline if it is your last active browser.

Signed-in browsers

Sessions are grouped by browser and network. Expired sessions are removed automatically.

Loading sessions…

Page 1 of 1

Authentication controls

Dashboard access is scoped to this company.

Cookie protected
✓

HTTP-only secure sessionBrowser JavaScript cannot read the session credential.

✓

CSRF-protected changesEvery state-changing dashboard request requires a per-session token.

✓

Role-based controlsSensitive company and integration actions require manager access.

DATA GOVERNANCE

Data and privacy

Control telemetry retention and honor end-user data requests.

Collection and retention

Sensitive keys are redacted from telemetry before persistence by default.

End-user data request

Export or permanently erase telemetry, offers, and conversations for one SDK user ID.

ADMINISTRATION

Audit log

Review meaningful security and configuration changes. Presence heartbeats are excluded.

TimeActorActionResourceDetails

Loading activity…

Page 1 of 1

Search company

↑↓ navigateEnter openEsc close

MCP SDK ONBOARDING

Add MCP connection

1 Name2 Install3 Verify

Create a dedicated, revocable credential for one MCP server.

Copy this key nowFor security, it will not be shown again.

Send this to your coding agent

Copy this prompt into the MCP server project. Add the API key privately through its environment.

Show initialization code

Waiting for the first SDK event…

Start or restart your MCP server, then call any instrumented tool.

LOCALHOST WALKTHROUGH

Set up Slack, step by step

i
Checking configuration

Reading local server settings.

Choose one path below. Follow its numbered steps in order.

Before you start

You need permission to install a Slack app, owner or manager access in Within, and access to the local project files. Use a separate test Slack app and channel. Your computer must stay online with Within running.

Slack calls its company space a “workspace.” That is Slack’s own label, not a customer Workspace field in Within. Tokens stay on your computer; this guide does not collect them.

Path A · Interactive support on localhost

  1. 1

    1. Create a test Slack app

    Where: Slack app website

    1. Open Your Slack apps ↗ in another tab. Sign in to the Slack account you want to test with.
    2. Click Create New App. Choose Blank app and Continue (some Slack screens call this From scratch).
    3. Enter Within Local Test as the app name. Select your test Slack workspace, then click Create or Create App.
    4. Keep the app settings tab open. All Slack app settings below are in its left sidebar.

    You should see the settings for Within Local Test. Already created this app? Open it and continue.

  2. 2

    2. Let the app send messages

    Where: Slack app settings → Features → OAuth & Permissions

    1. In the left sidebar, click OAuth & Permissions.
    2. Scroll down to Scopes. Under Bot Token Scopes, click Add an OAuth Scope.
    3. Search for chat:write and select it. Do not add it under User Token Scopes.

    Bot Token Scopes should list chat:write. Message-history permissions are not needed for this setup.

  3. 3

    3. Install the app and copy the bot token

    Where: Slack app settings → OAuth & Permissions → top of page

    1. Scroll to the top and click Install to Workspace (or Reinstall to Workspace if this app is already installed).
    2. Confirm the correct test Slack workspace and click Allow. If Slack requires admin approval, request it and wait before continuing.
    3. Back on OAuth & Permissions, find Bot User OAuth Token and click Copy. Keep it in your password manager until step 7.

    This token starts with xoxb-. Paste it into the Bot token field in Within.

  4. 4

    4. Make the localhost connection token

    Where: Slack app settings → Settings → Basic Information

    1. Click Basic Information in the left sidebar. Scroll down to App-Level Tokens.
    2. Click Generate Token and Scopes. Name the token local-within.
    3. Click Add Scope, choose connections:write, then click Generate.
    4. Copy the generated token and store it securely. Close the token dialog.

    This second token starts with xapp-. Paste it into the App token field in Within, not the Bot token field.

  5. 5

    5. Turn on the connection and buttons

    Where: Slack app settings → Socket Mode, then Interactivity & Shortcuts

    1. Under Settings in the left sidebar, click Socket Mode. Turn Enable Socket Mode on.
    2. Under Features, click Interactivity & Shortcuts. Turn Interactivity on. Click Save Changes if shown.
    3. Do not enter a Request URL for this localhost setup. If Slack requires one, go back and confirm Socket Mode is enabled for this same app.

    Skip Incoming Webhooks, Event Subscriptions, and public tunnels on this path. Socket Mode carries the button clicks to your local server.

  6. 6

    6. Choose a channel and copy its ID

    Where: Slack messages → open your test channel → click its name at the top

    1. Open a channel used only for testing, such as #within-test. The Slack desktop app or browser both work.
    2. Invite your app: type /invite @Within Local Test in that channel, select your app, and send.
    3. Click the channel name at the top. In its details window, find Channel ID at the bottom and copy it. This begins with C or G.
    4. For a separate Sales destination, repeat these steps in that channel. Otherwise use one channel for both.

    You do not need to find a Team ID. Within detects it from your bot token.

  7. 7

    7. Paste the credentials into Within

    Where: Local Within → Integrations → Slack connection

    1. Close this guide. On Integrations, scroll below the MCP connections to Slack connection. Sign in as an owner or manager.
    2. Paste the xoxb- token into Bot token and the xapp- token into App token. Both must come from the same Slack app.
    3. Paste the channel ID into Support channel ID. Enter a Sales channel ID only if Sales should use another channel.

    If a token says “Saved — leave blank to keep”, it is already available. You do not need to paste it again. Do not share tokens in Slack, GitHub, or the MCP.

  8. 8

    8. Save and verify the connection

    Where: Within → Integrations → Slack connection → Save & verify connection

    1. Click Save & verify connection. Wait while Within checks the tokens with Slack.
    2. Check the detected Slack workspace name and Team ID. Tokens are stored encrypted and are never displayed again.
    3. Within reconnects automatically. You do not need to edit an environment file or restart the local server.

    Saving does not send a test message or change delivery mode. If Live delivery was already on, new events continue sending. A token verification error keeps the previous settings.

  9. 9

    9. Check setup without sending anything

    Where: Within → Notifications

    1. Close this guide and open Notifications in the sidebar. Click Refresh status.
    2. Look for Slack configured and Socket connected. “Interactions configured” alone does not prove the connection succeeded.
    3. Leave Delivery mode set to Simulation — no external messages.
    4. Under Message preview, click Run all 7 local scenarios. You should see 7/7 passed and 0 external messages sent.

    Simulation tests the local rules. It does not prove that Slack received a message.

  10. 10

    10. Link the teammate who will use Slack buttons

    Where: Slack member profile, then Within → Team

    1. In Slack, open the teammate’s profile. Click More (the three dots), then Copy member ID. This usually starts with U.
    2. In Within, open Team. As an owner or manager, find that teammate and click Edit access (or Manage).
    3. Paste the ID into Slack user ID, then click Save changes. Verify the teammate’s card now lists the ID under Slack.
    4. For your own card, Open profile currently has no Slack ID field. If you are the only owner and are not already linked, ask the local Within operator to link your existing account. Do not create a duplicate account to get around this.

    An unlinked Slack member cannot use customer-facing actions. Keep the intended teammate signed in to Within; Slack presence alone does not make them available.

  11. 11

    11. Send one real test to your test channel

    Where: Within → Notifications

    1. Use Open Slack settings to confirm the shared channel in Integrations, then return to Notifications.
    2. Check the email recipient and other destinations. Switching to Live can send Slack/email for new events; use only test destinations.
    3. Set Delivery mode to Live — send new alerts. Click Save notification settings and confirm only when you are ready for real messages.
    4. Under Message preview, click Send one Slack test. Open your test Slack channel and look for the staff test message.
    5. In Within, click Refresh status and expand Recent delivery and decision history. Check the delivery outcome. “Test queued” is not the same as delivered.

    Finish by setting Delivery mode back to Simulation and saving if you do not want further real alerts.

  12. 12

    12. Try a customer conversation

    Where: Your local test MCP, Slack test channel, and Within Conversations

    1. With the mapped teammate signed in and My status → Available, explicitly ask your local test MCP to connect you to support. Use test text, not real customer information.
    2. Find the new conversation’s Slack card. Use its assignment action, then Reply to customer.
    3. In the reply form, type a test reply and click Send to customer. Check that it appears in the MCP support chat and Within Conversations.
    4. Resolve the test conversation from Slack and confirm the Conversations status updates. Ordinary messages typed in the Slack thread stay internal; they are not sent to the customer.

Path B · Alerts only

Use this instead of Path A, not in addition to it. No bot token, app-level token, or Socket Mode is needed for this path. If bot credentials are already set on the server, ask the operator before changing modes; the bot configuration takes priority.

  1. 1

    1. Create a test Slack app

    Where: Slack app website

    1. Open Your Slack apps ↗ in another tab. Sign in to the Slack account you want to test with.
    2. Click Create New App. Choose Blank app and Continue (some Slack screens call this From scratch).
    3. Enter Within Local Test as the app name. Select your test Slack workspace, then click Create or Create App.
    4. Keep the app settings tab open. All Slack app settings below are in its left sidebar.

    You should see the settings for Within Local Test. Already created this app? Open it and continue.

  2. 2

    2. Create the alerts-only destination

    Where: Slack app settings → Features → Incoming Webhooks

    1. Click Incoming Webhooks in the left sidebar. Turn Activate Incoming Webhooks on.
    2. Scroll down and click Add New Webhook to Workspace.
    3. Choose your test channel, then click Allow. If Slack requests admin approval, wait for approval.
    4. Back on Incoming Webhooks, find the new URL under Webhook URLs for Your Workspace and click Copy.

    The URL starts with https://hooks.slack.com/services/. It sends to the channel chosen here; Within’s channel field cannot redirect it.

  3. 3

    3. Save the settings on your computer

    Where: Your code editor → control-plane folder → .env.local

    1. Open the local Within project in your code editor. Expand control-plane and open .env.local. If it does not exist, create a file with exactly that name inside control-plane.
    2. Keep everything already in the file. For each setting below, update its existing line or add it once. Replace every example with the value you copied.
    3. Save the file. Do not put these values in the Weather MCP, Within’s AI key field, Slack messages, or a GitHub commit. This local file is ignored by Git.

    Copy template copies placeholders, not your credentials. A webhook URL is a secret, just like a password.

  4. 4

    4. Restart only the local control plane

    Where: The terminal running Within on localhost:8890

    1. In the terminal running this local control plane, press Ctrl+C once to stop it. Do not stop the Weather MCP or any production service.
    2. From the project’s control-plane folder, run pnpm dev. If the terminal is at the project root, run pnpm --dir control-plane dev instead.
    3. Leave that terminal running. Return to the local Within dashboard and reload the page.
    4. If the server was started in the background and you cannot find its terminal, ask the person running it to restart that local process. Do not launch a second copy against the same data file.

    The local server reads .env.local at startup. Refreshing the browser alone does not load new tokens.

  5. 5

    5. Check setup without sending anything

    Where: Within → Notifications

    1. Close this guide and open Notifications in the sidebar. Click Refresh status.
    2. Look for Slack configured. “Interactions not configured” is expected for alerts-only.
    3. Leave Delivery mode set to Simulation — no external messages.
    4. Under Message preview, click Run all 7 local scenarios. You should see 7/7 passed and 0 external messages sent.

    Simulation tests the local rules. It does not prove that Slack received a message.

  6. 6

    6. Verify one real alert

    Where: Within → Notifications, then your local test MCP

    1. Check that the webhook points to a test channel. Set Delivery mode to Live — send new alerts, click Save notification settings, and confirm.
    2. Send one Slack test requires a bot token and stays disabled on this webhook-only path. That is expected.
    3. Explicitly request support through your local test MCP and submit a short test message. Check the chosen Slack channel for the new alert.
    4. Click Refresh status and open Recent delivery and decision history to check delivery. Return to Simulation and save when finished.

    Alerts-only has no Slack assignment or customer-reply buttons. Use Within Conversations to respond.

Something not working? Start here
Slack not configured
Check control-plane/.env.local, replace placeholders, save, and restart the local server. Existing shell environment settings override values in the file.
Slack configured, but no message
Check Delivery mode, test destination, and delivery history. Simulation never sends anything.
Socket is not connected
Check the xapp- token has connections:write, Socket Mode is on for the same Slack app, and your computer is online.
channel_not_found or not_in_channel
Check the channel ID and invite the app to that channel. The app and channel must belong to the same Slack workspace.
missing_scope or invalid_auth
Check Bot Token Scopes includes chat:write, reinstall if permissions changed, and copy the current xoxb- token. Save it locally and restart.
Slack buttons reject me
Check Team → Slack lists your member ID and your Within teammate still has access. Review the conversation’s current status.
A Slack link opens the wrong computer
localhost refers to the device opening the link. Local dashboard links work on this computer only; they are not shareable production links.
The terminal says the port is already in use
Another local server is still running on 8890. Ask its operator to restart that process instead of starting a second copy.

This is manual local setup, not a one-click Slack installer. No npm publish or production deployment is needed.

References: Slack app setup · Socket Mode · Webhooks