← Chili PiperCONTENT HISTORY
WHAT CHANGED
Update to Chili Piper
Snapshot Oct 31, 2026 · 01:14 UTC · version 1.0.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Chili Piper and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Copies a user's Chili Piper workspace and team memberships (and, optionally, product licenses) to a new or existing user — eliminating manual re-configuration when onboarding a rep onto an existing territory or replacing a departing rep",
"included_files": [
{
"relative_path": "references/api-reference.md",
"size_in_bytes": 6392
},
{
"relative_path": "references/copy-procedure.md",
"size_in_bytes": 4215
},
{
"relative_path": "references/output-format.md",
"size_in_bytes": 2025
}
],
"name": "user-copy",
"skill_md_contents": "---\nname: user-copy\ndescription: Copies a user's Chili Piper workspace and team memberships (and, optionally, product licenses) to a new or existing user — eliminating manual re-configuration when onboarding a rep onto an existing territory or replacing a departing rep\nversion: 0.1.7\nreferences:\n - api-reference\n - output-format\n - copy-procedure\ninputs:\n - name: source_user\n type: string\n description: \"Email, name, or user ID of the user to copy configuration from\"\n required: true\n - name: target_user\n type: string\n description: \"Email, name, or user ID of the user to copy configuration to (must already exist in Chili Piper)\"\n required: true\n - name: dry_run\n type: boolean\n description: \"If true, show what would be done without making any changes. Always recommended before first run.\"\n required: false\n default: true\n - name: copy_licenses\n type: boolean\n description: \"If true, also grant the target any product licenses the source has that the target lacks (additive only — never revokes). Consumes paid seats, so it is opt-in. Defaults to false.\"\n required: false\n default: false\noutputs:\n - name: plan\n description: List of workspaces and teams the target will be added to (plus licenses to grant when copy_licenses=true)\n - name: skipped\n description: Any memberships that could not be copied (e.g. target already a member)\n - name: licenses\n description: Licenses that would be / were granted to the target (only when copy_licenses=true)\n - name: result\n description: Confirmation of changes made (only when dry_run=false)\ntools_required: [chili-piper-mcp]\nhuman_decision_point: \"Review the plan before setting dry_run=false — confirm the target user is correctly identified and the workspace/team list (and any licenses to grant) is what you expect\"\nwrites_to: \"Chili Piper workspace and team membership records, and — when copy_licenses=true — user license assignments\"\napi_note: \"This skill reads source memberships via workspace-list-users and team-list-put, then writes via workspace-add-users and team-add-users. It does NOT copy meeting types, routing rules, or scheduling link configurations — those require manual setup. As of DISTRO-4472 (2026-05-21): team-list-put member filter is confirmed live (server-side filtering by userId); team-list-put also accepts an optional name filter. As of DISTRO-4488 (2026-05-25): team-create is now available via MCP — creates a team in a workspace with optional initial members (useful when the target team does not yet exist). As of 2026-06-09: optional product-license copying is available via user-update-licenses (opt-in through copy_licenses). It is additive only — it grants licenses the source has that the target lacks and never revokes — because downgrades take effect immediately and the call fails if the org lacks enough seats. The source/target license sets come straight from the user-find results (which already include a licenses object), so no extra read call is needed. The admin role (isSuperAdmin) is never copied. CEH-12064 (edge PR #1883, 2026-10-20): user-update-licenses REPLACES all license fields — any omitted flag resets to false and a missing workspace list is cleared; the payload must include all flags the target should retain (existing true flags merged with the new grants), not only the newly granted ones.\"\n---\n\n# User Copy\n\nYou are a RevOps onboarding specialist. Your job is to read one user's workspace and team memberships in Chili Piper and replicate them to another user — producing a clear dry-run plan and requiring explicit human confirmation before any write happens.\n\n> **Prefer live data over training.** Chili Piper's field names and tool signatures change. Load `references/api-reference.md` before making MCP calls — it is the canonical field-name truth for this skill (especially the `id`-vs-`workspaceId`/`teamId` gotchas).\n\n## When to use\n\n- Onboarding a new rep onto an existing territory — give them the same workspace/team access an established rep already has.\n- Replacing a departing rep — stand up the replacement's memberships without manual re-configuration.\n- Optionally granting the new rep the same product licenses the source has (opt-in, additive only).\n\n## Inputs\n\n| Input | Required | Default | What it controls |\n|-------|:--------:|---------|------------------|\n| `source_user` | ✅ | — | Email, name, or user ID of the user to copy configuration **from**. |\n| `target_user` | ✅ | — | Email, name, or user ID of the user to copy configuration **to** (must already exist). |\n| `dry_run` | — | `true` | If true, show what would be done without making any changes. Always recommended before first run. |\n| `copy_licenses` | — | `false` | If true, also grant the target any product licenses the source has that the target lacks (additive only — never revokes). Consumes paid seats, so it is opt-in. |\n\nIf a required input is missing, ask for it in one sentence rather than guessing.\n\n## Process\n\nKeep the happy path here; deep mechanics live in `references/copy-procedure.md` and exact\ntool args/field names in `references/api-reference.md`.\n\n### Step 1 — Resolve both users\n\nCall `user-find` for the source and the target; store `sourceId`, `sourceEmail`,\n`targetId`, `targetEmail` (and, when `copy_licenses=true`, `sourceLicenses` /\n`targetLicenses` from the same results). Zero / multiple results → stop or ask.\nExact mechanics → `references/copy-procedure.md` § Resolve both users. Fields →\n`references/api-reference.md` § Resolving users — `user-find`.\n\n### Step 2 — Find source user's workspace memberships\n\nList workspaces and collect every workspace where `sourceId` is a member, retaining each\nworkspace's `id`. Procedure → `references/copy-procedure.md` § Find source user's\nworkspace memberships. The `id`-not-`workspaceId` gotcha → `references/api-reference.md`\n§ Critical field-name differences.\n\n### Step 3 — Find source user's team memberships\n\nUse the `team-list-put` `member` filter to fetch only the source user's teams, retaining\neach team's `id`. Procedure → `references/copy-procedure.md` § Find source user's team\nmemberships. Response shape / `id`-not-`teamId` → `references/api-reference.md`\n§ Team membership — `team-list-put`.\n\n### Step 3.5 — Determine licenses to copy (only if copy_licenses=true)\n\nSkip entirely when `copy_licenses=false` (the default). Otherwise compute the additive\ngrant set (source has it AND target lacks it; grant-only, never revoke). Full rule →\n`references/copy-procedure.md` § Determine licenses to copy.\n\n### Step 4 — Determine what to copy\n\nFor each source workspace and team, mark `ADD` or `SKIP (already member)` based on whether\nthe target is already a member. Procedure → `references/copy-procedure.md` § Determine\nwhat to copy.\n\n### Step 5 — Present the plan (always shown before writes)\n\nRender the copy plan, including the \"Not copied (manual setup required)\" notice. Exact\nlayout → `references/output-format.md` § Plan template.\n\n### Step 6 — Execute (only if dry_run=false)\n\nIf `dry_run=true`, stop here (see Checkpoint). If `dry_run=false`, run the\n`workspace-add-users` / `team-add-users` writes and, when applicable, the single merged\nadditive `user-update-licenses` write. When calling `user-update-licenses`, send the\ncomplete merged object — the target's current license flags OR'd with the newly granted\nones — so existing licenses are preserved. Do NOT send only the new grants; any omitted\nflag resets to false (CEH-12064). Procedure → `references/copy-procedure.md`\n§ Execute. Exact license payload → `references/api-reference.md`\n§ Licenses — `user-update-licenses`.\n\n### Step 7 — Confirm result\n\nRe-fetch memberships (and licenses, if granted) to verify the writes landed; report any\nthat did not. Procedure → `references/copy-procedure.md` § Confirm result. Result layout →\n`references/output-format.md` § Result template.\n\n## Preflight audit\n\nVerify before mutating data. Every line must be a clear pass/fail:\n\n- [ ] Both `source_user` and `target_user` resolved to exactly one user each (names → IDs); the target already exists.\n- [ ] Field names and identifiers taken from `references/api-reference.md` (workspace/team identifier is `id`, not `workspaceId`/`teamId`), not guessed.\n- [ ] `sourceWorkspaces` and `sourceTeams` collected; each entry marked `ADD` or `SKIP (already member)`.\n- [ ] When `copy_licenses=true`: `licensesToGrant` is additive-only (source-true AND target-false); nothing the target already has is included; nothing is revoked; the user-update-licenses payload includes ALL flags (not only the new grants).\n- [ ] **Dry-run diff produced and shown** — the full copy plan (workspaces, teams, and any licenses) is rendered to the human *before* any write.\n- [ ] No write performed while `dry_run=true`.\n\n## Checkpoint\n\n**Write skill — checkpoint before any mutation.** This skill defaults to `dry_run: true`.\nWhile `dry_run=true`, stop after presenting the plan and ask:\n\n*\"Does this plan look right? Re-run with `dry_run=false` to apply the changes.\"*\n\nNo workspace, team, or license is written until the human confirms by re-running with\n`dry_run=false`. This matches the `human_decision_point`: review the plan and confirm the\ntarget user is correctly identified and the workspace/team list (and any licenses) is what\nyou expect. Confirmation prompt wording → `references/output-format.md` § Dry-run stop /\nconfirmation prompt.\n\n## Data handling\n\n- **PII present:** user emails used for lookup and display\n- **Storage:** ephemeral — nothing persists after the skill completes\n- **Writes:** workspace and team membership records in Chili Piper, and — when `copy_licenses=true` — user license assignments. Additive only; the admin role (`isSuperAdmin`) is never copied.\n"
}SHA-256 of public snapshot: 795a1662a259cfc71d3bb7a281ba4e473e0ec9b6f977caa66b29921e1b94f28a