ClawLink

How to connect Google Photos to Hermes Agent

Connect Google Photos to Hermes Agent with ClawLink: one browser sign-in, no Google Cloud project. 10 Google Photos tools your agent can call from chat — and a clear answer on what Google's 2025 Library API limits do and do not allow.

Get started for free
Hermes Agent
Hermes Agent
ClawLink
ClawLink
Google Photos
Google Photos
Google PhotosOAUTH2MCP

Upload, search, and manage photos and albums in Google Photos. Once connected, Hermes Agent can read and act on Google Photos from chat — pairing, token refresh, and tool wiring handled for you.

10 tools

Most guides for giving Hermes Agent Google Photos 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 Photos setup: pair once in the browser and your always-on Hermes agent can act on Google Photos for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

Copy this prompt into Hermes to install the plugin and pair your account.

Prompt for Hermes
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. It prints an approval link, so show me the link and stop, don't wait:
hermes clawlink begin

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 Photos.

  1. 1

    Install and pair

    Install the ClawLink plugin, then pair Hermes with a one-time browser approval:

    hermes plugins install ClawLink-HQ/hermes-plugin --enable
  2. 2

    Connect Google Photos

    One-click OAuth in the dashboard.

  3. 3

    Use it from chat

    Ask Hermes Agent: "What can you do with Google Photos?"

Install by command

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

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 Photos in the ClawLink dashboard — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

Create a Google Photos album called "<name>", upload the images I just gave you, and add them to it with googlephotos_batch_add_media_items. Give me the album id when you are done.

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:

npx -y @useclawlink/cli login

login opens the same browser approval and stores a credential locally. Once Google Photos is connected in the dashboard, that agent calls the same 10 Google Photos tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.

Google Photos MCP for Hermes

Looking for a Google Photos MCP server for Hermes Agent? ClawLink connects Google Photos to Hermes Agent and exposes 10 Google Photos tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Google Photos integration works the same way.

One boundary decides whether this integration fits your use case, so it is worth stating before the steps rather than after. Since 31 March 2025 Google's Photos Library API only reaches content your connected application created — Google removed the full-library scopes and moved whole-library browsing to a separate Picker API. That means an agent can upload photos, build and enrich albums, and manage what it put there, but it cannot search or list your entire camera roll, and no connector can give it that. Within those limits the setup is one browser sign-in: no Google Cloud project, no OAuth consent screen of your own, and nothing in a config file.

What the Hermes Agent Google Photos integration can do

10 Google Photos tools are ready for Hermes Agent once the account is connected.

All 10 Google Photos tools for Hermes

ToolWhat it does
Add enrichment googlephotos_add_enrichmentAdds an enrichment at a specified position in a defined album.
Batch add media items googlephotos_batch_add_media_itemsAdds one or more media items to an album in Google Photos.
Batch get media items googlephotos_batch_get_media_itemsReturns the list of media items for the specified media item identifiers.
Get album googlephotos_get_albumReturns the album based on the specified albumId.
Get media item download googlephotos_get_media_item_downloadDownloads a media item from Google Photos and returns it as a file.
List albums googlephotos_list_albumsLists all albums shown to a user in the Albums tab of Google Photos.
List media items googlephotos_list_media_itemsLists media items created by this application from Google Photos.
Search media items googlephotos_search_media_itemsSearches for media items in a user's Google Photos library.
Update album googlephotos_update_albumUpdates an album's title or cover photo in Google Photos.
Update media item googlephotos_update_media_itemUpdates a media item's description in Google Photos.

Try it: find the Google Photos tool you need

Browse the 10 Google Photos tools

Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.

Example prompts

Create a Google Photos album called "<name>", upload the images I just gave you, and add them to it with googlephotos_batch_add_media_items. Give me the album id when you are done.

For the album "<name>", use googlephotos_add_enrichment to add a text caption before the first photo describing what the set covers, and a location marker for <place>.

Find the media item titled "<name>" with googlephotos_batch_get_media_items and download it with googlephotos_get_media_item_download so I can attach it elsewhere.

List the albums this integration created with googlephotos_list_albums, then use googlephotos_update_album to rename "<old>" to "<new>" and set its cover to the first photo.

What the Google Photos tools can reach

The boundary here comes from Google's 2025 Library API changes and applies to every application, including one you build yourself.

  • App-created content only. Since 31 March 2025 the Library API returns media your connected application uploaded or created. googlephotos_list_media_items states this in its own description; the same limit applies to searching and to album listing even where older descriptions do not say so.
  • Sharing is gone, not restricted. Google removed the album-sharing and shared-album methods outright, and no scope brings them back. Build the album with the agent, share it yourself in the Google Photos app.
  • Whole-library selection is a different API. Google's Picker API is the supported way to let someone choose from everything they have, and it works by asking the person rather than granting the agent access.
  • Adding to an album is a second call. googlephotos_batch_add_media_items is separate from the upload, and it works against albums the application created.
  • Enrichments are positional. googlephotos_add_enrichment places text, locations, or maps at a specified position in an album, so tell the agent where you want the caption, not just what it should say.

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 Photos working from chat.

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

Composio also exposes Google Photos 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 Photos in the browser, and the 10 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 comparison.

Troubleshooting

Hermes paired but still can't use Google Photos

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 Photos 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 Photos tools

Google Photos 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 Photos 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 Photos 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.

Google Photos returns 403 PERMISSION_DENIED or an empty list where photos clearly exist

In almost every case this is the March 2025 scope change rather than a broken connection, and the empty-list version is the more confusing symptom because nothing errors. The Library API now serves only content the application created, so listing or searching returns nothing for photos you took on your phone, and calls that relied on the removed photoslibrary or photoslibrary.readonly scopes return PERMISSION_DENIED. No amount of reconnecting changes this, because the scope that would grant it no longer exists. If the goal is to work with photos the agent itself uploaded, check that the upload and the read are happening on the same connection. If the goal is to reach your existing library, the honest answer is that the Library API cannot, and Google's Picker API is the supported route.

Ask the agent to diagnose it:

List the albums you can see with googlephotos_list_albums, then tell me whether any of them were created by this integration. Do not assume an empty result means the connection is broken.
Uploaded photos do not appear in the album the agent was asked to use

Album membership is a separate call from the upload. googlephotos_batch_add_media_items adds existing media to an album, so an agent that uploads and then reports success may have created the media without ever attaching it. The second cause is album ownership: the tools can add to albums the application created, and an album you made yourself in the Google Photos app is not one of those, so the add silently has nothing to attach to. Ask the agent to create the album through googlephotos_list_albums and the album tools, then add items to that album id.

Ask the agent to diagnose it:

Show me the album id you used and confirm whether that album was created through this integration. Then list what googlephotos_batch_get_media_items returns for the items you uploaded.
Google Photos worked before and now returns permission errors on the same calls

If this is an integration you built yourself, the date to check is 31 March 2025: code written against photoslibrary.readonly or photoslibrary stopped working then, and the fix is not re-authenticating but changing what the app asks for and accepting the narrower app-created scope. On a ClawLink connection the scope set is already the current one, so a sudden failure across every call means the grant was revoked — reconnect from the dashboard. A failure on only some calls is more likely the app-created boundary showing up on the reads rather than the writes.

OAuth finished in the browser but the account is still missing

Try reconnecting Google Photos and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

FAQ

Is there a Hermes Agent Google Photos integration?

Yes. ClawLink is the fastest way to connect Hermes to Google Photos: link your Google Photos account once in the browser and Hermes Agent can call the Google Photos API through 10 ready-made tools — no custom code or token handling.

How do I connect Google Photos 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 Photos 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 Photos to Hermes Agent?

About two minutes. Sign in, click Connect next to Google Photos in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

Why use ClawLink instead of wiring Google Photos 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 Photos working from chat.

Can the agent search my whole Google Photos library?

No, and this is a Google restriction rather than a ClawLink one. On 31 March 2025 Google removed the photoslibrary, photoslibrary.readonly, and photoslibrary.sharing scopes and refocused the Library API on app-created content, so listing and searching now run under a scope that only returns media the connected application uploaded or created. Any tool or service claiming an agent can search your full library through the Library API is describing how it worked before that change. Google's answer for whole-library selection is the separate Picker API, which asks the person to choose photos themselves rather than granting programmatic access.

What can the agent do, given that limit?

More than it sounds. It can upload media and add it to albums, create and update albums, add enrichments like text and location markers at specific positions, read back the items it created, and download a media item as a file. That covers the workflows people actually automate — generating or collecting images and organising them into an album with captions — and it is exactly the shape Google intends the Library API to serve now. What it does not cover is treating Photos as a searchable archive of everything you have ever taken.

Do I need a Google Cloud project?

No. Building this yourself means creating a project, enabling the Photos Library API, configuring an OAuth consent screen, and taking it through verification because the Photos scopes are sensitive. ClawLink connects through an already-registered app, so the only screen you see is Google's consent screen. That removes the setup work; it does not change the API's limits, which apply the same way to every application including your own.

Can the agent share an album or join a shared album?

No. Google removed the sharing methods entirely in the same 2025 change — albums.share, albums.unshare, and the shared-album endpoints are no longer available, and there is no scope that restores them. If your workflow ends with people seeing an album, have the agent build it and then share it yourself from the Google Photos app, which is the path Google now points to.

Hermes paired but still can't use Google Photos

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.