How to connect Google Maps to Hermes Agent
Connect Google Maps to Hermes with ClawLink in one click — 19 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.


Geocode addresses and query place details. Once connected, Hermes Agent can read and act on Google Maps from chat — pairing, token refresh, and tool wiring handled for you.
Most guides for giving Hermes Agent Google Maps 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 Maps setup: pair once in the browser and your always-on Hermes agent can act on Google Maps 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.
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 Maps.
1Install and pair
Install the ClawLink plugin, then pair Hermes with a one-time browser approval:
hermes plugins install ClawLink-HQ/hermes-plugin --enable- 2
Connect Google Maps
One-click OAuth in the dashboard.
- 3
Use it from chat
Ask Hermes Agent: "What can you do with Google Maps?"
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 testThen connect Google Maps in the ClawLink dashboard — a one-click OAuth approval, no API keys.
Verify the connection by asking Hermes:
Use google_maps_text_search with textQuery "bike repair shop with good reviews in Boulder", maxResultCount 10, and give me the top three with their ratings and addresses.
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 loginlogin opens the same browser approval and stores a credential locally. Once Google Maps is connected in the dashboard, that agent calls the same 19 Google Maps tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.
Google Maps MCP for Hermes
Looking for a Google Maps MCP server for Hermes Agent? ClawLink connects Google Maps to Hermes Agent and exposes 19 Google Maps tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Google Maps integration works the same way.
Two competing framings sit in the answer space for this page. Google's own documentation answers "is a Maps API key required" with a flat yes, because the Maps Platform keys every API call. The AI Overviews answer "without api key" with Google's Maps Demo Key (free, no billing project, for prototyping) and with no-API scraping workflows. ClawLink is neither: the connection is a hosted OAuth grant under the cloud-platform scope, so the user never creates a key or a billing project, and the tools call Google's Maps Platform as the connected account. That is the difference from both a demo key (which only prototypes in your own app) and scraping (which is not Google data at all).
The routes search engines teach for Google Maps in an agent, and how this page differs
The head-query answer space is one Composio reference wide, and the alternatives divide into keyed, scraped, and open-data.
- Google's Maps Demo Key: free, no credit card, no billing project, for prototyping Google Maps Platform in your own app. It is the AIO's answer to "without api key", and it is a key all the same.
- Hermes's built-in Maps skill (OpenStreetMap/OSRM): the free, keyless, open-data route the Hermes query leads with. Eight commands, 44 POI categories, no Google data, no account actions.
- Composio Connect for Hermes: the AIO's head-query answer, a config-file MCP setup with a Composio-issued API key in ~/.hermes/config.yaml.
- No-API scraping workflows: the third lane the AIO names, typically Serper or page scrapers that bypass the Maps API and return non-Google or stale data.
- ClawLink (this page): 19 Google Maps Platform tools over hosted OAuth as the connected account, no key, no config file, nothing running locally.
Using OpenClaw as well? The OpenClaw Google Maps integration is the same hosted OAuth setup with the same tool set.
What the Hermes Agent Google Maps integration can do
19 Google Maps tools are ready for Hermes Agent once the account is connected.
All 19 Google Maps tools for Hermes
| Tool | What it does |
|---|---|
Autocomplete google_maps_autocomplete | Returns place and query predictions for text input. Use when implementing as-you-type autocomplete functionality for place searches. Returns up to five predictions ordered by relevance. |
Compute route matrix google_maps_compute_route_matrix | Calculates travel distance and duration matrix between multiple origins and destinations using the modern Routes API; supports OAuth2 authentication and various travel modes. |
Geocode address with query google_maps_geocode_address_with_query | Tool to map addresses to geographic coordinates with query parameter. Use when you need to convert a textual address into latitude/longitude coordinates using the modern v4beta API. |
Geocode destinations google_maps_geocode_destinations | Tool to perform destination lookup and return detailed destination information including primary place, containing places, sub-destinations, landmarks, entrances, and navigation points. |
Geocode location google_maps_geocode_location | Tool to convert geographic coordinates (latitude and longitude) to human-readable addresses using reverse geocoding. Use when you need to find the address or place name for a given set of coordinates. |
Geocode place google_maps_geocode_place | Tool to perform geocode lookup using a place identifier to retrieve address and coordinates. Use when you need to get detailed geographic information for a specific Google Place ID. |
Geocoding API google_maps_geocoding_api | Convert addresses into geographic coordinates (latitude and longitude) and vice versa (reverse geocoding), or get an address for a Place ID. |
Geolocate google_maps_geolocate | Tool to determine location based on cell towers and WiFi access points. Use when you need to find the geographic location of a device using network infrastructure data. |
Get place details google_maps_get_place_details | Retrieves comprehensive details for a place using its resource name (places/{place_id} format). Use when you need detailed information about a specific place. |
Get route google_maps_get_route | Calculates one or more routes between two specified locations. Uses various travel modes and preferences; addresses must be resolvable by Google Maps. |
Get2d tile google_maps_get2d_tile | Tool to retrieve a 2D map tile image at specified coordinates for building custom map visualizations. Use when you need to download individual map tile images for roadmap, satellite, or terrain views. |
Get3d tiles root google_maps_get3d_tiles_root | Tool to retrieve the 3D Tiles tileset root configuration for photorealistic 3D map rendering. |
Lookup aerial video google_maps_lookup_aerial_video | Look up an aerial view video by address or video ID |
Maps embed API google_maps_maps_embed_api | Generate an embeddable Google Map URL and HTML iframe code |
Nearby search google_maps_nearby_search | Searches for places (e.g., restaurants, parks) within a specified circular area, with options |
Place photo google_maps_place_photo | Retrieves high quality photographic content from the Google Maps Places database |
Text search google_maps_text_search | Searches for places on Google Maps using a textual query (e.g., "restaurants in London" |
Render aerial video google_maps_render_aerial_video | Starts rendering an aerial view video for a US postal address |
Tiles create session google_maps_tiles_create_session | Create a session token required for accessing 2D Tiles and Street View imagery |
Try it: find the Google Maps tool you need
Browse the 19 Google Maps tools
Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.
Example prompts
Use google_maps_text_search with textQuery "bike repair shop with good reviews in Boulder", maxResultCount 10, and give me the top three with their ratings and addresses.
Geocode "1600 Amphitheatre Parkway, Mountain View" with google_maps_geocode_address_with_query, then run google_maps_nearby_search on the resulting latitude and longitude with radius 1500 and includedTypes ["restaurant"]. Show me the five closest results.
Use google_maps_get_route from "Golden Gate Bridge, San Francisco" to "Sausalito, CA" with mode "DRIVE" and show me the distance, duration, and turn-by-turn steps. If you get a no-route error, try mode "TRANSIT" instead.
Search google_maps_text_search for "Acme Coffee, Portland", take the first result's place id, then call google_maps_get_place_details with that id and fieldMask covering displayName, formattedAddress, rating, and websiteUri.
Google Maps tool arguments Hermes gets wrong
The failure pattern here is different from the other Google toolkits: not argument casing, but what the arguments are. The 18 production failures on one tool are all the same call, and two others fail on coordinate arguments.
google_maps_nearby_searchwants coordinates, not a place name. The schema requireslatitude,longitude, andradiusin decimal degrees and meters. An agent that sends "coffee near the office" to nearby_search fails witharguments.latitude is required(one production occurrence); the text-search tool is the one that accepts a name. Geocode first, then nearby-search on the result.google_maps_text_searchis the human-language tool, and it wants camelCasetextQuery. It matches place names, addresses, and categories from a single string, and takes an optionalmaxResultCountof 1-20. The one production failure on it isarguments.textQuery is required, the agent having sentqueryinstead.google_maps_get_place_detailsaccepts a Place ID only. The schema is explicit: a Google Place ID, not a business name, address, or search query; eitherplaces/\{id\}or the bare id. Agents feed the name they searched with and get an empty or erroring response.google_maps_get_routefails on unreachable pairs. Eighteen of this integration's 21 production failures areNo routes found between the specified locations for the given travel mode.It accepts textual origins and destinations and amode,waypoints, andavoidset, and returns nothing when no route exists in that mode between them, so the error is usually geography (an island, a ferry gap, a closed road) rather than the connection.google_maps_geocode_address_with_querywants the whole address in oneaddress_querystring. Region hints go in the optionalregion_code(ccTLD form). This is the tool to use before any coordinate-requiring call.google_maps_compute_route_matrixis the batch version. Requiredoriginsanddestinations, optionaltravelModeandroutingPreference, and it returns a matrix rather than one route, so the no-route failure above does not apply to it in the same way.
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 Maps working from chat.
| Manual | ClawLink | |
|---|---|---|
| Connection flow | Register a Google Maps app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect Google Maps 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 Maps. | 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 Maps actions to the runtime in a format your agent can reliably use. | 19 tools for Google Maps are already exposed through ClawLink, so the agent can read and act from chat immediately. |
ClawLink vs. Composio
Composio also exposes Google Maps 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 Maps in the browser, and the 19 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 Maps
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 Maps 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 Maps tools
Google Maps 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 Maps 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 Maps 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.
No routes found between the specified locations for the given travel mode.
This is geography, not auth, and it is the dominant failure on this integration: 18 of 21 production errors. google_maps_get_route computes a route between its origin and destination for the chosen mode, and when Google has no such route (an island with no bridge, a ferry-only crossing under a driving mode, a closed road), it returns exactly this message. The fix is to change the question: ask for a different mode, add waypoints, or use google_maps_compute_route_matrix to compare alternatives. Reconnecting the account does nothing.
arguments.textQuery is required
The agent sent the search string under a different name (query, text_query, or q). google_maps_text_search is the only tool that takes a plain language query, and its argument is camelCase textQuery. Retry with that exact key; ClawLink's error names the required field.
arguments.latitude is required
The agent called google_maps_nearby_search with a place name instead of coordinates. The schema requires latitude, longitude, and radius; there is no name-based form of this tool. Run google_maps_geocode_address_with_query first and feed its coordinates into the nearby search.
Google Maps returns 403 or permission errors on one tool
One tool on this page is an exception to the no-key connection: google_maps_maps_embed_api's schema states the Maps Embed API only supports API key authentication, not OAuth. If that specific tool fails while the others work, it is the embed tool, and the other 18 tools are the answer path: everything ClawLink serves under the hosted OAuth grant calls Google's Maps Platform as the connected account. For the rest of the toolkit, a 403 is the usual consent problem, and the fix is reconnecting from the dashboard and approving the full grant.
OAuth finished in the browser but the account is still missing
Try reconnecting Google Maps 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 Maps integration?
Yes. ClawLink is the fastest way to connect Hermes to Google Maps: link your Google Maps account once in the browser and Hermes Agent can call the Google Maps API through 19 ready-made tools — no custom code or token handling.
How do I connect Google Maps 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 Maps 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 Maps to Hermes Agent?
About two minutes. Sign in, click Connect next to Google Maps in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.
Why use ClawLink instead of wiring Google Maps 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 Maps working from chat.
Is a Google Maps API key required to connect Google Maps to Hermes Agent?
Google's Maps Platform does key every API call, and its documentation answers that question with a flat yes. What this page removes is you handling that key: the ClawLink connection is a hosted OAuth grant under Google's cloud-platform scope, so there is no key to create, restrict, or store, and no billing project attached to your account. The only tool on this page that still behaves like the keyed world is google_maps_maps_embed_api, whose schema requires an API key because Google's Embed API supports only key authentication.
How is ClawLink different from the Google Maps Demo Key?
The Demo Key is a free prototyping key Google publishes for trying Maps APIs without a billing account, and it is meant for your own app in development. ClawLink is a hosted OAuth connection: you approve Google's consent screen once, and Hermes calls 19 Maps Platform tools as the connected account. No key value ever appears on your machine, and the grant is revocable at myaccount.google.com/permissions.
Does Hermes Agent have its own Maps skill, and how is it different?
Yes: Hermes ships a Maps skill in its productivity set. Verified against the repo, it is "8 commands, 44 POI categories, zero dependencies, no API key required" over OpenStreetMap data (Nominatim, Overpass, OSRM, TimeAPI.io). It is a local script skill, free and keyless, but it reads OSM data, not Google Maps data, and it cannot see or act on your Google account. ClawLink's 19 tools run on Google's own Places, Directions, and Geocoding APIs as the connected account.
What does connecting Google Maps grant access to?
The auth config requests the https://www.googleapis.com/auth/cloud-platform scope, which is how the Maps Platform APIs accept the OAuth call. ClawLink holds the grant server side; it shows under Third-party apps and services in your Google account, and revoking it there ends the connection. There is no API key on your machine to leak or rotate.
Why does Hermes give a route error even though the connection works?
Because the connection is fine and the route does not exist. Eighteen of the last twenty-one production failures on this integration are "No routes found between the specified locations for the given travel mode" on google_maps_get_route; the remaining two are argument-name errors. When Google has no route for the origin, destination, and mode you asked for, no reconnect changes the answer. Change the mode, add waypoints, or use the route matrix to compare options.
Hermes paired but still can't use Google Maps
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.