Skip to main content
Glama
oakley7247

google-maps-harness

by oakley7247

google-maps-harness

Trece herramientas de solo lectura de Google Maps Platform para un agente: dónde está un lugar, qué hay a su alrededor, cuánto se tarda en llegar y cuáles son las condiciones cuando llega.

Dos formas de instalarlo, ambas desde este repositorio:

Para

Configuración

Skill

claude.ai y Claude Code

Subir un zip. Necesita una entrada en la lista de dominios permitidos en claude.ai.

Servidor (MCP) Model Context Protocol

Claude Code, Claude Desktop

Un venv y un comando de registro.

Ambos exponen la misma capacidad con los mismos controles. El Skill existe porque claude.ai no puede iniciar un servidor local; el servidor MCP existe porque es la opción más adecuada cuando un proceso local es aceptable.

Nada de esto escribe, por lo que el riesgo que gestiona no es daño — es costo, contexto y confianza en lo que Google devuelve.

Lo que obtiene un agente

Herramienta

Responde

geocode_address

¿Dónde está esta dirección, punto de referencia o plus code?

reverse_geocode

¿Qué hay en esta coordenada?

geocode_place_id

¿Dónde está exactamente este id de lugar?

validate_address

¿Es esta dirección real y entregable?

search_places_by_text

¿Qué lugares coinciden con "ramen cerca de Union Square"?

search_places_nearby

¿Qué hay dentro de este círculo, por categoría?

get_place_details

Horario, calificación, precio, teléfono, sitio web de un lugar.

autocomplete_places

¿Qué quiso decir probablemente el usuario?

compute_route

¿Cuánto se tarda de A a B, con tráfico?

compute_route_matrix

¿Cuál de estos diez está más cerca de cuál de esos diez?

get_time_zone

¿Qué hora es allí, ahora mismo o en una fecha determinada?

get_elevation

¿Qué altura tiene este punto, o este perfil de puntos?

get_air_quality

¿Cómo está el aire allí, y quién debería tener cuidado?

compute_route_matrix es la herramienta diseñada para decidir en lugar de consultar: una llamada clasifica cada candidato frente a cada opción, y una factura.

El Skill expone las mismas trece como subcomandos — geocode, search-nearby, matrix — más un comando check que diagnostica su propia configuración.

Related MCP server: Google Maps MCP Server Enhanced

Paso 1 — Google Cloud (ambas rutas lo necesitan)

Habilitar las APIs

Habilítalas en Maps APIs → Lista de APIs en un proyecto con facturación activada. Maps Platform rechaza cada solicitud sin una cuenta de facturación adjunta, incluso dentro del crédito mensual gratuito.

API

Herramientas que desbloquea

Geocoding API

geocode_address, reverse_geocode, geocode_place_id

Places API (Nueva)

las cuatro herramientas *_places*

Routes API

compute_route, compute_route_matrix

Time Zone API

get_time_zone

Elevation API

get_elevation

Address Validation API

validate_address

Air Quality API

get_air_quality

Presta atención a Places API (Nueva) específicamente — la consola también lista una "Places API" heredada, y habilitar solo esa produce un 403 en las cuatro herramientas de lugares.

Habilita solo lo que quieras que sea accesible. Una herramienta cuya API está desactivada se niega con un mensaje que la nombra, lo cual es una buena manera de ejecutar una superficie más pequeña deliberadamente.

Crear y restringir la clave

En Credenciales de Maps Platform, crea una clave de API y establece ambas restricciones antes de salir de la página:

  • Restricciones de aplicación → Ninguna. Esta clave es utilizada por un proceso del lado del servidor, no por un navegador o un teléfono. Las restricciones de referente HTTP y Android/iOS fallan para ella.

  • Restricciones de API → Restringir clave, marcando exactamente las APIs anteriores. Una clave sin restricciones factura por cada API de Google en el proyecto, por lo que una filtrada es una cuenta abierta en lugar de una limitada.

Establece también un límite de cuota diaria en la página de Cuotas de cada API. Google lo aplica en su propio borde, que es el único lugar donde un límite de gasto se mantiene sin importar lo que se ejecute en el cliente.

Paso 2a — Instalar como Skill

Construir el paquete

python3 skill/build.py                     # dist/google-maps.zip — no credential
python3 skill/build.py --with-key .env     # also dist/google-maps-personal.zip

Dos compilaciones, porque claude.ai no tiene dónde guardar una clave: no hay entorno que configurar ni un home persistente, por lo que un archivo de clave subido dura una conversación. La compilación personal empaqueta la clave dentro del Skill, que se sube una vez y permanece.

Compilación

Contiene

Subir a

google-maps.zip

sin credencial

cualquiera con quien lo compartas

google-maps-personal.zip

tu clave

solo tu propia cuenta

Esa conveniencia es una exposición real — la clave entonces vive en el artefacto del Skill bajo la retención estándar de Anthropic — por lo que las dos se mantienen separadas por mecanismos en lugar de por cuidado: diferentes nombres de archivo, un banner de no compartir en el propio SKILL.md de la compilación personal, *-personal.zip en gitignore dondequiera que se escriba, y tests/test_skill_build.py que afirma que ninguna clave llega a la compilación compartible incluso cuando una está en el árbol de trabajo.

Instalar en claude.ai

  1. Configuración → Capacidades → Skills, sube el zip.

  2. Configuración → Capacidades → Ejecución de código → Lista de dominios permitidos, añade estos seis:

geocode.googleapis.com
places.googleapis.com
routes.googleapis.com
addressvalidation.googleapis.com
airquality.googleapis.com
maps.googleapis.com

El paso 2 no es opcional y es el que atrapa a la gente. El sandbox llega a internet a través de un proxy gestionado que solo permite dominios listados; en la configuración predeterminada (Solo gestores de paquetes) cada llamada a Maps falla idénticamente con un 403 en el túnel CONNECT, sin importar lo buena que sea la clave.

Seis hosts nombrados superan a Todos los dominios. Esa lista de permitidos es lo único que hay entre un sandbox que ejecuta código escrito por el modelo e internet abierto, y ampliarla a todo para arreglar un Skill gasta un control que no se recupera fácilmente. Las listas por dominio son una característica a nivel de organización; si tu plan solo ofrece todo o nada, esa es la compensación que tienes delante.

Si el sandbox enruta a través de un proxy que el script ignoraría de otro modo, añade --use-proxy (o establece GOOGLE_MAPS_USE_PROXY=1). Consulta Por qué existe --use-proxy.

Instalar en Claude Code

cp -R skill/google-maps ~/.claude/skills/

Acceso completo a la red, nada que añadir a la lista de permitidos.

Verificar

Pídele a Claude que ejecute la verificación del Skill, o ejecútala tú mismo:

python3 skill/google-maps/scripts/maps.py check --all
KEY       bundled with the skill (39 characters, fingerprint 28988599)
PROXY     none in the environment; requests go direct
NETWORK   reachable

OK  Geocoding            enabled
OK  Places (New)         enabled
...

Separa los tres fallos que parecen idénticos desde fuera — sin clave, sin ruta y una API desactivada — y no imprime ninguna parte de la clave.

Paso 2b — Instalar como servidor MCP

python3 -m venv .venv
.venv/bin/pip install --require-hashes -r requirements.lock
.venv/bin/pip install -e . --no-deps
cp .env.example .env && chmod 600 .env      # then fill in GOOGLE_MAPS_API_KEY
claude mcp add google-maps -- /absolute/path/to/.venv/bin/google-maps-harness --env-file /absolute/path/to/.env

La clave va en el archivo, no en esa línea de comandos. Un valor pasado con -e termina en ~/.claude.json y en el historial de tu shell, y ninguno es solo del propietario. El servidor nunca lee un .env al que no se le haya señalado, por lo que nada se carga por accidente.

Reinicia el cliente después de cambiar el código — el proceso registrado carga sus módulos al inicio y, de lo contrario, seguirá ejecutando los antiguos.

Configuración

Toda configuración es opcional excepto la clave. El Skill acepta las mismas opciones como banderas de línea de comandos; python3 scripts/maps.py --help las lista.

Variable

Predeterminado

Qué hace

GOOGLE_MAPS_API_KEY

—

Obligatorio. La clave de Maps Platform.

GOOGLE_MAPS_TIMEOUT_SECONDS

10

Tiempo de espera de conexión y lectura por solicitud.

GOOGLE_MAPS_MAX_REQUESTS_PER_CALL

25

Solicitudes ascendentes que una llamada de herramienta puede hacer.

GOOGLE_MAPS_MAX_SECONDS_PER_CALL

30

Tiempo de reloj que una llamada de herramienta puede gastar ascendente.

GOOGLE_MAPS_REGION_CODE

sin establecer

Región de dos letras que desempata nombres ambiguos.

GOOGLE_MAPS_LANGUAGE_CODE

en

Idioma para nombres de lugares e instrucciones de ruta.

GOOGLE_MAPS_ALLOW_ATMOSPHERE_FIELDS

false

Permite que las consultas de lugares soliciten reseñas y resúmenes editoriales.

GOOGLE_MAPS_USE_PROXY

false

Solo Skill. Enrutar a través del proxy que nombra el entorno.

Controlar lo que esto cuesta

Google factura por solicitud, y Places factura por el campo más caro que solicites. Tres controles se interponen entre un agente y tu factura.

  • El nivel de detalle fija el precio. Cada herramienta de Places acepta detail: essentials (dirección y coordenadas), pro (añade nombres y estado del negocio), enterprise (añade horario, calificaciones, teléfono, sitio web), atmosphere (añade reseñas). El agente nombra un nivel y nunca compone una máscara de campo, por lo que no puede pedir silenciosamente todo.

  • El nivel atmosphere está desactivado por defecto. Es tanto el nivel más caro como el que introduce prosa escrita por desconocidos en el contexto del modelo. Actívalo deliberadamente o no lo hagas.

  • Cada llamada tiene un límite máximo. Veinticinco solicitudes ascendentes y treinta segundos. Cada resultado informa upstream_requests, por lo que lo que gasta una llamada es visible en la respuesta en lugar de solo en la consola de facturación.

compute_route_matrix está limitada a 100 pares origen-destino, muy por debajo de los 625 de Google, porque Google factura la matriz por par.

Postura de seguridad

  • La clave se mantiene en un solo lugar. Solo el transporte la adjunta. Ninguna herramienta, y ningún otro módulo, la maneja jamás. El Skill además se niega a aceptarla como argumento de línea de comandos, porque argv es visible a través de ps y termina en el historial del shell.

  • Nada enviado puede ser redirigido. Las redirecciones se rechazan directamente y la lista de dominios permitidos se verifica antes de abrir cada socket. Tres de estas APIs llevan la clave en la cadena de consulta, por lo que una redirección seguida entregaría una credencial facturable a un extraño.

  • Cada error se depura. La clave se registra antes de construir cualquier cliente, y cada excepción que sale de una herramienta pasa primero por el depurador.

  • Todo lo que Google devuelve está etiquetado como no confiable. Los nombres de lugares, resúmenes editoriales, reseñas e instrucciones de ruta están escritos por propietarios de negocios y por el público. Cada respuesta lleva una advertencia que le dice al modelo que trate ese texto como datos, y cada cadena se limpia de caracteres de control primero.

  • Cada argumento se valida antes de convertirse en una solicitud. Las coordenadas deben ser finitas — un analizador JSON te dará NaN si lo permites. Los ids de lugar se comparan con una clase de caracteres y luego se codifican como porcentaje en la ruta URL. El texto libre tiene un límite de longitud y rechaza caracteres de control.

  • Las respuestas están limitadas dos veces: 4 MiB del socket, 96 KiB en el contexto del modelo.

Por qué existe --use-proxy

Las variables de entorno de proxy se ignoran por defecto. En una máquina ordinaria, ese valor predeterminado protege la clave: una de esas variables enrutaría cada solicitud a través de un host que alguien más eligió.

Un sandbox lo invierte. Donde un proxy de salida gestionado es la única salida, ignorarlo no protege nada — garantiza que ninguna solicitud salga jamás. Por lo tanto, la elección es explícita en lugar de asumida, y permanece desactivada por defecto porque el entorno que la necesita sabe que la necesita.

Dos cosas siguen siendo válidas con él activado: la lista de permitidos de host se ejecuta antes de que se construya cualquier URL, por lo que no se puede engañar al código para que vaya a un nuevo destino, y un túnel CONNECT mantiene el proxy fuera de la solicitud. Un proxy que termina TLS con su propia autoridad de certificación vería la clave — en un sandbox gestionado que es la misma parte que ya ejecuta el código, pero vale la pena saberlo en lugar de asumirlo.

Lo que esto deliberadamente no hace

  • Sin escrituras. Google Maps Platform no tiene una superficie de escritura significativa aquí, y esto no expone ninguna.

  • Sin máscaras de campo proporcionadas por el llamante. Una máscara de campo es un valor de cabecera HTTP; ensamblada a partir de la salida del modelo es una inyección de cabecera esperando el primer salto de línea, y una forma de solicitar los campos más costosos en cada llamada.

  • Sin libro de gastos local. Los límites diarios por API de Google imponen un presupuesto en su borde, que se mantiene independientemente de lo que se ejecute en el cliente. Duplicar eso localmente añadiría estado, un bloqueo y un segundo número que mantener verdadero.

  • Sin imágenes de mapa ni teselas estáticas. Son bytes que un modelo no puede leer, y sus URLs llevan la clave.

Dónde se ejecuta

Plataforma

Skill

Servidor MCP

Claude Code

sí, red completa

sí

Claude Desktop

—

sí

claude.ai

sí, una vez que los dominios estén en la lista de permitidos

no — no puede iniciar un proceso local

Claude API container

no — sin acceso a red, no configurable

no

Desarrollo

.venv/bin/python -m unittest discover -s . -p "test_*.py"
.venv/bin/ruff check . && .venv/bin/ruff format --check . && .venv/bin/mypy --strict --exclude tests .

Las pruebas se ejecutan sin conexión. Nada en el conjunto abre un socket ni necesita una clave real — el transporte falso registra lo que habría sido una solicitud, que es lo que permite a una prueba afirmar en el cable en lugar de en el recuento de llamadas de un mock.

El Skill está dirigido a Python 3.9 mientras que el servidor está dirigido a 3.11, porque un Skill se envía a sandboxes que este proyecto no elige. CI ejecuta el Skill en 3.9 exactamente por esa razón: un linter reescribió una vez timezone.utc al datetime.UTC solo de 3.11, y el conjunto — que se ejecuta en 3.11 y 3.14 — no pudo verlo.

Licencia

MIT.

Available Tools

13 tools
autocomplete_placesA
Read-only

Complete a partial place name or address into up to five candidates, each with a place id. Use this to pin down what the user meant before spending a search or a details lookup, and to turn a vague name into an id the other tools can use. The cheapest way to resolve a place.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo
partial_textYes
radius_metresNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior2/5

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

While annotations already indicate idempotence and non-destructiveness, the description adds context about the tool being the cheapest, but it fails to clarify important behaviors such as whether results depend on location parameters, if any rate limiting or throttling exists, or what happens with ambiguous inputs. Given the presence of annotations, the bar for added value is higher, and the description barely meets it.

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

Conciseness5/5

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

The description is extremely concise at two sentences, with no filler. The first sentence clearly states the function and output, and the second provides usage context. Every word adds value.

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

Completeness4/5

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

Given that an output schema exists, the description doesn't need to explain return values. The tool is relatively simple with one required parameter and clear annotations. The description covers usage flow and efficiency, making it mostly complete. A minor gap is the lack of guidance on when not to use it (e.g., if exact match needed) or what distinguishes it from search_places_by_text.

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

Parameters4/5

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

The description provides no parameter-level details, but since schema description coverage is 0%, it must compensate for this gap. It does offer high-level context that the tool uses partial text (matching the only required input) and mentions optional location parameters implicitly through the tool's purpose. However, it doesn't explain radius_metres or coordinate semantics, so some burden remains.

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

Purpose5/5

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

The description clearly specifies the verb ('Complete'), the resource ('a partial place name or address'), and the output ('up to five candidates, each with a place id'). It distinguishes the tool from siblings by focusing on partial input and id generation.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: before a search or details lookup, and to convert vague names into usable IDs. It also implies exclusivity by noting it's the 'cheapest' way, contrasting with more expensive sibling operations.

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

compute_routeA
Read-only

Get the driving, walking, cycling, or transit route between two places, with total time, distance, and any warnings. Each endpoint is written one of three ways: 'place_id:ChIJ...' from a place search (most precise), '40.7580,-73.9855' as a coordinate pair, or plain text for Google to resolve as an address. Traffic is included on DRIVE and TWO_WHEELER. Set include_steps only when you need turn-by-turn text; it makes the response much larger.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitsNoIMPERIAL
originYes
avoid_tollsNo
destinationYes
travel_modeNoDRIVE
alternativesNo
avoid_ferriesNo
include_stepsNo
intermediatesNo
avoid_highwaysNo
departure_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is clear. The description adds valuable behavioral context: traffic inclusion only for DRIVE and TWO_WHEELER, and the performance note about include_steps increasing response size. No contradictions with annotations.

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

Conciseness5/5

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

The description is concise, well-structured, and every sentence adds value. It front-loads the core purpose, then provides key usage details for endpoints, traffic, and a critical performance trade-off. No filler or repetition.

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

Completeness4/5

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

Given 11 parameters, 0% schema description coverage, and presence of an output schema, the description covers the most critical points (endpoint formats, traffic, steps) but omits details on other parameters like units, alternatives, or departure_time. The output schema can handle return format, so the gap is primarily in parameter semantics.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains origin and destination endpoint formats, traffic by travel mode, and include_steps impact, but does not cover all 11 parameters (e.g., units, avoid_tolls, alternatives, intermediates, departure_time). The provided clarifications are helpful but incomplete.

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

Purpose4/5

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

The description clearly states the tool computes a route between two places for multiple travel modes and returns time, distance, and warnings. It distinguishes itself from siblings like compute_route_matrix by focusing on a single route, and from general search tools by its specific route-computation purpose.

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

Usage Guidelines4/5

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

The description explains three valid endpoint formats and their precision trade-offs, and notes that include_steps should only be used when needed due to response size. However, it does not explicitly mention when to use alternatives or compute_route_matrix instead, or when not to use this tool.

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

compute_route_matrixA
Read-only

Get travel time and distance for every origin against every destination in one call — the comparison tool. Use it to pick the nearest branch, rank candidate sites by drive time, or check which of several suppliers is reachable inside a window. Each endpoint uses the same three forms as compute_route. Google bills this per pair, so origins times destinations is capped at 100.

ParametersJSON Schema
NameRequiredDescriptionDefault
originsYes
avoid_tollsNo
travel_modeNoDRIVE
destinationsYes
avoid_ferriesNo
avoid_highwaysNo
departure_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already confirm read-only, non-destructive behavior. The description adds valuable context: Google bills per pair and the matrix is capped at 100 origin-destination pairs. This exceeds what annotations provide, though it doesn't detail error behaviors or rate limits.

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

Conciseness5/5

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

Three sentences with no redundancy. The first sentence defines purpose, the second gives use cases, and the third adds a critical constraint. Every sentencence earns its place.

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

Completeness3/5

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

Covers the high-level concept, use cases, and a key constraint (100-pair cap). However, with 7 parameters and no output schema shown, it fails to specify input format details (e.g., how to represent coordinates or addresses), which is essential for correct usage.

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

Parameters2/5

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

Schema coverage is 0%, yet the description only mentions origins and destinations and vaguely references 'the same three forms as compute_route'. It does not explain the meaning of travel_mode, avoid options, departure_time, or how to format address strings. Relies heavily on external knowledge.

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

Purpose5/5

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

The description clearly states 'Get travel time and distance for every origin against every destination in one call' and labels it 'the comparison tool'. Specific use cases like picking nearest branch or ranking sites are given, and it distinguishes itself from sibling tools like compute_route by doing all pairs in a single call.

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

Usage Guidelines4/5

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

The description provides clear usage contexts (nearest branch, ranking sites, reachability checks) and mentions the 100-pair cap. It implicitly contrasts with compute_route for single routes but does not explicitly state when not to use this tool or name alternatives.

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

geocode_addressA
Read-only

Turn an address, a landmark name, or a plus code into coordinates, a normalized address, and its component parts (street, city, postal code, country). Use this before any tool that needs a latitude and longitude. Returns several candidates when the text is ambiguous.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYes
region_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read-only behavior. The description adds value by noting that the tool returns multiple candidates for ambiguous text, which is useful behavioral context. However, it does not discuss whether there are rate limits, error conditions (e.g., invalid address), or what happens with partial matches, so a 3 is appropriate.

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

Conciseness4/5

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

The description is three sentences long, each adding distinct value: what it does, when to use it, and a key behavioral trait (multiple candidates). It is front-loaded with the primary action. It could be slightly more concise, but there is minimal waste, so a 4 is fair.

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

Completeness4/5

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

The tool has an output schema (not shown), so return value details are handled elsewhere. It has low complexity (2 params, 1 required, no enums). The description covers purpose, usage context, and ambiguous input behavior. It misses clarifying the optional region_code parameter, but overall it is complete enough for the tool's simplicity. A 4 reflects this minor gap.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. The description explains that 'address' accepts addresses, landmarks, or plus codes, adding meaning beyond the schema's simple type. It does not explain the optional 'region_code' parameter (e.g., to bias results), which is a gap, but overall the description provides substantial value for the main parameter. Given zero schema coverage, a 4 is justified for compensating well, though not fully.

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

Purpose5/5

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

The description clearly states the tool's purpose: converting an address, landmark, or plus code into coordinates, a normalized address, and components. It also mentions handling ambiguous input by returning multiple candidates, which distinguishes it from sibling tools like reverse_geocode or validate_address.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this before any tool that needs a latitude and longitude,' giving clear when-to-use guidance. However, it does not mention when not to use it (e.g., for specific place lookups where geocode_place_id or autocomplete_places might be better), so it loses one point.

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

geocode_place_idA
Read-only

Look up the coordinates, normalized address, and address components of a place id returned by a place search. More precise than geocoding the place's name, and cheaper than a full details lookup when location is all you need.

ParametersJSON Schema
NameRequiredDescriptionDefault
place_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds context about output content (coordinates, normalized address, address components) and quality characteristics (precision, cost). It does not cover edge cases like invalid place_ids, but for a simple read-only lookup with annotations, this is adequate.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action and resource, and the second sentence adds valuable comparison guidance. Every word contributes meaning; there is no redundancy or filler.

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

Completeness5/5

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

With only one parameter and an output schema present, the description covers the necessary context: what the tool does, what input it expects (place_id from a prior search), and how it compares to related tools. No additional details are needed for correct invocation.

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

Parameters4/5

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

The only parameter, place_id, has no schema description (coverage 0%). The description adds essential semantic meaning by specifying it is 'a place id returned by a place search,' clarifying the source and format expectations. This compensates fully for the missing schema-level documentation.

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

Purpose5/5

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

The description uses a specific verb ('Look up') with a clear resource ('place id') and enumerates the return content ('coordinates, normalized address, and address components'). It distinguishes itself from sibling tools by noting it is 'More precise than geocoding the place's name' (geocode_address) and 'cheaper than a full details lookup' (get_place_details).

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool: when you have a 'place id returned by a place search' and need location data. It also names alternatives and trade-offs: 'More precise than geocoding the place's name, and cheaper than a full details lookup when location is all you need.' This gives clear decision guidance.

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

get_air_qualityA
Read-only

Get current air quality at a coordinate: the local and universal air quality index, the dominant pollutant and its concentration, and health guidance for the general population and for sensitive groups. Needs the Air Quality API enabled on the project, which is separate from the other Maps APIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYes
longitudeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds meaningful behavioral context: it retrieves current (not historical) data, requires a coordinate, and lists the specific data elements returned. It does not contradict annotations (annotation_contradiction=false).

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

Conciseness5/5

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

The description is two sentences: first sentence states purpose and outputs, second sentence adds a crucial prerequisite. Every sentence adds value, there is no redundancy or fluff, and it is front-loaded with the core function.

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

Completeness4/5

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

For a simple 2-param tool with an existing output schema, the description covers purpose, output details, and a relevant prerequisite. It does not mention error conditions or rate limits, but the presence of the output schema reduces the need to explain return values. Slightly lacking in completeness for edge cases.

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

Parameters2/5

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

Schema description coverage is 0% for both parameters, so the description must compensate. It mentions 'at a coordinate' but adds no further details about the latitude and longitude parameters (e.g., format, range, required constraints). For a low-coverage schema, this is insufficient compensation.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb and resource: 'Get current air quality at a coordinate'. It lists the specific outputs (local/universal AQI, dominant pollutant, concentration, health guidance), which distinguishes it from siblings like get_time_zone, get_elevation, and geocoding tools.

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

Usage Guidelines4/5

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

The description provides a clear usage prerequisite: 'Needs the Air Quality API enabled on the project, which is separate from the other Maps APIs.' This sets appropriate expectations. However, it does not explicitly compare this tool to siblings or give when-to-use/not-use guidance, though the context is clear from the purpose.

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

get_elevationA
Read-only

Get the elevation in metres above sea level at one point or at several. Pass coordinates as a list of 'lat,lng' strings, at most 50. Use it to judge terrain — how much a route climbs, whether a site is on a floodplain, how exposed a location is.

ParametersJSON Schema
NameRequiredDescriptionDefault
coordinatesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds behavioral context: return value (elevation in metres), input format, and maximum coordinate count. It does not disclose error handling, rate limits, or behavior for invalid coordinates, but given the annotations, this is adequate.

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

Conciseness5/5

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

The description is three sentences long, each serving a distinct purpose: purpose statement, input format with limit, and usage examples. No wasted words; the most important information is front-loaded. Every sentence earns its place.

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

Completeness4/5

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

Given the tool has one required parameter and an output schema (not shown but present), the description covers the key aspects: input format, limit, and practical use. It could mention that results correspond to input order or what happens on error, but overall it is fairly complete for a simple read-only tool.

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

Parameters5/5

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

The input schema only defines 'coordinates' as an array of strings with no description. The tool description adds critical meaning: coordinates must be 'lat,lng' strings, limited to 50. This far exceeds the schema's bare type information, making the parameter much more usable.

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

Purpose5/5

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

The description explicitly states the function: 'Get the elevation in metres above sea level at one point or at several.' It specifies the exact input format ('list of 'lat,lng' strings, at most 50') and provides concrete usage scenarios (judge terrain, floodplain, exposure). This clearly distinguishes it from sibling tools which focus on time zones, geocoding, or places.

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

Usage Guidelines4/5

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

The description includes practical use cases ('judge terrain, climb, floodplain, exposure'), implying when to invoke the tool. It also sets a clear limit (at most 50 coordinates). However, it does not explicitly state when not to use the tool or mention alternative tools for elevation data, though no obvious alternatives exist among siblings.

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

get_place_detailsA
Read-only

Read everything Google holds about one place: address, coordinates, opening hours, rating, price level, phone, and website. Takes a place id from a search or autocomplete. Set detail to control cost — enterprise is the tier that carries hours, ratings, and contact details; atmosphere adds reviews and may be disabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNoenterprise
place_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description goes beyond the readOnlyHint annotation by explaining that the 'detail' parameter controls which fields are returned (enterprise vs atmosphere) and that atmosphere 'may be disabled'. This provides concrete behavioral context about varying data availability, which is not captured by annotations alone.

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

Conciseness5/5

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

The description is three sentences with no wasted words. The first sentence front-loads the purpose and output, the second specifies the input source, and the third explains the critical parameter. Every sentence adds value and the structure is logical.

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

Completeness4/5

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

Given the existence of an output schema, the description does not need to detail return fields. It covers both parameters and notes the behavioral nuance of the atmosphere tier. While it omits explicit error handling or rate limits, the tool is a simple read operation with low complexity, making the description sufficiently complete.

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

Parameters4/5

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

With 0% schema coverage, the description fully compensates by explaining the place_id parameter's source and the detail parameter's effect on cost and returned fields. It adds meaning beyond the schema by describing the trade-offs between enterprise and atmosphere tiers, though it does not enumerate all possible values for detail.

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'everything Google holds about one place', listing specific fields. It distinguishes from sibling search and geocoding tools by explicitly requiring a place_id from a search or autocomplete, making its specific role evident.

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

Usage Guidelines3/5

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

The description implies usage after obtaining a place_id by stating 'Takes a place id from a search or autocomplete.' It also advises on the detail parameter for cost control. However, it does not explicitly indicate when not to use this tool or point to alternatives like search_places_by_text or geocode_place_id, leaving the guidance implicit.

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

get_time_zoneA
Read-only

Get the time zone in force at a coordinate: its IANA id, its name, and its offset from UTC including daylight saving. Pass the moment you care about, because the offset changes across the year. Use this before reasoning about whether somewhere is open, or what local time a meeting lands at.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYes
longitudeYes
timestampYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context (that the offset depends on the timestamp, implying seasonal DST variations), which is beyond the annotations. However, it does not specify what the tool returns if the coordinate is invalid or over ocean areas, which could be relevant.

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

Conciseness5/5

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

The description is two sentences, front-loads the purpose, and each sentence adds value. The first specifies what the tool does and returns; the second explains the critical usage note about timestamp dependency. No fluff or repetition.

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

Completeness4/5

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

Given the tool's moderate complexity (three parameters, no enums), the description is adequate. The output schema exists, so return values are documented. The description covers the key nuance of DST and provides use-case context. It does not mention edge cases like invalid coordinates, but for a read-only tool with an output schema, this is not a critical gap.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains the semantic significance of the timestamp parameter ('Pass the moment you care about, because the offset changes across the year') and mentions the output includes IANA id and offset, which adds meaning beyond param names. Latitude and longitude are standard, but the timestamp's importance is well-clarified.

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

Purpose5/5

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

The description clearly states the tool's purpose: to get the time zone at a coordinate, including IANA id, name, and UTC offset with DST. It distinguishes itself from sibling tools like get_elevation and get_air_quality by focusing on time zone retrieval.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: it tells the agent to use this tool when needing to reason about local times or business hours, and emphasizes the importance of passing the relevant timestamp because offsets change seasonally. This effectively differentiates it from other geographic tools.

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

reverse_geocodeA
Read-only

Turn a latitude and longitude into the addresses at that point, from the exact street address outward to the neighbourhood, city, and country. Use this to describe where a coordinate is.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYes
longitudeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, but the description adds value by detailing the hierarchical address output (street, neighbourhood, city, country). This goes beyond the annotation structure and helps the agent understand the returned data shape. No contradiction found.

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

Conciseness5/5

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

The description is brief (two sentences) and front-loaded with the core action. Every sentence contributes meaning, with zero redundancy or filler.

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

Completeness4/5

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

The tool is simple (2 required numeric params) and an output schema exists, so the description need not explain return values. It covers the output concept (address hierarchy) adequately. Minor omission: no mention of potential failure cases (e.g., invalid coordinates) but acceptable given the tool's straightforward nature.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. However, it only mentions 'latitude' and 'longitude' generically without specifying valid ranges, required precision, or formatting. The description adds minimal semantic value beyond the schema's type and name.

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

Purpose5/5

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

The description clearly states the verb 'Turn' (convert) and the resource ('latitude and longitude' into 'addresses'), and specifies the hierarchical output scope. It effectively distinguishes from siblings like geocode_address (address→coords) and geocode_place_id (place ID→coords).

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

Usage Guidelines4/5

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

The description says 'Use this to describe where a coordinate is,' which gives clear context. While it does not explicitly mention when not to use it or name alternatives, the sibling list implies those distinctions. Lacks explicit exclusions but is sufficient for a simple tool.

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

search_places_by_textA
Read-only

Search for places by describing them in words — 'ramen near Union Square', 'hardware stores in Asheville NC', 'EV charging on I-81'. Returns up to 20 places per page and a token for the next page, to a maximum of 60 places. Set detail to control how much you get back and what it costs: essentials (address and coordinates), pro (adds names and business status), enterprise (adds ratings, hours, phone, and website), atmosphere (adds reviews and summaries; may be disabled).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
detailNopro
rank_byNoRELEVANCE
latitudeNo
open_nowNo
longitudeNo
page_sizeNo
min_ratingNo
page_tokenNo
radius_metresNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds valuable behavioral details beyond annotations: pagination limits (20 per page, max 60), detail levels with cost trade-offs, and the fact that atmosphere detail may be disabled. This is above baseline transparency.

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

Conciseness4/5

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

The description is two sentences: the first gives purpose and examples, the second details pagination and detail levels. It is efficient but could be slightly tighter (e.g., 'returns up to 20 places per page and a token...' is clear). No wasted words.

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

Completeness4/5

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

Given 10 parameters, 0% schema coverage, and no enum constraints, the description covers the most critical aspects: query, detail, and pagination. It does not elaborate on rank_by, location-based parameters (latitude/longitude, radius_metres), open_now, or min_rating, but the tool is simple enough that these are likely inferred from parameter names. An output schema exists, so return behavior is defined. Slightly more context on location parameters would push to 5.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate heavily. It does: it explains the detail parameter's options and trade-offs ('essentials', 'pro', 'enterprise', 'atmosphere') and clarifies pagination semantics (page_size, page_token). The description adds significant meaning beyond the bare schema.

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

Purpose5/5

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

The description uses a specific verb ('Search') and resource ('places'), and clearly distinguishes this tool from siblings like search_places_nearby by emphasizing text-based description queries. Examples make the scope immediately obvious.

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

Usage Guidelines4/5

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

The description implicitly guides when to use this tool (for natural language queries) vs. siblings like search_places_nearby (which likely uses coordinates or proximity). It does not explicitly state when not to use it or name alternatives, but context signals and sibling names make differentiation clear.

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

search_places_nearbyA
Read-only

List places inside a circle, ranked by popularity or by distance from its centre. Use this when you have a point and want what is around it; use search_places_by_text when you can describe what you want. Up to 20 places, no paging. Filter by type with values such as restaurant, pharmacy, gas_station, hospital, or park.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNopro
rank_byNoPOPULARITY
latitudeYes
longitudeYes
max_resultsNo
radius_metresNo
included_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, signaling a safe read operation. The description adds critical behavioral details beyond annotations: the radius-based circle constraint, popularity/distance ranking, the 20-result limit (even though the parameter max_results has a default of 10, the description clarifies the absolute ceiling), and the lack of paging. It doesn't mention that results are returned as a JSON array of place objects or any specific output format, but the presence of an output schema alleviates that need.

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

Conciseness4/5

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

The description is three sentences, all essential. The first sentence states the core operation and ranking. The second provides sibling differentiation. The third adds critical constraints and examples. This is tight and front-loaded, though the lack of enum details for rank_by and implicitly for detail slightly reduces completeness for a zero-coverage schema.

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

Completeness4/5

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

Given 7 parameters, 0% schema coverage, and a relevant sibling, the description covers the most important aspects: spatial use case, alternative tool, output limits, and filter examples. It misses explaining the 'detail' parameter and the exact format for rank_by, but those are less critical for an initial call. The output schema presumably details return fields, so the description's brevity on output is acceptable.

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

Parameters4/5

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

Schema description coverage is 0%, meaning the description must fully explain the parameters. The description mentions the circle concept (implying radius_metres and the centre latitude/longitude), the ranking (rank_by), and the filter (included_types with examples). However, it does not explain the 'detail' parameter or the exact valid values for 'rank_by' (e.g., POPULARITY vs. DISTANCE). It also does not explicitly describe the bounds or meaning of latitude/longitude. Despite these gaps, the explanation adds substantial value beyond the bare schema titles.

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

Purpose5/5

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

The description uses specific verbs ('List places inside a circle') and names the ranking bases ('popularity or by distance'). It clearly distinguishes this tool from its sibling 'search_places_by_text' by contrasting spatial vs. text-based queries.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('when you have a point and want what is around it') and when to use the sibling ('use search_places_by_text when you can describe what you want'). It also notes key constraints: up to 20 results, no paging, and gives examples of valid filter types.

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

validate_addressA
Read-only

Check whether a postal address is real and deliverable, and get back the corrected, standardized version plus a note of anything that was missing, unconfirmed, or inferred. Use this before relying on an address a user typed; use geocode_address instead when you only need coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
region_codeYes
address_linesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description doesn't need to restate safety. It goes beyond annotations by disclosing the tool returns a corrected version plus notes about missing/unconfirmed/inferred items. However, it doesn't mention if authentication or rate limits apply; a 4 is appropriate given annotations cover the core behavioral profile and the description adds meaningful context.

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

Conciseness5/5

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

Two concise sentences front-load the key action and return value, then immediately provide usage guidance with an alternative. Every sentence adds value, zero wasted words.

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

Completeness4/5

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

With only 2 params and an output schema present, the description doesn't need to explain return structure. It covers purpose, when to use, and behavioral output. It doesn't specify parameter formats or required permissions, but for a simple read-only validation tool with few params, this is nearly complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It doesn't explain what address_lines expects (e.g., format, order) or what region_code means (e.g., ISO code). The schema has two parameters but the description provides zero parameter-specific guidance. Baseline is 3 due to low coverage, but the description adds no parameter detail, so 3 is the maximum possible here.

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

Purpose5/5

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

The description states exactly what the tool does: check if a postal address is real and deliverable, and return a corrected, standardized version with notes about missing or inferred information. The verb 'validate' paired with 'address' is specific, and the description clearly distinguishes this tool from siblings like geocode_address.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool ('before relying on an address a user typed') and when not to (use geocode_address when you only need coordinates). This direct guidance with a named alternative clarifies decision-making.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv0.1.0
    • First observedautocomplete_places
    • First observedcompute_route
    • First observedcompute_route_matrix
    • First observedgeocode_address
    • First observedgeocode_place_id
    • First observedget_air_quality
    • First observedget_elevation
    • First observedget_place_details
    • First observedget_time_zone
    • First observedreverse_geocode
    • First observedsearch_places_by_text
    • First observedsearch_places_nearby
    • First observedvalidate_address

TDQS

A4.3/5.0

Scored across 13 tools

Disambiguation4/5

Most tools have clearly distinct purposes: geocoding tools separate address, coordinate, and place ID lookups; search tools differ by text query vs. nearby; compute_route vs. compute_route_matrix are well-differentiated. However, search_places_by_text and search_places_nearby could overlap in some use cases (e.g., 'restaurants near me' vs. a point), and the descriptions partially compensate.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern throughout (e.g., geocode_address, search_places_by_text, compute_route, get_place_details). All names are descriptive and predictable, making it easy to infer what each tool does from its name alone.

Tool Count5/5

With 13 tools, the set is well-scoped for a Google Maps MCP server. Each tool covers a distinct geographic or mapping function—geocoding, search, routing, elevation, time zone, air quality, validation—without unnecessary bulk. The count feels complete and not overwhelming.

Completeness4/5

The server covers a comprehensive set of mapping operations: geocoding (forward, reverse, place ID, validation), place search (text, nearby, autocomplete, details), routing (single and matrix), and supplemental data (elevation, time zone, air quality). A minor gap is the lack of a tool for displaying maps or static map images, but this is not core to the MCP paradigm.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables location-aware AI agents to search for nearby places, get detailed place information including hours and ratings, and calculate routes with turn-by-turn directions using Google Maps APIs.
    22
    -
  • A
    license
    B
    quality
    D
    maintenance
    Provides 14 comprehensive tools for geocoding, navigation, and visual mapping using Google Maps APIs. It also offers detailed environmental data including weather forecasts, air quality indices, and solar irradiance for location-based analysis and trip planning.
    14
    10
    MIT