account-hygiene
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
Finding specific Dubber recordings for a complaint, billing dispute, HR matter or QA sample: resolving a person or line to Dub.Points, windowed recording searches in the client's timezone, reading recording details, and marking calls with tags or metadata for follow-up or
Claude Code
$ npx -y skills add wyre-ai/msp-claude-plugins --skill call-retrieval --agent claude-code
Codex
$ npx skills add wyre-ai/msp-claude-plugins --skill call-retrieval -a codex -y
Cursor
$ npx skills add wyre-ai/msp-claude-plugins --skill call-retrieval -a cursor -y
Gemini CLI
$ npx skills add wyre-ai/msp-claude-plugins --skill call-retrieval -a gemini-cli -y
GitHub Copilot
$ npx skills add wyre-ai/msp-claude-plugins --skill call-retrieval -a github-copilot -y
OpenCode
$ npx skills add wyre-ai/msp-claude-plugins --skill call-retrieval -a opencode -y
Windsurf
$ npx skills add wyre-ai/msp-claude-plugins --skill call-retrieval -a windsurf -y
name: "Dubber Call Retrieval and Tagging" description: > Finding specific Dubber recordings for a complaint, billing dispute, HR matter or QA sample: resolving a person or line to Dub.Points, windowed recording searches in the client's timezone, reading recording details, and marking calls with tags or metadata for follow-up or retention. Covers which steps are read, which are write tier in Conduit, and why recording deletion is out of scope for this workflow. when_to_use: >- When someone needs to locate, review or mark particular calls in Dubber. Use when: find a call, customer complaint call, call dispute, pull recordings for a technician, QA call sample, tag a recording, legal hold tag, recordings between dates, who called on, dubber recording details.
Most Dubber requests an MSP gets are "find the call where...". Dubber has no search by person and no server-side date filter, so the work is: resolve the person or number to Dub.Points, list recordings for each Dub.Point in a time window, then narrow by the call details. Finding and reading calls is read tier in Conduit. Tagging and metadata changes are write tier.
The plugin cannot play or download audio. Give the user the recording IDs and details so they can open the calls in the Dubber portal.
Get the account ID, who or which line, and the time window in the client's local time. Convert the window to ISO 8601 with an explicit offset, for example `2026-11-02T00:00:00+11:00` to `2026-11-07T00:00:00+11:00` for a Monday-to-Friday week in Sydney daylight time. Ask for a narrower window if the user only says "last month".
keep the Dub.Points whose `user` URL ends in `/users/<that ID>`. A person can have more than one Dub.Point (desk phone and softphone). Both lists return one Dubber page, so if either may be truncated (the Dub.Point list came back at exactly 20), one of the person's lines may be missing. Mark the search incomplete, whether or not it found calls, and have the user confirm the person's lines in the Dubber portal.
identifiers, then `dubber_dub_points_get` for detail.
Call `dubber_recordings_list` once per Dub.Point with `dubPointId`, `startTimeFrom`, `startTimeTo` and a `limit` that fits the request (100 is usually enough for a week). `query` passes a search string to Dubber if the user has a number or keyword. If `hasMore` is true, continue with `cursor=<nextCursor>` and `offset=<remainingOffset>`, keeping the same `dubPointId` and window.
Narrow the results by the fields on each recording: `from`, `to`, `call_type`, `duration`, `start_time`. Present a short table, newest first.
`dubber_recordings_get` for each likely match returns its metadata, tags and duration. Confirm the match with the user before marking anything.
`legal-hold`. Tags are the simplest way for the client to find the set again in the portal.
current metadata with `dubber_recordings_get` first and send the complete object you want to keep.
Conduit it needs `confirm_destructive_action: true` after the user agrees. Removing a hold-style tag can let a retention rule act on the call, so confirm who asked for it.
`dubber_recordings_delete` permanently destroys the audio and its compliance record. It is write tier in Conduit, not admin, so a technician with write access can reach it. Do not use it in a retrieval workflow. If the user asks to delete a call, stop and confirm there is a written instruction from the client's authorised contact and no legal hold, then confirm the exact recording ID before passing `confirm_destructive_action: true`.
exclusive.
same one.
call is missing, check `dubber_groups_list_unidentified_recordings` on the group.
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: wyre-ai.github.io/msp-claude-plugins
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
1Password MCP fundamentals through Conduit: the region plus two independent credential halves (Events Reporting token, Users API…
How to review a departing or departed user's 1Password footprint with the read-only tools: confirm the seat is suspended, find…
Triage of 1Password sign-in attempts for one client account: pulling the sign-in feed over a window, grouping failures by user,…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership,…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.