google-maps-harness
google-maps-harness
에이전트를 위한 13개의 읽기 전용 Google Maps Platform 도구: 장소의 위치, 주변에 무엇이 있는지, 이동 시간, 도착 시의 상태.
이 저장소에서 두 가지 방법으로 설치할 수 있습니다:
대상 | 설정 | |
Skill | claude.ai 및 Claude Code | zip 파일 업로드. claude.ai에서 도메인 허용 목록 항목 필요. |
(MCP) Model Context Protocol 서버 | Claude Code, Claude Desktop | venv 및 하나의 등록 명령어. |
동일한 기능과 동일한 제어 방식을 제공합니다. Skill이 존재하는 이유는 claude.ai가 로컬 서버를 실행할 수 없기 때문이며, MCP 서버는 로컬 프로세스가 적합한 환경에 더 잘 맞기 때문에 존재합니다.
여기서는 쓰기 작업이 없으므로, 이 도구가 관리하는 위험은 손상이 아닌 비용, 컨텍스트, 그리고 Google이 반환하는 정보에 대한 신뢰입니다.
에이전트가 얻는 것
도구 | 답변 |
| 이 주소, 랜드마크 또는 플러스 코드는 어디인가요? |
| 이 좌표에는 무엇이 있나요? |
| 이 장소 ID는 정확히 어디인가요? |
| 이 주소는 실제이며 배송 가능한가요? |
| "유니언 스퀘어 근처 라멘"과 일치하는 장소는? |
| 이 원 안에 카테고리별로 무엇이 있나요? |
| 한 장소의 영업 시간, 평점, 가격, 전화번호, 웹사이트. |
| 사용자가 아마도 의도한 것은 무엇인가요? |
| A에서 B까지 교통 상황을 포함해 얼마나 걸리나요? |
| 이 열 개 중 어느 것이 저 열 개 중 가장 가까운가요? |
| 지금 또는 특정 날짜에 그곳의 시간은? |
| 이 지점 또는 이 지점들의 프로파일의 고도는? |
| 그곳의 공기 상태는 어떤가요? 누가 주의해야 하나요? |
compute_route_matrix는 조회보다는 결정을 위해 만들어진 도구입니다. 한 번의 호출로 모든 후보를 모든 옵션과 비교하여 순위를 매기고, 한 번의 청구서가 발생합니다.
Skill은 동일한 열세 가지를 하위 명령어(geocode, search-nearby, matrix)로 노출하며, 자체 설정을 진단하는 check 명령어도 포함합니다.
Related MCP server: Google Maps MCP Server Enhanced
1단계 — Google Cloud (두 경로 모두 필요)
API 활성화
Maps APIs → API list에서 결제가 활성화된 프로젝트에서 다음 API를 활성화하세요. Maps Platform은 무료 월별 크레딧 내에서도 결제 계정이 연결되지 않으면 모든 요청을 거부합니다.
API | 활성화되는 도구 |
Geocoding API |
|
Places API (New) | 네 개의 |
Routes API |
|
Time Zone API |
|
Elevation API |
|
Address Validation API |
|
Air Quality API |
|
특히 **Places API (New)**를 주의하세요. 콘솔에는 레거시 "Places API"도 나열되어 있으며, 그것만 활성화하면 네 개의 장소 도구 모두에서 403 오류가 발생합니다.
도달 가능하게 하려는 API만 활성화하세요. API가 꺼진 도구는 해당 API 이름을 명시하는 메시지와 함께 거부되며, 이는 의도적으로 더 작은 표면을 운영하는 좋은 방법입니다.
키 생성 및 제한
Maps Platform credentials에서 API 키를 생성하고 페이지를 떠나기 전에 두 가지 제한을 설정하세요:
애플리케이션 제한 → 없음. 이 키는 브라우저나 휴대폰이 아닌 서버 측 프로세스에서 사용됩니다. HTTP 리퍼러 및 Android/iOS 제한은 모두 실패합니다.
API 제한 → 키 제한, 위의 API만 정확히 선택합니다. 제한되지 않은 키는 프로젝트의 모든 Google API에 대해 청구되므로, 유출된 키는 제한된 계정이 아닌 열린 계정이 됩니다.
각 API의 할당량 페이지에서 일일 할당량 상한도 설정하세요. Google은 자체 경계에서 이를 적용하며, 클라이언트에서 무엇이 실행되든 지출 상한이 유지되는 유일한 곳입니다.
2a단계 — Skill로 설치
패키지 빌드
python3 skill/build.py # dist/google-maps.zip — no credential
python3 skill/build.py --with-key .env # also dist/google-maps-personal.zip두 가지 빌드가 있습니다. claude.ai에는 키를 보관할 곳이 없기 때문입니다. 설정할 환경도 없고 영구적인 홈 디렉토리도 없으므로, 업로드된 키 파일은 한 번의 대화 동안만 유지됩니다. 개인 빌드는 키를 Skill 내부에 번들로 포함하며, 한 번 업로드하면 유지됩니다.
빌드 | 포함 내용 | 업로드 대상 |
| 자격 증명 없음 | 공유하는 모든 사람 |
| 사용자 키 | 자신의 계정에만 |
이 편의성은 실제 노출입니다. 키는 Anthropic의 표준 보존 정책에 따라 Skill 아티팩트에 저장됩니다. 따라서 두 가지는 주의가 아닌 메커니즘에 의해 분리됩니다. 다른 파일 이름, 개인 빌드 자체의 SKILL.md에 있는 공유 금지 배너, 작성된 모든 위치에서 gitignored되는 *-personal.zip, 그리고 작업 트리에 키가 있어도 공유 가능한 빌드에 키가 도달하지 않음을 확인하는 tests/test_skill_build.py.
claude.ai에 설치
Settings → Capabilities → Skills, zip 파일 업로드.
Settings → Capabilities → Code execution → Domain allowlist, 다음 여섯 개 추가:
geocode.googleapis.com
places.googleapis.com
routes.googleapis.com
addressvalidation.googleapis.com
airquality.googleapis.com
maps.googleapis.com2단계는 선택 사항이 아니며 사람들을 당황하게 만드는 부분입니다. 샌드박스는 허용된 도메인만 허용하는 관리형 프록시를 통해 인터넷에 연결됩니다. 기본 설정(Package managers only)에서는 키가 아무리 좋아도 모든 Maps 호출이 CONNECT 터널에서 403 오류로 동일하게 실패합니다.
여섯 개의 명명된 호스트가 All domains보다 낫습니다. 이 허용 목록은 모델이 작성한 코드를 실행하는 샌드박스와 공개 인터넷 사이의 유일한 장벽이며, 하나의 Skill을 수정하기 위해 모든 것을 허용하도록 확장하는 것은 쉽게 되돌릴 수 없는 제어권을 소비하는 것입니다. 도메인별 목록은 조직 수준 기능입니다. 요금제가 전부 아니면 전무만 제공한다면, 그것이 당신 앞에 놓인 트레이드오프입니다.
샌드박스가 스크립트가 무시할 프록시를 통해 라우팅하는 경우 --use-proxy를 추가하거나 GOOGLE_MAPS_USE_PROXY=1을 설정하세요. Why --use-proxy exists를 참조하세요.
Claude Code에 설치
cp -R skill/google-maps ~/.claude/skills/전체 네트워크 액세스, 허용 목록 필요 없음.
확인
Claude에게 Skill의 검사를 실행하도록 요청하거나 직접 실행하세요:
python3 skill/google-maps/scripts/maps.py check --allKEY 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
...외부에서 동일하게 보이는 세 가지 실패(키 없음, 경로 없음, API 꺼짐)를 구분하며 키의 어떤 부분도 출력하지 않습니다.
2b단계 — 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_KEYclaude mcp add google-maps -- /absolute/path/to/.venv/bin/google-maps-harness --env-file /absolute/path/to/.env키는 명령줄이 아닌 파일에 들어갑니다. -e로 전달된 값은 ~/.claude.json과 셸 기록에 저장되며, 둘 다 소유자 전용이 아닙니다. 서버는 지정되지 않은 .env 파일을 읽지 않으므로 우연히 로드되는 일이 없습니다.
코드를 변경한 후 클라이언트를 다시 시작하세요. 등록된 프로세스는 시작 시 모듈을 로드하며, 그렇지 않으면 이전 코드를 계속 실행합니다.
구성
키를 제외한 모든 설정은 선택 사항입니다. Skill은 명령줄 플래그와 동일한 선택 사항을 사용합니다. python3 scripts/maps.py --help에 전체 목록이 있습니다.
변수 | 기본값 | 기능 |
| — | 필수. Maps Platform 키. |
|
| 요청당 연결 및 읽기 제한 시간. |
|
| 하나의 도구 호출이 수행할 수 있는 업스트림 요청 수. |
|
| 하나의 도구 호출이 업스트림에서 소비할 수 있는 실제 시간. |
| 설정 안 함 | 모호한 이름의 동점을 깨는 두 글자 지역 코드. |
|
| 장소 이름 및 경로 안내 언어. |
|
| 장소 조회 시 리뷰 및 편집 요약을 요청하도록 허용. |
|
| Skill 전용. 환경이 지정하는 프록시를 통해 라우팅. |
비용 제어
Google은 요청당 청구하며, Places는 요청하는 가장 비싼 필드를 기준으로 청구합니다. 에이전트와 청구서 사이에는 세 가지 제어 장치가 있습니다.
세부 정보 계층이 가격을 결정합니다. 모든 Places 도구는
detail을 사용합니다:essentials(주소 및 좌표),pro(이름 및 비즈니스 상태 추가),enterprise(영업 시간, 평점, 전화번호, 웹사이트 추가),atmosphere(리뷰 추가). 에이전트는 계층을 지정하고 필드 마스크를 직접 구성하지 않으므로 조용히 모든 것을 요청할 수 없습니다.atmosphere계층은 기본적으로 꺼져 있습니다. 가장 비싼 계층이면서 낯선 사람이 작성한 산문을 모델의 컨텍스트로 가져오는 계층입니다. 의도적으로 켜거나 전혀 사용하지 마세요.모든 호출에는 상한선이 있습니다. 25개의 업스트림 요청과 30초입니다. 각 결과는
upstream_requests를 보고하므로 호출에 소비된 내용이 청구 콘솔뿐만 아니라 답변에도 표시됩니다.
compute_route_matrix는 Google 자체 625개보다 훨씬 적은 100개의 출발지-목적지 쌍으로 제한됩니다. Google은 매트릭스를 쌍별로 청구하기 때문입니다.
보안 태세
키는 한 곳에 보관됩니다. 전송만 키를 첨부합니다. 어떤 도구나 다른 모듈도 키를 처리하지 않습니다. Skill은 또한 명령줄 인수로 키를 받지 않습니다. argv는
ps를 통해 볼 수 있고 셸 기록에 남기 때문입니다.전송된 어떤 것도 리디렉션될 수 없습니다. 리디렉션은 완전히 거부되며 모든 소켓이 열리기 전에 호스트 허용 목록이 확인됩니다. 이 API 중 세 개는 키를 쿼리 문자열에 포함하므로, 리디렉션을 따르면 청구 가능한 자격 증명이 낯선 사람에게 넘어갑니다.
모든 오류는 정리됩니다. 키는 클라이언트가 구축되기 전에 등록되며, 도구를 떠나는 모든 예외는 먼저 정리기를 통과합니다.
Google이 반환하는 모든 것은 신뢰할 수 없는 것으로 표시됩니다. 장소 이름, 편집 요약, 리뷰 및 경로 안내는 비즈니스 소유자와 일반인이 작성합니다. 모든 응답에는 모델에게 해당 텍스트를 데이터로 취급하라는 경고가 포함되며, 모든 문자열은 먼저 제어 문자가 제거됩니다.
모든 인수는 요청이 되기 전에 검증됩니다. 좌표는 유한해야 합니다. JSON 파서는 허용하면
NaN을 전달합니다. 장소 ID는 문자 클래스와 일치한 다음 URL 경로로 퍼센트 인코딩됩니다. 자유 텍스트는 길이가 제한되고 제어 문자를 거부합니다.응답은 두 번 제한됩니다. 소켓에서 4MiB, 모델의 컨텍스트로 96KiB.
--use-proxy가 존재하는 이유
프록시 환경 변수는 기본적으로 무시됩니다. 일반적인 머신에서 이 기본값은 키를 보호합니다. 이러한 변수 중 하나는 모든 요청을 다른 사람이 선택한 호스트를 통해 라우팅합니다.
샌드박스는 이를 반전시킵니다. 관리형 송신 프록시가 유일한 출구인 경우, 이를 무시하는 것은 아무것도 보호하지 않습니다. 어떤 요청도 나가지 않음을 보장합니다. 따라서 선택은 가정이 아닌 명시적이며, 필요로 하는 환경이 그것을 알고 있기 때문에 기본적으로 꺼져 있습니다.
그것이 켜져 있어도 두 가지는 여전히 유지됩니다: 호스트 허용 목록은 URL이 생성되기 전에 실행되므로 코드가 새로운 목적지로 유도될 수 없으며, CONNECT 터널은 프록시가 요청에 개입하지 못하게 합니다. 자체 인증 기관으로 TLS를 종료하는 프록시는 키를 볼 수 있습니다 — 동일한 당사자가 이미 코드를 실행하고 있는 관리형 샌드박스에서는 그렇지만, 가정하기보다는 알아두는 것이 좋습니다.
이것이 의도적으로 하지 않는 것
쓰기 없음. Google Maps Platform은 여기서 의미 있는 쓰기 표면이 없으며, 이것은 아무것도 노출하지 않습니다.
호출자가 제공하는 필드 마스크 없음. 필드 마스크는 HTTP 헤더 값입니다. 모델 출력에서 조합하면 첫 번째 개행 문자를 기다리는 헤더 인젝션이 되며, 모든 호출에서 가장 비용이 많이 드는 필드를 요청하는 방법이 됩니다.
로컬 지출 원장 없음. Google의 자체 API별 일일 한도는 에지에서 예산을 시행하며, 이는 클라이언트에서 무엇이 실행되든 관계없이 유지됩니다. 이를 로컬에서 복제하면 상태, 잠금 및 두 번째 숫자를 추가로 유지해야 합니다.
지도 이미지 또는 정적 타일 없음. 그것들은 모델이 읽을 수 없는 바이트이며, 그 URL은 키를 가지고 있습니다.
실행 위치
표면 | 기술 | MCP 서버 |
Claude Code | 예, 전체 네트워크 | 예 |
Claude Desktop | — | 예 |
claude.ai | 예, 도메인이 허용 목록에 추가되면 | 아니요 — 로컬 프로세스를 실행할 수 없음 |
Claude API 컨테이너 | 아니요 — 네트워크 접근 불가, 구성 불가능 | 아니요 |
개발
.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 .테스트는 오프라인으로 실행됩니다. 스위트의 어떤 것도 소켓을 열거나 실제 키가 필요하지 않습니다 — 가짜 전송은 요청이 무엇이었을지를 기록하며, 이는 테스트가 모의 객체의 호출 횟수가 아닌 와이어 상에서 어설션할 수 있게 합니다.
Skill은 Python 3.9를 대상으로 하고 서버는 3.11을 대상으로 합니다. 왜냐하면 Skill이 이 프로젝트가 선택하지 않는 샌드박스로 배송되기 때문입니다. CI는 바로 그 이유로 Skill을 3.9에서 실행합니다. 린터가 한 번 timezone.utc를 3.11 전용 datetime.UTC로 다시 작성했으며, 3.11과 3.14에서 실행되는 스위트는 이를 볼 수 없었습니다.
라이선스
MIT.
Available Tools
13 toolsautocomplete_placesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | No | ||
| longitude | No | ||
| partial_text | Yes | ||
| radius_metres | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_routeARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| units | No | IMPERIAL | |
| origin | Yes | ||
| avoid_tolls | No | ||
| destination | Yes | ||
| travel_mode | No | DRIVE | |
| alternatives | No | ||
| avoid_ferries | No | ||
| include_steps | No | ||
| intermediates | No | ||
| avoid_highways | No | ||
| departure_time | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_matrixARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| origins | Yes | ||
| avoid_tolls | No | ||
| travel_mode | No | DRIVE | |
| destinations | Yes | ||
| avoid_ferries | No | ||
| avoid_highways | No | ||
| departure_time | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_addressARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| region_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_idARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| place_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_qualityARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | ||
| longitude | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_elevationARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| coordinates | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_detailsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | enterprise | |
| place_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_zoneARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | ||
| longitude | Yes | ||
| timestamp | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_geocodeARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | ||
| longitude | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_textARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| detail | No | pro | |
| rank_by | No | RELEVANCE | |
| latitude | No | ||
| open_now | No | ||
| longitude | No | ||
| page_size | No | ||
| min_rating | No | ||
| page_token | No | ||
| radius_metres | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_nearbyARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | pro | |
| rank_by | No | POPULARITY | |
| latitude | Yes | ||
| longitude | Yes | ||
| max_results | No | ||
| radius_metres | No | ||
| included_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_addressARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| region_code | Yes | ||
| address_lines | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
13 tool updates
v0.1.0- First observed
autocomplete_places - First observed
compute_route - First observed
compute_route_matrix - First observed
geocode_address - First observed
geocode_place_id - First observed
get_air_quality - First observed
get_elevation - First observed
get_place_details - First observed
get_time_zone - First observed
reverse_geocode - First observed
search_places_by_text - First observed
search_places_nearby - First observed
validate_address
TDQS
Scored across 13 tools
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.
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.
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.
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
Related MCP Connectors
- geoOAuthco.thinair
Geocoding, routing, isochrones, traffic, weather, and place search for AI agents. 19 MCP tools.
The Google Maps MCP server is a fully-managed server provided by the Maps Grounding Lite API that connects AI applications to Google Maps Platform services. It provides three main tools for building LLM applications: searching for places, looking up weather information, and computing routes with details like distance and travel time. The server acts as a proxy that translates Google Maps data into a format that AI applications can understand, enabling agents to accurately answer real-world location and travel queries.
Maps built for agents: routing incl. truck/ADR, geocoding, matrices, isochrones — 34 tools.
Google Maps MCP Pack — geocoding, places, directions, distance matrix, elevation.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables 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-
- AlicenseBqualityDmaintenanceProvides 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.1410MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to access Google Maps services including places search, details, directions, geocoding, and nearby search through natural language.620 PyPI2MIT
- AlicenseAqualityCmaintenanceProduction-ready MCP server for Google Maps Platform APIs, providing 11 tools for directions, places, geocoding, traffic, and road data to empower AI agents with location intelligence.114Apache 2.0