# Microsoft PowerPoint 365

> Read content from Microsoft PowerPoint presentations.

Source: https://cotera.co/docs/reference/tools/individual-tools/microsoft-powerpoint-365

---

**Authentication Type:** OAuth\
**Description:** Read content from Microsoft PowerPoint presentations.

***

## Beta Notice

**This tool is currently in beta testing and not yet available for general use.**

To get the Microsoft PowerPoint 365 tool added to your Cotera workspace, please contact our support team at [support.cotera.co](https://support.cotera.co).

***

## Presentations

Extract content from PowerPoint presentations.

### Read Presentation

Read a presentation to extract the text content from a PowerPoint file's slides.

**Operation Type:** Query (Read)

***

### Build Presentation

Builds a themed PowerPoint presentation from slide specifications and uploads it as a `.pptx` file to OneDrive or SharePoint.

**Operation Type:** Mutation (Write)

**Parameters:**

* **siteId** `string` (nullable, default `null`): SharePoint site ID for destination. If omitted, uses OneDrive.
* **driveId** `string` (required): Drive ID for the destination location.
* **parentItemId** `string` (nullable, default `null`): Parent folder item ID. If omitted, uploads to root.
* **fileName** `string` (required): Name for the new `.pptx` file (without extension).
* **title** `string` (nullable, default `null`): Presentation title shown on the title slide.
* **theme** `string` (nullable, default `null`): Theme preset name. One of: `"modern-dark"`, `"corporate"`, `"vibrant"`, `"minimal"`, `"warm"`, `"bold"`, `"ocean"`, `"sunset"`, `"forest"`, `"tech"`, `"pastel"`. If omitted, uses default theme.
* **customTheme** `object` (nullable): Custom theme overrides. All fields are nullable; null/empty/whitespace values are treated as "unset" (no override). Only non-empty values that fail hex validation raise field-specific errors.
  * **background** `string` (nullable): Background hex color.
  * **backgroundAlt** `string` (nullable): Alternate background hex color.
  * **text** `string` (nullable): Primary text hex color.
  * **textSecondary** `string` (nullable): Secondary text hex color.
  * **heading** `string` (nullable): Heading hex color.
  * **accent** `string` (nullable): Accent hex color.
  * **accentSecondary** `string` (nullable): Secondary accent hex color.
  * **headingFont** `string` (nullable): Font family for headings.
  * **bodyFont** `string` (nullable): Font family for body text.
  * **gradientAngle** `number` (nullable): Gradient angle in degrees.
  * **gradientStartColor** `string` (nullable): Gradient start hex color.
  * **gradientEndColor** `string` (nullable): Gradient end hex color.
* **slides** `array` (required): Array of slide specification objects. Each slide has:
  * **template** `string` (nullable): Template name. One of: `"title"`, `"section"`, `"content"`, `"content-image"`, `"bullets"`, `"stats"`, `"quote"`, `"closing"`, `"two-column"`, `"comparison"`, `"timeline"`, `"table"`. If omitted, template is auto-detected from slide content.
  * **title** `string` (nullable): Slide title.
  * **subtitle** `string` (nullable): Slide subtitle.
  * **body** `string` (nullable): Slide body text.
  * **imageUrl** `string` (nullable): Image URL for `content-image` slides.
  * **bullets** `array` (nullable): Array of `{ title, description }` objects (both fields optional). Empty items are dropped; an empty list collapses to null before rendering.
  * **stats** `array` (nullable): Array of `{ value, label }` objects. Empty items are dropped.
  * **columns** `array` (nullable): Array of `{ heading, body }` objects for two-column slides. Empty items are dropped.
  * **steps** `array` (nullable): Array of `{ title, description }` objects for timeline slides. Empty items are dropped.
  * **tableData** `object` (nullable): Table data for table slides, with `headers` (array of strings) and `rows` (array of arrays). Empty tables collapse to null.
  * **quote** `object` (nullable): Quote slide data with `text` and `attribution` fields.
  * **notes** `string` (nullable): Speaker notes.
  * **backgroundColor** `string` (nullable): Per-slide background color override (hex).
* **conflictBehavior** `string` (default `"replace"`): File conflict behavior: `"replace"` (default), `"fail"`, or `"rename"`.

**Normalization:** Blank/whitespace strings are normalized to null. Empty items are dropped from arrays. Empty lists and tables collapse to null before rendering.

**Returns:**

* **id** `string`: The item ID of the uploaded file.
* **name** `string`: The name of the uploaded file.
* **webUrl** `string` (nullable): Web URL to access the file.
* **size** `number` (nullable): File size in bytes.

