api-patterns
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com),…
OneDrive personal storage and SharePoint document libraries, both reached through the shared Microsoft Graph `/drives` endpoint: drive and item addressing, sharing permissions, storage quotas, file search, and the offboarding file-transfer workflow.
$ npx -y skills add wyre-technology/msp-claude-plugins --skill files --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/filesContext preview
The summary Claude sees to decide when to auto-load this skill.
OneDrive personal storage and SharePoint document libraries, both reached through the shared Microsoft Graph `/drives` endpoint: drive and item addressing, sharing permissions, storage quotas, file search, and the offboarding file-transfer workflow.
name: "Microsoft 365 Files" description: > OneDrive personal storage and SharePoint document libraries, both reached through the shared Microsoft Graph `/drives` endpoint: drive and item addressing, sharing permissions, storage quotas, file search, and the offboarding file-transfer workflow. when_to_use: >- When investigating M365 file access, sharing, storage-quota, or file-search issues across OneDrive and SharePoint. Use when: onedrive, m365 files, sharepoint files, onedrive quota, file sharing m365, onedrive permissions, m365 storage, find file m365, onedrive access, or sharepoint document library.
Microsoft 365 provides two file storage surfaces: OneDrive (personal, per-user) and SharePoint (team/department libraries). Both are accessible through the same Microsoft Graph `/drives` endpoint. MSP support tasks include investigating access issues, checking storage quotas, managing sharing permissions, and transferring file access during offboarding.
file", "find the config", "list the directory" almost always mean the local filesystem, which Claude Code's own file tools handle. This skill only reaches a customer's cloud storage through Graph, and loading it for local work wastes the call.
recycle bin and retention window, Graph has nothing to return; use the `backup-pack` or `kaseya/datto-saas-protection`.
in the documentation platform, not the customer's OneDrive; use `kaseya/it-glue` or `hudu`.
inspects one item's permissions; the policy question across the tenant or the fleet is `m365-security` or `cipp`.
| Surface | Use | Graph Resource | |---------|-----|---------------| | **OneDrive Personal** | Individual user's documents | `/users/{id}/drive` | | **SharePoint Site Drive** | Team/department files | `/sites/{id}/drives` | | **SharePoint Library** | Document library within a site | `/drives/{driveId}` |
GET /v1.0/users/{userId}/drive?$select=id,name,quota**Response:**
{
"id": "drive-guid",
"name": "OneDrive",
"quota": {
"used": 5368709120,
"remaining": 1127428915200,
"total": 1132797624320,
"state": "normal"
}
}`state` values: `normal`, `nearing`, `critical`, `exceeded`
GET /v1.0/users/{userId}/drive/root/children?$select=id,name,size,lastModifiedDateTime,webUrl,folder,fileGET /v1.0/users/{userId}/drive/items/{folderId}/children?$select=id,name,size,lastModifiedDateTime,webUrlGET /v1.0/users/{userId}/drive/root/search(q='budget 2024')?$select=id,name,parentReference,lastModifiedDateTime,webUrlGET /v1.0/drives/{driveId}/items/{itemId}/permissions**Response includes:**
{
"value": [
{
"id": "perm-id",
"roles": ["write"],
"grantedToV2": {
"user": { "displayName": "Bob Manager", "email": "bmanager@contoso.com" }
},
"link": null
},
{
"id": "link-id",
"roles": ["read"],
"link": {
"type": "view",
"scope": "anonymous",
"webUrl": "https://contoso-my.sharepoint.com/..."
}
}
]
}POST /v1.0/drives/{driveId}/items/{itemId}/createLink
Content-Type: application/json
{
"type": "view",
"scope": "organization"
}`type`: `view`, `edit`, `embed` `scope`: `anonymous`, `organization`, `users`
POST /v1.0/drives/{driveId}/items/{itemId}/invite
Content-Type: application/json
{
"requireSignIn": true,
"sendInvitation": false,
"roles": ["read"],
"recipients": [
{ "email": "manager@contoso.com" }
],
"message": "Shared as part of employee transition"
}DELETE /v1.0/drives/{driveId}/items/{itemId}/permissions/{permissionId}Grant another user access to the departing employee's entire OneDrive:
POST /v1.0/users/{departingUserId}/drive/root/invite
Content-Type: application/json
{
"requireSignIn": true,
"sendInvitation": false,
"roles": ["write"],
"recipients": [{ "email": "manager@contoso.com" }]
}> Full ownership transfer (changing site admin) requires SharePoint admin PowerShell: > `Set-SPOSite -Identity <url> -Owner <email>`
GET /v1.0/sites?search=*&$select=id,displayName,webUrl,createdDateTime
GET /v1.0/sites/{siteId}/drives?$select=id,name,driveType,quotaGET /v1.0/drives/{driveId}/root/children?$select=id,name,size,lastModifiedDateTime,webUrl1. Get the file's current permissions: `GET /items/{id}/permissions` 2. Check if user has direct access or if it's link-based 3. Check if user is in a group that has access: `GET /users/{id}/memberOf` 4. If sharing link expired: create new sharing link 5. If direct access missing: add via `/invite`
Before offboarding, identify files the user owns that are widely shared:
GET /v1.0/users/{userId}/drive/root/search(q='*')?$select=id,name,permissions,parentReferenceLook for items with `scope: anonymous` sharing links — these should be cleaned up or ownership transferred.
Check users approaching quota limits
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 own OAuth authorization server — there is no shared mcp.3cx.com),…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership, and forwarding/presence…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks, searching contacts synced from an…
3CX's system-and-configuration surface: server time, PBX event log and application log search, service status, database schema and the read-only SELECT-only…
Abnormal Security abuse mailbox cases: user-reported email submissions, case statuses and judgments, the case lifecycle, bulk and remediation actions, and…
Abnormal Security message analysis: message retrieval, email header inspection, attachments, sender reputation, delivery context, and SPF/DKIM/DMARC…