Use Widget v5 and authenticate customers through your backend. Anonymous visitors and an unsigned email or
externalId cannot authorize a personal connection. See Install Widget and Widget authentication.Set up personal connections
1
Add the service in Actions
Add an MCP server and choose Each user — their own account. Enable the server and choose which tools your agent may use. Choose Our team — one shared account when everyone should use a connection your team manages instead.Fill in Capabilities with the actions the service supports, such as creating orders or tracking shipments. The agent uses this description to recognize when a request needs a connection, even when the service hides its tools until the customer authorizes access. Keep it current when you change the service or disable tools; do not include credentials or customer data. The description does not grant access: after authorization, the agent checks the tools available to that customer.Connection ownership is fixed when you create the server. See MCP servers for supported authentication and tool controls.
2
Authenticate the customer from your backend
Resolve the customer from your application’s signed-in session, call the widget authentication endpoint, and pass its result as
user.token. Keep the organization API key on your server.Include mcp_access: {} in the backend authentication request to enable all personal servers in your organization. Omitting mcp_access keeps chat-only authentication. Optionally set mcp_access.server_ids to restrict that customer to a list; an empty list allows none. Include mcp_access.account_id when customers can switch accounts or workspaces.Follow the authentication example and token renewal guidance.3
Opt the embed into connection requests
Set This works in the popover and Companion layouts. A headless client must supply the connection UI before declaring support.
streaming: true and capabilities: { connections: true }, and ensure your organization supports streaming. Both connection UI and requests are off when the capability is omitted. A token with mcp_access grants the permitted scope; it does not turn on the embed UI.4
Let the customer connect when needed
When a request needs account access, the widget shows Connect. The customer completes the service’s authorization flow, returns to the widget, and the request continues after access is confirmed.Saved connections belong to the signed-in customer and account. Starting a new session keeps those connections. Pending prompts stay with their original session until answered, cancelled, or expired; they do not carry into the new session.
Review tool requests
A connected service can request a form or a simple approval. The widget shows that request, sends the customer’s answer back to the waiting tool, and lets it continue.- Approve once accepts the current simple approval request.
- Always allow remembers approval only for the same connected account, server, tool, inputs, and form. Changed requests still ask.
- Decline rejects the request. Cancel closes it without accepting.
- Other forms require the customer to review and submit their answers each time.
Manage connections and saved approvals
From the widget session list, open Connections and select a service. Only personal connections for the signed-in customer and account appear here; your team’s shared connections stay in Actions.
These settings stay with the customer and account across sessions.