Google Slides¶
Create presentations, manage slides, insert and format text, images, shapes, and tables.
Tools¶
| Tool Name | Description |
|---|---|
slides_create_presentation | Create a new presentation with a given name. |
slides_get_presentation | Get presentation metadata including ID, name, URL, and list of slides with object IDs. |
slides_add_slide | Add a new slide, optionally with title and body text. |
slides_delete_slide | Delete a slide by index. |
slides_duplicate_slide | Duplicate a slide and insert the copy after the original. |
slides_move_slide | Move a slide to a different position by index. |
slides_insert_text_box | Insert a text box with optional auto-positioning. |
slides_insert_image | Insert an image from a public URL. |
slides_insert_shape | Insert a shape (rectangle, ellipse, arrow, star, cloud, flowchart, etc.). |
slides_insert_table | Insert a table from a 2D array of values. |
slides_get_slide_elements | List up to 200 elements on a slide with types, IDs, positions, dimensions, and text. |
slides_get_element | Get one element with geometry, rotation, alt text, and link metadata. |
slides_get_element_text | Read text from a specific shape or text element by object ID. |
slides_delete_element | Delete a page element from a slide by its object ID. |
slides_format_text | Format text within an element — bold, italic, underline, font, size, color, and links. |
slides_update_element_geometry | Update an element's left, top, width, height, or rotation. |
slides_update_element_transform | Update an element affine transform through constrained Slides API fields. |
slides_set_element_alt_text | Set or clear element accessibility title and description. |
slides_set_element_link | Set an element link to an HTTPS URL, slide, or clear it. |
slides_reorder_element | Bring an element forward/front or send it backward/back. |
slides_get_slide_notes | Get or set speaker notes for a slide. |
slides_replace_all_text | Find and replace text across all slides in a presentation. |
slides_set_slide_background | Set the background color of a slide using a solid fill color. |
slides_insert_line | Insert a line connector between two points on a slide (STRAIGHT, BENT, CURVED). |
slides_batch | Execute multiple operations (up to 20) in a single round-trip. |
Key Features¶
- Auto-positioning —
insert_text_box,insert_image,insert_shape, andinsert_tableall supportautoPosition: true(the default). Elements stack automatically below existing content without manual coordinate calculation. Override with explicitleft,top,width,heightwhen needed. - Rich element model —
slides_get_slide_elementsreturns up to 200 elements on a slide with type, object ID, bounding box, and text content. Useslides_get_element_textto read one text element directly. - Structural element editing — Update exact geometry, affine transforms, alt text, links, and z-order for existing elements by object ID.
- 15 shape types — RECTANGLE, ROUND_RECTANGLE, ELLIPSE, TRIANGLE, ARROW_RIGHT, ARROW_LEFT, STAR_5, HEXAGON, CLOUD, FLOW_CHART_PROCESS, FLOW_CHART_DECISION, WAVE, CHEVRON, PENTAGON, TRAPEZOID.
- Text formatting on find —
slides_format_textsearches within an element for specific text and applies formatting only to matches — no need to know character indices. - Slide reordering —
duplicate_slide,move_slide, anddelete_slideenable full programmatic slide deck manipulation. - Batch operations — Use
slides_batchto chain up to 20 slides operations in a single round-trip.
Examples¶
Build a title slide and content slide with auto-positioning:
# Create presentation
slides_create_presentation({ name: "Q4 Review" })
# Add a title slide
slides_add_slide({
presentationId: "<id>",
titleText: "Q4 Business Review",
bodyText: "Presented by Engineering"
})
# Add a content slide with image and text
slides_add_slide({
presentationId: "<id>",
titleText: "Key Metrics"
})
slides_insert_image({
presentationId: "<id>",
slideIndex: 1,
imageUrl: "https://example.com/chart.png"
// autoPosition: true stacks below title automatically
})
slides_insert_text_box({
presentationId: "<id>",
slideIndex: 1,
text: "Revenue grew 23% quarter-over-quarter."
// autoPosition: true stacks below image automatically
})
Tune element structure after insertion:
slides_get_element({
presentationId: "<id>",
slideIndex: 1,
objectId: "<element-id>"
})
slides_update_element_geometry({
presentationId: "<id>",
slideIndex: 1,
objectId: "<element-id>",
left: 72,
top: 144,
width: 360,
height: 120,
rotation: 0
})
slides_set_element_alt_text({
presentationId: "<id>",
slideIndex: 1,
objectId: "<element-id>",
title: "Revenue chart",
description: "Bar chart showing Q4 revenue growth by segment."
})
slides_set_element_link({
presentationId: "<id>",
slideIndex: 1,
objectId: "<element-id>",
linkUrl: "https://example.com/source"
})
Format specific phrases in a text element:
# Get element IDs
slides_get_slide_elements({ presentationId: "<id>", slideIndex: 0 })
# Read text from a single element if needed
slides_get_element_text({
presentationId: "<id>",
slideIndex: 0,
objectId: "<element-id>"
})
# Bold the word "Revenue" everywhere in that element
slides_format_text({
presentationId: "<id>",
slideIndex: 0,
objectId: "<element-id>",
findText: "Revenue",
bold: true,
foregroundColor: "#2E86AB"
})
Replace text across all slides:
slides_replace_all_text({
presentationId: "<id>",
findText: "Q4",
replaceText: "Q1 2027"
})
// Every instance of "Q4" in the entire deck is replaced
Limits & Considerations¶
- Auto-positioning stacks elements vertically below existing content. It does not handle complex multi-column layouts — use explicit coordinates for those.
- Images must be publicly accessible URLs; local file uploads are not supported directly.
slides_format_textfinds and formats all occurrences of the search text within a single element. For cross-element formatting, call it once per element or useslides_replace_all_text.slides_update_element_transformuses constrained Slides API affine transform fields; useslides_update_element_geometryfor common position, size, and rotation changes.slides_set_element_linkaccepts exactly one oflinkUrl,targetSlideIndex, orclear.- Slide indices are 0-based and reflect the current order. After
delete_slideormove_slide, indices shift. - Element object IDs are stable within a presentation session but should always be obtained from
slides_get_slide_elementsrather than hardcoded.