Install
openclaw skills install sharepoint-sitesMicrosoft SharePoint and OneDrive integration with managed OAuth. Manage sites, lists, libraries, files, folders, permissions, content types, and SharePoint operations via Microsoft Graph API.
openclaw skills install sharepoint-sitesConnect to SharePoint and OneDrive to manage sites, lists, document libraries, files, folders, permissions, content types, and SharePoint operations via Microsoft Graph API.
This skill uses ClawLink for hosted connection flows and credentials so you do not need to configure Microsoft SharePoint API access yourself.
| Step 1: Install | Step 2: Pair Account | Step 3: Connect SharePoint |
|---|---|---|
![]() | ![]() | App-specific connection GIF coming soon |
| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect SharePoint |
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ OpenClaw │────▶│ ClawLink │────▶│ Microsoft Graph │
│ (User Chat) │ │ (OAuth) │ │ (SharePoint, │
│ │ │ │ │ OneDrive) │
└─────────────────┘ └──────────────┘ └──────────────────┘
│ │ │
│ 1. Install Plugin │ │
│ 2. Pair Device │ │
│ 3. Connect SharePoint │ │
│ │ 4. OAuth Proxy │
│ │ 5. Request Forward │
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ SKILL │ │ Dashboard│ │ SharePoint│
│ File │ │ Auth │ │ Online │
└──────────┘ └──────────┘ └──────────┘
Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.
openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
Then tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for SharePoint again."
# List all sites accessible to the user
clawlink_call_tool --tool "share_point_list_sites"
# List all lists in a SharePoint site
clawlink_call_tool --tool "share_point_list_all_lists" --params '{"site_id": "YOUR_SITE_ID"}'
# Get current user info
clawlink_call_tool --tool "share_point_get_current_user"
All SharePoint tool calls are authenticated automatically by ClawLink using the user's connected Microsoft account via OAuth.
No OAuth setup is required in chat. ClawLink manages the OAuth flow and token refresh automatically.
clawlink_begin_pairing if it is not configured yet.clawlink_list_integrations to verify the connection is active.clawlink_list_integrations
Response: Returns all connected integrations. Look for sharepoint in the list.
clawlink_list_tools --integration sharepoint
Response: Returns the live tool catalog for SharePoint.
If SharePoint tools are missing or the connection shows an error:
clawlink_list_integrations to verifyclawlink_list_tools --integration sharepointshare_point_get_role_definitions rather than hard-coding.| Tool | Description | Mode |
|---|---|---|
share_point_list_sites | Retrieve all SharePoint sites accessible to the user | Read |
share_point_get_site_collection_info | Fetch site collection metadata (URL, ID, root web URI) — not item-level details | Read |
share_point_get_web_info | Retrieve current SharePoint web metadata (title, URL, language, template) | Read |
share_point_get_current_user | Retrieve the current user for the site (confirms authentication) | Read |
| Tool | Description | Mode |
|---|---|---|
share_point_list_all_lists | Retrieve all lists and document libraries in the current SharePoint web | Read |
share_point_get_list_by_title | Fetch list metadata by title | Read |
share_point_get_list_by_guid | Fetch list metadata by its unique identifier (prefer GUID over title) | Read |
share_point_get_list_items | Retrieve items from a SharePoint list with optional OData parameters | Read |
share_point_get_list_items_by_guid | Retrieve items from a SharePoint list using its GUID | Read |
share_point_list_list_columns | List all column definitions in a SharePoint list (names, types, properties) | Read |
share_point_render_list_data_as_stream | Retrieve list items with rich metadata and formatting via CAML queries | Read |
share_point_get_changes | Retrieve changes from the SharePoint list change log (for webhook processing) | Read |
| Tool | Description | Mode |
|---|---|---|
share_point_get_list_item_by_id | Fetch a specific list item by ID | Read |
share_point_get_list_item_version | Access historical versions of a list item | Read |
share_point_sharepoint_create_list_item | Create a new item in a SharePoint list (returns item_id and timestamps) | Write |
share_point_create_list_item_by_id | Create a new item in a list using the list's GUID | Write |
share_point_create_list_item_in_folder | Create a list item in a specific folder within a SharePoint list | Write |
share_point_update_list_item | Update fields on an existing list item with ETag concurrency control | Write |
share_point_delete_list_item | Permanently delete a list item by its ID | Write |
share_point_recycle_list_item | Move a list item to the Recycle Bin (soft-delete, restorable) | Write |
share_point_restore_recycle_bin_item | Restore a deleted item by its GUID | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_sharepoint_create_list | Create a new list in SharePoint (custom columns require separate calls) | Write |
share_point_update_list | Update list metadata (title, description, versioning settings) | Write |
share_point_delete_list | Permanently delete a SharePoint list by its GUID | Write |
share_point_delete_list_by_title | Permanently delete a SharePoint list by title | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_list_drive_children | List children (files and folders) in a drive root or folder | Read |
share_point_list_files_in_folder | Enumerate all files in a folder by server-relative URL (non-recursive) | Read |
share_point_list_drives_rest_api | Retrieve document libraries and drives from a SharePoint site | Read |
share_point_get_site_drive_item_by_path | Get metadata for a file or folder by its server-relative path | Read |
share_point_download_file_by_server_relative_url | Fetch raw bytes of a SharePoint file by its server-relative path | Read |
share_point_list_drive_recent_items | List recently modified items in a SharePoint drive | Read |
| Tool | Description | Mode |
|---|---|---|
share_point_sharepoint_check_out_file | Check out a file in a document library to lock it for editing | Write |
share_point_check_in_file | Check in a file to finalize changes and release the lock | Write |
share_point_undo_checkout_file | Undo a file checkout, discarding any changes made while checked out | Write |
share_point_upload_file | Upload a file to a SharePoint document library or folder | Write |
share_point_upload_from_url | Fetch a file from a URL and upload it to SharePoint (with conflict behavior) | Write |
share_point_update_drive_item | Update properties of a drive item (rename file/folder) | Write |
share_point_recycle_file | Move a file to the Recycle Bin | Write |
share_point_restore_drive_item_version | Revert a file to an earlier version | Write |
share_point_delete_drive_item_version_content | Delete binary content of a specific version of a drive item | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_list_subfolders_in_folder | List immediate child folders within a SharePoint folder | Read |
share_point_get_all_folders | Retrieve all folders across the SharePoint site | Read |
share_point_sharepoint_create_folder | Create a new folder in SharePoint (returns server_relative_url) | Write |
share_point_delete_folder | Delete a folder from a document library (moves to Recycle Bin) | Write |
share_point_rename_folder | Rename a folder by updating its list item metadata | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_get_role_definitions | List role definitions at the web level (IDs are scoped per site — resolve dynamically) | Read |
share_point_break_role_inheritance_on_list | Break permission inheritance on a SharePoint list (must precede add_role_assignment_to_list) | Write |
share_point_break_role_inheritance_on_item | Break permission inheritance on a list item | Write |
share_point_add_role_assignment_to_list | Grant permissions to a user or group on a SharePoint list | Write |
share_point_add_role_assignment_to_item | Grant permissions to a user or group on a list item | Write |
share_point_ensure_user | Ensure a user exists in a SharePoint site by login name (returns Id for permissions) | Write |
share_point_get_user_effective_permissions_on_web | Get a user's effective permissions on the current site | Read |
| Tool | Description | Mode |
|---|---|---|
share_point_get_content_types | Retrieve all content types from the current SharePoint site | Read |
share_point_get_content_type | Retrieve a specific content type by its ID | Read |
share_point_get_content_types_for_list | Retrieve all content types for a specific SharePoint list by GUID | Read |
share_point_get_list_content_type_by_id | Retrieve a specific content type from a list by ID | Read |
share_point_add_field_link_to_content_type | Associate an existing list field with a content type | Write |
share_point_create_content_type | Create a new content type in SharePoint | Write |
share_point_update_content_type | Update a content type's properties (name, description, group, hidden status) | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_create_list_field | Create a new field (column) in a SharePoint list | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_list_item_attachments | List all attachments for a SharePoint list item | Read |
share_point_get_item_attachment_content | Download the binary contents of a specific attachment | Read |
share_point_add_attachment_to_list_item | Upload a binary file as an attachment to a list item | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_create_drive_item_sharing_link | Create a sharing link for a drive item with specific permissions (view/edit/embed) and scope | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_list_site_users | List users in the site collection | Read |
share_point_list_site_groups | List SharePoint site groups for a site collection | Read |
share_point_get_group_users | Retrieve all users who are members of a specified SharePoint group | Read |
share_point_get_group_users_by_id | Retrieve all users in a specific SharePoint site group by group ID | Read |
share_point_sharepoint_find_user | Search for a user by email address in the SharePoint site | Read |
share_point_sharepoint_remove_user | Remove a user from SharePoint (idempotent — returns success even if not a member) | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_get_my_followed | Get entities the current user is following | Read |
share_point_get_my_followers | Get the list of users who are following the authenticated user | Read |
share_point_is_followed | Check if the current user is following a specified actor | Read |
share_point_follow | Follow a SharePoint user, document, site, or tag | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_search_query | Search SharePoint content using Keyword Query Language (KQL) | Read |
share_point_search_suggest | Get search query suggestions for autocomplete | Read |
| Tool | Description | Mode |
|---|---|---|
share_point_get_site_page_content | Retrieve modern SharePoint Site Pages content (CanvasContent1, LayoutWebpartsContent) | Read |
| Tool | Description | Mode |
|---|---|---|
share_point_get_webhook_subscription | Retrieve a specific webhook subscription by ID | Read |
share_point_get_webhook_subscriptions | Retrieve all webhook subscriptions on a SharePoint list | Read |
| Tool | Description | Mode |
|---|---|---|
share_point_list_recycle_bin_items | List items in the SharePoint Recycle Bin | Read |
share_point_delete_recycle_bin_item_permanent | Permanently delete a Recycle Bin item by its GUID | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_create_web | Create a new SharePoint subsite under the current site | Write |
share_point_update_site | Update properties of the current SharePoint site (web) | Write |
| Tool | Description | Mode |
|---|---|---|
share_point_get_context_info | Retrieve SharePoint context information including form digest value | Read |
share_point_get_drive_item_analytics | Get access statistics (view counts, unique viewers) for files or folders | Read |
share_point_log_event | Log custom usage analytics events for tracking user activities | Write |
clawlink_call_tool --tool "share_point_list_sites"
clawlink_call_tool --tool "share_point_get_list_by_title" \
--params '{"title": "Project Tasks"}'
clawlink_call_tool --tool "share_point_get_list_items" \
--params '{"list_name": "Project Tasks"}'
clawlink_call_tool --tool "share_point_sharepoint_create_list_item" \
--params '{
"list_name": "Project Tasks",
"item": {
"Title": "Complete Q4 Report",
"Priority": "High",
"DueDate": "2024-12-31"
}
}'
clawlink_call_tool --tool "share_point_upload_file" \
--params '{
"file_name": "report.xlsx",
"folder_url": "/Shared Documents/Reports",
"file_content": "BASE64_ENCODED_CONTENT"
}'
clawlink_call_tool --tool "share_point_create_drive_item_sharing_link" \
--params '{
"item_id": "YOUR_FILE_ID",
"link_type": "view",
"scope": "organization"
}'
clawlink_call_tool --tool "share_point_break_role_inheritance_on_list" \
--params '{"list_id": "YOUR_LIST_ID", "copy_role_assignments": true}'
clawlink_call_tool --tool "share_point_ensure_user" \
--params '{"login_name": "i:0#.f|membership|user@domain.com"}'
clawlink_call_tool --tool "share_point_add_role_assignment_to_list" \
--params '{"list_id": "YOUR_LIST_ID", "principal_id": "USER_ID_FROM_ENSURE_USER", "role_definition_id": 1}'
clawlink_list_integrations to confirm SharePoint is connected.clawlink_list_tools --integration sharepoint to see the live catalog.clawlink_search_tools with a short query and integration sharepoint.┌─────────────────────────────────────────────────────────────┐
│ READ OPERATIONS (Safe) │
│ list → get → search → describe → call │
│ │
│ Example: List sites → List lists → Get items → Show results │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ WRITE OPERATIONS (Require Confirmation) │
│ describe → preview → confirm → call │
│ │
│ Example: Describe tool → Preview changes → User approves │
│ → Execute create │
└─────────────────────────────────────────────────────────────┘
clawlink_describe_tool first.whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.clawlink_preview_tool first.clawlink_call_tool. Pass confirmation only after the preview matches the user's intent./Shared Documents/FolderName or /Lists/ListName.share_point_get_role_definitions.break_role_inheritance_on_list) before adding unique role assignments.ensure_user is a write operation with provisioning side effects — it registers the user in the site collection but does not grant permissions.upload_from_url with conflict_behavior: 'rename' bypasses file locks on existing files.create_list_field after creating the list.get_site_page_content) read structured content from modern pages — .aspx files may need different handling.| Status / Error | Meaning |
|---|---|
| Tool not found | The tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration sharepoint. |
| Missing connection | SharePoint is not connected. Direct the user to https://claw-link.dev/dashboard?add=sharepoint. |
ItemNotFound | The file, list, or site does not exist. Check the ID or path. |
accessDenied | The connected account lacks permissions to access this site, list, or item. |
invalidArgument | Invalid parameter or missing required field. Review the tool schema with clawlink_describe_tool. |
resourceModified | The item has been modified (ETag mismatch). Re-fetch and retry with updated ETag. |
| Write rejected | User did not confirm a write action. Always confirm before executing writes. |
openclaw plugins list
/new as a standalone message to reload the catalog.openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
/new again and retry.sharepoint.clawlink_describe_tool to verify parameter names and types before calling.clawlink_preview_tool first.list_sites and list_all_lists to discover IDs.Powered by ClawLink — an integration hub for OpenClaw
