Help us improve
Share bugs, ideas, or general feedback.
From m365
Handles OneDrive and SharePoint files in Microsoft 365: checks quotas, lists/searches files, manages sharing permissions via Microsoft Graph API for access troubleshooting.
npx claudepluginhub wyre-technology/msp-claude-plugins --plugin m365How this skill is triggered — by the user, by Claude, or both
Slash command
/m365:filesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
Automates OneDrive file operations including search, upload, download, sharing, permissions, and folder management via Composio's Rube MCP tools. Use for programmatic OneDrive workflows after connecting via OAuth.
Automates OneDrive file search, uploads/downloads, sharing, permissions, and folder ops via Composio toolkit and Rube MCP tools. Requires active connection and tool schema search first.
Automates SharePoint and OneDrive operations including site discovery, list creation, folder and file management, and search. Useful for Microsoft 365 enterprise content management.
Share bugs, ideas, or general feedback.
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.
| 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,file
GET /v1.0/users/{userId}/drive/items/{folderId}/children?$select=id,name,size,lastModifiedDateTime,webUrl
GET /v1.0/users/{userId}/drive/root/search(q='budget 2024')?$select=id,name,parentReference,lastModifiedDateTime,webUrl
GET /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,quota
GET /v1.0/drives/{driveId}/root/children?$select=id,name,size,lastModifiedDateTime,webUrl
GET /items/{id}/permissionsGET /users/{id}/memberOf/inviteBefore offboarding, identify files the user owns that are widely shared:
GET /v1.0/users/{userId}/drive/root/search(q='*')?$select=id,name,permissions,parentReference
Look for items with scope: anonymous sharing links — these should be cleaned up or ownership transferred.
Check users approaching quota limits:
GET /v1.0/users/{userId}/drive?$select=quota
If quota.state is nearing (>80%) or critical (>90%), alert for cleanup or quota increase.
| Error | Cause | Resolution |
|---|---|---|
itemNotFound | File or folder doesn't exist | Check path or item ID |
accessDenied | No Files.Read permission | Grant permission and admin consent |
quotaLimitReached | OneDrive full | Clean up or expand quota |
sharingDisabled | Tenant sharing policy blocks external | Review SharePoint admin settings |
| Task | Microsoft Graph Permission |
|---|---|
| Read user's files | Files.Read.All |
| Read/write files | Files.ReadWrite.All |
| Read SharePoint sites | Sites.Read.All |
| Manage sharing | Files.ReadWrite.All |
| SharePoint admin | Sites.ReadWrite.All |