api-patterns
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its…
KPN business mobile through Mobile Services Management (MSM v11): subscribers, contracts (lines/SIMs), allowed operations per contract, orders and service requests, invoices and invoice PDFs, the customer's organisation tree and usage thresholds; plus the confirmed writes (SIM
$ npx -y skills add wyre-ai/msp-claude-plugins --skill mobile-fleet --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/mobile-fleetContext preview
The summary Claude sees to decide when to auto-load this skill.
KPN business mobile through Mobile Services Management (MSM v11): subscribers, contracts (lines/SIMs), allowed operations per contract, orders and service requests, invoices and invoice PDFs, the customer's organisation tree and usage thresholds; plus the confirmed writes (SIM
name: "KPN Mobile Fleet" description: > KPN business mobile through Mobile Services Management (MSM v11): subscribers, contracts (lines/SIMs), allowed operations per contract, orders and service requests, invoices and invoice PDFs, the customer's organisation tree and usage thresholds; plus the confirmed writes (SIM block, unblock, replace; order authorize and cancel) and PIN/PUK handling. when_to_use: >- When managing a customer's KPN business-mobile fleet: finding who has which number or SIM, handling a lost or stolen phone, replacing a SIM or moving to eSIM, approving or cancelling KPN orders, pulling KPN mobile invoices, or unlocking a PUK-locked phone. Use when: kpn zakelijk mobiel, block sim, lost phone, stolen phone, replace sim, esim, puk code, kpn order approval, kpn invoice, mobile subscribers.
MSM is KPN's business-mobile management API. All `kpn_mobile_*` tools use the MSM token realm (see the api-patterns skill). Identifiers are MSM ids: look a contract up before acting on it.
| Starting from | Tool | |---|---| | A person's name or employee number | `kpn_mobile_subscribers_list` → `kpn_mobile_subscribers_get` (includes their contracts) | | A phone number, ICCID or IMEI | `kpn_mobile_contracts_list` with `mobileNumber` / `simCardNumber` / `imei` | | A contract id | `kpn_mobile_contracts_get` | | Cost centres, debtors, locations | `kpn_mobile_hierarchy_list` (omit `parentId` for the roots) |
Lists page with `offset`/`limit` (max 100). If the result says there are more items, page before concluding something doesn't exist.
`kpn_mobile_contracts_get_operations` shows which actions (block, unblock, replace, ...) are currently allowed on a contract and which open orders block them. The write tools check this themselves and refuse when the operation is not allowed, but calling it first gives the user a clear answer instead of a refusal.
All five write tools ask for confirmation first and create a KPN **order**:
| Tool | Effect | Notes | |---|---|---| | `kpn_mobile_sim_block` | Calls, SMS and data stop | For lost/stolen phones; reversible | | `kpn_mobile_sim_unblock` | Restores service | Only once the device is back with its owner | | `kpn_mobile_sim_replace` | New physical SIM (`newSimCardNumber`) or eSIM (`esim: true` + `email` for the QR code) | Old SIM stops when the order completes | | `kpn_mobile_orders_authorize` | Approves an `UNAUTHORIZED` order | May commit the customer to costs | | `kpn_mobile_orders_cancel` | Cancels an open order | Cannot be resumed |
Report the order id and status after a write, and say plainly that the change takes effect when KPN completes the order. If the status is `UNAUTHORIZED`, someone with approval rights still has to authorize it.
Every write accepts a `referenceNumber` (max 25 characters, defaults to `WYRE-<timestamp>`). Put the ticket number there so the KPN order traces back to the PSA.
Contract output always masks PIN and PUK. `kpn_mobile_contracts_get_puk` reveals one PUK after confirmation. A PUK lets someone take over a locked SIM: verify who is asking first (call back on a known number; consider `kpn_sim_swap_get_date`), and give it only to the SIM's user.
open items (`NEW`, `IN_PROGRESS`, `UNAUTHORIZED`). Pass `status` for others.
`searchFrom`/`searchTo` date range; `kpn_mobile_invoices_get_pdf` returns the PDF as an embedded resource.
cost); pass `thresholdId` to see which contracts a cap applies to.
Outages, address availability and SIM-swap lookups belong to the network-checks skill; they don't use MSM.
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai
Repo: wyre-technology/msp-claude-plugins
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail,…
3CX's read-only directory surface: resolving a caller by email or by exact extension,…
3CX's system-and-configuration surface: server time, PBX event log and application log…
Abnormal Security abuse mailbox cases: user-reported email submissions, case statuses and…
Abnormal Security message analysis: message retrieval, email header inspection, attachments,…