google_slides_ copy_ presentationDuplicate a whole presentation, every slide, layout, theme and speaker note.
Summarize a deck, add three slides with their bullets, turn a template into a client proposal, drop in a chart from Sheets, then look at the result as images, from the AI client you already use.
PopMCPGoogle Slides
Every tool the connection exposes: slides, text, tables, images, charts and comments through the Slides API, finding and sharing decks through Drive, plus the change triggers.
80 tools in the full catalog: 15 read and 65 write. 45 load by default, and the rest are found with tool search.
google_slides_ copy_ presentationDuplicate a whole presentation, every slide, layout, theme and speaker note.
google_slides_ create_ from_ templateMake a new deck FROM A TEMPLATE in one call: copies the template (which is never changed), then replaces every {{token}} with its text and every image token with a picture.
google_slides_ export_ presentation_ textThe text of every slide as one plain-text document, in slide order: the fastest way to read or summarise a whole deck.
google_slides_ get_ export_ linksDownload links for a presentation as PDF, PowerPoint (.pptx), OpenDocument (.odp) and plain text, plus the link to open it.
google_slides_ get_ presentation_ file_ infoDrive-side facts about a presentation that the Slides API does not hold: who owns it, who last edited it and when, which folders it sits in, whether it is shared or trashed, and the `webViewLink` to hand to a person.
google_slides_ list_ drive_ foldersList Drive FOLDERS, so you can file a presentation somewhere or search inside one.
google_slides_ list_ presentationsFIND presentations: start here whenever you have a deck's name but not its id.
google_slides_ move_ presentationMove a presentation into a different Drive folder, the step to run after create_presentation, which always creates at the top level of My Drive.
google_slides_ rename_ presentationRename a presentation: body { name: 'Board update, October' }.
google_slides_ share_ presentationShare a presentation.
google_slides_ trash_ presentationDelete a presentation the way a person means it: move it to the trash, where it stays recoverable for 30 days.
google_slides_ add_ bulletsCreates bullets for paragraphs.
google_slides_ add_ text_ boxPut a text box with text on a slide in one call: body { pageObjectId: 'SLIDE_ID', text: 'Draft, not for distribution', x: 40, y: 360, width: 640, height: 30, fontSize: 12, bold: true, color: '#C00000', alignment: 'CENTER' }.
google_slides_ create_ tableCreates a new table.
google_slides_ delete_ textDeletes text from a shape or a table cell.
google_slides_ fill_ templateFill a template deck in ONE call: replace every placeholder token across all slides with its value, and every shape containing an image token with a picture.
google_slides_ format_ paragraphUpdates the styling of paragraphs within a Shape or Table.
google_slides_ format_ textUpdates the styling of text within a Shape or Table.
google_slides_ insert_ textInserts text into a shape or table cell.
google_slides_ replace_ all_ textReplaces all instances of specified text.
google_slides_ set_ speaker_ notesWrite a slide's speaker notes: body { slideObjectId: 'SLIDE_ID', notes: 'Pause here for questions.' }.
google_slides_ set_ textREPLACE the text of a title, body placeholder, text box, shape or table cell in one call: body { objectId: 'BOX_ID', text: 'Q4 results' }.
google_slides_ add_ slideADD SLIDES WITH THEIR CONTENT in one call: body { layout: 'TITLE_AND_BODY', title: 'Q3 results', body: ['Revenue up 12%', 'Churn down to 2.1%'], insertionIndex: 3 }, or up to 20 at once with body { slides: [ { title, body }, ...
google_slides_ create_ shapeCreates a new shape.
google_slides_ delete_ slide_ or_ elementDeletes a page or page element from the presentation.
google_slides_ duplicate_ slide_ or_ elementDuplicates a slide or page element.
google_slides_ format_ shapeUpdates the properties of a Shape.
google_slides_ move_ or_ resize_ elementUpdates the transform of a page element.
google_slides_ move_ slidesUpdates the position of a set of slides in the presentation.
google_slides_ set_ slide_ backgroundUpdates the properties of a Page.
google_slides_ add_ commentInserts a CommentThread into the presentation.
google_slides_ batch_ update_ presentationApplies one or more updates to the presentation.
google_slides_ create_ presentationCreates a blank presentation using the title given in the request.
google_slides_ list_ commentsThe comment threads on a presentation: each thread's commentId, status (OPEN or RESOLVED), the quoted text it is anchored to, the first post and every reply with author, time and postId, and which slide it sits on.
google_slides_ list_ layoutsThe slide layouts this deck's theme offers, each with its layoutId, its name (TITLE_AND_BODY, SECTION_HEADER, ...) and display name, which master it belongs to, and the placeholders it brings (title, body, subtitle, picture).
google_slides_ read_ presentationREAD A DECK before you edit it: a compact outline of every slide in order, with each element's objectId, kind (title, body, text box, image, table, chart, video, line, group), position and size in points, and its text, plus each slide's speaker notes and the deck's revisionId.
google_slides_ read_ slideThe same compact outline as read_presentation for ONE slide: each element's objectId, kind, position, size and text, and the slide's speaker notes.
google_slides_ reply_ to_ commentAdds a reply to a CommentThread.
google_slides_ insert_ imageCreates an image.
google_slides_ insert_ sheets_ chartCreates an embedded Google Sheets chart.
google_slides_ list_ sheet_ chartsThe charts in a Google Sheets spreadsheet, with the numeric chartId that insert_sheets_chart needs: { spreadsheetId: ID_OR_LINK }.
google_slides_ replace_ imageReplaces an existing image with a new image.
google_slides_ replace_ shapes_ with_ imageReplaces all shapes matching some criteria with an image.
google_slides_ get_ slide_ thumbnailGenerates a thumbnail of the latest version of the specified page in the presentation and returns a URL to the thumbnail image.
google_slides_ get_ slide_ thumbnailsSEE several slides in one call: each is rendered and attached as an image, in order.
google_slides_ list_ presentation_ permissionsSee who a presentation is shared with, and how.
google_slides_ remove_ presentation_ permissionRevoke one person's or one link's access to a presentation, using the permissionId from list_presentation_permissions.
google_slides_ untrash_ presentationRestore a trashed presentation to where it was.
google_slides_ update_ presentation_ permissionChange an existing share's role, e.g. demote an editor to a viewer with body { role: 'reader' }.
google_slides_ delete_ table_ columnDeletes a column from a table.
google_slides_ delete_ table_ rowDeletes a row from a table.
google_slides_ format_ table_ bordersUpdates the properties of the table borders in a Table.
google_slides_ format_ table_ cellsUpdates the properties of a TableCell.
google_slides_ insert_ table_ columnsInserts columns into a table.
google_slides_ insert_ table_ rowsInserts rows into a table.
google_slides_ merge_ table_ cellsMerges cells in a Table.
google_slides_ remove_ bulletsDeletes bullets from paragraphs.
google_slides_ set_ table_ column_ widthUpdates the properties of a Table column.
google_slides_ set_ table_ row_ heightUpdates the properties of a Table row.
google_slides_ unmerge_ table_ cellsUnmerges cells in a Table.
google_slides_ create_ slideCreates a new slide.
google_slides_ group_ elementsGroups objects, such as page elements.
google_slides_ set_ alt_ textUpdates the alt text title and/or description of a page element.
google_slides_ set_ z_ orderUpdates the Z-order of page elements.
google_slides_ ungroup_ elementsUngroups objects, such as groups.
google_slides_ update_ slide_ propertiesUpdates the properties of a Slide Updates the properties of a Slide.
google_slides_ delete_ commentDeletes a CommentThread.
google_slides_ delete_ comment_ replyDeletes a reply Post from a CommentThread.
google_slides_ edit_ commentUpdates an existing post (head post or reply) of a CommentThread.
google_slides_ get_ presentationGets the latest version of the specified presentation.
google_slides_ create_ lineCreates a line.
google_slides_ format_ imageUpdates the properties of an Image.
google_slides_ format_ lineUpdates the properties of a Line.
google_slides_ refresh_ sheets_ chartRefreshes a Google Sheets chart.
google_slides_ replace_ shapes_ with_ sheets_ chartReplaces all shapes matching some criteria with a Google Sheets chart.
google_slides_ reroute_ lineReroutes a line such that it's connected at the two closest connection sites on the connected page elements.
google_slides_ update_ line_ categoryUpdates the category of a line.
google_slides_ get_ slideGets the latest version of the specified page in the presentation.
google_slides_ insert_ videoCreates a video.
google_slides_ update_ video_ propertiesUpdates the properties of a Video.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Google Slides side.
Connect with your own Google Cloud OAuth client: enable the Slides and Drive APIs, paste the OAuth Client ID and OAuth Client Secret, and authorize once. There is no deck picker; it reaches every deck that Google account can open.
1234567890-abc.apps.googleusercontent.com••••••••••••3f7aConnections start read-only. Once an owner allows writes, add_slide, delete_slide_or_element, share_presentation and trash_presentation run the moment the AI calls them. Tick Google Slides on the PopMCP consent screen only for clients that should edit.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Google Slides credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
Summarize the Q3 board deck and list the comments still open on it
google_slides_list_presentationsok
Then just ask for the work
“Summarize the Q3 board deck and list the comments still open on it”
“Add three slides after slide 4 covering pricing, timeline and next steps”
“Make an Acme proposal from our sales template and share it with sam@acme.com”
“Put the revenue chart from the Finance spreadsheet on slide 6 and show me how it looks”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Google Slides behind an AI client.
There is no deck to pick during setup. The connection reaches exactly the presentations the Google account you authorized with can open, so scope is decided by which account you use. To hand over less, authorize with an account that only has access to the decks you want an agent touching. Drive actions such as share, move and trash check the file first and refuse anything that is not a presentation, so a Docs or Sheets link is turned away.
The Slides API only works on a deck whose id you already have, and it cannot list, search, copy, rename, share or trash one. Drive is what finds a deck by name with list_presentations, copies a template, files a new deck with move_presentation and shares it. Enable the Google Sheets API too if you want list_sheet_charts and insert_sheets_chart to place spreadsheet charts on slides; everything else works without it.
Yes. create_from_template copies your template, which is never changed, then replaces every {{token}} with its text and every image token with a picture, in one call. fill_template does the same to a deck that already exists, and replace_all_text swaps a word or phrase across every slide. add_slide adds slides with their title and bullets already in place, up to 20 in one call.
Yes. get_slide_thumbnail renders one slide and get_slide_thumbnails renders up to 8, and both attach the images to the tool result so your client can look at them. read_presentation gives an outline of every slide with each element's objectId, kind, position and size in points, its text and the speaker notes, which is what the editing tools need before they move, resize or rewrite anything.
That is Google's behavior for an OAuth app still in testing. If your Google Cloud project's Audience is set to External, publish the app before you connect, otherwise Google expires the connection after 7 days and calls start failing. Publishing needs no review from Google. It only adds a one-time "Google hasn't verified this app" screen, where you click Advanced and continue, and then the connection keeps working.
12, all by change detection. Across the account: a presentation created, edited or removed. On a deck you watch: a slide added, removed or reordered, slide text changed, speaker notes changed, a comment added, replied to, resolved or reopened, and sharing changed, including link sharing. They suit jobs like posting to a channel when a client comments on a pitch deck.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Google Slides in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Google Slides on the consent screen. The Google Slides tools are then available in that session, and no Google Slides credential is stored on your machine.
Loading 80 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 45-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 80 here. A trigger is something PopMCP watches for you: 12 Google Slides events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Google Slides.
Launch a hosted MCP endpoint for Google Slides, keep tool access under control, and start testing real workflow prompts right away.