Cloud Storage
SharePoint
Connect SharePoint once and hand every teammate a governed MCP endpoint with 95 tools ready to call from Claude, ChatGPT, Cursor, or any MCP client, inside the same permissions they already have, with every call checked and logged.
Automations & dashboards
From answering questions to doing the work
A person no longer has to ask. A trigger starts the work, inside the same permissions and the same audit log as everything else. Automations and live dashboards ship on the Black plan.
Automations
Put SharePoint work on a schedule.
A trigger starts a sequence of steps: call a SharePoint tool, transform the result, branch, wait, and ask a person when it matters.
SharePoint digest
Run 418 · started 2 minutes ago · on behalf of Emma Laurent
-
✓
Schedule
Every weekday at 08:00
0.2s -
✓
Fetch subscriptions
SharePoint
1.4s -
✓
Group by owner
Transform
0.1s -
✓
Draft the digest
Agent step
Ran with 4 tools, returned a structured summary
6.2s -
Approve the digest
Needs approval
Assigned to Michael Brennan
Approve Deny -
Post the digest
SharePoint
Queued
Collections and dashboards
Report on SharePoint without asking.
Collections hold your own data, written by an automation and read by a dashboard that refreshes on a schedule.
SharePoint health
Refreshed 4 minutes ago · every 15 minutes · from the subscriptions collection
Subscriptions
1,284 ↓ 12%
Lists
96 ↓ 8%
Needs attention
3 ↑ 2
Updated this week
412 ↑ 9%
Subscriptions created
Last 14 days
By workspace
Share of activity
Engineering 34%
Product 27%
Support 21%
Sales 18%
AI tools
SharePoint tools for your AI agents
95 tools are ready to call through Elaichi's MCP endpoint the moment you connect SharePoint, governed by the same roles, restrictions, and audit log as everything else in Elaichi.
list_all_sharepoint_sites
List all available SharePoint sites in an organization. Returns: id, createdDateTime, description, displayName, eTag, isPersonalSite, lastModifiedDateTime, name, root, sharepointIds, siteCollection, webUrl.
get_single_sharepoint_site_by_id
Get a single SharePoint site by its id. Returns: id, createdDateTime, description, displayName, isPersonalSite, lastModifiedDateTime, name, sharepointIds, siteCollection, webUrl, 2XX. Required: id.
sharepoint_sites_using_path
Get a SharePoint site by its hostname and server-relative URL path. Returns: id, createdDateTime, description, displayName, isPersonalSite, lastModifiedDateTime, name, sharepointIds, siteCollection, webUrl. Required: hostname, server_relative_path.
list_all_sharepoint_base_site_pages
List SharePoint site pages (baseSitePage objects) from the site pages list in a site. Returns: id, name, createdDateTime, lastModifiedDateTime, webUrl. Results are sorted alphabetically by name in ascending order and returned with pagination. Required: site_id.
get_single_sharepoint_base_site_page_by_id
Get metadata for a specific SharePoint base site page by its id within a site. Returns: id, name, createdDateTime, lastModifiedDateTime, webUrl, eTag. Required: site_id, id.
list_all_sharepoint_site_pages
List the modern site pages on a SharePoint site. The microsoft.graph.sitePage cast in the path filters the pages collection to site pages specifically. Returns id, name, title, pageLayout, promotionKind, webUrl and publishingState. Required: site_id.
get_single_sharepoint_site_page_by_id
Get one modern site page by id. Pass $expand=canvasLayout to include the page content structure and its web parts. Required: site_id, id.
create_a_sharepoint_site_page
Create a modern page on a SharePoint site. "@odata.type" must be "#microsoft.graph.sitePage" and "name" must end in .aspx. The page is created as a DRAFT and is not visible to site visitors until you call site-pages.publish. Required: site_id, @odata.type, name.
update_a_sharepoint_site_page_by_id
Update a modern site page - title, layout, comment settings or canvasLayout content. Editing a published page creates a new draft version; call site-pages.publish to make the change live. Required: site_id, id.
sharepoint_site_pages_publish
Publish a modern site page, making the current draft visible to site visitors. Takes no body. A newly created or edited page stays in draft until this is called. Returns an empty 204 on success. Required: site_id, id.
sharepoint_site_pages_create_from_template
Create a site page from an existing page template. BETA endpoint - Microsoft may change it without notice, so prefer site-pages.create for stable work. The new page is a draft until published. Required: site_id. PREREQUISITE: the site must already hold at least one page template, otherwise this returns 404. Templates are created in the SharePoint page editor (Save as template); none exist in a fresh site.
delete_a_sharepoint_site_page_by_id
Delete a site page. Note the path has no microsoft.graph.sitePage cast - deletion is done on the base pages collection. Returns an empty 204 on success. Required: site_id, id.
list_all_sharepoint_horizontal_sections
List horizontal sections from the canvas layout of a SharePoint site page. Returns: id, columns, isPersonalSite, displayName, name, createdDateTime, lastModifiedDateTime, webUrl. Required: site_id, page_id.
create_a_sharepoint_horizontal_section
Add a horizontal section to a SharePoint page canvas layout. The body needs an id (the section position, as a string, e.g. "1"), plus layout and emphasis - a body without id fails with 400 "Empty Payload. JSON content expected." or "One of the provided arguments is not acceptable." Sections are the rows of a modern page; web parts are placed inside them afterwards. Verified working with {"id":"9","layout":"oneColumn","emphasis":"none"}. Required: site_id, page_id, id.
list_all_sharepoint_web_parts
List web parts on a SharePoint site page. Returns each web part with id, @odata.type, webPartType, data, and innerHtml. Required: site_id, page_id.
sharepoint_web_parts_create_vertical
Create a new web part in the vertical section of a SharePoint page's canvas layout. Returns the created web part with id, @odata.type, webPartType, data, and innerHtml. Required: site_id, page_id. PREREQUISITE: the page canvas must already contain a vertical section, otherwise this returns 404. No method in this integration creates one - add it in the SharePoint page editor first. For the ordinary case use web-parts.create-horizontal, which works against the horizontal sections that new pages have by default.
sharepoint_web_parts_create_horizontal
Create a new web part in a specific column of a horizontal section on a SharePoint site page. Returns: id, @odata.type.type. Required: site_id, page_id, horizontal_section_id, horizontal_section_column_id.
sharepoint_web_parts_download
Download binary content referenced by a web part, by pre-authenticated URL. Like drive-items.download this takes no ids: pass base as the URL origin and path as the pathname plus query string, both taken from the pre-authenticated URL in the web part payload (typically a driveItem @microsoft.graph.downloadUrl). Anything else returns 500 "Invalid URL string". Required: base, path.
list_all_sharepoint_drives
List drives (document libraries) under a SharePoint site. Returns: id, name, createdDateTime, description, eTag, lastModifiedDateTime, webUrl. Required: site_id.
list_all_sharepoint_drive_items
List the CHILDREN of a folder in a document library, with listItem expanded. Despite the resource name this is a folder listing, not a flat item list: item_id must be a FOLDER id, and passing a file id returns 422 "Children cannot be listed from an item that is not a folder". item_id defaults to "root", so omit it to list the library root. Required: site_id, drive_id.
get_single_sharepoint_drive_item_by_id
Get a driveItem from a site's DEFAULT document library. The path resolves /sites/{site_id}/drive, so the id must be a driveItem id from that default drive - passing a site id, a list id or an item from a different drive returns 400 "The provided drive id appears to be malformed, or does not exist". To read an item from a specific (non-default) drive, use drive-items-v2.get with drive_id instead. Required: site_id, id.
sharepoint_drive_items_download
Download a driveItem's binary content by pre-authenticated URL. This tool does not take a drive or item id: it takes the download URL, split in two. Read the item first (drive-items-v2.get) to obtain its "@microsoft.graph.downloadUrl", then pass base as that URL's origin (e.g. https://contoso.sharepoint.com) and path as its pathname plus query string. Passing anything else returns 500 "Invalid URL string". Verified working when split from a live downloadUrl. Required: base, path.
delete_a_sharepoint_drive_item_by_id
Delete a SharePoint drive item by id. Returns an empty 204 response on success. Required: drive_id, id.
list_all_sharepoint_search
Run a Microsoft Search query across SharePoint content. This is a POST that requires a body: {"requests":[{"entityTypes":["driveItem"],"query":{"queryString":"..."}}]}. An empty or malformed body returns 500 "Value cannot be null. (Parameter 'source')". Note also that Microsoft Search is permission-gated - raw POST /v1.0/search/query returns 400 "The call failed, please try again." on a connection without search entitlement, independent of the body, so a correct request can still fail on tenant configuration. Required: requests.
list_all_sharepoint_lists
List all SharePoint lists on a site. Returns each list's id, displayName, description, webUrl and its list facet (template, hidden, contentTypesEnabled). Use the returned id as list_id for list-items and list-columns. Required: site_id.
get_single_sharepoint_list_by_id
Get one SharePoint list by id, including its template and settings. Required: site_id, id.
create_a_sharepoint_list
Create a new SharePoint list on a site. displayName is required; set list.template to choose the type ("genericList" for a normal list, "documentLibrary" for a library). You may define columns inline in the same call. Required: site_id, displayName.
create_a_sharepoint_list_column
Add a column to a SharePoint list. "name" is required and becomes the key used in list item fields. Declare the column type by setting exactly one type facet - text, number, boolean, dateTime, choice, currency, lookup, personOrGroup, hyperlinkOrPicture, geolocation or term - to an object (an empty object accepts the defaults). Required: site_id, list_id, name.
list_all_sharepoint_list_columns
List the column definitions of a SharePoint list. Call this before reading or writing list-items: each column's "name" is the exact key to use in a list item's fields object, and "required"/"readOnly" tell you which keys you must or must not send. Required: site_id, list_id.
get_single_sharepoint_list_column_by_id
Get a single column definition from a SharePoint list, including its type facet and validation rules. Required: site_id, list_id, id.
update_a_sharepoint_list_column_by_id
Update a column definition on a SharePoint list. Send only the properties you want to change. The column type facet generally cannot be changed after creation; displayName, description, required, indexed, hidden and defaultValue can. Required: site_id, list_id, id.
delete_a_sharepoint_list_column_by_id
Delete a column from a SharePoint list. This permanently removes the column and its values from every item in the list. Columns with isDeletable false cannot be removed. Returns an empty 204 on success. Required: site_id, list_id, id.
list_all_sharepoint_list_items
List the items in a SharePoint list. Column values are NOT returned by default - pass $expand=fields to include them, optionally narrowed with $expand=fields($select=Name,Status). Discover the available field names with list-columns.list. Required: site_id, list_id.
get_single_sharepoint_list_item_by_id
Get one item from a SharePoint list. Pass $expand=fields to include the column values. The id is the item's numeric id within the list (e.g. "1"), not a GUID. Required: site_id, list_id, id.
create_a_sharepoint_list_item
Create an item in a SharePoint list. The body must be {"fields": { ... }} where the keys are column names from list-columns.list - call that first to learn the names and which are required. "Title" is the default column on a generic list. Required: site_id, list_id, fields.
update_a_sharepoint_list_item_by_id
Update the column values of a SharePoint list item. This targets the item's fields resource, so the body is the bare fieldValueSet - name/value pairs at the top level, NOT wrapped in a "fields" object (that is only for create). Send only the columns you want to change. Returns the updated fieldValueSet. Required: site_id, list_id, id.
delete_a_sharepoint_list_item_by_id
Delete an item from a SharePoint list. The item goes to the site recycle bin. Returns an empty 204 on success. Required: site_id, list_id, id.
list_all_sharepoint_site_permissions
List permissions. Required: site_id.
create_a_sharepoint_site_permission
Create permission. Required: site_id.
create_a_sharepoint_list_item_permission
Create new navigation property to permissions for sites. Required: site_id, list_id, item_id.
list_all_sharepoint_site_members
List user profile items from the User Information List in a SharePoint site, with field values expanded. Returns: id, createdDateTime, eTag, lastModifiedDateTime, name, webUrl, fields. Required: site_id.
list_all_sharepoint_sub_sites
List the collection of subsites defined under a parent SharePoint site. Returns: id, displayName, name, createdDateTime, lastModifiedDateTime, webUrl, isPersonalSite. Required: site_id.
list_all_sharepoint_organization
List organizations (tenant details) in SharePoint via Microsoft Graph. Returns: id, displayName, businessPhones, preferredLanguage, createdDateTime.
sharepoint_drive_item_export_download
Download the content of a specific drive item in SharePoint, optionally converting it to a specified format. Returns the file content as a binary stream. Required: site_id, drive_id, item_id, format.
list_all_sharepoint_drive_item_permissions
List permissions for a SharePoint drive item. Returns each permission object including its id and resource-type-specific attributes from the microsoft.graph.permission schema. Required: drive_id, item_id.
update_a_sharepoint_drive_item_permission_by_id
Update a sharing permission on a SharePoint drive item. Returns the updated permission including id, roles, grantedTo, and link. ONLY DIRECT PERMISSIONS ARE PATCHABLE: a driveItem's default permissions are inherited from the site's SharePoint groups (Owners / Members / Visitors) and Graph rejects a PATCH on those with 403 Access denied - this is by design, not a request defect. Use drive-item-permissions.list first and target a permission that carries a link object or was granted directly to a user; change site-group membership in SharePoint itself. The body replaces roles wholesale: send ["read"] for view-only or ["write"] for edit. Required: drive_id, item_id, id.
delete_a_sharepoint_drive_item_permission_by_id
Delete a sharing permission from a SharePoint drive item. Returns an empty 204 response on success. Required: drive_id, item_id, id.
get_single_sharepoint_drive_item_permission_by_id
Get a specific permission on a SharePoint drive item by id. Returns: id, attributes. Required: drive_id, item_id, id.
sharepoint_drive_item_invite_send
Send a sharing invitation for a SharePoint drive item to specified recipients, optionally including a custom message and role assignments. Returns a collection of permissions including value (array of permission objects with id, roles, and grantedTo). Required: drive_id, item_id. TENANT GATE: external and link-based sharing must be enabled for the tenant and the library. Where it is not, Graph returns 400 even for a well-formed body - verified with sendInvitation false, so no mail was emitted. Check the SharePoint admin sharing policy before treating a 400 here as a request defect.
list_all_sharepoint_role_assignments
List the users in a SharePoint site group, via the SharePoint REST API rather than Graph. The identifiers are SharePoint-specific: site_name is the site path segment (for example "Notion" from /sites/Notion) and group_id is the NUMERIC SharePoint site-group id from /_api/web/sitegroups - NOT an Entra group GUID. Note also that /_api/ is the SharePoint REST surface and the connection Graph OAuth token is not accepted there, so this returns 401 on a Graph-only connection regardless of the identifiers. Required: site_name, group_id.
list_all_sharepoint_get_all_sites
List every SharePoint site in the tenant. IMPORTANT: /sites/getAllSites requires the Sites.Read.All APPLICATION permission and an app-only token - a delegated (user) connection returns 403 Access denied no matter which site permissions the user holds. To enumerate sites with a delegated connection use sites.list or get the root site with root-site.list and walk sub-sites.list instead. Takes no parameters.
list_all_sharepoint_list_sites
List all available SharePoint sites in an organization. Supports $search to find sites matching given keywords, plus $filter, $count, $orderby, $select, and $expand query options; for listing sites across all geographies use getAllSites instead. Returns: id, displayName, name, webUrl, createdDateTime, lastModifiedDateTime, isPersonalSite, description, eTag, root, sharepointIds, siteCollection.
list_all_sharepoint_group_members
List members of a group in SharePoint. Returns: id, businessPhones, displayName, givenName, jobTitle, mail, mobilePhone, officeLocation, preferredLanguage, surname, userPrincipalName. Required: group_id.
list_all_sharepoint_groups
List the Microsoft 365 groups in the tenant. Takes NO required parameters - call it bare. Earlier versions of this tool declared site_id, store_id, site-id, store-id and group-id as required; none of them appear in the request path, so Graph rejected the call with 400 "Unrecognized query argument specified". Verified returning 19 groups with no parameters at all. Use $select/$filter/$top to narrow the result. The group id returned here is what group-members.list, group-sites.list and planner-plans.list ($filter=owner eq) expect.
get_single_sharepoint_group_by_id
Get a single Microsoft 365 group by id. The ONLY parameter needed is the group id, passed as the path id. Earlier versions also demanded site_id, store_id, site-id, store-id and group-id; none appear in the path and Graph rejects them with 400 "Unrecognized query argument specified". Verified working with the id alone. Required: id.
list_all_sharepoint_group_sites
Get the root SharePoint site of a Microsoft 365 group. Requires the Sites.Read.All permission in addition to group read access; with a delegated connection that lacks it, this returns 403 Access denied even when groups.list succeeds. Required: group_id (the Entra group id, from groups.list).
list_all_sharepoint_me
Get the current authenticated user's profile in SharePoint via the Microsoft Graph /me endpoint. Returns: displayName, id, token_type, scope, expires_in, ext_expires_in, access_token, refresh_token. No required parameters.
list_all_sharepoint_root_site
Get the root SharePoint site within a tenant. Returns the site object including its id, displayName, name, webUrl, createdDateTime, lastModifiedDateTime, and isPersonalSite.
sharepoint_drive_item_download_download
Download the content of a SharePoint drive item file as a binary stream. Returns the file's binary content stream (application/octet-stream). Required: site_id, drive_id, item_id.
get_single_sharepoint_drive_items_v_2_by_id
Get a single SharePoint drive item by id. Returns: id, name, createdDateTime, lastModifiedDateTime, webUrl, isPersonalSite, displayName. Required: drive_id, id.
list_all_sharepoint_drive_items_v_2
List children of a SharePoint drive item, expanding listItem data for each child. Returns: id, name, createdDateTime, description, eTag, lastModifiedDateTime, webUrl. Required: drive_id. Defaults to listing root children when item_id is omitted.
update_a_sharepoint_drive_items_v_2_by_id
Update a SharePoint drive item by id. Returns: id, name, createdDateTime, description, eTag, lastModifiedDateTime, webUrl. Required: drive_id, id.
create_a_sharepoint_drive_item_child
Create a new child item (such as a folder or file) under a parent SharePoint drive item. Returns: id, name, displayName, description, eTag, webUrl, createdDateTime, lastModifiedDateTime, isPersonalSite, root, sharepointIds, siteCollection, analytics, contentTypes, drive, drives, items, lists, operations, permissions, sites, columns, onenote, termStore, termStores. Required: drive_id,…
sharepoint_drive_item_content_upload_by_site_path
Upload file content to a SharePoint site's default drive by specifying the parent folder path and file name. Returns the driveItem object including id, name, createdDateTime, lastModifiedDateTime, eTag, and webUrl. Required: site_id, parent_id, file_name.
create_a_sharepoint_drive_item_content
Upload new file content to a SharePoint drive by specifying the parent item and file name. Returns the driveItem object including id, name, createdDateTime, lastModifiedDateTime, eTag, and webUrl. Required: drive_id, parent_id, file_name.
update_a_sharepoint_drive_item_content_by_id
Replace the content of an existing SharePoint driveItem by id. Returns the driveItem object including id, name, createdDateTime, lastModifiedDateTime, eTag, and webUrl. Required: drive_id, id.
create_a_sharepoint_drive_item_upload_session
Create an upload session in SharePoint to begin a resumable file upload for a new drive item under a parent folder. Returns: uploadUrl, expirationDateTime, nextExpectedRanges. Required: drive_id, item_id, file_name. NOTE ON ETAGS: this method also sends an If-Match header from the optional etag query param. Creating a session for a NEW file name succeeds without it, but pointing it at a name that already exists and omitting etag returns 412 - pass the existing item's eTag in that case.
sharepoint_drive_item_upload_sessions_create_for_item
Create an upload session in SharePoint to update the content of an existing drive item via resumable chunked upload. Returns: uploadUrl, expirationDateTime, nextExpectedRanges. VERIFIED behaviour: with a correct etag this returns an uploadUrl; with a stale etag, or with etag omitted entirely, it fails with 412 "ETag does not match current item's value" - the method always sends If-Match, so etag is effectively required even though it is a query parameter. PUT the file bytes to the returned uploadUrl in ranges; the session is not the upload itself. Required: drive_id, item_id, etag.
list_all_sharepoint_drive_item_version
List versions of a drive item in a SharePoint document library. Returns: id, lastModifiedDateTime, createdDateTime, displayName, name, webUrl, isPersonalSite, eTag, description, root, sharepointIds, siteCollection. Required: site_id, drive_id, item_id.
get_single_sharepoint_share_by_id
Resolve a sharing link to the driveItem it points at, with children expanded. The id is NOT a site, drive or item id - it must be either a sharing token, or a sharing URL encoded as "u!" followed by the base64url of the URL (standard base64 with + replaced by -, / replaced by _, and trailing = stripped). A link to a site rather than a file or folder returns 400 "Share url does not point to a drive item". Required: id.
create_a_sharepoint_site_item_content
Upload binary file content to create or replace a file in a SharePoint site, addressing it by site, parent item, and file name. Returns: id, name, createdDateTime, lastModifiedDateTime, webUrl, isPersonalSite, displayName. Required: site_id, parent_id, file_name.
create_a_sharepoint_ensure_user
Resolve a user on a SharePoint site via the SharePoint REST API, creating the site user entry if it does not exist. TWO THINGS TO KNOW. First, this method builds its own base URL from a truto_base query parameter - pass truto_base as the site URL (e.g. https://contoso.sharepoint.com/sites/TeamA); omit it and the request resolves against the Graph host and fails with 404 "Invalid version: _api". Second, /_api/ is the SharePoint REST surface rather than Graph, and the connection Graph OAuth token is not accepted there - the call returns 401 even with truto_base set. The same limitation applies to role-assignments.list. Required: truto_base, and logonName in the body.
list_all_sharepoint_subscriptions
List active Microsoft Graph subscriptions in SharePoint. Returns: id, applicationId, changeType, clientState, creatorId, encryptionCertificate, encryptionCertificateId, expirationDateTime, includeResourceData, latestSupportedTlsVersion, lifecycleNotificationUrl, notificationQueryOptions, notificationUrl, notificationUrlAppId, resource.
get_single_sharepoint_subscription_by_id
Get a Microsoft Graph change-notification subscription by id. The id must be the subscription GUID returned by subscriptions.list or subscriptions.create - it is NOT a site, drive, list or item id. Passing anything else returns 400 "SubscriptionId Guid format is invalid or contained all zeros". Required: id.
create_a_sharepoint_subscription
Create a Microsoft Graph subscription to receive change notifications when SharePoint data changes. Returns the created subscription including id, changeType, resource, notificationUrl, and expirationDateTime. Required: changeType, notificationUrl, resource, expirationDateTime.
update_a_sharepoint_subscription_by_id
Update a Microsoft Graph subscription's expirationDateTime for renewal and/or notificationUrl for delivery. Returns the updated subscription including id, changeType, resource, notificationUrl, and expirationDateTime. Required: id.
delete_a_sharepoint_subscription_by_id
Delete a Microsoft Graph subscription by id to stop receiving change notifications. Returns an empty 204 response on success. Required: id.
sharepoint_subscriptions_reauthorize
Reauthorize a Microsoft Graph subscription when you receive a reauthorizationRequired challenge. Returns an empty 204 response on success. Required: id.
list_all_sharepoint_drive_items_delta
Track incremental changes to items under the root of a SharePoint drive using a delta query. Returns: value, @odata.nextLink, @odata.deltaLink, id, isPersonalSite, displayName, name, createdDateTime, lastModifiedDateTime, webUrl.nextLink, @odata.deltaLink. Required: drive_id.
list_all_sharepoint_site_drive_items_delta
Track changes to a site's default document library (delta query). Returns the changed driveItems in value, plus a deltaLink carrying the token for the next call. delta_token is effectively REQUIRED: the method always appends token={{query.delta_token}}, so leaving it out sends the unsubstituted placeholder and Graph rejects the call with 400 "One of the provided arguments is not acceptable". Pass delta_token=latest for a starting cursor without enumerating the library (VERIFIED: returns 200 with an empty set), or the token from the previous deltaLink to get only subsequent changes. Required: site_id, delta_token.
list_all_sharepoint_planner_plans
List Microsoft Planner plans. Graph rejects this collection unbound: you MUST pass $filter on the owner property, e.g. $filter=owner eq '
get_single_sharepoint_planner_plan_by_id
Get one Planner plan by id. The response carries an @odata.etag - keep it, update and delete require it. Required: id.
create_a_sharepoint_planner_plan
Create a Planner plan. A plan must belong to a Microsoft 365 group - set container.containerId to the group id. title is required. The signed-in user must be a member of that group. Required: title, container.
update_a_sharepoint_planner_plan_by_id
Update a Planner plan (in practice, its title). Requires the etag query param, taken from the @odata.etag of a prior get - Planner sends it as If-Match and returns 409 Conflict if it is stale (400 if the param is omitted). Send only the fields you are changing. Required: id, etag.
delete_a_sharepoint_planner_plan_by_id
Delete a Planner plan. This permanently removes the plan and every bucket and task in it. Requires the etag query param (sent as If-Match); a stale etag returns 409 Conflict, and omitting the param returns 400. Returns an empty 204 on success. Required: id, etag.
list_all_sharepoint_planner_buckets
List the buckets (board columns) of a Planner plan. Buckets are how a Planner board is divided; a task's bucketId must reference one of these. Required: plan_id.
get_single_sharepoint_planner_bucket_by_id
Get one Planner bucket by id. Note the path is /planner/buckets/{id} - buckets are addressed globally, not under their plan. Keep the returned @odata.etag for update and delete. Required: id.
create_a_sharepoint_planner_bucket
Create a bucket in a Planner plan. name and planId are required. Set orderHint to " !" to place it first on the board, or omit it to append. Required: name, planId.
update_a_sharepoint_planner_bucket_by_id
Update a Planner bucket - rename it or move it on the board via orderHint. Requires the etag query param from a prior read (sent as If-Match); 409 Conflict if stale, 400 if omitted. Required: id, etag.
delete_a_sharepoint_planner_bucket_by_id
Delete a Planner bucket. Tasks in the bucket are NOT deleted - they become unbucketed in the same plan. Requires the etag query param (sent as If-Match). Returns an empty 204 on success. Required: id, etag.
list_all_sharepoint_planner_tasks
List Microsoft Planner tasks. Graph rejects this collection unbound: you MUST pass $filter on planId, e.g. $filter=planId eq '
get_single_sharepoint_planner_task_by_id
Get one Planner task by id. Returns the task fields only - the description, checklist and references are on the separate task details entity. Keep the returned @odata.etag for update and delete. Required: id.
create_a_sharepoint_planner_task
Create a Planner task. planId and title are required; bucketId is optional but must reference a bucket in the same plan. Assign people by keying assignments on their user id. percentComplete 0/50/100 maps to Not started / In progress / Completed. Required: planId, title.
update_a_sharepoint_planner_task_by_id
Update a Planner task - retitle it, move buckets, set progress, reassign or change dates. Requires the etag query param, taken from the @odata.etag of a prior read; Planner sends it as If-Match and returns 409 Conflict if it is stale (400 if the param is omitted). Send only the fields you are changing. Required: id, etag.
delete_a_sharepoint_planner_task_by_id
Delete a Planner task. Requires the etag query param (sent as If-Match); a stale etag returns 409 Conflict, and omitting the param returns 400. Returns an empty 204 on success. Required: id, etag.
No tools match your search.
How it works
From SharePoint account to governed MCP endpoint
Connect
Link a SharePoint account through Elaichi's hosted connect flow. Credentials are vaulted, so nobody, including the AI, ever sees them.
Compose
The connection becomes a toolbox instantly. Curate which SharePoint tools are exposed, rename them, or freeze arguments.
Authorize
Point Claude, ChatGPT, Cursor, or any MCP client at the one Elaichi endpoint and sign in with OAuth, governed by roles, restrictions, and audit logs.
Put your agents to work in the tools you already use
Start a 14-day Gold trial. Connect a product, curate a toolbox, and paste a governed MCP endpoint into Claude, ChatGPT, or Cursor in minutes.