Merge workspace members
merge_workspace_membersMerge two workspace members who are the same person (e.g. a Super Connector added twice): everything the retired member has — relationships, connections, categories, tags, roles — moves onto the keeper, and the retired member is removed. Irreversible from chat. ALWAYS call first with dry_run=true: show the user the side-by-side comparison (both people's name, email, LinkedIn, roles and data counts) and every warning in plain language, and ask them to confirm which person to keep. Only after the user explicitly agrees, call again with the same keeper_user_id and retired_user_id, dry_run=false and confirm=true. Never merge on your own initiative, never skip the dry run, and never set confirm=true without the user's explicit agreement. If the outcome is MERGE_OUTCOME_REFUSED, explain refusal_reason plainly and do not retry. USER-FACING COPY: talk about people by name, never mention user ids, tool names or enum strings.
Use when: Use only when an admin asks to merge, combine or de-duplicate two members of this workspace. Get both user ids from search_workspace_members first (by name, email or LinkedIn). The keeper is the member to keep (usually the one with more data or a login); the retired member must not have a login.
Behavior: destructive
workspace_id / user_id are injected from request headers.
Prerequisites (check before calling this tool): [REQUIRED] Both keeper_user_id and retired_user_id are known and belong to members of this workspace. Verify: Call search_workspace_members and take user_id from the two matching rows. Never guess ids. [REQUIRED] A dry run was shown to the user and they explicitly agreed to the merge. Verify: Only call with dry_run=false after a dry_run=true call in this conversation and an explicit 'yes' from the user.
Also returns pagination info (user_id, member_id, name, email, linkedin_id, role, data_counts, has_login).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| dry_run | No | ||
| _triggered_by | No | REQUIRED. Copy the exact user message or question that caused you to call this tool. Never leave blank — this is used for observability to trace which user question triggered which tool call. | |
| keeper_user_id | No | ||
| retired_user_id | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||