# How to connect Google Slides to Hermes Agent (no API keys)

> Connect Google Slides to Hermes with ClawLink in one click — 7 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Web version: https://claw-link.dev/hermes/google-slides

Most guides for giving Hermes Agent Google Slides access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Google Slides setup: pair once in the browser and your always-on Hermes agent can act on Google Slides for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

**Start here — paste this into Hermes to set up ClawLink:**

> Set up ClawLink for Hermes and tell me when it's ready.
> 1. Install the plugin: `hermes plugins install ClawLink-HQ/hermes-plugin --enable`
> 2. Start pairing with `hermes clawlink begin`. It prints an approval link, so show me the link and stop, don't wait.
> 3. I'll approve it in my browser, then reply "approved".
> 4. When I say approved, finish setup: `hermes clawlink finish`
> 5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

## Setup

It takes three steps to connect Hermes to Google Slides.

1. **Install ClawLink** — add the plugin to Hermes Agent once.
2. **Connect Google Slides** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask Hermes Agent in plain English.

**Alternative for any agent (no plugin needed):** if the Hermes Agent plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect google-slides  # connect Google Slides (browser OAuth)
npx -y @useclawlink/cli actions google-slides  # list available actions
npx -y @useclawlink/cli run google-slides <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

```bash
hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test
```

Then connect Google Slides in the [ClawLink dashboard](https://claw-link.dev/dashboard) — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

> Create a Google Slides presentation with googleslides_create_slides_markdown, title "Product Update", Theme: Minimal, using this markdown with one slide per section. Give me the deck link.

### Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once Google Slides is connected in the dashboard, that agent calls the same 7 Google Slides tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## Google Slides MCP for Hermes

Looking for a Google Slides MCP server for Hermes Agent? ClawLink connects Google Slides to Hermes Agent and exposes 7 Google Slides tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using OpenClaw instead? The [OpenClaw Google Slides integration](https://claw-link.dev/openclaw/google-slides) works the same way.

Three facts sit over this page. Hermes has no native Google Slides support: the open issue on the Hermes repo (NousResearch #15600) that would add Slides to the google-workspace skill is still open, so the engines answer "connect slides to hermes" with Drive access, a .pptx round trip, or building your own MCP server. Google now runs an official remote Slides MCP server, but it needs a Cloud project, an OAuth consent screen, and a client id and secret you create. ClawLink is the third path: one browser consent screen, then the 7 Slides API tools below work from chat. No Cloud project, no client secret, and no file conversion step in the middle.

## The routes search engines teach for Google Slides in an agent, and how this page differs

The answer space moved this quarter: Google's official remote MCP server is now the default recommendation, and the DIY answers assume Hermes has no Slides route at all.

- **Google's official remote Slides MCP server** (slidesmcp.googleapis.com/mcp/v1): the new #1 recommendation from ChatGPT and the s08 AIO. Developer Preview, two tools (read_presentation, update_presentation), and it requires a Cloud project, an OAuth consent screen, and a client id/secret you create.
- **Hermes's google-workspace skill**: covers Gmail, Calendar, Drive, Contacts, Sheets, and Docs, with Slides tracked as open issue #15600. There is no native Slides support to configure.
- **Drive access and .pptx round trips**: ChatGPT's fallback answer for Hermes, treating slides as Drive files to export and re-import. It works and loses fidelity on every conversion.
- **Third-party MCP servers** (ngs/google-mcp-server, matteoantoci/google-slides-mcp): local servers over the Slides API, each needing its own OAuth app and a running process.
- **ClawLink (this page)**: 7 hosted Slides tools over browser OAuth, no Cloud project, no client secret, nothing running locally.

Using OpenClaw as well? The [OpenClaw Google Slides integration](https://claw-link.dev/openclaw/google-slides) is the same hosted OAuth setup with the same tool set.

## What the Hermes Agent Google Slides integration can do

7 Google Slides tools are ready for Hermes Agent once the account is connected.

### All 7 Google Slides tools for Hermes

| Tool | What it does |
|---|---|
| **Create presentation** `googleslides_create_presentation` | Create a blank Google Slides presentation |
| **Create slides markdown** `googleslides_create_slides_markdown` | Create a Google Slides presentation from markdown |
| **Get page thumbnail2** `googleslides_get_page_thumbnail2` | Get a thumbnail for a Google Slides page |
| **Presentations batch update** `googleslides_presentations_batch_update` | Update a Google Slides presentation |
| **Presentations copy from template** `googleslides_presentations_copy_from_template` | Copy a Google Slides template |
| **Presentations get** `googleslides_presentations_get` | Get a Google Slides presentation |
| **Presentations pages get** `googleslides_presentations_pages_get` | Get a page from a Google Slides presentation |

## Example prompts

**Turn markdown into a deck**

> Create a Google Slides presentation with googleslides_create_slides_markdown, title "Product Update", Theme: Minimal, using this markdown with one slide per section. Give me the deck link.

**Copy a template and fill it**

> Use googleslides_presentations_copy_from_template with the sales deck template id, new_title "Acme Q3 Proposal", then use googleslides_presentations_batch_update on the copy to replace the placeholder title text.

**Find a deck by name**

> Use googleslides_presentations_get with presentationName "Q3 Board Deck" and summarize the slides and their layouts from the response.

**Read and export a slide**

> Get the presentation by name "Design Review", take the first slide's pageObjectId, and use googleslides_get_page_thumbnail2 to fetch its thumbnail at LARGE size.

## How the Google Slides tools behave

Seven tools, and the way they address presentations is where the agent goes wrong. All shapes below are read from the live schemas.

- **`googleslides_create_presentation` needs nothing to create a deck.** The schema has no required arguments: `title`, `locale`, `pageSize`, and `presentationId` are all optional, and an omitted title gets a default. The created deck is empty; content comes from a batch update or from `googleslides_create_slides_markdown`.
- **`googleslides_create_slides_markdown` is the markdown route and wants `title` plus `markdown_text`.** Both are required, and the schema documents a theme selection syntax: start the markdown with `Theme: \<name>` to pick a template. This is the tool the error-shaped query space is looking for, and it is the source of most of this page's production traffic (15 of 39 calls).
- **`googleslides_presentations_get` will find a deck by name.** The schema takes either `presentationId` or `presentationName`; with the name form it searches Drive for the presentation. Agents that guess a presentation id usually have a name, and this tool accepts it.
- **`googleslides_presentations_batch_update` wants `presentationId` plus either `requests` or `markdown_text`.** The markdown_text form adds slides separated by `\n---\n`, and each slide auto-detects its type. The requests form is the full Slides batchUpdate shape (createSlide, createShape, ...). The one required argument is the presentation id.
- **`googleslides_presentations_copy_from_template` needs a `template_presentation_id` (a Drive file id)** and takes an optional `new_title` and `parent_folder_id` for where the copy lands.
- **`googleslides_get_page_thumbnail2` wants `presentationId` plus `pageObjectId`.** The pageObjectId comes from `googleslides_presentations_get` or `googleslides_presentations_pages_get`; agents that invent one fail with a not-found.
- **The connection requests three scopes.** `drive`, `presentations`, and `userinfo.email` from the live auth config, which covers creating, editing, and reading decks the connected account can reach. Sharing is not among them, because the Slides API has no sharing methods.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Google Slides working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Connection flow** | Register a Google Slides app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect Google Slides through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for Google Slides. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right Google Slides actions to the runtime in a format your agent can reliably use. | 7 tools for Google Slides are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes Google Slides to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Google Slides in the browser, and the 7 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### Hermes paired but still can't use Google Slides
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

### Connection succeeds but no tools appear
Reconnect Google Slides from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling Google Slides tools
Google Slides tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Google Slides call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### Google Slides returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### Tool schema for googleslides_create_slides_markdown is not loaded yet. Retry the call in a moment.
This is the dominant failure on this integration: 13 of 27 production errors, and the create_presentation and batch_update schemas account for 9 and 2 more. Slides tool schemas load on demand the first time a tool runs and are cached after that, so the error clears on its own: wait a few seconds and retry the same call. If every Slides call in a fresh chat keeps failing with it, reconnect from the dashboard, and contact support if it still persists.

### arguments.presentationId is required
The agent called a tool that addresses presentations by id but did not send one, or sent it under a different key. `googleslides_presentations_batch_update` and `googleslides_get_page_thumbnail2` require camelCase `presentationId`; `googleslides_presentations_get` is the exception and accepts a presentation name instead. Retry with the exact key the error names.

### At least one of presentation_id or presentation_name must be provided.
`googleslides_presentations_get` requires either a `presentationId` or a `presentationName`, and neither arrived. This is the placeholder trap: the agent sent an example id from documentation or no id at all. The tool will find the deck by name if the name is real, so the fix is a list call (or the name) rather than a reconnect.

### Multiple google-slides connections match this request. Specify a connectionId.
More than one Google Slides connection exists for the user, and ClawLink cannot tell which account the call is for. Name or specify the connection in the call, or remove the extra connection in the dashboard so one default remains. The call itself is fine; the ambiguity is yours.

### Google Slides returns 403 or "permission denied" on a presentation
Three causes, and only one is the connection. If the deck was never shared with the connected Google account, no reconnect fixes it: the Slides API has no sharing methods, sharing is a Drive permission, so share the deck with the connected account or move it into a shared drive. If the wrong Google account was authorized during the consent flow, reconnect and approve with the intended account. Otherwise the agent passed a placeholder presentation id from documentation instead of a real one, and a presentations_get by name clears it.

### OAuth finished in the browser but the account is still missing
Try reconnecting Google Slides and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

### Is there a Hermes Agent Google Slides integration?
Yes. ClawLink is the fastest way to connect Hermes to Google Slides: link your Google Slides account once in the browser and Hermes Agent can call the Google Slides API through 7 ready-made tools — no custom code or token handling.

### How do I connect Google Slides to Hermes with ClawLink?
Install the plugin with `hermes plugins install ClawLink-HQ/hermes-plugin --enable`, then pair once: run `hermes clawlink begin`, approve the link in your browser, and run `hermes clawlink finish`. Connect Google Slides in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

### How long does it take to connect Google Slides to Hermes Agent?
About two minutes. Sign in, click Connect next to Google Slides in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

### Why use ClawLink instead of wiring Google Slides up myself?
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Google Slides working from chat.

### Does Hermes Agent support Google Slides natively?
Not yet. The Hermes repo tracks it as issue #15600, "Feature: Add Google Slides support to google-workspace skill", and it is still open as of August 2026. Until it lands, the engines answer the connect query with Drive access, a .pptx round trip, or building your own MCP server. ClawLink's 7 hosted Slides tools are the working route now.

### Is there an official Google Slides MCP server?
Yes, as of the July 2026 Google developer docs: Google runs a remote Slides MCP server at slidesmcp.googleapis.com/mcp/v1 in Developer Preview with two tools, read_presentation and update_presentation. Setting it up means creating a Google Cloud project, enabling slidesmcp.googleapis.com and the Slides API, configuring an OAuth consent screen, and creating an OAuth client id and secret. ClawLink is the hosted route with 7 tools and no Cloud project or client secret.

### Why does the agent get a permission error on a presentation?
Almost always because the deck is not shared with the connected account. The Slides API has no sharing methods: sharing is a Drive permission, so a presentation never shared with the connected Google account stays read-blocked no matter how many times you reconnect. Share the deck with the connected account, or move it into a shared drive it can reach. If the account itself is right, check that the consent flow finished on the intended Google account.

### What does connecting Google Slides grant access to?
Three scopes from the live auth config: `https://www.googleapis.com/auth/drive`, `https://www.googleapis.com/auth/presentations`, and `https://www.googleapis.com/auth/userinfo.email`. That covers reading, creating, and editing presentations the connected account can reach. Sharing and deleting are not granted: sharing is Drive-side. Google's own Slides MCP server asks for a narrower set (drive.readonly, drive.file, presentations.readonly, presentations); ours includes full drive, which is what the file-search and copy tools need. The grant is revocable at myaccount.google.com/permissions.

### How do I turn markdown into slides in Hermes?
Ask Hermes to create a presentation with `googleslides_create_slides_markdown`, giving it a title and the markdown content. The tool is the page's most-used one (15 of 39 production calls) and supports a `Theme: \<name>` line at the start of the markdown to pick a template. For adding to an existing deck, `googleslides_presentations_batch_update` accepts markdown with slides separated by a line containing three dashes.

### Hermes paired but still can't use Google Slides
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

## Related

- [Google Super tools](https://claw-link.dev/hermes/google-super) — Unified access to multiple Google services in one integration
- [Connect Google Drive](https://claw-link.dev/hermes/google-drive) — Upload, search, and manage files
- [Hermes Google Analytics integration](https://claw-link.dev/hermes/google-analytics) — Connect Google Analytics properties through hosted Google OAuth
