Skip to main content
Glama

Google Maps

google_maps
Read-only

Search Google Maps places, or get one place by ID.

Input Schema

NameRequiredDescriptionDefault
mNoSearch radius in meters for location or lat/lon geography. Accepted range: 1 through 15,028,132. Cannot be combined with z.
qNoThe business, category, address, or natural-language query to search. Required when type is search. Examples: coffee shops in Austin, dentist near Denver
zNoGoogle Maps zoom level for location or lat/lon geography. Accepted range: 3 through 30. Cannot be combined with m.
glNoTwo-letter country code used for regional result localization. Examples: us, gb, ca, au
hlNoLanguage used for Google Maps labels and returned text. Examples: en, es, fr, de
llNoA complete viewport containing latitude, longitude, and either zoom or radius. Format: @lat,lon,14z or @lat,lon,5000m
latNoLatitude for a coordinate-based viewport. Must be supplied with lon and either z or m.
lonNoLongitude for a coordinate-based viewport. Must be supplied with lat and either z or m.
dataNoA Google Maps protobuf parameter sequence for search filters or an exact place. Maximum length: 8,192 characters. Exact-place data requires type=place.
typeNoChooses a result search or an exact place response. Required for query and filter searches. Use place when sending an exact-place data sequence.
startNoNative Maps result offset: 0, 20, 40, and so on. Each request returns up to 20 places and each successful request costs one credit. Use pagination.next when it is present instead of constructing the next request manually.
nearbyNoUses the supplied geography as a nearby-search scope. Requires ll, location, or a lat/lon pair.
data_cidNoA decimal Google CID used to resolve one exact place. Cannot be combined with place_id or exact-place data.
locationNoA named geographic location resolved by the API. Cannot be combined with ll or lat/lon. Requires z or m.
place_idNoA Google place identifier used to resolve one exact place or request live foot traffic. Cannot be combined with data_cid or exact-place data on the primary Maps endpoint. It is the only required parameter on /api/google/maps/popular-times. Every response is fetched live; places without published data return popular_times: null.
max_priceNoMaximum price level for returned places. Must be non-negative and cannot be lower than min_price.
min_priceNoMinimum price level for returned places. Must be non-negative and cannot exceed max_price.
min_ratingNoPreferred minimum Google rating. Google treats this as a relevance preference.
open_stateNoFilters by the current open state. Cannot be combined with open_on_day or open_at_hour.
open_on_dayNoFilters for places open on a specific day.
open_at_hourNoFilters for places open at a specific hour using 24-hour time. Accepted range: 0 through 23. Requires open_on_day.
google_domainNoValidated Google domain used for the request. Examples: google.com, google.co.uk, google.ca
result_groupsNoReturn only these top-level result groups, e.g. ["organic_results", "knowledge_graph"]; omit for the complete response. search_metadata is always kept

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed134 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • addedInput schema / properties / data / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / data / default
      Added value: +null
    • changedInput schema / properties / data / description
      Previous value: -"Exact place by Google Maps data sequence"New value: +"A Google Maps protobuf parameter sequence for search filters or an exact place.\n\nMaximum length: 8,192 characters. Exact-place data requires type=place."
    • removedInput schema / properties / data / maxLength
      Removed value: -8192
    • addedInput schema / properties / data / title
      Added value: +"Data"
    • removedInput schema / properties / data / type
      Removed value: -"string"
    • addedInput schema / properties / data_cid / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / data_cid / default
      Added value: +null
    • changedInput schema / properties / data_cid / description
      Previous value: -"Exact place by decimal Google CID"New value: +"A decimal Google CID used to resolve one exact place.\n\nCannot be combined with place_id or exact-place data."
    • addedInput schema / properties / data_cid / title
      Added value: +"Data Cid"
    • removedInput schema / properties / data_cid / type
      Removed value: -"string"
    • addedInput schema / properties / gl / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / gl / default
      Added value: +null
    • changedInput schema / properties / gl / description
      Previous value: -"Two-letter country for localization, e.g. \"us\""New value: +"Two-letter country code used for regional result localization.\n\nExamples: us, gb, ca, au"
    • removedInput schema / properties / gl / maxLength
      Removed value: -2
    • removedInput schema / properties / gl / minLength
      Removed value: -2
    • addedInput schema / properties / gl / title
      Added value: +"Gl"
    • removedInput schema / properties / gl / type
      Removed value: -"string"
    • addedInput schema / properties / google_domain / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / google_domain / default
      Added value: +null
    • changedInput schema / properties / google_domain / description
      Previous value: -"Google domain such as google.co.uk; default google.com"New value: +"Validated Google domain used for the request.\n\nExamples: google.com, google.co.uk, google.ca"
    • addedInput schema / properties / google_domain / title
      Added value: +"Google Domain"
    • removedInput schema / properties / google_domain / type
      Removed value: -"string"
    • addedInput schema / properties / hl / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / hl / default
      Added value: +null
    • changedInput schema / properties / hl / description
      Previous value: -"Language code such as \"en\" or \"en-GB\"; default en"New value: +"Language used for Google Maps labels and returned text.\n\nExamples: en, es, fr, de"
    • removedInput schema / properties / hl / maxLength
      Removed value: -10
    • removedInput schema / properties / hl / minLength
      Removed value: -2
    • addedInput schema / properties / hl / title
      Added value: +"Hl"
    • removedInput schema / properties / hl / type
      Removed value: -"string"
    • addedInput schema / properties / lat / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / lat / default
      Added value: +null
    • changedInput schema / properties / lat / description
      Previous value: -"Latitude; supply together with lon"New value: +"Latitude for a coordinate-based viewport. Must be supplied with lon and either z or m."
    • removedInput schema / properties / lat / maximum
      Removed value: -90
    • removedInput schema / properties / lat / minimum
      Removed value: --90
    • addedInput schema / properties / lat / title
      Added value: +"Lat"
    • removedInput schema / properties / lat / type
      Removed value: -"number"
    • addedInput schema / properties / ll / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / ll / default
      Added value: +null
    • changedInput schema / properties / ll / description
      Previous value: -"Viewport as @lat,lon,14z or @lat,lon,5000m"New value: +"A complete viewport containing latitude, longitude, and either zoom or radius.\n\nFormat: @lat,lon,14z or @lat,lon,5000m"
    • addedInput schema / properties / ll / title
      Added value: +"Ll"
    • removedInput schema / properties / ll / type
      Removed value: -"string"
    • addedInput schema / properties / location / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / location / default
      Added value: +null
    • changedInput schema / properties / location / description
      Previous value: -"Named search origin such as \"Austin, Texas\"; conflicts with uule and lat/lon"New value: +"A named geographic location resolved by the API. Cannot be combined with ll or lat/lon.\n\nRequires z or m."
    • removedInput schema / properties / location / maxLength
      Removed value: -512
    • addedInput schema / properties / location / title
      Added value: +"Location"
    • removedInput schema / properties / location / type
      Removed value: -"string"
    • addedInput schema / properties / lon / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / lon / default
      Added value: +null
    • changedInput schema / properties / lon / description
      Previous value: -"Longitude; supply together with lat"New value: +"Longitude for a coordinate-based viewport. Must be supplied with lat and either z or m."
    • removedInput schema / properties / lon / maximum
      Removed value: -180
    • removedInput schema / properties / lon / minimum
      Removed value: --180
    • addedInput schema / properties / lon / title
      Added value: +"Lon"
    • removedInput schema / properties / lon / type
      Removed value: -"number"
    • addedInput schema / properties / m / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / m / default
      Added value: +null
    • changedInput schema / properties / m / description
      Previous value: -"Radius in meters; use with location or lat/lon"New value: +"Search radius in meters for location or lat/lon geography.\n\nAccepted range: 1 through 15,028,132. Cannot be combined with z."
    • removedInput schema / properties / m / minimum
      Removed value: -1
    • addedInput schema / properties / m / title
      Added value: +"M"
    • removedInput schema / properties / m / type
      Removed value: -"number"
    • addedInput schema / properties / max_price / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / max_price / default
      Added value: +null
    • changedInput schema / properties / max_price / description
      Previous value: -"Price level upper bound"New value: +"Maximum price level for returned places.\n\nMust be non-negative and cannot be lower than min_price."
    • removedInput schema / properties / max_price / minimum
      Removed value: -0
    • addedInput schema / properties / max_price / title
      Added value: +"Max Price"
    • removedInput schema / properties / max_price / type
      Removed value: -"integer"
    • addedInput schema / properties / min_price / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / min_price / default
      Added value: +null
    • changedInput schema / properties / min_price / description
      Previous value: -"Price level lower bound"New value: +"Minimum price level for returned places.\n\nMust be non-negative and cannot exceed max_price."
    • removedInput schema / properties / min_price / minimum
      Removed value: -0
    • addedInput schema / properties / min_price / title
      Added value: +"Min Price"
    • removedInput schema / properties / min_price / type
      Removed value: -"integer"
    • addedInput schema / properties / min_rating / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / min_rating / default
      Added value: +null
    • changedInput schema / properties / min_rating / description
      Previous value: -"Minimum rating preference"New value: +"Preferred minimum Google rating.\n\nGoogle treats this as a relevance preference."
    • removedInput schema / properties / min_rating / enum
      Removed value: -[
      -  "2.0",
      -  "2.5",
      -  "3.0",
      -  "3.5",
      -  "4.0",
      -  "4.5"
      -]
    • addedInput schema / properties / min_rating / title
      Added value: +"Min Rating"
    • removedInput schema / properties / min_rating / type
      Removed value: -"string"
    • addedInput schema / properties / nearby / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / nearby / default
      Added value: +null
    • changedInput schema / properties / nearby / description
      Previous value: -"Restrict results to places near the viewport"New value: +"Uses the supplied geography as a nearby-search scope.\n\nRequires ll, location, or a lat/lon pair."
    • addedInput schema / properties / nearby / title
      Added value: +"Nearby"
    • removedInput schema / properties / nearby / type
      Removed value: -"boolean"
    • addedInput schema / properties / open_at_hour / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / open_at_hour / default
      Added value: +null
    • changedInput schema / properties / open_at_hour / description
      Previous value: -"Hour 0-23; requires open_on_day"New value: +"Filters for places open at a specific hour using 24-hour time.\n\nAccepted range: 0 through 23. Requires open_on_day."
    • removedInput schema / properties / open_at_hour / maximum
      Removed value: -23
    • removedInput schema / properties / open_at_hour / minimum
      Removed value: -0
    • addedInput schema / properties / open_at_hour / title
      Added value: +"Open At Hour"
    • removedInput schema / properties / open_at_hour / type
      Removed value: -"integer"
    • addedInput schema / properties / open_on_day / anyOf
      Added value: +[
      +  {
      +    "enum": [
      +      "mon",
      +      "tue",
      +      "wed",
      +      "thu",
      +      "fri",
      +      "sat",
      +      "sun"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / open_on_day / default
      Added value: +null
    • addedInput schema / properties / open_on_day / description
      Added value: +"Filters for places open on a specific day."
    • removedInput schema / properties / open_on_day / enum
      Removed value: -[
      -  "mon",
      -  "tue",
      -  "wed",
      -  "thu",
      -  "fri",
      -  "sat",
      -  "sun"
      -]
    • addedInput schema / properties / open_on_day / title
      Added value: +"Open On Day"
    • removedInput schema / properties / open_on_day / type
      Removed value: -"string"
    • addedInput schema / properties / open_state / anyOf
      Added value: +[
      +  {
      +    "enum": [
      +      "now",
      +      "24h"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / open_state / default
      Added value: +null
    • changedInput schema / properties / open_state / description
      Previous value: -"Open now, or open 24 hours; cannot combine with open_on_day"New value: +"Filters by the current open state.\n\nCannot be combined with open_on_day or open_at_hour."
    • removedInput schema / properties / open_state / enum
      Removed value: -[
      -  "now",
      -  "24h"
      -]
    • addedInput schema / properties / open_state / title
      Added value: +"Open State"
    • removedInput schema / properties / open_state / type
      Removed value: -"string"
    • addedInput schema / properties / place_id / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / place_id / default
      Added value: +null
    • changedInput schema / properties / place_id / description
      Previous value: -"Exact place by Google place ID"New value: +"A Google place identifier used to resolve one exact place or request live foot traffic.\n\nCannot be combined with data_cid or exact-place data on the primary Maps endpoint. It is the only required parameter on /api/google/maps/popular-times. Every response is fetched live; places without published data return popular_times: null."
    • addedInput schema / properties / place_id / title
      Added value: +"Place Id"
    • removedInput schema / properties / place_id / type
      Removed value: -"string"
    • addedInput schema / properties / q / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / q / default
      Added value: +null
    • changedInput schema / properties / q / description
      Previous value: -"Search text; required for type=search"New value: +"The business, category, address, or natural-language query to search. Required when type is search.\n\nExamples: coffee shops in Austin, dentist near Denver"
    • addedInput schema / properties / q / title
      Added value: +"Q"
    • removedInput schema / properties / q / type
      Removed value: -"string"
    • addedInput schema / properties / start / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / start / default
      Added value: +null
    • changedInput schema / properties / start / description
      Previous value: -"Native Maps result offset"New value: +"Native Maps result offset: 0, 20, 40, and so on. Each request returns up to 20 places and each successful request costs one credit.\n\nUse pagination.next when it is present instead of constructing the next request manually."
    • removedInput schema / properties / start / minimum
      Removed value: -0
    • addedInput schema / properties / start / title
      Added value: +"Start"
    • removedInput schema / properties / start / type
      Removed value: -"integer"
    • addedInput schema / properties / type / anyOf
      Added value: +[
      +  {
      +    "enum": [
      +      "search",
      +      "place"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / type / default
      Added value: +null
    • changedInput schema / properties / type / description
      Previous value: -"search (default) for a query, or place for one exact place identified by place_id, data_cid or data"New value: +"Chooses a result search or an exact place response. Required for query and filter searches.\n\nUse place when sending an exact-place data sequence."
    • removedInput schema / properties / type / enum
      Removed value: -[
      -  "search",
      -  "place"
      -]
    • addedInput schema / properties / type / title
      Added value: +"Type"
    • removedInput schema / properties / type / type
      Removed value: -"string"
    • addedInput schema / properties / z / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / z / default
      Added value: +null
    • changedInput schema / properties / z / description
      Previous value: -"Zoom 3-30; use with location or lat/lon"New value: +"Google Maps zoom level for location or lat/lon geography.\n\nAccepted range: 3 through 30. Cannot be combined with m."
    • removedInput schema / properties / z / maximum
      Removed value: -30
    • removedInput schema / properties / z / minimum
      Removed value: -3
    • addedInput schema / properties / z / title
      Added value: +"Z"
    • removedInput schema / properties / z / type
      Removed value: -"number"
    • addedInput schema / title
      Added value: +"Request"
  2. First observed

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds nothing on top of that: no mention of credit costs per request, the 20-result-per-page limit, live-only fetches, or authentication needs — all of which exist in the schema but are absent from the prose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with the primary search use case front-loaded and zero filler. It is arguably too terse for a 23-parameter tool, but there is no wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 23-parameter tool with two distinct modes, filtering options (price, rating, open state), geography variants, and pagination, the description covers only the two headline verbs. No output schema exists, so it need not describe returns, but the mode-selection and filtering surface is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema is unusually detailed (radius ranges, zoom bounds, mutual exclusions, credit costs, pagination advice), so the baseline is 3. The description contributes no parameter meaning of its own; 'by ID' is vaguer than the schema's place_id and data_cid distinctions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Search Google Maps places') plus a second mode ('get one place by ID'), so an agent knows this is a places lookup rather than a web search. It stops short of naming or contrasting with the obvious sibling google_search, which is the one confusion risk given the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to prefer this over google_search, bing_search, or duckduckgo_search, and no criteria for choosing the search mode versus the single-place mode. The reader is left to infer that 'type' and an ID parameter select the branch.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.