> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Microsoft PowerPoint

The Microsoft PowerPoint connector lets your AI agent act in each user's Microsoft PowerPoint account. Each user signs in to Microsoft PowerPoint once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 27 tools.

**Authentication:** OAuth 2.0
**Categories:** Files & Documents, Productivity
**Tools:** 27: 16 read, 9 write, 2 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Microsoft PowerPoint app
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=MICROSOFTPOWERPOINT)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Microsoft PowerPoint connection

   In **AgentKit > Connections**, create a Microsoft PowerPoint connection and copy its redirect URI. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Register an OAuth app

   Microsoft PowerPoint connections use your own OAuth app. Register one with Microsoft PowerPoint and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Microsoft PowerPoint connection.

5. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'microsoftpowerpoint'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Microsoft PowerPoint:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'microsoftpowerpoint_list_drives',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "microsoftpowerpoint"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Microsoft PowerPoint:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="microsoftpowerpoint_list_drives",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'microsoftpowerpoint_download_presentation',
  toolInput: {
    item_id: '01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K',
  },
  connector: 'microsoftpowerpoint',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="microsoftpowerpoint_download_presentation",
    tool_input={
        "item_id": "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K",
    },
    connection_name="microsoftpowerpoint",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `microsoftpowerpoint_download_presentation`

Download Presentation · Read-only

Download the original .pptx file of a presentation by item ID.
Returns a redirect to a short-lived pre-authenticated download URL, or the raw .pptx bytes; the response is not JSON.
Use to retrieve the editable file. Use microsoftpowerpoint_export_presentation_pdf for a PDF rendering.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_export_presentation_pdf`

Export Presentation as PDF · Read-only

Convert a PowerPoint presentation to PDF server-side and return the file.
Returns a redirect to the PDF download, or the PDF bytes; Microsoft Graph does not return slide text or JSON.
Use to read or share a deck as a fixed-layout document. Use microsoftpowerpoint_download_presentation for the original .pptx file.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_export_presentation_pdf_in_drive`

Export Presentation as PDF in Drive · Read-only

Convert a presentation in a specific drive, such as a SharePoint library, to PDF server-side and return the file.
Returns a redirect to the PDF download, or the PDF bytes; not JSON.
Use for decks outside personal OneDrive. Use microsoftpowerpoint_export_presentation_pdf for the personal drive.
Requires Files.Read.All or Files.ReadWrite.All scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `drive_id` (`string`, required): The ID of the drive (OneDrive or SharePoint document library) that holds the item. Obtain it from microsoftpowerpoint_list_drives or from the parentReference.driveId field of any returned item.
- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".

Example input: `{"drive_id":"<drive_id>","item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_get_presentation`

Get Presentation Metadata · Read-only

Retrieve metadata for a PowerPoint presentation by its item ID.
Returns name, size, webUrl, createdDateTime, lastModifiedDateTime, file mimeType and hashes, parentReference (including driveId) and the pre-authenticated @microsoft.graph.downloadUrl.
Use to inspect a known presentation. It does not return slide content; use microsoftpowerpoint_export_presentation_pdf or microsoftpowerpoint_download_presentation for content.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `select` (`string`, optional): Optional comma-separated list of driveItem properties to return, which trims the response. Example: "id,name,size,webUrl,lastModifiedDateTime". Leave empty to return the default properties.

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_get_presentation_by_path`

Get Presentation by Path · Read-only

Retrieve metadata for a file or folder in the signed-in user's OneDrive using its path instead of an item ID.
Returns the driveItem with id, name, size, webUrl, lastModifiedDateTime, file facet and parentReference.
Use when you know the location, such as "Documents/Decks/Q1 Review.pptx", but not the item ID. Use microsoftpowerpoint_search_presentations when the location is unknown.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_path` (`string`, required): Path of the presentation relative to the root of the user's OneDrive, with no leading slash. Example: "Documents/Decks/Q1 Review.pptx".

Example input: `{"item_path":"Documents/Decks/Q1 Review.pptx"}`

### `microsoftpowerpoint_get_presentation_in_drive`

Get Presentation Metadata in Drive · Read-only

Retrieve metadata for a presentation in a specific drive, such as a SharePoint document library.
Returns name, size, webUrl, timestamps, file mimeType, parentReference and @microsoft.graph.downloadUrl.
Use for decks outside personal OneDrive. Use microsoftpowerpoint_get_presentation for the personal drive.
Requires Files.Read.All or Files.ReadWrite.All scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `drive_id` (`string`, required): The ID of the drive (OneDrive or SharePoint document library) that holds the item. Obtain it from microsoftpowerpoint_list_drives or from the parentReference.driveId field of any returned item.
- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `select` (`string`, optional): Optional comma-separated list of driveItem properties to return, which trims the response. Example: "id,name,size,webUrl,lastModifiedDateTime". Leave empty to return the default properties.

Example input: `{"drive_id":"<drive_id>","item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_get_presentation_thumbnails`

Get Presentation Thumbnails · Read-only

Retrieve thumbnail images of a presentation, typically for the first slide.
Returns thumbnail sets with small, medium and large image URLs and sizes.
Use to show a visual preview of a deck. Use microsoftpowerpoint_preview_presentation for an interactive embedded preview.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_list_drives`

List Available Drives · Read-only

List the drives the signed-in user can access, including personal OneDrive and SharePoint document libraries.
Returns drive objects with id, name, driveType and webUrl.
Use to get a drive_id for the *_in_drive tools, which reach presentations stored in SharePoint libraries.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `select` (`string`, optional): Optional comma-separated list of driveItem properties to return, which trims the response. Example: "id,name,size,webUrl,lastModifiedDateTime". Leave empty to return the default properties.
- `top` (`integer`, optional): Maximum number of drives to return.

Example input: `{}`

### `microsoftpowerpoint_list_permissions`

List Presentation Permissions · Read-only

List who has access to a presentation, including sharing links and direct grants.
Returns permission objects with id, roles, grantedToV2 or link details, and inheritance information.
Use to audit sharing, or to find a permission_id for microsoftpowerpoint_delete_permission.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_list_presentation_versions`

List Presentation Versions · Read-only

List the saved versions of a presentation.
Returns version objects with id, lastModifiedDateTime, lastModifiedBy and size, newest first.
Use before microsoftpowerpoint_restore_presentation_version to find the version to roll back to.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_list_presentations`

List Presentations in Folder · Read-only

List the files and subfolders inside a OneDrive folder, for locating PowerPoint (.pptx) files.
Returns a page of driveItem objects with id, name, size, webUrl, lastModifiedDateTime, a file facet for files and a folder facet for folders.
Use to browse a known folder; use "root" as parent_id for the top level. Use microsoftpowerpoint_search_presentations to find a deck by name or content, and filter the returned names for ".pptx".
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `parent_id` (`string`, required): Item ID of the folder to list, or "root" for the top level of the user's OneDrive. Folder IDs come from earlier list or search results.
- `orderby` (`string`, optional): Optional sort expression using a driveItem property and direction. Example: "lastModifiedDateTime desc" or "name asc".
- `select` (`string`, optional): Optional comma-separated list of driveItem properties to return, which trims the response. Example: "id,name,size,webUrl,lastModifiedDateTime". Leave empty to return the default properties.
- `top` (`integer`, optional): Maximum number of items to return in one page. Default is set by Microsoft Graph when omitted.

Example input: `{"parent_id":"<parent_id>"}`

### `microsoftpowerpoint_list_presentations_in_drive`

List Presentations in Drive Folder · Read-only

List the files and subfolders inside a folder of a specific drive, such as a SharePoint document library.
Returns a page of driveItem objects with id, name, size, webUrl, lastModifiedDateTime and file or folder facets.
Use for decks that live outside personal OneDrive. Use microsoftpowerpoint_list_presentations for the personal drive.
Requires Files.Read.All or Files.ReadWrite.All scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `drive_id` (`string`, required): The ID of the drive (OneDrive or SharePoint document library) that holds the item. Obtain it from microsoftpowerpoint_list_drives or from the parentReference.driveId field of any returned item.
- `parent_id` (`string`, required): Item ID of the folder to list, or "root" for the top level of the drive.
- `select` (`string`, optional): Optional comma-separated list of driveItem properties to return, which trims the response. Example: "id,name,size,webUrl,lastModifiedDateTime". Leave empty to return the default properties.
- `top` (`integer`, optional): Maximum number of items to return in one page.

Example input: `{"drive_id":"<drive_id>","parent_id":"<parent_id>"}`

### `microsoftpowerpoint_list_recent_presentations`

List Recent Files · Read-only

List files the signed-in user recently worked with in OneDrive.
Returns driveItem objects with id, name, webUrl, lastModifiedDateTime and parentReference, ordered by recent activity; items of any file type are included.
Use to quickly surface the decks a user touched lately; filter names for ".pptx". Use microsoftpowerpoint_search_presentations for a specific query.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `top` (`integer`, optional): Maximum number of recent items to return.

Example input: `{}`

### `microsoftpowerpoint_preview_presentation`

Get Presentation Preview URL · Read-only

Get a short-lived embeddable preview URL for a presentation.
Returns getUrl and postUrl (with optional postParameters) that render the deck in a browser frame without downloading it.
Use to show a deck in an iframe. This creates no file and changes nothing. Use microsoftpowerpoint_get_presentation_thumbnails for static images.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `page` (`string`, optional): Optional page (slide) to start the preview on, as a string. Example: "3".
- `zoom` (`number`, optional): Optional zoom level for the preview, where 1.0 is 100 percent.

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_search_presentations`

Search PowerPoint Presentations · Read-only

Search the signed-in user's OneDrive for files and folders matching a text query across names, metadata and content.
Returns a page of driveItem objects with id, name, size, webUrl, lastModifiedDateTime and parentReference; folders are included.
Use to find a presentation by name or topic: include "pptx" in the query to favor PowerPoint files. Use microsoftpowerpoint_list_presentations to browse a known folder instead.
Requires Files.Read or Files.ReadWrite scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `query` (`string`, required): Search text matched against file names, metadata and content. Include "pptx" to favor PowerPoint files. Example: "quarterly review pptx".
- `select` (`string`, optional): Optional comma-separated list of driveItem properties to return, which trims the response. Example: "id,name,size,webUrl,lastModifiedDateTime". Leave empty to return the default properties.
- `top` (`integer`, optional): Maximum number of items to return in one page.

Example input: `{"query":"quarterly review pptx"}`

### `microsoftpowerpoint_search_presentations_in_drive`

Search Presentations in Drive · Read-only

Search a specific drive, such as a SharePoint document library, for items matching a text query.
Returns a page of driveItem objects with id, name, size, webUrl and parentReference; folders are included.
Use for decks outside personal OneDrive; include "pptx" in the query. Use microsoftpowerpoint_search_presentations for the personal drive.
Requires Files.Read.All or Files.ReadWrite.All scope.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `drive_id` (`string`, required): The ID of the drive (OneDrive or SharePoint document library) that holds the item. Obtain it from microsoftpowerpoint_list_drives or from the parentReference.driveId field of any returned item.
- `query` (`string`, required): Search text matched against file names, metadata and content. Include "pptx" to favor PowerPoint files. Example: "roadmap pptx".
- `select` (`string`, optional): Optional comma-separated list of driveItem properties to return, which trims the response. Example: "id,name,size,webUrl,lastModifiedDateTime". Leave empty to return the default properties.
- `top` (`integer`, optional): Maximum number of items to return in one page.

Example input: `{"drive_id":"<drive_id>","query":"roadmap pptx"}`

### `microsoftpowerpoint_copy_presentation`

Copy Presentation · Write

Copy a presentation to another folder, optionally under a new name.
Returns HTTP 202 with a Location header holding a monitor URL; the copy finishes asynchronously.
Use to duplicate a deck or use it as a template. Use microsoftpowerpoint_move_presentation to relocate it without copying.
Requires Files.ReadWrite scope.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file) to copy. Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `new_parent_id` (`string`, required): Item ID of the destination folder for the copy, or "root" for the top level of OneDrive.
- `new_name` (`string`, optional): Optional name for the copy, including the .pptx extension. If omitted the copy keeps the original name.

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K","new_parent_id":"<new_parent_id>"}`

### `microsoftpowerpoint_create_folder`

Create OneDrive Folder · Write

Create a folder under a parent folder in OneDrive, for organizing presentations.
Returns the new driveItem with its id, name and folder facet.
Use before uploading or moving decks into a new location. Use "root" as parent_id for a top-level folder.
Requires Files.ReadWrite scope.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the new folder. Example: "Board Decks".
- `parent_id` (`string`, required): Item ID of the parent folder, or "root" for the top level of OneDrive.
- `conflict_behavior` (`string`, optional): What to do if a folder with this name exists: "fail", "replace" or "rename". Default: rename. One of: `fail`, `replace`, `rename`. Default: `rename`.

Example input: `{"name":"Board Decks","parent_id":"<parent_id>"}`

### `microsoftpowerpoint_create_presentation`

Create Presentation Upload Session · Write

Create a new .pptx file in OneDrive by starting a resumable upload session under a parent folder.
Returns uploadUrl and expirationDateTime; the caller must PUT the .pptx file bytes to uploadUrl to complete the file.
Use to add a new presentation. To replace an existing deck use microsoftpowerpoint_update_presentation_content. This tool does not generate slides; the .pptx bytes must come from the caller.
Requires Files.ReadWrite scope.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `filename` (`string`, required): Base name of the presentation without the .pptx extension, which is added automatically. Example: "Q1 Review".
- `parent_id` (`string`, required): Item ID of the folder that will hold the new file, or "root" for the top level of OneDrive.
- `conflict_behavior` (`string`, optional): What to do if a file with the same name already exists in the folder: "fail" returns an error, "replace" overwrites it, "rename" saves under a new name. Default: rename. One of: `fail`, `replace`, `rename`. Default: `rename`.

Example input: `{"filename":"Q1 Review","parent_id":"<parent_id>"}`

### `microsoftpowerpoint_create_sharing_link`

Create Presentation Sharing Link · Write

Create a sharing link for a presentation with a chosen access type and scope.
Returns a permission object whose link.webUrl is the shareable URL, plus link type and scope.
Use to give people view or edit access through a URL. Use microsoftpowerpoint_invite_users to share with named people by email.
Requires Files.ReadWrite scope.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file) to share. Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `type` (`string`, required): Type of link: "view" is read-only, "edit" allows changes, "embed" returns a URL that can be embedded in a web page (personal OneDrive only). One of: `view`, `edit`, `embed`.
- `expiration_date_time` (`string`, optional): Optional expiration for the link as an ISO 8601 timestamp (personal OneDrive only). Example: "2026-12-31T23:59:00Z".
- `password` (`string`, optional): Optional password to protect the link (supported on OneDrive personal accounts only).
- `scope` (`string`, optional): Who can use the link: "anonymous" for anyone with the link, "organization" for people in the same Microsoft 365 tenant. Default: the tenant default when omitted. One of: `anonymous`, `organization`.

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K","type":"view"}`

### `microsoftpowerpoint_invite_users`

Share Presentation with Users · Write

Send a sharing invitation for a presentation to one or more people by email.
Returns the created permission objects, one per recipient, with the roles granted.
Use to share with named people. Use microsoftpowerpoint_create_sharing_link for a link anyone can use.
Requires Files.ReadWrite scope.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file) to share. Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `recipient_emails` (`array`, required): Email addresses of the people to invite. Example: ["alice@example.com", "bob@example.com"].
- `roles` (`array`, required): Access to grant: ["read"] for view-only or ["write"] for edit access.
- `message` (`string`, optional): Optional personal message included in the invitation email.
- `require_sign_in` (`boolean`, optional): Whether recipients must sign in to open the item. Default: true. Default: `true`.
- `send_invitation` (`boolean`, optional): Whether Microsoft sends an invitation email to the recipients. Default: true. Default: `true`.

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K","recipient_emails":["alice@example.com","bob@example.com"],"roles":[]}`

### `microsoftpowerpoint_move_presentation`

Move Presentation · Write

Move a presentation to a different folder in the same drive, optionally renaming it.
Returns the updated driveItem with its new parentReference and name.
Use to reorganize files. Use microsoftpowerpoint_copy_presentation to keep the original in place, or microsoftpowerpoint_rename_presentation to rename without moving.
Requires Files.ReadWrite scope.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file) to move. Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `new_parent_id` (`string`, required): Item ID of the destination folder, or "root" for the top level of OneDrive.
- `new_name` (`string`, optional): Optional new name, including the .pptx extension, applied during the move.

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K","new_parent_id":"<new_parent_id>"}`

### `microsoftpowerpoint_rename_presentation`

Rename Presentation · Write

Rename a presentation, or update its description, without moving it.
Returns the updated driveItem.
Use to fix a file name. Use microsoftpowerpoint_move_presentation to change the folder. Provide at least one of name or description.
Requires Files.ReadWrite scope.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file) to rename. Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `description` (`string`, optional): Optional description text to store on the item (supported on OneDrive personal accounts).
- `name` (`string`, optional): New file name including the .pptx extension. Example: "Q1 Review final.pptx".

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_restore_presentation_version`

Restore Presentation Version · Write

Restore a previous version of a presentation so it becomes the current version.
Returns no content on success (HTTP 204).
Use to roll back unwanted edits. Get version IDs from microsoftpowerpoint_list_presentation_versions.
Requires Files.ReadWrite scope.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `version_id` (`string`, required): ID of the version to restore, taken from microsoftpowerpoint_list_presentation_versions. Example: "2.0".

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K","version_id":"2.0"}`

### `microsoftpowerpoint_update_presentation_content`

Replace Presentation Content · Write

Start a resumable upload session that overwrites the content of an existing presentation.
Returns uploadUrl and expirationDateTime; the caller must PUT the replacement .pptx bytes to uploadUrl, which creates a new version of the file.
Use to publish an edited deck over the existing item. Use microsoftpowerpoint_create_presentation for a new file. This tool does not edit individual slides.
Requires Files.ReadWrite scope.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

### `microsoftpowerpoint_delete_permission`

Remove Presentation Permission · Destructive

Remove one sharing link or user grant from a presentation, revoking access that came only through it.
Returns no content on success (HTTP 204).
Use to unshare a deck. Get the permission_id from microsoftpowerpoint_list_permissions. Inherited permissions cannot be removed here.
Requires Files.ReadWrite scope.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file). Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".
- `permission_id` (`string`, required): ID of the permission to remove, taken from microsoftpowerpoint_list_permissions.

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K","permission_id":"<permission_id>"}`

### `microsoftpowerpoint_delete_presentation`

Delete Presentation · Destructive

Delete a presentation by item ID, moving it to the OneDrive recycle bin.
Returns no content on success (HTTP 204).
Use to remove a deck. Deleted items can be restored from the recycle bin within the retention period.
Requires Files.ReadWrite scope.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `item_id` (`string`, required): The unique OneDrive/SharePoint item ID of the presentation (.pptx file) to delete. Obtain it from microsoftpowerpoint_search_presentations, microsoftpowerpoint_list_presentations or microsoftpowerpoint_list_recent_presentations. Example: "01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K".

Example input: `{"item_id":"01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K"}`

## Related

Other Files & Documents connectors ([all 41](/agentkit/connectors/?category=files-documents)):

- [Google Drive](/agentkit/connectors/googledrive/): Scalekit connector, OAuth, 47 tools
- [Google Forms](/agentkit/connectors/googleforms/): Scalekit connector, OAuth, 10 tools
- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
