Tool reference
All 42 tools, with every parameter, default, constraint and example. The same interface is available through MCP and the CLI.
Calling conventions
The examples are MCP argument objects. For a raw MCP tools/call, use the tool name as name and the object as arguments. Hosts may prefix tool names. The equivalent CLI calls below use mcp-gmap-rs call TOOL --args JSON.
Only top-level parameters have CLI flags. Pass nested objects and arrays as JSON. A bare boolean flag means true; --flag false sets false. Unknown properties are rejected. Inspect your installed release with tools or schema TOOL.
Google authentication and language are process configuration, not tool parameters. Exact route coordinates avoid address resolution; named locations may also require an API key for Geocoding. See authentication and configuration.
Calls can incur Google charges. Composite and matrix results may contain per-item errors even when the tool succeeds. Preserve Google source links, review/photo authors and AI-summary disclosures. Examples illustrate inputs, not current coverage or results.
Types, required fields and schema bounds come from the executable's schema-derived reference. Defaults, result descriptions and cross-field restrictions are reviewed against the implementation. Google may impose additional coverage and quota limits.
Unknown top-level properties are rejected; native API body objects accept Google fields, which Google validates. Mutating operations are not automatically retried.
Tools
maps_geocodemaps_validate_addressmaps_pollenmaps_area_insightsmaps_snap_to_roadsmaps_nearest_roadsmaps_reverse_geocodemaps_search_placesmaps_search_nearbymaps_place_detailsmaps_directionsmaps_distance_matrixmaps_elevationmaps_timezonemaps_weathermaps_air_qualitymaps_static_mapmaps_batch_geocodemaps_explore_areamaps_plan_routemaps_compare_placesmaps_search_along_routemaps_local_rank_trackermaps_speed_limitsmaps_autocompletemaps_geolocatemaps_solarmaps_aerial_viewmaps_render_aerial_videomaps_map_tilesmaps_streetviewmaps_streetview_publishmaps_datasetsmaps_route_optimizationmaps_air_quality_forecastmaps_air_quality_historymaps_air_quality_heatmapmaps_pollen_heatmapmaps_weather_historymaps_weather_alertsmaps_weather_minute_forecastmaps_weather_map
maps_geocode
Convert an address or landmark to coordinates.
Resolve an address or landmark to the first Geocoding match. Use this to obtain reusable coordinates and a place ID; it does not validate postal deliverability.
CLI command: geocode. Google access: API key required in this implementation.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
address / --address | string; at least 1 character(s) | Yes | — | Address, city or landmark to geocode. |
Behavior and restrictions
- No match is a tool error, not an empty successful location.
- This direct tool uses Geocoding v3; Places fallback is used by location-resolving composites, not by this call.
Result
An object with location.lat, location.lng, formatted_address and place_id. Only the first result is returned.
Example
MCP arguments:
{
"address": "Eiffel Tower, Paris, France"
}Equivalent CLI call:
mcp-gmap-rs call maps_geocode --args '{"address":"Eiffel Tower, Paris, France"}'maps_validate_address
Validate and standardize a postal address; returns Google's verdict, corrections, components and geocode. A verdict is evidence, not a delivery guarantee.
Validate postal components and return corrections, the standardized address and Google’s verdict. Keep the verdict and unresolved components visible to the caller.
CLI command: validate-address. Google access: API key or OAuth for the main API.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
addressLines / --address-lines | array of string; 1–10 items; each item at least 1 character(s) | Yes | — | One or more postal-address lines, in order. |
administrativeArea / --administrative-area | string; at least 1 character(s) | No | Not supplied | State, province or corresponding administrative area. |
enableUspsCass / --enable-usps-cass | boolean | No | false | Request USPS CASS processing; this implementation requires regionCode US or PR when true. |
locality / --locality | string; at least 1 character(s) | No | Not supplied | City or locality. |
postalCode / --postal-code | string; at least 1 character(s) | No | Not supplied | Postal/ZIP code. |
regionCode / --region-code | string; pattern: ^[A-Z]{2}$ | No | Not supplied; Google may infer it | Two-letter uppercase country/region code; recommended to disambiguate the address. |
sessionToken / --session-token | string; at least 1 character(s) | No | No session token; Google bills outside an Autocomplete session | Same-project Autocomplete (New) session token. Reuse the prediction token in this concluding request; create a fresh token for the next session. |
Behavior and restrictions
- A validation verdict is not a delivery guarantee.
- Region/API coverage varies. This tool does not submit validation feedback or automatically accept corrections.
Result
The complete validation response, typically including result.verdict, result.address, result.geocode and responseId; Google may omit unavailable fields.
Example
MCP arguments:
{
"addressLines": [
"5 Avenue Anatole France"
],
"regionCode": "FR",
"locality": "Paris",
"postalCode": "75007"
}Equivalent CLI call:
mcp-gmap-rs call maps_validate_address --args '{"addressLines":["5 Avenue Anatole France"],"regionCode":"FR","locality":"Paris","postalCode":"75007"}'maps_pollen
Get 1-5 days of pollen forecasts, indices and health recommendations for exact coordinates. Coverage varies by location and season.
Retrieve a short daily pollen forecast for exact coordinates. The response preserves pollen types, indices, plant information and provider recommendations.
CLI command: pollen. Google access: API key required in this implementation.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
days / --days | integer; 1–5 | No | 1 | Number of daily forecast records to request. |
latitude / --latitude | number; -90.0–90.0 | Yes | — | WGS84 latitude in decimal degrees; north is positive. |
longitude / --longitude | number; -180.0–180.0 | Yes | — | WGS84 longitude in decimal degrees; east is positive. |
plantsDescription / --plants-description | boolean | No | false | Include detailed plant descriptions and related information when available. |
Behavior and restrictions
- Requests use a page size of 5, sufficient for this tool’s maximum five-day request; no additional pages are fetched automatically.
- Availability depends on location, season and Google coverage.
Result
The original Pollen response, including regionCode, dailyInfo and any nextPageToken. Each day can include pollen-type and plant information.
Example
MCP arguments:
{
"latitude": 48.8584,
"longitude": 2.2945,
"days": 3,
"plantsDescription": false
}Equivalent CLI call:
mcp-gmap-rs call maps_pollen --args '{"latitude":48.8584,"longitude":2.2945,"days":3,"plantsDescription":false}'maps_area_insights
Count places within a circle, region or polygon using Places Aggregate. Optional place IDs are available only for counts of 100 or less; no automatic details requests.
Count matching places in a circle, region or polygon with Places Aggregate. This is an aggregate query rather than a count of a limited Places search page.
CLI command: area-insights. Google access: API key or OAuth for the main API.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
area / --area | object | Yes | — | Exactly one of circle, region or customArea. |
area.circle | object | No | Not supplied | Circular area; mutually exclusive with region/customArea. |
area.circle.latLng | object | When parent is supplied | — | Circle center as exact coordinates. |
area.circle.latLng.latitude | number; -90.0–90.0 | When parent is supplied | — | WGS84 latitude in decimal degrees; north is positive. |
area.circle.latLng.longitude | number; -180.0–180.0 | When parent is supplied | — | WGS84 longitude in decimal degrees; east is positive. |
area.circle.radius | integer; 23–50000 | When parent is supplied | — | Circle radius in metres. |
area.customArea | object | No | Not supplied | Custom polygon area; mutually exclusive with circle/region. |
area.customArea.polygon | object | When parent is supplied | — | Polygon boundary. |
area.customArea.polygon.coordinates | array of object; 4–1000 items | When parent is supplied | — | Ordered ring of coordinate objects; first and last coordinates must match. |
area.customArea.polygon.coordinates[].latitude | number; -90.0–90.0 | When parent is supplied | — | WGS84 latitude in decimal degrees; north is positive. |
area.customArea.polygon.coordinates[].longitude | number; -180.0–180.0 | When parent is supplied | — | WGS84 longitude in decimal degrees; east is positive. |
area.region | object | No | Not supplied | An administrative/geographic region identified by a Google place resource. |
area.region.place | string; pattern: ^places/[A-Za-z0-9_-]+$ | When parent is supplied | — | Region resource in places/PLACE_ID format, not a free-form region name. |
excludedTypes / --excluded-types | array of string; 1–50 items; each item at least 1 character(s) | No | No excluded-type filter | Google place types to exclude. |
includePlaces / --include-places | boolean | No | false | Request matching place resource IDs in addition to the count. |
includedTypes / --included-types | array of string; 1–50 items; each item at least 1 character(s) | Yes | — | Google place types to include, such as restaurant or cafe. |
maxRating / --max-rating | number; 1.0–5.0 | No | No upper rating filter | Inclusive upper rating bound. |
minRating / --min-rating | number; 1.0–5.0 | No | No lower rating filter | Inclusive lower rating bound; cannot exceed maxRating. |
operatingStatus / --operating-status | array of string; 1–3 items; values: OPERATING_STATUS_OPERATIONAL, OPERATING_STATUS_PERMANENTLY_CLOSED, OPERATING_STATUS_TEMPORARILY_CLOSED | No | Google defaults to operational places | Allowed operating states. |
priceLevels / --price-levels | array of string; 1–5 items; values: PRICE_LEVEL_FREE, PRICE_LEVEL_INEXPENSIVE, PRICE_LEVEL_MODERATE, PRICE_LEVEL_EXPENSIVE, PRICE_LEVEL_VERY_EXPENSIVE | No | All price levels | Allowed price levels. |
Behavior and restrictions
- Supply exactly one area form. Nested objects are JSON values on the CLI; their child parameters do not have independent flags.
- Polygon rings must be closed. Google also checks polygon geometry, supported types, area and coverage.
- Place IDs are available only for counts of 100 or less. The tool does not automatically request Place Details.
Result
Google’s response with count (normally an int64 string) and optional placeInsights[].place resources when IDs were requested and available.
Example
MCP arguments:
{
"area": {
"circle": {
"latLng": {
"latitude": 48.8584,
"longitude": 2.2945
},
"radius": 500
}
},
"includedTypes": [
"restaurant"
],
"minRating": 4
}Equivalent CLI call:
mcp-gmap-rs call maps_area_insights --args '{"area":{"circle":{"latLng":{"latitude":48.8584,"longitude":2.2945},"radius":500}},"includedTypes":["restaurant"],"minRating":4}'maps_snap_to_roads
Snap an ordered GPS path of 2-100 points to roads. Keep consecutive points within about 300 metres for good results. Optional interpolation adds road geometry.
Match an ordered GPS trace to the most likely road geometry. Use Nearest Roads for independent points rather than a travelled path.
CLI command: snap-to-roads. Google access: API key required in this implementation.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
interpolate / --interpolate | boolean | No | false | Add intermediate road geometry between supplied points. |
path / --path | array of object; 2–100 items | Yes | — | GPS coordinate objects in travel order. |
path[].latitude | number; -90.0–90.0 | When parent is supplied | — | WGS84 latitude in decimal degrees; north is positive. |
path[].longitude | number; -180.0–180.0 | When parent is supplied | — | WGS84 longitude in decimal degrees; east is positive. |
Behavior and restrictions
- Consecutive input points should be within about 300 metres for good matching.
- Interpolated points may not have an originalIndex. Speed limits are not requested by this tool.
Result
The original Roads response, including snappedPoints and any warningMessage. Points preserve road placeId, location and originalIndex when provided.
Example
MCP arguments:
{
"path": [
{
"latitude": -35.27801,
"longitude": 149.12958
},
{
"latitude": -35.28032,
"longitude": 149.12907
}
],
"interpolate": true
}Equivalent CLI call:
mcp-gmap-rs call maps_snap_to_roads --args '{"path":[{"latitude":-35.27801,"longitude":149.12958},{"latitude":-35.28032,"longitude":149.12907}],"interpolate":true}'maps_nearest_roads
Find the nearest road segments for 1-100 independent GPS points; preserves Google's originalIndex and road place IDs.
Find nearby road segments for independent GPS points without interpreting them as one continuous trace.
CLI command: nearest-roads. Google access: API key required in this implementation.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
points / --points | array of object; 1–100 items | Yes | — | Independent coordinate objects to match. |
points[].latitude | number; -90.0–90.0 | When parent is supplied | — | WGS84 latitude in decimal degrees; north is positive. |
points[].longitude | number; -180.0–180.0 | When parent is supplied | — | WGS84 longitude in decimal degrees; east is positive. |
Behavior and restrictions
- A point can match more than one road segment; retain originalIndex rather than assuming one output per input.
- Speed limits are not requested by this tool.
Result
The original Roads response with snappedPoints, road placeId, location and originalIndex mapping back to input points.
Example
MCP arguments:
{
"points": [
{
"latitude": -35.27801,
"longitude": 149.12958
},
{
"latitude": -35.28032,
"longitude": 149.12907
}
]
}Equivalent CLI call:
mcp-gmap-rs call maps_nearest_roads --args '{"points":[{"latitude":-35.27801,"longitude":149.12958},{"latitude":-35.28032,"longitude":149.12907}]}'maps_reverse_geocode
Convert coordinates to a street address.
Convert exact coordinates to the first reverse-Geocoding result. Use the result’s components when a formatted address alone is insufficient.
CLI command: reverse-geocode. Google access: API key required in this implementation.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
latitude / --latitude | number; -90.0–90.0 | Yes | — | WGS84 latitude in decimal degrees; north is positive. |
longitude / --longitude | number; -180.0–180.0 | Yes | — | WGS84 longitude in decimal degrees; east is positive. |
Behavior and restrictions
- Only the first result is returned. No match is a tool error.
Result
The first native Geocoding result, including formatted_address, address_components, geometry and place_id when available.
Example
MCP arguments:
{
"latitude": 48.8584,
"longitude": 2.2945
}Equivalent CLI call:
mcp-gmap-rs call maps_reverse_geocode --args '{"latitude":48.8584,"longitude":2.2945}'maps_search_places
Search Places (New) by text with optional location and rating filters.
Search Places (New) by text and optional location/rating/type filters. Use returned IDs for selective detail requests.
CLI command: search-places. Google access: API key or OAuth for the main API.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
includedType / --included-type | string; at least 1 character(s) | No | No type filter | Google place type, such as cafe. |
locationBias / --location-bias | object | No | No location bias | Optional circular search bias; a bias is not a hard geographic restriction. |
locationBias.latitude | number; -90.0–90.0 | When parent is supplied | — | WGS84 latitude in decimal degrees; north is positive. |
locationBias.longitude | number; -180.0–180.0 | When parent is supplied | — | WGS84 longitude in decimal degrees; east is positive. |
locationBias.radius | number; 0.1–50000.0 | No | 5000 | Bias radius in metres. |
minRating / --min-rating | number; 0.0–5.0 | No | No rating filter | Minimum user rating requested from Google. |
openNow / --open-now | boolean | No | No opening-status restriction | Restrict to places currently open when true. |
query / --query | string; at least 1 character(s) | Yes | — | Natural-language place query. |
Behavior and restrictions
- This tool requests one page of 20 results and does not return or automatically follow a page token.
- Missing opening/rating data depends on Google coverage; do not infer an exhaustive inventory from this search.
Result
An array of up to 20 Google Place objects with selected search fields, Maps/source links and attribution metadata.
Example
MCP arguments:
{
"query": "coffee near Gare de Lyon, Paris",
"openNow": true,
"minRating": 4
}Equivalent CLI call:
mcp-gmap-rs call maps_search_places --args '{"query":"coffee near Gare de Lyon, Paris","openNow":true,"minRating":4}'maps_search_nearby
Find places around an address or exact coordinate pair, filtered by type, rating, and opening status.
Find places inside a bounded radius around a resolved center. Unlike Text Search, this uses a hard circular location restriction.
CLI command: search-nearby. Google access: Places accepts API key or OAuth. Address/landmark centers also need an API key for Geocoding resolution.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
center / --center | object | Yes | — | Center input and the indicator describing how to interpret it. |
center.isCoordinates | boolean | No | false | Treat value as exact coordinates without geocoding. |
center.value | string; at least 1 character(s) | When parent is supplied | — | Address/landmark, or a latitude,longitude string when isCoordinates is true. |
keyword / --keyword | string; at least 1 character(s) | No | No type filter | A Google place type passed as includedTypes, such as cafe; not an arbitrary text keyword. |
minRating / --min-rating | number; 0.0–5.0 | No | No rating filter | Minimum rating applied locally to the returned places. |
openNow / --open-now | boolean | No | false | Keep only results whose currentOpeningHours.openNow is true. |
radius / --radius | number; 0.1–50000.0 | No | 1000 | Search radius in metres. |
Behavior and restrictions
- When filtering, missing opening status does not count as open and missing rating is treated as 0.
- Address centers require location resolution; coordinates avoid that extra call.
Result
An array of up to 20 selected Place objects. Local opening/rating filters can reduce the array further.
Example
MCP arguments:
{
"center": {
"value": "48.8584,2.2945",
"isCoordinates": true
},
"keyword": "cafe",
"radius": 500
}Equivalent CLI call:
mcp-gmap-rs call maps_search_nearby --args '{"center":{"value":"48.8584,2.2945","isCoordinates":true},"keyword":"cafe","radius":500}'maps_place_details
Get full place details, reviews and attribution. Optional photo URLs retain author attribution. Display source/disclosure metadata alongside content.
Expand a known place ID into selected details, reviews and optional photo URLs. Preserve author/source information and any AI disclosure text.
CLI command: place-details. Google access: API key or OAuth for the main API.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
maxPhotos / --max-photos | integer; 0–10 | No | 0 | Maximum photo-media URL lookups to perform. |
placeId / --place-id | string; at least 1 character(s) | Yes | — | Google place ID, optionally prefixed with places/. |
sessionToken / --session-token | string; at least 1 character(s) | No | No session token; Google bills outside an Autocomplete session | Same-project Autocomplete (New) session token. Reuse the prediction token in this concluding request; create a fresh token for the next session. |
Behavior and restrictions
- Each selected photo can make an additional request; zero photos avoids those calls.
- The tool uses a fixed details field mask, not every possible Google Place field. Unavailable fields may be absent.
Result
A native Google Place object for the requested field mask. When photos are requested, photoUrls carries media URLs plus photo-author attribution and source links.
Example
MCP arguments:
{
"placeId": "ChIJLU7jZClu5kcR4PcOOO6p3I0",
"maxPhotos": 1
}Equivalent CLI call:
mcp-gmap-rs call maps_place_details --args '{"placeId":"ChIJLU7jZClu5kcR4PcOOO6p3I0","maxPhotos":1}'maps_directions
Get directions, route geometry, navigation instructions and travel duration.
Compute a route between two endpoints and expose both selected Google route data and normalized totals.
CLI command: directions. Google access: Routes/Places accept API key or OAuth. Named-location resolution also needs an API key for Geocoding; exact coordinate strings avoid that lookup.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
arrival_time / --arrival-time | string; at least 1 character(s) | No | Not supplied | Desired arrival as RFC 3339 with timezone; transit mode only. |
avoid_highways / --avoid-highways | boolean | No | false | Avoid highways; true is supported only for driving. |
avoid_tolls / --avoid-tolls | boolean | No | false | Avoid toll roads; true is supported only for driving. |
departure_time / --departure-time | string; at least 1 character(s) | No | Not supplied | Departure instant as RFC 3339 including Z or an explicit UTC offset. |
destination / --destination | string; at least 1 character(s) | Yes | — | Destination address/landmark or exact latitude,longitude string. |
mode / --mode | string; values: driving, walking, bicycling, transit | No | driving | Travel mode. Driving uses traffic-aware routing. |
origin / --origin | string; at least 1 character(s) | Yes | — | Origin address/landmark or exact latitude,longitude string. |
polylineQuality / --polyline-quality | string; values: OVERVIEW, HIGH_QUALITY | No | HIGH_QUALITY when trafficSegments=true; otherwise Google defaults to OVERVIEW | Geometry quality: OVERVIEW or HIGH_QUALITY. An explicit choice always wins, including OVERVIEW together with trafficSegments=true. Controls point density independently of traffic calculations. |
trafficSegments / --traffic-segments | boolean | No | false | Boolean opt-in for driving only. Requests TRAFFIC_ON_POLYLINE with ENCODED_POLYLINE geometry; defaults to HIGH_QUALITY unless polylineQuality is explicit. Traffic on polylines triggers the higher-priced Compute Routes Enterprise SKU; leave false unless segment detail is needed. |
Behavior and restrictions
- departure_time and arrival_time cannot both be supplied. arrival_time is accepted only for transit.
- Avoidance flags require driving. Google applies additional travel-mode/time/region restrictions.
- No available route is an explicit error.
- With trafficSegments=true, Routes supplies NORMAL, SLOW or TRAFFIC_JAM intervals. Normalized route and leg segments use the corresponding route or leg polyline, with independent point indices. Google intervals are [start,end); each segment geometry retains the shared end boundary vertex to cover the final edge. Missing or invalid coverage is reported explicitly rather than invented as normal traffic.
- segmentMetadata.retrievedAt is the local response-fetch time, not a provider traffic observation time; trafficObservedAt is null because Routes does not return it. roadCategory and speedLimit are null because this Routes response supplies neither. No implicit Roads API calls or client-side duration multipliers are applied; durations remain Google predictions.
- Traffic segments are optional and driving-only in this executable. This requests traffic-aware polylines and triggers Compute Routes Enterprise billing. Traffic interval contract; current SKU triggers.
- polylineQuality selects Google’s geometry detail: HIGH_QUALITY uses more points, increases response size and can increase latency. Explicit OVERVIEW remains valid with trafficSegments=true. If omitted, traffic segments default to HIGH_QUALITY; otherwise Google uses OVERVIEW. The executable does not synthesize or interpolate additional detail. Geometry quality is independent of extraComputations: setting HIGH_QUALITY alone does not enable TRAFFIC_ON_POLYLINE. Official PolylineQuality definition.
Primary sources: https://developers.google.com/maps/billing-and-pricing/sku-details/routes, https://developers.google.com/maps/documentation/routes/reference/rest/v2/TopLevel/computeRoutes#PolylineQuality, https://developers.google.com/maps/documentation/routes/traffic_on_polylines
Result
An object containing routes, summary, total_distance (value in metres), total_duration (value in seconds) and optional optimization indices. Route entries contain selected legs, steps, polyline and warnings. When trafficSegments is true, route and leg results additionally include normalized segments and segmentMetadata.
Example
MCP arguments:
{
"origin": "48.8584,2.2945",
"destination": "48.8606,2.3376",
"mode": "walking"
}Equivalent CLI call:
mcp-gmap-rs call maps_directions --args '{"origin":"48.8584,2.2945","destination":"48.8606,2.3376","mode":"walking"}'maps_distance_matrix
Compute travel distances and durations for multiple origins and destinations.
Compare travel distance and duration for every origin/destination pair. Check individual cells and errors rather than treating a successful response as complete.
CLI command: distance-matrix. Google access: API key or OAuth for the main API.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
avoid_highways / --avoid-highways | boolean | No | false | Avoid highways; true is supported only for driving. |
avoid_tolls / --avoid-tolls | boolean | No | false | Avoid toll roads; true is supported only for driving. |
departure_time / --departure-time | string; at least 1 character(s) | No | Not supplied | Departure instant as RFC 3339 including Z or an explicit UTC offset. |
destinations / --destinations | array of string; 1–50 items; each item at least 1 character(s) | Yes | — | Destination strings: addresses or exact latitude,longitude pairs. |
mode / --mode | string; values: driving, walking, bicycling, transit | No | driving | Travel mode. Driving uses traffic-aware routing. |
origins / --origins | array of string; 1–50 items; each item at least 1 character(s) | Yes | — | Origin strings: addresses or exact latitude,longitude pairs. |
Behavior and restrictions
- At most 625 origin × destination pairs; transit is limited to 100 pairs.
- At most 50 non-coordinate origin/destination strings in total. Per-array schema limits do not override these combined limits.
- Toll/highway avoidance applies only to driving. This tool does not expose arrival_time.
- A single matrix HTTP request may bill multiple elements.
Result
An object with origin_addresses, destination_addresses, row-major distances and durations, and an errors array. Successful cell values are metres/seconds; failed or missing cells remain null.
Example
MCP arguments:
{
"origins": [
"48.8584,2.2945"
],
"destinations": [
"48.8606,2.3376",
"48.8530,2.3499"
],
"mode": "walking"
}Equivalent CLI call:
mcp-gmap-rs call maps_distance_matrix --args '{"origins":["48.8584,2.2945"],"destinations":["48.8606,2.3376","48.8530,2.3499"],"mode":"walking"}'maps_elevation
Get elevation in meters for geographic coordinates.
Get geographic height for exact coordinate points.
CLI command: elevation. Google access: API key required in this implementation.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
locations / --locations | array of object; 1–512 items | Yes | — | Coordinate objects for which to request elevation. |
locations[].latitude | number; -90.0–90.0 | When parent is supplied | — | WGS84 latitude in decimal degrees; north is positive. |
locations[].longitude | number; -180.0–180.0 | When parent is supplied | — | WGS84 longitude in decimal degrees; east is positive. |
Behavior and restrictions
- The tool returns Google’s reported data without converting elevation units.
Result
The native Elevation results array. Entries can contain elevation in metres, location and resolution.
Example
MCP arguments:
{
"locations": [
{
"latitude": 48.8584,
"longitude": 2.2945
}
]
}Equivalent CLI call:
mcp-gmap-rs call maps_elevation --args '{"locations":[{"latitude":48.8584,"longitude":2.2945}]}'maps_timezone
Get timezone, UTC/DST offsets and local time. timestamp is Unix milliseconds.
Resolve timezone identity and UTC/DST offsets at an instant, then derive a local timestamp.
CLI command: timezone. Google access: API key required in this implementation.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
latitude / --latitude | number; -90.0–90.0 | Yes | — | WGS84 latitude in decimal degrees; north is positive. |
longitude / --longitude | number; -180.0–180.0 | Yes | — | WGS84 longitude in decimal degrees; east is positive. |
timestamp / --timestamp | integer; 0–253402300799999 | No | Current UTC time in milliseconds | Unix epoch milliseconds, not seconds. |
Behavior and restrictions
- The request converts milliseconds to whole seconds; sub-second precision is not preserved.
- Local time uses the returned raw and DST offsets for the requested instant.
Result
Timezone response fields such as timeZoneId, timeZoneName, rawOffset and dstOffset in seconds, plus derived localTime in RFC 3339 format.
Example
MCP arguments:
{
"latitude": 48.8584,
"longitude": 2.2945,
"timestamp": 1793448000000
}Equivalent CLI call:
mcp-gmap-rs call maps_timezone --args '{"latitude":48.8584,"longitude":2.2945,"timestamp":1793448000000}'maps_weather
Get current weather, daily forecast or hourly forecast.
Request current conditions or one page of daily/hourly forecast data for exact coordinates.
CLI command: weather. Google access: API key or OAuth for the main API.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
forecastDays / --forecast-days | integer; 1–10 | No | 5 | Requested daily forecast length; used only with forecast_daily. |
forecastHours / --forecast-hours | integer; 1–240 | No | 24 | Requested hourly forecast length; used only with forecast_hourly. |
latitude / --latitude | number; -90.0–90.0 | Yes | — | WGS84 latitude in decimal degrees; north is positive. |
longitude / --longitude | number; -180.0–180.0 | Yes | — | WGS84 longitude in decimal degrees; east is positive. |
type / --type | string; values: current, forecast_daily, forecast_hourly | No | current | Select current conditions, daily forecast or hourly forecast. |
Behavior and restrictions
- forecastDays is ignored for other types; forecastHours is ignored outside forecast_hourly.
- This tool does not automatically follow pagination tokens. The requested horizon may exceed the records in one response page.
- Coverage and forecast availability depend on Google.
Result
The native Weather response: current-condition fields, forecastDays, or forecastHours, depending on type. Preserve returned units, timestamps and any nextPageToken.
Example
MCP arguments:
{
"latitude": 48.8584,
"longitude": 2.2945,
"type": "forecast_daily",
"forecastDays": 3
}Equivalent CLI call:
mcp-gmap-rs call maps_weather --args '{"latitude":48.8584,"longitude":2.2945,"type":"forecast_daily","forecastDays":3}'maps_air_quality
Get air quality indices, optional pollutant concentrations and health recommendations.
Get current air-quality indices with optional pollutant concentrations and provider health recommendations.
CLI command: air-quality. Google access: API key or OAuth for the main API.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
includeHealthRecommendations / --include-health-recommendations | boolean | No | true | Request Google’s health-recommendation computation. |
includePollutants / --include-pollutants | boolean | No | false | Request pollutant concentrations. |
latitude / --latitude | number; -90.0–90.0 | Yes | — | WGS84 latitude in decimal degrees; north is positive. |
longitude / --longitude | number; -180.0–180.0 | Yes | — | WGS84 longitude in decimal degrees; east is positive. |
Behavior and restrictions
- Recommendations are provider data, not a personalized medical assessment.
- This tool exposes current conditions, not historical or forecast endpoints.
Result
The native Air Quality current-conditions response, including indices and optional healthRecommendations/pollutants when supplied by Google.
Example
MCP arguments:
{
"latitude": 48.8584,
"longitude": 2.2945,
"includePollutants": true
}Equivalent CLI call:
mcp-gmap-rs call maps_air_quality --args '{"latitude":48.8584,"longitude":2.2945,"includePollutants":true}'maps_static_map
Fetch a PNG map with markers and paths. MCP returns an inline image; CLI returns base64 JSON or writes --output.
Render a PNG map with optional markers and path specifications.
CLI command: static-map. Google access: API key required in this implementation.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
center / --center | string; at least 1 character(s) | No | Not supplied | Center as an address or latitude,longitude string. |
maptype / --maptype | string; values: roadmap, satellite, terrain, hybrid | No | roadmap | Base map style. |
markers / --markers | array of string; 1–100 items; each item at least 1 character(s) | No | No markers | Repeated Google Static Maps marker specifications, e.g. color:red|48.8584,2.2945. |
path / --path | array of string; 1–100 items; each item at least 1 character(s) | No | No paths | Repeated Google Static Maps path specifications, e.g. color:blue|48.8584,2.2945|48.8606,2.3376. |
size / --size | string; pattern: ^[1-9][0-9]{0,2}x[1-9][0-9]{0,2}$ | No | 600x400 | Pixel dimensions WIDTHxHEIGHT; runtime limits each dimension to 1–640. |
zoom / --zoom | integer; 0–21 | No | Omitted; Google chooses or infers it | Explicit zoom level. |
Behavior and restrictions
- At least one of center, markers or path is required.
- The complete request URL must fit within 16,384 characters. The schema’s size pattern is broader than the runtime’s 640-pixel bound.
- Marker/path styling follows Google Static Maps syntax. Google attribution remains in the rendered image.
Result
MCP returns inline image/png content. CLI returns {mimeType,base64} JSON, or raw PNG bytes when --output is supplied.
Example
MCP arguments:
{
"center": "48.8584,2.2945",
"zoom": 14,
"size": "320x240",
"markers": [
"color:red|48.8584,2.2945"
]
}Equivalent CLI call:
mcp-gmap-rs call maps_static_map --args '{"center":"48.8584,2.2945","zoom":14,"size":"320x240","markers":["color:red|48.8584,2.2945"]}'maps_batch_geocode
Geocode up to 50 addresses with per-address success or error and bounded concurrency.
Geocode a bounded list of addresses while preserving input order and each item’s success or failure.
CLI command: batch-geocode. Google access: API key required in this implementation.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
addresses / --addresses | array of string; 1–50 items; each item at least 1 character(s) | Yes | — | Address/landmark strings to resolve. |
Behavior and restrictions
- Uses bounded concurrency with at most five Google requests active per process.
- Item failures do not force a nonzero CLI exit status; inspect success/error on every row.
Result
An array in input order. Each row has address, success and either data (the geocode object) or error.
Example
MCP arguments:
{
"addresses": [
"Paris, France",
"London, UK"
]
}Equivalent CLI call:
mcp-gmap-rs call maps_batch_geocode --args '{"addresses":["Paris, France","London, UK"]}'maps_explore_area
Resolve a location and explore categories with details for top results. Use specific landmarks for trip planning.
Resolve one location, search selected categories around it, and expand only the leading results in each category.
CLI command: explore-area. Google access: Places accepts API key or OAuth. Named locations also need an API key for Geocoding.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
location / --location | string; at least 1 character(s) | Yes | — | Address/landmark or exact latitude,longitude string. |
radius / --radius | number; 0.1–50000.0 | No | 1000 | Category-search radius in metres. |
topN / --top-n | integer; 1–20 | No | 3 | Maximum places per category to expand with details. |
types / --types | array of string; 1–10 items; each item at least 1 character(s) | No | restaurant, cafe, tourist_attraction | Google place categories to search. |
Behavior and restrictions
- Each category searches up to 20 places; count is the returned page count, not an aggregate inventory.
- Category and detail failures remain visible within successful top-level output.
- This composite makes multiple Google requests; limit categories and topN to the task.
Result
An object with resolved location, radius and categories. Each category has type/count/top or an error; expanded places can contain details_error.
Example
MCP arguments:
{
"location": "48.8584,2.2945",
"types": [
"cafe"
],
"radius": 500,
"topN": 1
}Equivalent CLI call:
mcp-gmap-rs call maps_explore_area --args '{"location":"48.8584,2.2945","types":["cafe"],"radius":500,"topN":1}'maps_plan_route
Plan a route through 2-27 stops. Optimize 2-25 intermediate stops, except transit. Exact coordinates are preserved.
Plan a single route through ordered stops, optionally asking Google to reorder intermediate stops while keeping the endpoints fixed.
CLI command: plan-route. Google access: Routes/Places accept API key or OAuth. Named-location resolution also needs an API key for Geocoding; exact coordinate strings avoid that lookup.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
avoid_highways / --avoid-highways | boolean | No | false | Avoid highways; true is supported only for driving. |
avoid_tolls / --avoid-tolls | boolean | No | false | Avoid toll roads; true is supported only for driving. |
departure_time / --departure-time | string; at least 1 character(s) | No | Not supplied | Departure instant as RFC 3339 including Z or an explicit UTC offset. |
mode / --mode | string; values: driving, walking, bicycling, transit | No | driving | Travel mode. Driving uses traffic-aware routing. |
optimize / --optimize | boolean | No | true, subject to those conditions | Request intermediate-stop optimization when more than three total stops and mode is not transit. |
polylineQuality / --polyline-quality | string; values: OVERVIEW, HIGH_QUALITY | No | HIGH_QUALITY when trafficSegments=true; otherwise Google defaults to OVERVIEW | Geometry quality: OVERVIEW or HIGH_QUALITY. An explicit choice always wins, including OVERVIEW together with trafficSegments=true. Controls point density independently of traffic calculations. |
stops / --stops | array of string; 2–27 items; each item at least 1 character(s) | Yes | — | Ordered addresses/landmarks or exact latitude,longitude strings; first/last stay endpoints. |
trafficSegments / --traffic-segments | boolean | No | false | Boolean opt-in for driving only. Requests TRAFFIC_ON_POLYLINE with ENCODED_POLYLINE geometry; defaults to HIGH_QUALITY unless polylineQuality is explicit. Traffic on polylines triggers the higher-priced Compute Routes Enterprise SKU; leave false unless segment detail is needed. |
Behavior and restrictions
- Transit supports only two endpoints and no intermediate stops.
- Optimization takes effect only for four or more total stops (at least two intermediate stops).
- This optimizes stop order for one route, not vehicle/task assignment across a fleet.
- With trafficSegments=true, Routes supplies NORMAL, SLOW or TRAFFIC_JAM intervals. Normalized route and leg segments use the corresponding route or leg polyline, with independent point indices. Google intervals are [start,end); each segment geometry retains the shared end boundary vertex to cover the final edge. Missing or invalid coverage is reported explicitly rather than invented as normal traffic.
- segmentMetadata.retrievedAt is the local response-fetch time, not a provider traffic observation time; trafficObservedAt is null because Routes does not return it. roadCategory and speedLimit are null because this Routes response supplies neither. No implicit Roads API calls or client-side duration multipliers are applied; durations remain Google predictions.
- Traffic segments are optional and driving-only in this executable. This requests traffic-aware polylines and triggers Compute Routes Enterprise billing. Traffic interval contract; current SKU triggers.
- polylineQuality selects Google’s geometry detail: HIGH_QUALITY uses more points, increases response size and can increase latency. Explicit OVERVIEW remains valid with trafficSegments=true. If omitted, traffic segments default to HIGH_QUALITY; otherwise Google uses OVERVIEW. The executable does not synthesize or interpolate additional detail. Geometry quality is independent of extraComputations: setting HIGH_QUALITY alone does not enable TRAFFIC_ON_POLYLINE. Official PolylineQuality definition.
Primary sources: https://developers.google.com/maps/billing-and-pricing/sku-details/routes, https://developers.google.com/maps/documentation/routes/reference/rest/v2/TopLevel/computeRoutes#PolylineQuality, https://developers.google.com/maps/documentation/routes/traffic_on_polylines
Result
An object with mode, effective optimized, ordered resolved stops, display legs, total_distance, total_duration, polyline and warnings. Leg durationSeconds is numeric seconds. When trafficSegments is true, route and leg results additionally include normalized segments and segmentMetadata.
Example
MCP arguments:
{
"stops": [
"48.8584,2.2945",
"48.8606,2.3376",
"48.8530,2.3499"
],
"mode": "walking",
"optimize": false
}Equivalent CLI call:
mcp-gmap-rs call maps_plan_route --args '{"stops":["48.8584,2.2945","48.8606,2.3376","48.8530,2.3499"],"mode":"walking","optimize":false}'maps_compare_places
Search and compare places with detailed information and optional driving distance from userLocation.
Find and enrich a short list of places, optionally comparing driving distance from exact user coordinates.
CLI command: compare-places. Google access: Places and optional Routes accept API key or OAuth.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
limit / --limit | integer; 1–20 | No | 5 | Maximum matching places to enrich. |
query / --query | string; at least 1 character(s) | Yes | — | Places text-search query. |
userLocation / --user-location | object | No | No distance/time comparison | Exact user coordinates for optional distance comparison. |
userLocation.latitude | number; -90.0–90.0 | When parent is supplied | — | WGS84 latitude in decimal degrees; north is positive. |
userLocation.longitude | number; -180.0–180.0 | When parent is supplied | — | WGS84 longitude in decimal degrees; east is positive. |
Behavior and restrictions
- Comparison travel is driving; this tool has no configurable travel-mode parameter.
- Details and distance failures are preserved instead of dropping otherwise usable places.
- Only the requested shortlist is enriched.
Result
An object with places and optional distance_error. Places can include details/details_error, distance, drive_time and per-place distance_errors.
Example
MCP arguments:
{
"query": "cafes near Eiffel Tower, Paris",
"userLocation": {
"latitude": 48.8584,
"longitude": 2.2945
},
"limit": 3
}Equivalent CLI call:
mcp-gmap-rs call maps_compare_places --args '{"query":"cafes near Eiffel Tower, Paris","userLocation":{"latitude":48.8584,"longitude":2.2945},"limit":3}'maps_search_along_route
Find places along a route using its encoded polyline.
Compute a route and search Places using its encoded polyline, rather than approximating the journey with one circular search.
CLI command: search-along-route. Google access: Routes/Places accept API key or OAuth. Named-location resolution also needs an API key for Geocoding; exact coordinate strings avoid that lookup.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
destination / --destination | string; at least 1 character(s) | Yes | — | Route destination address/landmark or exact latitude,longitude string. |
maxResults / --max-results | integer; 1–20 | No | 5 | Maximum Places results requested in the response page. |
mode / --mode | string; values: driving, walking, bicycling, transit | No | walking | Travel mode for the route used by the search. |
origin / --origin | string; at least 1 character(s) | Yes | — | Route origin address/landmark or exact latitude,longitude string. |
textQuery / --text-query | string; at least 1 character(s) | Yes | — | Places query for stops along the route, such as cafes or charging stations. |
Behavior and restrictions
- The default mode is walking, unlike directions, matrix and plan-route, which default to driving.
- No automatic pagination or Place Details expansion is performed.
- This tool does not expose the departure/arrival or avoidance parameters of directions.
Result
An object with places, optional routingSummaries, and the computed route including selected Google route data and normalized totals.
Example
MCP arguments:
{
"textQuery": "cafes",
"origin": "48.8584,2.2945",
"destination": "48.8606,2.3376",
"mode": "walking",
"maxResults": 3
}Equivalent CLI call:
mcp-gmap-rs call maps_search_along_route --args '{"textQuery":"cafes","origin":"48.8584,2.2945","destination":"48.8606,2.3376","mode":"walking","maxResults":3}'maps_local_rank_tracker
Track search rank across a geographic grid for 1-3 keywords; returns ARP, ATRP, SoLV and per-point errors.
Measure a target place’s appearance within the first 20 Text Search results at each point of a geographic grid.
CLI command: local-rank-tracker. Google access: API key or OAuth for the main API.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
center / --center | object | Yes | — | Exact center of the scan grid. |
center.latitude | number; -90.0–90.0 | When parent is supplied | — | WGS84 latitude in decimal degrees; north is positive. |
center.longitude | number; -180.0–180.0 | When parent is supplied | — | WGS84 longitude in decimal degrees; east is positive. |
gridSize / --grid-size | integer; 3–7 | No | 3 | Number of rows and columns; all integer values 3–7 are accepted. |
gridSpacing / --grid-spacing | number; 100.0–10000.0 | No | 1000 | Distance in metres between neighboring grid points. |
keyword / --keyword | string; at least 1 character(s) | No | Not supplied | Single search keyword; use keyword or keywords. |
keywords / --keywords | array of string; 1–3 items; each item at least 1 character(s) | No | Not supplied | One to three search keywords; takes precedence if both keyword forms are supplied. |
placeId / --place-id | string; at least 1 character(s) | Yes | — | Target place ID, optionally prefixed with places/. |
Behavior and restrictions
- At least one of keyword or keywords is required; individual schema rows do not express that alternative.
- Search requests scale as keyword count × gridSize² (up to 147 before retries).
- Failed points are excluded from rank metrics, not treated as valid misses. Metrics can be null when no usable observations exist.
- A search rank is not the target’s user-review rating. Results are samples from biased text searches, not guarantees of a user’s Google Maps ranking.
Result
An object with target, grid_size, grid_spacing_m and per-keyword metrics/grid. ARP averages found ranks; ATRP uses rank 21 for successful queries where the target was absent; SoLV is the percentage of successful points ranked in the top 3. failed_points and found_in expose coverage.
Example
MCP arguments:
{
"keyword": "cafe",
"placeId": "ChIJLU7jZClu5kcR4PcOOO6p3I0",
"center": {
"latitude": 48.8584,
"longitude": 2.2945
},
"gridSize": 3,
"gridSpacing": 500
}Equivalent CLI call:
mcp-gmap-rs call maps_local_rank_tracker --args '{"keyword":"cafe","placeId":"ChIJLU7jZClu5kcR4PcOOO6p3I0","center":{"latitude":48.8584,"longitude":2.2945},"gridSize":3,"gridSpacing":500}'maps_speed_limits
Get posted automobile speed limits for up to 100 GPS points or road-segment place IDs. Restricted Google Asset Tracking license/access is required; enabling Roads alone does not grant access. Each returned limit can incur a separate charge. Data is not real-time or guaranteed accurate.
Get posted automobile speed limits for road segments using a GPS path or IDs returned by Roads snapping/nearest-road calls. This restricted Google feature requires Asset Tracking access; enabling the Roads API alone is insufficient.
CLI command: speed-limits. Google access: API key required in this implementation, including when OAuth mode is selected. Roads Speed Limits entitlement is separate from credentials.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
path / --path | array of object; 1–100 items | No | Not supplied | One to 100 GPS coordinates; mutually exclusive with roadPlaceIds. Google snaps this path before looking up segment limits. |
path[].latitude | number; -90.0–90.0 | When parent is supplied | Required for every path point | WGS84 latitude in decimal degrees, from -90 to 90. |
path[].longitude | number; -180.0–180.0 | When parent is supplied | Required for every path point | WGS84 longitude in decimal degrees, from -180 to 180. |
roadPlaceIds / --road-place-ids | array of string; 1–100 items; each item at least 1 character(s) | No | Not supplied | One to 100 road-segment place IDs from maps_snap_to_roads or maps_nearest_roads; ordinary business/place IDs may have no speed-limit data. Mutually exclusive with path. |
units / --units | string; values: KPH, MPH | No | KPH | Return kilometers per hour (KPH) or miles per hour (MPH). |
Behavior and restrictions
- Restricted access: Google documents an Asset Tracking license requirement. Transitioned Premium Plan projects with Asset Tracking capabilities may retain access. An enabled API or ordinary billing account does not establish entitlement. https://developers.google.com/maps/documentation/roads/speed-limits
- Each returned speedLimits entry triggers the Roads Speed Limits SKU; one HTTP request can incur multiple billable entries. Request the smallest useful batch.
- For variable limits Google returns the maximum automobile limit. Data is not real-time and can be missing, estimated, inaccurate or outdated; consult posted signs and applicable safety requirements.
- A 403 retains the sanitized Google reason and adds an access hint. API enablement, key restrictions and permissions can also cause rejection; the executable does not label every 403 a license failure.
Primary sources: https://developers.google.com/maps/documentation/roads/speed-limits
Result
The complete native Roads response, including speedLimits entries (placeId, speedLimit, units), optional snappedPoints for path requests, warnings and other Google metadata.
Example
MCP arguments:
{
"roadPlaceIds": [
"ChIJs5ydyTiuEmsR0fRSlU0C7k0"
],
"units": "KPH"
}Equivalent CLI call:
mcp-gmap-rs call maps_speed_limits --args '{"roadPlaceIds":["ChIJs5ydyTiuEmsR0fRSlU0C7k0"],"units":"KPH"}'maps_autocomplete
Get Places API (New) place and optional query predictions, with session tokens, language and geographic filters. Returns the full native Google JSON. Session billing requires a fresh token and a qualifying concluding Details or Address Validation request in the same project.
Get Places API (New) predictions while a user types. Supports place and query predictions, geographic bias/restriction, regional/type filters, cursor position and caller-managed billing session tokens.
CLI command: autocomplete. Google access: API key or OAuth (Places/cloud-platform scope) for the main API.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
includeFutureOpeningBusinesses / --include-future-opening-businesses | boolean | No | false | Include businesses that will open in the future. |
includePureServiceAreaBusinesses / --include-pure-service-area-businesses | boolean | No | false | Include businesses that visit/deliver to customers and have no public business location. |
includeQueryPredictions / --include-query-predictions | boolean | No | false | Include query predictions as well as place predictions. |
includedPrimaryTypes / --included-primary-types | array of string; 0–5 items; each item at least 1 character(s) | No | All types | Up to five primary place types. The special (cities) or (regions) collection must be the sole entry. |
includedRegionCodes / --included-region-codes | array of string; 0–15 items | No | All regions | Up to 15 two-letter CLDR region codes; intersected with locationRestriction when both are supplied. An empty array does not restrict results. |
input / --input | string; at least 1 character(s) | Yes | — | Non-empty query text, including partial place names or addresses. |
inputOffset / --input-offset | integer; 0–4294967295 | No | End of input | Zero-based Unicode character cursor offset; must not exceed the number of characters in input. |
languageCode / --language-code | string; at least 1 character(s) | No | Configured GOOGLE_MAPS_LANGUAGE | Preferred IETF BCP-47 response language. Mixed-language predictions may still occur. |
locationBias / --location-bias | object | No | Google IP bias if neither geographic option is supplied | Prefer results around exactly one circle or rectangle; results may fall outside it. Cannot coexist with locationRestriction. |
locationBias.circle | object | No | Not supplied | Circular area; mutually exclusive with rectangle. |
locationBias.circle.center | object | When parent is supplied | Required with circle | WGS84 center coordinate. |
locationBias.circle.center.latitude | number; -90.0–90.0 | When parent is supplied | Required with center | Center latitude in decimal degrees. |
locationBias.circle.center.longitude | number; -180.0–180.0 | When parent is supplied | Required with center | Center longitude in decimal degrees. |
locationBias.circle.radius | number; 0.0–50000.0 | When parent is supplied | Required with circle | Radius in meters, at most 50,000; must be positive for locationRestriction. |
locationBias.rectangle | object | No | Not supplied | Closed latitude/longitude viewport; mutually exclusive with circle. Longitude bounds may cross the antimeridian. |
locationBias.rectangle.high | object | When parent is supplied | Required with rectangle | Northeast bound. |
locationBias.rectangle.high.latitude | number; -90.0–90.0 | When parent is supplied | Required with bound | WGS84 latitude in decimal degrees; low must not exceed high. |
locationBias.rectangle.high.longitude | number; -180.0–180.0 | When parent is supplied | Required with bound | WGS84 longitude in decimal degrees; low greater than high indicates antimeridian crossing. |
locationBias.rectangle.low | object | When parent is supplied | Required with rectangle | Southwest bound. |
locationBias.rectangle.low.latitude | number; -90.0–90.0 | When parent is supplied | Required with bound | WGS84 latitude in decimal degrees; low must not exceed high. |
locationBias.rectangle.low.longitude | number; -180.0–180.0 | When parent is supplied | Required with bound | WGS84 longitude in decimal degrees; low greater than high indicates antimeridian crossing. |
locationRestriction / --location-restriction | object | No | Google IP bias if neither geographic option is supplied | Restrict results to exactly one circle or rectangle. Cannot coexist with locationBias. |
locationRestriction.circle | object | No | Not supplied | Circular area; mutually exclusive with rectangle. |
locationRestriction.circle.center | object | When parent is supplied | Required with circle | WGS84 center coordinate. |
locationRestriction.circle.center.latitude | number; -90.0–90.0 | When parent is supplied | Required with center | Center latitude in decimal degrees. |
locationRestriction.circle.center.longitude | number; -180.0–180.0 | When parent is supplied | Required with center | Center longitude in decimal degrees. |
locationRestriction.circle.radius | number; 0.0–50000.0 | When parent is supplied | Required with circle | Radius in meters, at most 50,000; must be positive for locationRestriction. |
locationRestriction.rectangle | object | No | Not supplied | Closed latitude/longitude viewport; mutually exclusive with circle. Longitude bounds may cross the antimeridian. |
locationRestriction.rectangle.high | object | When parent is supplied | Required with rectangle | Northeast bound. |
locationRestriction.rectangle.high.latitude | number; -90.0–90.0 | When parent is supplied | Required with bound | WGS84 latitude in decimal degrees; low must not exceed high. |
locationRestriction.rectangle.high.longitude | number; -180.0–180.0 | When parent is supplied | Required with bound | WGS84 longitude in decimal degrees; low greater than high indicates antimeridian crossing. |
locationRestriction.rectangle.low | object | When parent is supplied | Required with rectangle | Southwest bound. |
locationRestriction.rectangle.low.latitude | number; -90.0–90.0 | When parent is supplied | Required with bound | WGS84 latitude in decimal degrees; low must not exceed high. |
locationRestriction.rectangle.low.longitude | number; -180.0–180.0 | When parent is supplied | Required with bound | WGS84 longitude in decimal degrees; low greater than high indicates antimeridian crossing. |
origin / --origin | object | No | Distance omitted | Reference coordinate for returned geodesic distanceMeters. |
origin.latitude | number; -90.0–90.0 | When parent is supplied | Required with origin | WGS84 latitude in decimal degrees. |
origin.longitude | number; -180.0–180.0 | When parent is supplied | Required with origin | WGS84 longitude in decimal degrees. |
regionCode / --region-code | string; pattern: ^[A-Za-z]{2}$ | No | Not supplied | Two-letter CLDR region used for formatting/ranking; does not restrict results to that region. |
sessionToken / --session-token | string; at least 1 character(s); pattern: ^[A-Za-z0-9_-]+$ | No | No session grouping; per-request billing | Caller-generated URL-safe token of at most 36 ASCII characters; a fresh UUID v4 is recommended for each session. Forward the same token to the concluding Place Details or Address Validation call. |
Behavior and restrictions
- Official native request fields and supported place types: https://developers.google.com/maps/documentation/places/web-service/reference/rest/v1/places/autocomplete
- Tokens are caller-managed: the executable does not create or conclude sessions automatically. All requests in a session must use credentials from the same Google Cloud project; terminate with a qualifying Place Details or Address Validation request and use a fresh token next time. Missing/reused tokens can lead to per-request billing.
- Circle radii are at most 50,000m; restriction circles require a positive radius. Rectangle latitude bounds must be ordered; antimeridian-crossing longitude ranges are supported.
- Retain any Google Maps/provider attribution when displaying results. Regional/EEA service terms and field availability may differ.
Primary sources: https://developers.google.com/maps/documentation/places/web-service/reference/rest/v1/places/autocomplete
Result
Complete native suggestions response, including placePrediction/queryPrediction, text match offsets, structured formatting, place IDs, optional distanceMeters and any response metadata. No field mask removes content.
Example
MCP arguments:
{
"input": "coffee near Paris",
"sessionToken": "550e8400-e29b-41d4-a716-446655440000",
"includedRegionCodes": [
"FR"
],
"locationBias": {
"circle": {
"center": {
"latitude": 48.8566,
"longitude": 2.3522
},
"radius": 5000
}
},
"includeQueryPredictions": true
}Equivalent CLI call:
mcp-gmap-rs call maps_autocomplete --args '{"input":"coffee near Paris","sessionToken":"550e8400-e29b-41d4-a716-446655440000","includedRegionCodes":["FR"],"locationBias":{"circle":{"center":{"latitude":48.8566,"longitude":2.3522},"radius":5000}},"includeQueryPredictions":true}'maps_geolocate
Estimate device location and an accuracy radius from a native Google Geolocation body containing cell towers or WiFi access points. Requires an API key. IP fallback identifies this server's egress location, not the user; set body.considerIp=false to disable fallback.
Estimate device location from observed cellular towers or WiFi access points using the complete native Google Geolocation JSON body.
CLI command: geolocate. Google access: API key required in this implementation. The documented www.googleapis.com endpoint receives the key as a query parameter even for POST.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
body / --body | object | Yes | — | Native Google request object. Supports homeMobileCountryCode, homeMobileNetworkCode, radioType (gsm/cdma/wcdma/lte/nr), carrier, considerIp, cellTowers and wifiAccessPoints, including radio-specific cellId/newRadioCellId and signal fields. See the linked Google request reference for the complete nested schema. An empty object permits server-IP fallback. |
Behavior and restrictions
- Complete radio and WiFi field descriptions, ranges and examples: https://developers.google.com/maps/documentation/geolocation/requests-geolocation
- Google defaults considerIp to true. With no usable radio observations, fallback locates the executable/server egress IP, not the person operating the agent. Set body.considerIp=false to prohibit fallback.
- WiFi positioning requires at least two physically distinct stationary access points. Google excludes locally administered/reserved MAC address ranges; mobile hotspots and invalid observations may not yield a result.
- The body is intentionally extensible for native radio payloads; validation of its detailed protocol-specific fields is delegated to Google. The outer tool schema rejects unknown wrapper parameters.
- A location estimate is approximate and can fail with NOT_FOUND; inspect accuracy before using the coordinates.
Primary sources: https://developers.google.com/maps/documentation/geolocation/requests-geolocation
Result
Google location.lat/location.lng and accuracy (uncertainty radius in meters), plus any additional native response fields.
Example
MCP arguments:
{
"body": {
"considerIp": false,
"wifiAccessPoints": [
{
"macAddress": "00:25:9c:cf:1c:ac",
"signalStrength": -43
},
{
"macAddress": "00:25:9c:cf:1c:ad",
"signalStrength": -55
}
]
}
}Equivalent CLI call:
mcp-gmap-rs call maps_geolocate --args '{"body":{"considerIp":false,"wifiAccessPoints":[{"macAddress":"00:25:9c:cf:1c:ac","signalStrength":-43},{"macAddress":"00:25:9c:cf:1c:ad","signalStrength":-55}]}}'maps_solar
Retrieve Solar building insights, regional data layers, or a GeoTIFF asset by ID. Coverage, imagery quality and EEA terms vary; expanded-coverage experiments are pre-GA. Data-layer URLs are temporary and returned without credentials. GeoTIFF binary size is bounded by the executable's response limit.
Use all three principal Solar methods: nearby building insights, regional raster data-layer metadata, and bounded GeoTIFF downloads by asset ID.
CLI command: solar. Google access: API key or OAuth (cloud-platform scope). Service-account callers also need API enablement and quota-project serviceusage.services.use.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
additionalInsights / --additional-insights | array of string; 0–1 items; values: DETECTED_ARRAYS | No | No additional insights | Optional DETECTED_ARRAYS for building_insights to retrieve detected rooftop solar arrays. |
exactQualityRequired / --exact-quality-required | boolean | No | false | Require the exact selected imagery quality instead of accepting higher quality. Valid for insights/data layers. |
experiments / --experiments | array of string; 0–1 items; values: EXPANDED_COVERAGE | No | No experiments | Optional EXPANDED_COVERAGE experiment for insights/data layers; Google classifies these requests as pre-GA. |
id / --id | string; at least 1 character(s) | No | — for geo_tiff | Opaque asset ID taken from the id query parameter of a returned Solar data-layer URL. Required only for geo_tiff; pass an ID, not a URL. |
location / --location | object | No | Not supplied | Coordinate of the building search or regional data-layer center; required for building_insights and data_layers. |
location.latitude | number; -90.0–90.0 | When parent is supplied | Required with location | WGS84 latitude in decimal degrees. |
location.longitude | number; -180.0–180.0 | When parent is supplied | Required with location | WGS84 longitude in decimal degrees. |
operation / --operation | string; values: building_insights, data_layers, geo_tiff | Yes | — | building_insights, data_layers or geo_tiff. Each operation accepts only its relevant parameters. |
pixelSizeMeters / --pixel-size-meters | number; values: 0.1, 0.25, 0.5, 1.0 | No | 0.1 | Minimum data-layer pixel scale, one of 0.1, 0.25, 0.5 or 1.0 meters. Individual layers may have coarser native resolution. |
radiusMeters / --radius-meters | number; unbounded–1000 | No | Not supplied | Positive regional radius, required for data_layers. At most 1,000m; values over 100 must be <= pixelSizeMeters × 1,000, and values over 175 require a view without monthly flux or hourly shade. |
requiredQuality / --required-quality | string; values: HIGH, MEDIUM, BASE | No | HIGH (Google default) | Minimum imagery quality HIGH, MEDIUM or BASE for insights/data layers. BASE uses enhanced satellite imagery; geographic availability varies. |
view / --view | string; values: DSM_LAYER, IMAGERY_LAYERS, IMAGERY_AND_ANNUAL_FLUX_LAYERS, IMAGERY_AND_ALL_FLUX_LAYERS, FULL_LAYERS | No | FULL_LAYERS (Google default) | Data-layer subset: DSM_LAYER, IMAGERY_LAYERS, IMAGERY_AND_ANNUAL_FLUX_LAYERS, IMAGERY_AND_ALL_FLUX_LAYERS or FULL_LAYERS. |
Behavior and restrictions
- Method references: https://developers.google.com/maps/documentation/solar/reference/rest/v1/buildingInsights/findClosest ; https://developers.google.com/maps/documentation/solar/reference/rest/v1/dataLayers/get ; https://developers.google.com/maps/documentation/solar/reference/rest/v1/geoTiff/get
- Coverage and imagery quality vary by country/location. Building search can return NOT_FOUND when there is no building within approximately 50m. https://developers.google.com/maps/documentation/solar/coverage
- Data-layer URLs are temporary and still require authenticated access. Copy only their id into operation geo_tiff; the executable always downloads from solar.googleapis.com/v1/geoTiff:get and never follows arbitrary URLs.
- GeoTIFF responses remain subject to the executable response-size limit (16 MiB), request budget and tool deadline. Large rasters may need a smaller radius/coarser pixel scale. Raster decoding/solar-installation design is outside this adapter.
- EXPANDED_COVERAGE requests are pre-GA. EEA billing projects can have different terms and omitted content: https://developers.google.com/maps/comms/eea/solar
- Solar endpoints have distinct billing/quotas; enabling the service does not make requests free. Preserve Google Maps attribution when displaying Google content.
Primary sources: https://developers.google.com/maps/comms/eea/solar, https://developers.google.com/maps/documentation/solar/coverage, https://developers.google.com/maps/documentation/solar/reference/rest/v1/buildingInsights/findClosest, https://developers.google.com/maps/documentation/solar/reference/rest/v1/dataLayers/get, https://developers.google.com/maps/documentation/solar/reference/rest/v1/geoTiff/get
Result
building_insights/data_layers return the full native Google JSON including imagery dates, quality, solar potential and temporary raster URLs. Credentials are removed from returned URLs. geo_tiff returns bounded binary data with its actual MIME type and retained HTTP cache/attribution metadata; CLI JSON uses base64.
Example
MCP arguments:
{
"operation": "data_layers",
"location": {
"latitude": 37.444,
"longitude": -122.16
},
"radiusMeters": 100,
"view": "IMAGERY_AND_ANNUAL_FLUX_LAYERS"
}Equivalent CLI call:
mcp-gmap-rs call maps_solar --args '{"operation":"data_layers","location":{"latitude":37.444,"longitude":-122.16},"radiusMeters":100,"view":"IMAGERY_AND_ANNUAL_FLUX_LAYERS"}'maps_aerial_view
Look up Aerial View playback URLs or free metadata by US postal address or video ID. lookup is billable; metadata omits playback URLs. Coverage is limited to supported US locations. Returns Google's original metadata and short-lived URLs; videos must not be downloaded, stored or cached.
Retrieve an existing Aerial View video’s short-lived playback URLs or metadata without downloading the video.
CLI command: aerial-view. Google access: API key required in this implementation, including when OAuth mode is selected.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
address / --address | string; at least 1 character(s) | No | Not supplied | Supported US postal address. Supply exactly one of address or videoId. |
operation / --operation | string; values: lookup, metadata | No | lookup | lookup retrieves playback URLs and metadata (billable); metadata retrieves available video data excluding playback URLs (free-to-call Google method). |
videoId / --video-id | string; at least 1 character(s) | No | Not supplied | Previously returned Aerial View video ID. Supply exactly one of videoId or address. |
Behavior and restrictions
- Aerial View accepts only supported US postal addresses where Google can render 3D videos. Missing videos return NOT_FOUND; use the separate maps_render_aerial_video action to request a render.
- Use metadata to check state without requesting billable playback URLs. lookup itself is a billable event; poll metadata at a reasonable interval while a render is processing.
- Playback URIs expire quickly; obtain fresh URIs for each display. Google prohibits downloading, storing or caching these videos. This tool returns URLs without fetching them. Video IDs may be stored under the documented caching exception. https://developers.google.com/maps/documentation/aerial-view/lookup-video
- Keep Google Maps attribution visible during playback. EEA terms/functionality may differ. https://developers.google.com/maps/documentation/aerial-view/policies
Primary sources: https://developers.google.com/maps/documentation/aerial-view/lookup-video, https://developers.google.com/maps/documentation/aerial-view/policies
Result
The native Google response, including processing/active state, available video metadata and, for active lookup responses, playback URIs grouped by format/resolution. Metadata lookup omits playback URIs.
Example
MCP arguments:
{
"operation": "metadata",
"address": "600 Montgomery St, San Francisco, CA 94111"
}Equivalent CLI call:
mcp-gmap-rs call maps_aerial_view --args '{"operation":"metadata","address":"600 Montgomery St, San Francisco, CA 94111"}'maps_render_aerial_video
Explicitly request asynchronous rendering of an Aerial View video for a supported US postal address. This mutates Google's render queue; an existing video returns metadata. Does not wait for completion or download video. Poll maps_aerial_view with operation metadata and then lookup for playback URLs.
Explicitly queue an asynchronous Aerial View video render for a supported US postal address; kept separate from read-only lookup so agents can recognize the upstream mutation.
CLI command: render-aerial-video. Google access: API key required in this implementation, including when OAuth mode is selected.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
address / --address | string; at least 1 character(s) | Yes | — | Supported US postal address to render. |
Behavior and restrictions
- This action changes Google’s render queue. It is not automatically retried after a transient failure, does not wait for completion, and never downloads the resulting video.
- Check progress using maps_aerial_view operation metadata with the address or returned videoId; use lookup only when playback URLs are needed.
- US/3D coverage, quotas and Google service terms apply; API enablement does not guarantee that an address can be rendered. https://developers.google.com/maps/documentation/aerial-view/reference/rest/v1/videos/renderVideo
- Do not download, store or cache Aerial View videos; display current short-lived playback URLs with required attribution.
Primary sources: https://developers.google.com/maps/documentation/aerial-view/reference/rest/v1/videos/renderVideo
Result
The native render response with state and any available video metadata. PROCESSING means the render is queued/in progress; an existing video can return ACTIVE metadata immediately.
Example
MCP arguments:
{
"address": "600 Montgomery St, San Francisco, CA 94111"
}Equivalent CLI call:
mcp-gmap-rs call maps_render_aerial_video --args '{"address":"600 Montgomery St, San Francisco, CA 94111"}'maps_map_tiles
Map Tiles sessions, 2D/3D imagery, viewport attribution and Street View tiles. Licensed for visualization only: do not use imagery for machine interpretation, analysis, extraction or offline maps. Preserve attribution and cache directives.
Create Map Tiles sessions and retrieve 2D, photorealistic 3D, and Street View resources for a map viewer. This is a retrieval interface, not a renderer. Google licenses Map Tiles for visualization only, prohibiting machine interpretation, image analysis, object detection, geodata extraction and offline use.
CLI command: map-tiles. Google access: API key or OAuth with cloud-platform scope and a billed quota project. Enable Map Tiles API. Service accounts are supported by Google for Map Tiles; quota-project Service Usage permissions are required. See https://developers.google.com/maps/documentation/tile/get-api-key .
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
east / --east | number; -180.0–180.0 | No | Not supplied; required for the operations described | Required viewport eastern longitude. A negative east with positive west can cross the antimeridian. |
fov / --fov | number; 30.0–120.0 | No | 90 | Thumbnail horizontal field of view, 30..120 degrees. |
height / --height | integer; 16–250 | No | 250 | Thumbnail height, 16..250 pixels. |
latitude / --latitude | number; -90.0–90.0 | No | Not supplied; required for the operations described | For streetview_metadata, latitude of the search center; requires longitude and excludes panoId. |
locations / --locations | array of object; 1–100 items | No | Not supplied; required for the operations described | For streetview_pano_ids, one to 100 native location objects, each containing lat and lng. |
locations[].lat | number; -90.0–90.0 | When parent is supplied | Not supplied; required for the operations described | WGS84 search-center latitude. |
locations[].lng | number; -180.0–180.0 | When parent is supplied | Not supplied; required for the operations described | WGS84 search-center longitude. |
longitude / --longitude | number; -180.0–180.0 | No | Not supplied; required for the operations described | For streetview_metadata, longitude of the search center; requires latitude and excludes panoId. |
north / --north | number; -90.0–90.0 | No | Not supplied; required for the operations described | Required viewport northern latitude in WGS84 degrees; must exceed south. |
operation / --operation | string; values: create_session, tile_2d, viewport, root_3d, resource_3d, streetview_pano_ids, streetview_metadata, streetview_thumbnail, streetview_tile | Yes | — | create_session, tile_2d, viewport, root_3d, resource_3d, streetview_pano_ids, streetview_metadata, streetview_thumbnail or streetview_tile. Selects the endpoint and required arguments. |
panoId / --pano-id | string; at least 1 character(s) | No | Not supplied; required for the operations described | Required for streetview_tile/thumbnail, or an alternative to latitude+longitude for streetview_metadata. IDs are transient and should not be relied on beyond one user session. |
pitch / --pitch | number; -90.0–90.0 | No | 0 | Thumbnail vertical camera direction, -90..90 degrees. |
radius / --radius | number; 0.0–100000.0 | No | 50 meters | Street View search radius in meters for pano_ids or metadata coordinate search. This implementation accepts 0..100000. Cannot accompany a metadata panoId. |
resourceUrl / --resource-url | string; at least 1 character(s) | No | Not supplied; required for the operations described | For resource_3d, an absolute Google-issued https://tile.googleapis.com/v1/3dtiles/... URL from a tileset. No custom origin, port, userinfo, fragment or encoded path segments. Returned API-key query parameters are discarded and configured credentials are applied. |
session / --session | string; at least 1 character(s) | No | Not supplied; required for the operations described | The returned createSession session token. Required for every 2D and Street View request, but not 3D. Follow the response expiry rather than assuming a fixed lifetime. |
sessionOptions / --session-options | object | No | Not supplied; required for the operations described | Required for create_session. Native createSession options; mapType, language and region are mandatory. |
sessionOptions.highDpi | boolean | No | false | Increase pixel dimensions with 2x/4x scale; has no effect at 1x. |
sessionOptions.imageFormat | string; values: jpeg, png | No | Google chooses the best format | jpeg or png tile encoding. JPEG does not support transparent overlays. |
sessionOptions.language | string; at least 1 character(s) | When parent is supplied | Not supplied; required for the operations described | IETF language tag such as en-US. |
sessionOptions.layerTypes | array of string; 1–3 items; values: layerRoadmap, layerStreetview, layerTraffic | No | No additional layers | One to three values from layerRoadmap, layerStreetview and layerTraffic. terrain requires layerRoadmap. |
sessionOptions.mapType | string; values: roadmap, satellite, terrain, streetview | When parent is supplied | Not supplied; required for the operations described | roadmap, satellite, terrain or streetview. terrain requires layerTypes containing layerRoadmap. |
sessionOptions.overlay | boolean | No | false | Render requested layerTypes without base imagery when true. |
sessionOptions.region | string; pattern: ^[A-Z]{2}$ | When parent is supplied | Not supplied; required for the operations described | Two uppercase CLDR region letters, such as US; the physical location of the user. |
sessionOptions.scale | string; values: scaleFactor1x, scaleFactor2x, scaleFactor4x | No | scaleFactor1x | scaleFactor1x, scaleFactor2x or scaleFactor4x controls map element size. |
sessionOptions.styles | array of object; 1–100 items | No | Google default styling | Native Google map-style JSON objects. Valid only for roadmap. See https://developers.google.com/maps/documentation/tile/style-reference . |
south / --south | number; -90.0–90.0 | No | Not supplied; required for the operations described | Required viewport southern latitude in WGS84 degrees. |
west / --west | number; -180.0–180.0 | No | Not supplied; required for the operations described | Required viewport western longitude. |
width / --width | integer; 16–600 | No | 600 | Thumbnail width, 16..600 pixels. |
x / --x | integer; 0–4194303 | No | Not supplied; required for the operations described | Tile column for tile_2d or streetview_tile. 2D requires x < 2^zoom; Street View bounds depend on panorama dimensions in metadata. |
y / --y | integer; 0–4194303 | No | Not supplied; required for the operations described | Tile row for tile_2d or streetview_tile. 2D requires y < 2^zoom; Street View bounds depend on panorama dimensions in metadata. |
yaw / --yaw | number; -360.0–360.0 | No | 0 | Thumbnail horizontal camera direction, -360..360 degrees. |
zoom / --zoom | integer; 0–22 | No | Not supplied; required for the operations described | Integer zoom: 0..22 for tile_2d/viewport; 0..5 for streetview_tile. Availability varies; use viewport metadata for the maximum available zoom. |
Behavior and restrictions
- Operation contracts: create_session needs sessionOptions; tile_2d needs session/zoom/x/y; viewport needs session/zoom/north/south/east/west; root_3d takes no other fields; resource_3d needs resourceUrl; streetview_pano_ids needs session/locations; streetview_metadata needs session plus panoId OR latitude+longitude; streetview_thumbnail needs session/panoId; streetview_tile needs session/panoId/zoom/x/y. Unused operation fields are rejected.
- create_session obtains a Google session and is not retried automatically. Panorama lookups are read-only POST requests. A downstream viewer must implement stitching/3D rendering; this tool does not include a web or native renderer.
- Map Tiles policy prohibits unauthorized prefetching, indexing, storage and caching; respect Cache-Control, ETag and your agreement. Use only for map visualization. See https://developers.google.com/maps/documentation/tile/policies . Do not submit imagery to agents for image interpretation or geodata extraction.
- Display the Google Maps logo and provider attribution. Use viewport copyright for 2D maps, and streetview_metadata copyright plus its Report a problem link for Street View. A 3D renderer must display tile copyright attribution. Do not crop or hide credits.
- Coverage, EEA terms/functionality, billing and quotas vary. Native session expiry is authoritative. Panorama IDs are short-lived. No tile cache, bulk area download, offline map or image-analysis operation is implemented.
- Primary contracts: https://developers.google.com/maps/documentation/tile/session_tokens ; https://developers.google.com/maps/documentation/tile/2d-tiles-overview ; https://developers.google.com/maps/documentation/tile/streetview ; https://developers.google.com/maps/documentation/tile/3d-tiles .
Primary sources: https://developers.google.com/maps/documentation/tile/2d-tiles-overview, https://developers.google.com/maps/documentation/tile/3d-tiles, https://developers.google.com/maps/documentation/tile/get-api-key, https://developers.google.com/maps/documentation/tile/policies, https://developers.google.com/maps/documentation/tile/session_tokens, https://developers.google.com/maps/documentation/tile/streetview, https://developers.google.com/maps/documentation/tile/style-reference
Result
Native Google JSON for sessions, viewport, panorama lookup/metadata, 3D root and child JSON tilesets; attribution, copyrights, reportProblemLink and session expiry are preserved. Tiles, thumbnails and non-JSON 3D resources return binary content with MIME type plus cache-control/ETag metadata. MCP inlines supported images; other resources use base64 JSON. CLI --output writes the original bytes.
Example
MCP arguments:
{
"operation": "root_3d"
}Equivalent CLI call:
mcp-gmap-rs call maps_map_tiles --args '{"operation":"root_3d"}'maps_streetview
Get Street View Static metadata or a JPEG image by location or panorama ID. Preserve the Google attribution embedded in imagery and obey Street View usage policies.
Inspect Street View panorama metadata or retrieve a static JPEG image at a location or panorama ID. Metadata can establish imagery availability before a billed image request.
CLI command: streetview. Google access: API key required for Street View Static in this implementation; OAuth-only credentials cannot call it. Enable Street View Static API. Google recommends a digital signature, required in some account configurations.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
fov / --fov | number; 1.0–120.0 | No | 90 | Image horizontal field of view, 1..120 degrees. |
heading / --heading | number; 0.0–360.0 | No | Google points toward the supplied location | Image camera compass heading in degrees, 0..360. |
height / --height | integer; 1–640 | No | 400 | Image height in pixels, 1..640. Used only by image. |
location / --location | string; at least 1 character(s) | No | Not supplied; required for the operations described | Address, latitude/longitude string (for example 48.8584,2.2945), or place_id:PLACE_ID. Exactly one of location and panoId is required. |
operation / --operation | string; values: metadata, image | Yes | — | metadata or image. Metadata returns JSON; image returns JPEG bytes. |
panoId / --pano-id | string; at least 1 character(s) | No | Not supplied; required for the operations described | Specific panorama ID; mutually exclusive with location. Panorama IDs can change, so retain the original search location to refresh them. |
pitch / --pitch | number; -90.0–90.0 | No | 0 | Image vertical camera angle, -90..90 degrees. |
radius / --radius | integer; 0–100000 | No | 50 | Search radius in meters. This implementation accepts integer 0..100000. |
returnErrorCode / --return-error-code | boolean | No | true in this implementation | For image, return an HTTP error instead of the gray no-imagery placeholder. |
signature / --signature | string; at least 1 character(s) | No | Not supplied | Optional URL signature for the exact encoded request. Google recommends signing and requires it for some accounts. This tool forwards a supplied signature; it does not generate one. For signed requests the executable appends signature last, after the API key. Sign the exact encoded unsigned path/query including generated defaults. Image order: location, radius, source, pano, size, heading, fov, pitch, return_error_code, key (omitted optional fields are skipped); metadata omits image fields. Spaces encode as +. Defaults are size=640x400 and return_error_code=true. |
source / --source | string; values: default, google, outdoor | No | default | Search source: default, google or outdoor. Availability depends on the collection and region. |
width / --width | integer; 1–640 | No | 640 | Image width in pixels, 1..640. Used only by image. Larger images requiring special Google access are outside this implementation. |
Behavior and restrictions
- Exactly one of location and panoId is required. Width, height, heading, fov, pitch and returnErrorCode are used only by image. Unused operation arguments are rejected.
- Metadata requests are currently free of charge and do not consume Street View image quota; image requests are billed. See https://developers.google.com/maps/documentation/streetview/metadata .
- Keep the embedded Google Maps attribution intact. Street View imagery may not be used for print, and Maps storage/caching restrictions apply. This tool does not grant a license to retain, redistribute or analyze imagery. See https://developers.google.com/maps/documentation/streetview/policies and https://about.google/brand-resource-center/products-and-services/geo-guidelines/ .
- Native image requests and optional signatures follow https://developers.google.com/maps/documentation/streetview/request-streetview . Signing is forwarded only; premium-sized imagery and URL-signing-key configuration are not implemented.
- Coverage and EEA terms vary by project and location. Panorama IDs and capture dates can change or be unavailable.
Primary sources: https://developers.google.com/maps/documentation/streetview/metadata, https://developers.google.com/maps/documentation/streetview/policies, https://developers.google.com/maps/documentation/streetview/request-streetview
Result
Native panorama metadata JSON, including status, date, location, pano_id and copyright when available; or JPEG bytes with MIME type and safe HTTP cache metadata. A missing image is an error by default. CLI --output saves bytes; MCP exposes an image plus metadata.
Example
MCP arguments:
{
"operation": "metadata",
"location": "Eiffel Tower, Paris, France"
}Equivalent CLI call:
mcp-gmap-rs call maps_streetview --args '{"operation":"metadata","location":"Eiffel Tower, Paris, France"}'maps_streetview_publish
Manage the authenticated user's Street View photos and photo sequences, including bounded byte upload and publishing. Requires end-user OAuth consent with streetviewpublish scope; API keys and service accounts alone cannot authorize this tool. Create/update/delete operations change public imagery.
Manage photos and photo sequences belonging to the consenting Google user. Supports the complete documented v1 REST method set plus bounded photo-byte upload. Publishing and deletion are explicit caller-controlled operations and are never retried automatically.
CLI command: streetview-publish. Google access: End-user OAuth only, with https://www.googleapis.com/auth/streetviewpublish scope granted by the user. Use explicit authorized_user credentials in GOOGLE_APPLICATION_CREDENTIALS and OAuth mode; a service-account key, implicit ADC or API key alone is rejected for this tool. Configure the OAuth client consent flow separately; this executable refreshes authorized-user credentials but does not host a browser consent callback.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
dataBase64 / --data-base64 | string; at least 4 character(s) | No | Not supplied; required for the operations described | Standard padded base64 of media bytes for upload. Decoded size must be 1 byte to 8 MiB. This is an implementation bound, not Google’s product limit. |
filter / --filter | string; at least 1 character(s) | No | Not supplied; required for the operations described | Native Google filter expression for list, list_sequences or get_sequence; endpoint-specific grammar applies. See the official method reference. |
inputType / --input-type | string; values: VIDEO, XDM | No | Not supplied; required for the operations described | Required for create_sequence: VIDEO or XDM. |
languageCode / --language-code | string; at least 1 character(s) | No | Google default | Preferred language tag for list, get or batch_get photo metadata. |
mimeType / --mime-type | string; values: image/jpeg, application/octet-stream, video/mp4 | No | image/jpeg | Media Content-Type for upload: image/jpeg, video/mp4 or application/octet-stream. |
operation / --operation | string; values: list, get, start_upload, upload, create, update, delete, batch_get, batch_update, batch_delete, list_sequences, get_sequence, start_sequence_upload, create_sequence, delete_sequence | Yes | — | list, get, start_upload, upload, create, update, delete, batch_get, batch_update, batch_delete, list_sequences, get_sequence, start_sequence_upload, create_sequence or delete_sequence. |
pageSize / --page-size | integer; 1–100 | No | Google service default | Requested page size, 1..100, for list or list_sequences. Google may return fewer items. |
pageToken / --page-token | string; at least 1 character(s) | No | Not supplied; required for the operations described | Opaque nextPageToken from a previous list or list_sequences response. Pagination is explicit; the tool does not fetch every page. |
photo / --photo | object | No | Not supplied; required for the operations described | Native Google Photo JSON for create/update. create requires uploadReference.uploadUrl from start_upload after successful byte upload; update requires photoId separately and updateMask. Photo schema: https://developers.google.com/streetview/publish/reference/rest/v1/photo . |
photoId / --photo-id | string; at least 1 character(s) | No | Not supplied; required for the operations described | Google photo ID for get, update or delete. Pass the ID only, without resource paths or URL parameters. |
photoIds / --photo-ids | array of string; 1–100 items; each item at least 1 character(s) | No | Not supplied; required for the operations described | One to 100 photo IDs for batch_get or batch_delete. |
photoSequence / --photo-sequence | object | No | Not supplied; required for the operations described | Native Google PhotoSequence JSON for create_sequence. Requires uploadReference.uploadUrl; include required GPS/CAMM/IMU and capture metadata for the media format. Schema: https://developers.google.com/streetview/publish/reference/rest/v1/photoSequence/create . |
sequenceId / --sequence-id | string; at least 1 character(s) | No | Not supplied; required for the operations described | Google sequence ID for get_sequence or delete_sequence. The create operation name carries the sequence ID. |
updateMask / --update-mask | string; at least 1 character(s) | No | Not supplied; required for the operations described | Required comma-separated native Google FieldMask for update, for example pose.heading or pose.latLngPair. |
updatePhotoRequests / --update-photo-requests | array of object; 1–100 items | No | Not supplied; required for the operations described | One to 100 native UpdatePhotoRequest objects for batch_update. Each needs photo.photoId.id and updateMask. Schema: https://developers.google.com/streetview/publish/reference/rest/v1/photos/batchUpdate . |
uploadUrl / --upload-url | string; at least 1 character(s) | No | Not supplied; required for the operations described | Exact HTTPS UploadRef URL returned by start_upload or start_sequence_upload. Only streetviewpublish.googleapis.com/media/user/{account}/photo/{reference} (or photoSequence) is accepted; no redirects, custom origins, userinfo, fragments or encoded path segments. |
view / --view | string; values: BASIC, INCLUDE_DOWNLOAD_URL | No | BASIC | BASIC or INCLUDE_DOWNLOAD_URL for list, get, batch_get or get_sequence. Download URLs are sensitive user-resource URLs; this tool does not fetch them. |
Behavior and restrictions
- Photo lifecycle: start_upload -> upload the returned URL with dataBase64 -> create with photo.uploadReference.uploadUrl and required metadata. Uploading bytes alone does not publish a photo. Images must satisfy Google’s 360-degree Photo Sphere/XMP and publishing acceptance criteria: https://developers.google.com/streetview/publish/first-app .
- Photo updates use PUT and updateMask; updating photo pixels is unsupported by Google. delete and batch_delete remove the user’s published photos. No write, publish, upload or delete is part of doctor or live smoke checks.
- Sequence lifecycle: start_sequence_upload -> upload -> create_sequence(inputType, photoSequence) -> get_sequence. Actual large video uploads commonly exceed this CLI/MCP 8 MiB limit; resumable/chunked uploads are not implemented. Use Google’s upload flow externally when larger media is necessary, then pass its UploadRef to create_sequence. Metadata/list/get/delete sequence endpoints remain available.
- Native objects use Google’s official schemas rather than duplicating complex GPS, pose, IMU, connections and place fields. Unknown top-level tool arguments are rejected; endpoint-specific nested semantics are validated by Google. Every batch_update entry must include photo.photoId.id and updateMask.
- All documented v1 REST endpoints are implemented: photo create/delete/get/startUpload/update; photos list/batchGet/batchUpdate/batchDelete; photoSequence create/delete/get/startUpload; photoSequences list. Reference: https://developers.google.com/streetview/publish/reference/rest . This does not mean every accepted native nested field was tested live.
- Upload requests are fixed-origin, bounded, non-retrying POSTs; all mutations disable automatic retries because ambiguous network failures could otherwise duplicate public changes. Review operation results explicitly.
- Google ownership, privacy, copyright, 360-imagery acceptance, processing and quota restrictions apply. End-user consent and ownership cannot be replaced by service-account IAM permissions. See https://developers.google.com/streetview/publish/authorizing .
- Publish operations have not been live-tested with the supplied service-account credential: a real consenting user credential is required, and public mutations are deliberately excluded from smoke tests.
Primary sources: https://developers.google.com/streetview/publish/authorizing, https://developers.google.com/streetview/publish/first-app, https://developers.google.com/streetview/publish/reference/rest, https://developers.google.com/streetview/publish/reference/rest/v1/photo, https://developers.google.com/streetview/publish/reference/rest/v1/photoSequence/create, https://developers.google.com/streetview/publish/reference/rest/v1/photos/batchUpdate
Result
Unmodified native Google Photo, list/pagination, UploadRef, batch result, or long-running Operation JSON as appropriate; successful empty upload/delete responses become {}. Photos retain publication status and ownership metadata. Sequence operations can remain pending; call get_sequence to inspect progress. No automatic polling, mutation or publishing occurs.
Example
MCP arguments:
{
"operation": "list",
"pageSize": 10,
"view": "BASIC"
}Equivalent CLI call:
mcp-gmap-rs call maps_streetview_publish --args '{"operation":"list","pageSize":10,"view":"BASIC"}'maps_datasets
Manage geospatial datasets for Google Maps data-driven styling, including asynchronous imports from an existing Cloud Storage object.
Manage geospatial datasets for Google Maps data-driven styling, including asynchronous imports from an existing Cloud Storage object.
CLI command: datasets. Google access: OAuth 2.0 only, using a service account or ADC and https://www.googleapis.com/auth/cloud-platform. API keys are not accepted. Configure the resource project and quota-project permissions separately.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
dataset / --dataset | object | No | Required for create/update | Native Dataset JSON for create/update; Google validates the official schema. Create requires a unique displayName and usage:["USAGE_DATA_DRIVEN_STYLING"]. Update forwards metadata and injects the matching resource name. |
gcsSource / --gcs-source | object | No | Required for import | Cloud Storage source for import; the caller must already have access to the object. No local files are read by this tool. |
gcsSource.fileFormat | string; values: FILE_FORMAT_GEOJSON, FILE_FORMAT_KML, FILE_FORMAT_CSV | When parent is supplied | Required when gcsSource is supplied | Source encoding: FILE_FORMAT_GEOJSON, FILE_FORMAT_KML or FILE_FORMAT_CSV. |
gcsSource.inputUri | string; at least 1 character(s) | When parent is supplied | Required when gcsSource is supplied | Existing gs://bucket/object URI. The caller needs storage.objects.get, for example Storage Object Viewer. |
name / --name | string; pattern: ^projects/[A-Za-z0-9][A-Za-z0-9._:-]*/datasets/[A-Za-z0-9_-]+(@active)?$ | No | Required for resource operations | projects/{project}/datasets/{dataset}; required except list/create. Only get also accepts @active to inspect the latest completed version. |
operation / --operation | string; values: list, get, create, update, delete, import, download, fetch_errors | Yes | Required | Select list, get, create, update, delete, import, download or fetch_errors. Create/update/delete/import modify cloud resources. |
pageSize / --page-size | integer; 1–500 | No | list: 100; fetch_errors: Google default 50 | Maximum datasets/errors to return in one page; wrapper accepts 1–500. |
pageToken / --page-token | string; at least 1 character(s) | No | First page | Token from the preceding list/fetch_errors result. Keep other request arguments unchanged. |
parent / --parent | string; pattern: ^projects/[A-Za-z0-9][A-Za-z0-9._:-]*$ | No | Required for list/create | projects/{project ID or number}; required for list and create. |
tag / --tag | string; values: active | No | Latest version regardless of processing state | For list, active returns each dataset’s latest completed version and skips datasets with none. |
updateMask / --update-mask | string; at least 1 character(s) | No | Google defaults to * (full metadata replacement) | Comma-separated native metadata field paths for update, for example description,displayName. |
versionDescription / --version-description | string; at least 1 character(s) | No | Omitted | Description for the new imported data version. Used only by import. |
Behavior and restrictions
- Official REST resource and native Dataset schema. Permissions include mapsplatformdatasets.datasets.list/get/create/update/delete/import/export, according to the operation.
- GCS import creates a new version asynchronously. Call get explicitly to inspect status; fetch_errors retrieves processing errors. The tool never polls automatically.
- Google’s current public v1 REST API does not document listVersions. Use get (latest), get with @active, and returned versionId; complete version history enumeration is not claimed.
- Download media requires mapsplatformdatasets.datasets.export. CLI --output writes downloaded bytes.
- Maps Datasets API has no usage charge, but requires a configured Cloud project; Google Maps display and Cloud Storage may have their own charges and terms. Data-driven styling is the supported usage. Local multipart upload is not exposed; use an existing GCS object.
Primary sources: https://developers.google.com/maps/documentation/datasets/create, https://developers.google.com/maps/documentation/datasets/overview, https://developers.google.com/maps/documentation/datasets/reference/rest/v1/media/download, https://developers.google.com/maps/documentation/datasets/reference/rest/v1/projects.datasets
Result
Native Dataset/list/error JSON, import version resource name, or downloaded source bytes with MIME type and cache headers. get preserves status.state, status.errorMessage and versionId; importing does not mean processing has completed.
Example
MCP arguments:
{
"operation": "list",
"parent": "projects/my-project",
"pageSize": 20
}Equivalent CLI call:
mcp-gmap-rs call maps_datasets --args '{"operation":"list","parent":"projects/my-project","pageSize":20}'maps_route_optimization
Optimize delivery or service fleets with the actual Route Optimization API and an intact native ShipmentModel, including capacities, time windows and cost constraints.
Optimize delivery or service fleets with the actual Route Optimization API and an intact native ShipmentModel, including capacities, time windows and cost constraints.
CLI command: route-optimization. Google access: OAuth 2.0 only, using a service account or ADC and https://www.googleapis.com/auth/cloud-platform. API keys are not accepted. Configure the resource project and quota-project permissions separately.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
name / --name | string; pattern: ^projects/[A-Za-z0-9][A-Za-z0-9._:-]*(/locations/[A-Za-z0-9_-]+)?/operations/[A-Za-z0-9_-]+$ | No | Required for get_operation | Exact projects/{project}[/locations/{location}]/operations/{ID} returned by Google. Used only for get_operation. |
operation / --operation | string; values: optimize, validate, batch, optimize_long_running, optimize_uri, get_operation | Yes | Required | optimize solves synchronously; validate sets solvingMode=VALIDATE_ONLY; batch creates a GCS-backed job; optimize_long_running and optimize_uri create experimental jobs; get_operation reads one status. |
parent / --parent | string; pattern: ^projects/[A-Za-z0-9][A-Za-z0-9._:-]*(/locations/[A-Za-z0-9_-]+)?$ | No | Required except get_operation | projects/{project ID}; optionally /locations/-. Synchronous and long-running optimization reject regional location IDs. Batch/URI accept the native location form. |
request / --request | object | No | Required except get_operation | Complete native request object, without parent. For optimize/validate/optimize_long_running supply model with shipments/vehicles and all needed native constraints; Google validates the full schema. Batch requires 1–100 modelConfigs with inputConfig.gcsSource.uri, outputConfig.gcsDestination.uri and JSON or PROTO_TEXT dataFormat. URI requires input.uri/output.uri as gs:// paths ending .json or .txtpb. |
Behavior and restrictions
- Native optimizeTours request/ShipmentModel reference. validate still calls Google; it does not solve the fleet model.
- IAM setup: roles/routeoptimization.viewer permits OptimizeTours and reading operations; roles/routeoptimization.editor also permits batch jobs. Permissions include routeoptimization.locations.use, routeoptimization.operations.create/get. The API must be enabled on the project.
- Batch jobs read inputs and write outputs in Cloud Storage. Supply explicit object URIs and storage permissions; jobs can continue after the CLI/MCP request ends. No files are uploaded and no automatic polling occurs.
- Long-running and URI variants are experimental; URI uses the documented case-sensitive :OptimizeToursUri endpoint. Google may change pre-GA behavior.
- Operation cancel, delete and list are currently unsupported by Google. This tool therefore exposes get_operation only; no cancellation guarantee is made.
- Billing depends on shipments and the Single Vehicle Routing or Fleet Routing SKU. This is separate from Routes API waypoint optimization. Transport timeouts do not cancel jobs.
Primary sources: https://developers.google.com/maps/documentation/route-optimization/cloud-setup, https://developers.google.com/maps/documentation/route-optimization/reference/rest/v1/operations, https://developers.google.com/maps/documentation/route-optimization/reference/rest/v1/projects/batchOptimizeTours, https://developers.google.com/maps/documentation/route-optimization/reference/rest/v1/projects/optimizeTours, https://developers.google.com/maps/documentation/route-optimization/usage-and-billing, https://github.com/googleapis/googleapis/blob/master/google/maps/routeoptimization/v1/route_optimization_service.proto
Result
Native OptimizeToursResponse or long-running Operation JSON. Polling preserves done:false, metadata, and completed response/error objects without hiding failed-operation status.
Example
MCP arguments:
{
"operation": "validate",
"parent": "projects/my-project",
"request": {
"model": {
"shipments": [],
"vehicles": [
{
"startLocation": {
"latitude": 48.85,
"longitude": 2.35
}
}
]
},
"maxValidationErrors": 10
}
}Equivalent CLI call:
mcp-gmap-rs call maps_route_optimization --args '{"operation":"validate","parent":"projects/my-project","request":{"model":{"shipments":[],"vehicles":[{"startLocation":{"latitude":48.85,"longitude":2.35}}]},"maxValidationErrors":10}}'maps_air_quality_forecast
Retrieve hourly air quality forecasts for an explicit time or interval, up to 96 hours ahead.
Retrieve hourly air quality forecasts for an explicit time or interval, up to 96 hours ahead.
CLI command: air-quality-forecast. Google access: API key or OAuth 2.0 bearer token with cloud-platform scope; enable the named API and billing. With OAuth, the quota-project principal needs serviceusage.services.use.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
customLocalAqis / --custom-local-aqis | array of object; 1–250 items | No | Google selects local indexes | Override the local index selected for particular ISO country/region codes. |
customLocalAqis[].aqi | string; at least 1 character(s) | When parent is supplied | Required for each override | Supported local AQI code, for example us_epa. Google validates supported combinations. |
customLocalAqis[].regionCode | string; pattern: ^[A-Za-z]{2}$ | When parent is supplied | Required for each override | Two-letter country/region code receiving the AQI override. |
dateTime / --date-time | string; at least 20 character(s) | No | Choose a time selector | Single RFC3339 UTC Z timestamp; Google rounds it down to the preceding hour. Mutually exclusive with period and hours. |
extraComputations / --extra-computations | array of string; 1–5 items; values: LOCAL_AQI, HEALTH_RECOMMENDATIONS, POLLUTANT_ADDITIONAL_INFO, DOMINANT_POLLUTANT_CONCENTRATION, POLLUTANT_CONCENTRATION | No | No extra computations | Request LOCAL_AQI, HEALTH_RECOMMENDATIONS, POLLUTANT_ADDITIONAL_INFO, DOMINANT_POLLUTANT_CONCENTRATION and/or POLLUTANT_CONCENTRATION. |
languageCode / --language-code | string; at least 1 character(s) | No | Google: en | IETF language code for available localized text; Google chooses the closest supported language. |
location / --location | object | Yes | Required | Location whose conditions are requested. |
location.latitude | number; -90.0–90.0 | When parent is supplied | Required when location is supplied | Latitude in degrees, -90 through 90. |
location.longitude | number; -180.0–180.0 | When parent is supplied | Required when location is supplied | Longitude in degrees, -180 through 180. |
pageSize / --page-size | integer; 1–96 | No | Google: forecast 24; history 72 | Maximum hourly records in this page; wrapper caps forecast at 96 and history at Google’s maximum of 168. |
pageToken / --page-token | string; at least 1 character(s) | No | First page | nextPageToken from a preceding request; keep other request fields unchanged. |
period / --period | object | No | Choose a time selector | Inclusive hourly time interval; ordered and bounded to 96 forecast hours or 720 historical hours. Mutually exclusive with dateTime and hours. |
period.endTime | string; at least 20 character(s) | When parent is supplied | Required when period is supplied | Inclusive interval end in valid RFC3339 UTC notation ending Z. |
period.startTime | string; at least 20 character(s) | When parent is supplied | Required when period is supplied | Interval start in valid RFC3339 UTC notation ending Z. |
uaqiColorPalette / --uaqi-color-palette | string; values: RED_GREEN, INDIGO_PERSIAN_DARK, INDIGO_PERSIAN_LIGHT | No | Google default palette | Universal AQI palette: RED_GREEN, INDIGO_PERSIAN_DARK or INDIGO_PERSIAN_LIGHT. Local index palettes remain fixed. |
universalAqi / --universal-aqi | boolean | No | Google: true | Include the Universal Air Quality Index. |
Behavior and restrictions
- Forecast request reference. Choose dateTime or period.
- Exactly one time selector is required. Timestamp syntax and interval order/maximum span are validated locally; Google validates current availability and geographic coverage.
- One page is returned per call. Follow nextPageToken explicitly; all native indexes, concentrations, recommendations and region metadata are preserved.
- Air Quality policies apply, including attribution, display and caching requirements. Coverage and local index availability vary by country.
Primary sources: https://developers.google.com/maps/documentation/air-quality/policies, https://developers.google.com/maps/documentation/air-quality/reference/rest/v1/forecast/lookup
Result
Google’s native hourlyForecasts, regionCode and nextPageToken, including optional pollutant and health fields.
Example
MCP arguments:
{
"location": {
"latitude": 48.85,
"longitude": 2.35
},
"dateTime": "2026-11-01T12:00:00Z",
"pageSize": 24
}Equivalent CLI call:
mcp-gmap-rs call maps_air_quality_forecast --args '{"location":{"latitude":48.85,"longitude":2.35},"dateTime":"2026-11-01T12:00:00Z","pageSize":24}'maps_air_quality_history
Retrieve historical air quality information from the previous 30 days.
Retrieve historical air quality information from the previous 30 days.
CLI command: air-quality-history. Google access: API key or OAuth 2.0 bearer token with cloud-platform scope; enable the named API and billing. With OAuth, the quota-project principal needs serviceusage.services.use.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
customLocalAqis / --custom-local-aqis | array of object; 1–250 items | No | Google selects local indexes | Override the local index selected for particular ISO country/region codes. |
customLocalAqis[].aqi | string; at least 1 character(s) | When parent is supplied | Required for each override | Supported local AQI code, for example us_epa. Google validates supported combinations. |
customLocalAqis[].regionCode | string; pattern: ^[A-Za-z]{2}$ | When parent is supplied | Required for each override | Two-letter country/region code receiving the AQI override. |
dateTime / --date-time | string; at least 20 character(s) | No | Choose a time selector | Single RFC3339 UTC Z timestamp; Google rounds it down to the preceding hour. Mutually exclusive with period and hours. |
extraComputations / --extra-computations | array of string; 1–5 items; values: LOCAL_AQI, HEALTH_RECOMMENDATIONS, POLLUTANT_ADDITIONAL_INFO, DOMINANT_POLLUTANT_CONCENTRATION, POLLUTANT_CONCENTRATION | No | No extra computations | Request LOCAL_AQI, HEALTH_RECOMMENDATIONS, POLLUTANT_ADDITIONAL_INFO, DOMINANT_POLLUTANT_CONCENTRATION and/or POLLUTANT_CONCENTRATION. |
hours / --hours | integer; 1–720 | No | Choose exactly one of hours/dateTime/period | Number of previous hours to retrieve, 1–720 (30 days). Mutually exclusive with dateTime and period. |
languageCode / --language-code | string; at least 1 character(s) | No | Google: en | IETF language code for available localized text; Google chooses the closest supported language. |
location / --location | object | Yes | Required | Location whose conditions are requested. |
location.latitude | number; -90.0–90.0 | When parent is supplied | Required when location is supplied | Latitude in degrees, -90 through 90. |
location.longitude | number; -180.0–180.0 | When parent is supplied | Required when location is supplied | Longitude in degrees, -180 through 180. |
pageSize / --page-size | integer; 1–168 | No | Google: forecast 24; history 72 | Maximum hourly records in this page; wrapper caps forecast at 96 and history at Google’s maximum of 168. |
pageToken / --page-token | string; at least 1 character(s) | No | First page | nextPageToken from a preceding request; keep other request fields unchanged. |
period / --period | object | No | Choose a time selector | Inclusive hourly time interval; ordered and bounded to 96 forecast hours or 720 historical hours. Mutually exclusive with dateTime and hours. |
period.endTime | string; at least 20 character(s) | When parent is supplied | Required when period is supplied | Inclusive interval end in valid RFC3339 UTC notation ending Z. |
period.startTime | string; at least 20 character(s) | When parent is supplied | Required when period is supplied | Interval start in valid RFC3339 UTC notation ending Z. |
uaqiColorPalette / --uaqi-color-palette | string; values: RED_GREEN, INDIGO_PERSIAN_DARK, INDIGO_PERSIAN_LIGHT | No | Google default palette | Universal AQI palette: RED_GREEN, INDIGO_PERSIAN_DARK or INDIGO_PERSIAN_LIGHT. Local index palettes remain fixed. |
universalAqi / --universal-aqi | boolean | No | Google: true | Include the Universal Air Quality Index. |
Behavior and restrictions
- History request reference.
- Exactly one time selector is required. Timestamp syntax and interval order/maximum span are validated locally; Google validates current availability and geographic coverage.
- One page is returned per call. Follow nextPageToken explicitly; all native indexes, concentrations, recommendations and region metadata are preserved.
- Air Quality policies apply, including attribution, display and caching requirements. Coverage and local index availability vary by country.
Primary sources: https://developers.google.com/maps/documentation/air-quality/policies, https://developers.google.com/maps/documentation/air-quality/reference/rest/v1/history/lookup
Result
Google’s native hoursInfo, regionCode and nextPageToken, including optional pollutant and health fields.
Example
MCP arguments:
{
"location": {
"latitude": 48.85,
"longitude": 2.35
},
"hours": 24,
"pageSize": 12
}Equivalent CLI call:
mcp-gmap-rs call maps_air_quality_history --args '{"location":{"latitude":48.85,"longitude":2.35},"hours":24,"pageSize":12}'maps_air_quality_heatmap
Download a real air quality heatmap image tile for an index or pollutant.
Download a real air quality heatmap image tile for an index or pollutant.
CLI command: air-quality-heatmap. Google access: API key or OAuth 2.0 bearer token with cloud-platform scope; enable the named API and billing. With OAuth, the quota-project principal needs serviceusage.services.use.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
mapType / --map-type | string; values: UAQI_RED_GREEN, UAQI_INDIGO_PERSIAN, PM25_INDIGO_PERSIAN, GBR_DEFRA, DEU_UBA, CAN_EC, FRA_ATMO, US_AQI | Yes | Required | UAQI_RED_GREEN, UAQI_INDIGO_PERSIAN, PM25_INDIGO_PERSIAN, GBR_DEFRA, DEU_UBA, CAN_EC, FRA_ATMO or US_AQI. |
x / --x | integer; 0–65535 | Yes | Required | Tile column; 0 through 2^zoom−1. Bounds are checked before contacting Google. |
y / --y | integer; 0–65535 | Yes | Required | Tile row; 0 through 2^zoom−1. Bounds are checked before contacting Google. |
zoom / --zoom | integer; 0–16 | Yes | Required | Web Mercator zoom, 0–16; level zero has one tile. |
Behavior and restrictions
- Heatmap tile reference. Tile availability depends on index/country coverage.
- Air Quality policies require the applicable attribution and restrict content storage/display. Preserve response cache headers; the wrapper does not grant a content license.
Primary sources: https://developers.google.com/maps/documentation/air-quality/policies, https://developers.google.com/maps/documentation/air-quality/reference/rest/v1/mapTypes.heatmapTiles/lookupHeatmapTile
Result
Binary tile bytes with Google’s MIME/cache headers; MCP returns an inline image, and CLI can write --output.
Example
MCP arguments:
{
"mapType": "UAQI_RED_GREEN",
"zoom": 2,
"x": 2,
"y": 1
}Equivalent CLI call:
mcp-gmap-rs call maps_air_quality_heatmap --args '{"mapType":"UAQI_RED_GREEN","zoom":2,"x":2,"y":1}'maps_pollen_heatmap
Download a real tree, grass or weed pollen index heatmap tile.
Download a real tree, grass or weed pollen index heatmap tile.
CLI command: pollen-heatmap. Google access: API key authentication. Enable Pollen API and billing; service-account OAuth is not supported for this API by this executable.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
mapType / --map-type | string; values: TREE_UPI, GRASS_UPI, WEED_UPI | Yes | Required | TREE_UPI, GRASS_UPI or WEED_UPI. |
x / --x | integer; 0–65535 | Yes | Required | Tile column; 0 through 2^zoom−1. Bounds are checked before contacting Google. |
y / --y | integer; 0–65535 | Yes | Required | Tile row; 0 through 2^zoom−1. Bounds are checked before contacting Google. |
zoom / --zoom | integer; 0–16 | Yes | Required | Web Mercator zoom, 0–16; level zero has one tile. |
Behavior and restrictions
- Pollen heatmap reference. Availability varies by supported countries and season.
- Pollen policies govern attribution, Google Maps display and caching. Enabled API access does not remove content license restrictions.
Primary sources: https://developers.google.com/maps/documentation/pollen/policies, https://developers.google.com/maps/documentation/pollen/reference/rest/v1/mapTypes.heatmapTiles/lookupHeatmapTile
Result
Binary PNG tile with MIME/cache metadata; CLI --output saves it and MCP returns an image.
Example
MCP arguments:
{
"mapType": "TREE_UPI",
"zoom": 2,
"x": 2,
"y": 1
}Equivalent CLI call:
mcp-gmap-rs call maps_pollen_heatmap --args '{"mapType":"TREE_UPI","zoom":2,"x":2,"y":1}'maps_weather_history
Retrieve up to 24 previous hours of weather history with explicit pagination.
Retrieve up to 24 previous hours of weather history with explicit pagination.
CLI command: weather-history. Google access: API key or OAuth 2.0 bearer token with cloud-platform scope; enable the named API and billing. With OAuth, the quota-project principal needs serviceusage.services.use.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
hours / --hours | integer; 1–24 | No | Google: 24 | Number of previous hours starting from the last hour, 1–24. |
languageCode / --language-code | string; at least 1 character(s) | No | Google: en | IETF BCP-47 response language. |
location / --location | object | Yes | Required | Location whose conditions are requested. |
location.latitude | number; -90.0–90.0 | When parent is supplied | Required when location is supplied | Latitude in degrees, -90 through 90. |
location.longitude | number; -180.0–180.0 | When parent is supplied | Required when location is supplied | Longitude in degrees, -180 through 180. |
pageSize / --page-size | integer; 1–24 | No | History: Google 24; others: Google default | Maximum records in this page. History accepts 1–24; alerts/minute forecast use a wrapper limit of 1–1000. |
pageToken / --page-token | string; at least 1 character(s) | No | First page | Token from the previous response; keep the other arguments unchanged. |
unitsSystem / --units-system | string; values: METRIC, IMPERIAL | No | Google: METRIC | METRIC or IMPERIAL. |
Behavior and restrictions
- Hourly history reference. This endpoint covers only the previous 24 hours, not arbitrary historical dates.
- Weather policies and geographic coverage apply. No pages are fetched automatically.
Primary sources: https://developers.google.com/maps/documentation/weather/policies, https://developers.google.com/maps/documentation/weather/reference/rest/v1/history.hours/lookup
Result
Native historyHours, timeZone and nextPageToken with all hourly conditions.
Example
MCP arguments:
{
"location": {
"latitude": 48.85,
"longitude": 2.35
},
"hours": 12,
"pageSize": 6
}Equivalent CLI call:
mcp-gmap-rs call maps_weather_history --args '{"location":{"latitude":48.85,"longitude":2.35},"hours":12,"pageSize":6}'maps_weather_alerts
Retrieve public weather alerts intersecting a location, including native severity and issuing-authority information.
Retrieve public weather alerts intersecting a location, including native severity and issuing-authority information.
CLI command: weather-alerts. Google access: API key or OAuth 2.0 bearer token with cloud-platform scope; enable the named API and billing. With OAuth, the quota-project principal needs serviceusage.services.use.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
languageCode / --language-code | string; at least 1 character(s) | No | Google: en | IETF BCP-47 response language where available. |
location / --location | object | Yes | Required | Location whose conditions are requested. |
location.latitude | number; -90.0–90.0 | When parent is supplied | Required when location is supplied | Latitude in degrees, -90 through 90. |
location.longitude | number; -180.0–180.0 | When parent is supplied | Required when location is supplied | Longitude in degrees, -180 through 180. |
pageSize / --page-size | integer; 1–1000 | No | History: Google 24; others: Google default | Maximum records in this page. History accepts 1–24; alerts/minute forecast use a wrapper limit of 1–1000. |
pageToken / --page-token | string; at least 1 character(s) | No | First page | Token from the previous response; keep the other arguments unchanged. |
Behavior and restrictions
- Public alerts reference. Coverage, delivery latency and available alert fields depend on the issuing authority.
- Weather policies apply. Preserve alert provider attribution and do not treat absence of returned alerts as a safety guarantee.
Primary sources: https://developers.google.com/maps/documentation/weather/policies, https://developers.google.com/maps/documentation/weather/reference/rest/v1/publicAlerts/lookup
Result
Google’s native weatherAlerts collection, authority/area details and nextPageToken when available.
Example
MCP arguments:
{
"location": {
"latitude": 48.85,
"longitude": 2.35
},
"pageSize": 5
}Equivalent CLI call:
mcp-gmap-rs call maps_weather_alerts --args '{"location":{"latitude":48.85,"longitude":2.35},"pageSize":5}'maps_weather_minute_forecast
EXPERIMENTAL: retrieve high-resolution precipitation forecasts over a six-hour timeframe.
EXPERIMENTAL: retrieve high-resolution precipitation forecasts over a six-hour timeframe.
CLI command: weather-minute-forecast. Google access: API key or OAuth 2.0 bearer token with cloud-platform scope; enable the named API and billing. With OAuth, the quota-project principal needs serviceusage.services.use.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
location / --location | object | Yes | Required | Location whose conditions are requested. |
location.latitude | number; -90.0–90.0 | When parent is supplied | Required when location is supplied | Latitude in degrees, -90 through 90. |
location.longitude | number; -180.0–180.0 | When parent is supplied | Required when location is supplied | Longitude in degrees, -180 through 180. |
pageSize / --page-size | integer; 1–1000 | No | History: Google 24; others: Google default | Maximum records in this page. History accepts 1–24; alerts/minute forecast use a wrapper limit of 1–1000. |
pageToken / --page-token | string; at least 1 character(s) | No | First page | Token from the previous response; keep the other arguments unchanged. |
unitsSystem / --units-system | string; values: METRIC, IMPERIAL | No | Google: METRIC | METRIC or IMPERIAL units for precipitation amounts. |
Behavior and restrictions
- Experimental/pre-GA: limited support and incompatible changes are possible. See the minute forecast guide and additional terms and weather-map guide.
- Google requires attribution and limits caching of minute forecasts/map tiles to one hour, after which the cached content must be deleted.
- Google prohibits using this Weather content to recreate a Google service/product, including an app or model whose primary purpose is providing weather information. These upstream restrictions apply to downstream consumers too.
- Minute forecasts and map tiles may not be synchronized. One explicit page per call; availability depends on location and upstream access.
Primary sources: https://developers.google.com/maps/documentation/weather/minute-forecast, https://developers.google.com/maps/documentation/weather/weather-map
Result
Native overallPredictionTimeframe, timeZone, segments and nextPageToken; segments preserve type, probability, quantities and intensity.
Example
MCP arguments:
{
"location": {
"latitude": 37.60451,
"longitude": -80.59044
},
"pageSize": 5
}Equivalent CLI call:
mcp-gmap-rs call maps_weather_minute_forecast --args '{"location":{"latitude":37.60451,"longitude":-80.59044},"pageSize":5}'maps_weather_map
EXPERIMENTAL: download a precipitation nowcast image tile for the United States or Europe.
EXPERIMENTAL: download a precipitation nowcast image tile for the United States or Europe.
CLI command: weather-map. Google access: API key or OAuth 2.0 bearer token with cloud-platform scope; enable the named API and billing. With OAuth, the quota-project principal needs serviceusage.services.use.
Parameters
| Parameter / CLI flag | Type and schema limits | Required | Default when omitted | Description |
|---|---|---|---|---|
mapType / --map-type | string; values: US_PRECIPITATION_CURRENT, EU_PRECIPITATION_CURRENT | Yes | Required | US_PRECIPITATION_CURRENT or EU_PRECIPITATION_CURRENT; geographically limited nowcast products. |
x / --x | integer; 0–65535 | Yes | Required | Tile column; 0 through 2^zoom−1. Bounds are checked before contacting Google. |
y / --y | integer; 0–65535 | Yes | Required | Tile row; 0 through 2^zoom−1. Bounds are checked before contacting Google. |
zoom / --zoom | integer; 0–16 | Yes | Required | Web Mercator zoom, 0–16; level zero has one tile. |
Behavior and restrictions
- Experimental/pre-GA: limited support and incompatible changes are possible. See the minute forecast guide and additional terms and weather-map guide.
- Google requires attribution and limits caching of minute forecasts/map tiles to one hour, after which the cached content must be deleted.
- Google prohibits using this Weather content to recreate a Google service/product, including an app or model whose primary purpose is providing weather information. These upstream restrictions apply to downstream consumers too.
- US/EU coverage is limited to the regions shown in Google’s guide. Tile grid bounds do not imply that data exists for a location.
Primary sources: https://developers.google.com/maps/documentation/weather/minute-forecast, https://developers.google.com/maps/documentation/weather/weather-map
Result
Binary PNG tile preserving upstream MIME/cache headers; CLI --output writes bytes and MCP renders an image.
Example
MCP arguments:
{
"mapType": "US_PRECIPITATION_CURRENT",
"zoom": 12,
"x": 1025,
"y": 1688
}Equivalent CLI call:
mcp-gmap-rs call maps_weather_map --args '{"mapType":"US_PRECIPITATION_CURRENT","zoom":12,"x":1025,"y":1688}'