Skip to main content
Glama
oakley7247

google-maps-harness

by oakley7247

google-maps-harness

エージェント向けの13の読み取り専用 Google Maps Platform ツール:場所の位置、周辺情報、移動時間、到着時の状況。

このリポジトリからインストールする方法は2つあります。

対象

セットアップ

スキル

claude.ai および Claude Code

zip をアップロード。claude.ai ではドメイン許可リストへの登録が必要。

(MCP) Model Context Protocol サーバー

Claude Code, Claude Desktop

venv と1つの登録コマンド。

どちらも同じ機能を同じ制御で提供します。スキルは claude.ai がローカルサーバーを起動できないために存在します。MCP サーバーは、ローカルプロセスで問題ない場合に適しているため存在します。

このツールは書き込みを一切行わないため、管理するリスクは損害ではなく、コスト、コンテキスト、そして Google が返す情報への信頼です。

エージェントが得られるもの

ツール

回答

geocode_address

この住所、ランドマーク、プラスコードの位置は?

reverse_geocode

この座標には何がある?

geocode_place_id

このプレイス ID の正確な位置は?

validate_address

この住所は実在し、配送可能か?

search_places_by_text

「ユニオンスクエア近くのラーメン」に合致する場所は?

search_places_nearby

この円の内側には、カテゴリ別に何がある?

get_place_details

1つの場所の営業時間、評価、価格帯、電話番号、ウェブサイト。

autocomplete_places

ユーザーはおそらく何を意味していたか?

compute_route

A から B まで、交通状況込みでどのくらい時間がかかる?

compute_route_matrix

これら10個のうち、あれら10個のうちどれが最も近いか?

get_time_zone

そこでの現在時刻、または指定日の時刻は?

get_elevation

この地点、またはこの地点列の標高は?

get_air_quality

そこでの空気の質は?誰が注意すべきか?

compute_route_matrix は、検索ではなく判断のために作られたツールです。1回の呼び出しで、すべての候補をすべてのオプションに対してランク付けし、1回の請求になります。

スキルは同じ13個をサブコマンドとして公開します(geocode、search-nearby、matrix)。さらに、自身のセットアップを診断する check コマンドも含まれます。

Related MCP server: Google Maps MCP Server Enhanced

ステップ1 — Google Cloud(両方のパスで必要)

API を有効にする

Map API → API 一覧 で、請求先が設定されているプロジェクトに対してこれらを有効にします。Maps Platform は、無料の月間クレジットの範囲内でも、請求先アカウントが紐付いていないとすべてのリクエストを拒否します。

API

有効になるツール

Geocoding API

geocode_address, reverse_geocode, geocode_place_id

Places API (New)

4つの *_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

特に Places API (New) に注意してください。コンソールには従来の「Places API」も表示されますが、そちらだけを有効にすると、4つの場所ツールすべてで403エラーが発生します。

公開したいものだけを有効にしてください。API がオフのツールを使用すると、その名前を明示したエラーメッセージが返されるため、意図的に機能範囲を絞って運用するのに適しています。

キーを作成して制限を設定する

Maps Platform 認証情報 で、API キーを作成し、ページを離れる前に両方の制限を設定します。

  • アプリケーションの制限 → なし。 このキーはブラウザやスマートフォンではなく、サーバーサイドのプロセスで使用されます。HTTP リファラー制限や Android/iOS 制限はすべて失敗します。

  • API の制限 → キーを制限 し、上記の API のみにチェックを入れます。制限のないキーは、プロジェクト上のすべての Google API に対して課金されるため、漏洩すると上限のないアカウントになります。

各 API の [割り当て] ページで、1日の割り当て上限も設定してください。Google は自身のエッジでこれを強制します。これが、クライアント側で何が実行されていても支出上限を確実に守る唯一の方法です。

ステップ 2a — スキルとしてインストールする

パッケージをビルドする

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

2つのビルドがあります。claude.ai にはキーを保存する場所がないためです。環境変数を設定する場所も、永続的なホームディレクトリもないため、アップロードされたキーファイルは1回の会話でしか持続しません。パーソナルビルドはキーをスキル内にバンドルします。これは一度アップロードすれば永続的に使用できます。

ビルド

内容

アップロード先

google-maps.zip

認証情報なし

共有する相手全員

google-maps-personal.zip

あなたのキー

自分のアカウントのみ

この利便性には実際のリスクが伴います。キーは Anthropic の標準的な保持ポリシーに従ってスキルアーティファクトに保存されます。そのため、2つは注意ではなく仕組みによって分離されています。異なるファイル名、パーソナルビルドの SKILL.md 内の共有禁止のバナー、*-personal.zip は書き込まれた場所で gitignore され、tests/test_skill_build.py は、ワーキングツリーにキーが存在する場合でも共有可能なビルドにキーが含まれていないことをアサートします。

claude.ai にインストールする

  1. 設定 → 機能 → スキル で、zip をアップロードします。

  2. 設定 → 機能 → コード実行 → ドメイン許可リスト で、次の6つを追加します。

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

ステップ2は必須であり、見落とされがちです。サンドボックスは管理されたプロキシを通じてインターネットにアクセスし、許可されたドメインのみが通れます。デフォルト設定(パッケージマネージャーのみ)では、キーがどんなに正しくても、すべての Maps 呼び出しが CONNECT トンネルで403エラーになって失敗します。

6つの名前付きホストは すべてのドメイン よりも優れています。その許可リストは、モデルが記述したコードを実行するサンドボックスとオープンインターネットの間の唯一の防御であり、1つのスキルを修正するためにこれをすべてに拡大すると、簡単には戻せない制御を消費することになります。ドメインごとのリストは組織レベルの機能です。あなたのプランが「すべてか無か」しか提供しない場合、それがあなたの目の前にあるトレードオフです。

サンドボックスが、スクリプトが通常は無視するプロキシを経由する場合、--use-proxy を追加するか、GOOGLE_MAPS_USE_PROXY=1 を設定してください。--use-proxy が存在する理由 を参照。

Claude Code にインストールする

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

フルネットワークアクセス。許可リストは不要。

確認する

Claude にスキルのチェックを実行するよう依頼するか、自分で実行します。

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
...

外部からは同じに見える3つの障害(キーなし、ルートなし、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_KEY
claude mcp add google-maps -- /absolute/path/to/.venv/bin/google-maps-harness --env-file /absolute/path/to/.env

キーはそのコマンドラインではなく、ファイルに記述します。-e で渡された値は ~/.claude.json とシェル履歴に保存され、どちらも所有者のみがアクセスできるわけではありません。サーバーは指定された .env 以外は読み取らないため、誤って読み込まれることはありません。

コードを変更した後はクライアントを再起動してください。登録されたプロセスは起動時にモジュールを読み込むため、再起動しないと古いコードが実行され続けます。

設定

キー以外のすべての設定はオプションです。スキルはコマンドラインフラグとして同じ選択肢を受け取ります。python3 scripts/maps.py --help で一覧表示されます。

変数

デフォルト

機能

GOOGLE_MAPS_API_KEY

—

必須。Maps Platform キー。

GOOGLE_MAPS_TIMEOUT_SECONDS

10

リクエストごとの接続および読み取りタイムアウト。

GOOGLE_MAPS_MAX_REQUESTS_PER_CALL

25

1回のツール呼び出しが行う上流リクエスト数。

GOOGLE_MAPS_MAX_SECONDS_PER_CALL

30

1回のツール呼び出しが上流で費やす実時間。

GOOGLE_MAPS_REGION_CODE

未設定

あいまいな名前の優先順位を決定する2文字の地域コード。

GOOGLE_MAPS_LANGUAGE_CODE

en

場所の名前やルート案内の言語。

GOOGLE_MAPS_ALLOW_ATMOSPHERE_FIELDS

false

場所の検索でレビューや編集者による概要をリクエストできるようにする。

GOOGLE_MAPS_USE_PROXY

false

スキルのみ。環境変数で指定されたプロキシを経由する。

コストを管理する

Google はリクエストごとに課金し、Places は要求する最も高価なフィールドに基づいて課金します。エージェントと請求書の間には3つの制御があります。

  • 詳細度の階層で価格が決まる。 すべての Places ツールは detail パラメータを受け取ります。essentials(住所と座標)、pro(名前と営業状況を追加)、enterprise(営業時間、評価、電話番号、ウェブサイトを追加)、atmosphere(レビューを追加)。エージェントは階層を指定し、フィールドマスクを自分で構成することはないため、こっそりとすべてを要求することはできません。

  • atmosphere 階層はデフォルトでオフ。 最も高価な階層であると同時に、見知らぬ人が書いた散文をモデルのコンテキストに引き込む階層です。意図的に有効にするか、まったく使用しないでください。

  • すべての呼び出しにハードリミットあり。 上流リクエスト25回、30秒。各結果は upstream_requests を報告するため、呼び出しに費やされた金額は請求コンソールだけでなく、回答にも表示されます。

compute_route_matrix は、Google 自身の625ペアを大幅に下回る100の起点-終点ペアに制限されています。Google はペアごとにマトリックスを課金するためです。

セキュリティ体制

  • キーは1か所で保持。 トランスポートのみがキーを付加します。ツールやその他のモジュールがキーを扱うことはありません。スキルはさらに、キーをコマンドライン引数として受け取ることを拒否します。argv は ps で見え、シェル履歴に残るためです。

  • 送信されたものをリダイレクトできない。 リダイレクトは完全に拒否され、ソケットを開く前にホスト許可リストがチェックされます。これらの API のうち3つはクエリ文字列にキーを含むため、リダイレクトに従うと、課金可能な認証情報が見知らぬ人に渡ってしまいます。

  • すべてのエラーはスクラブされる。 キーはクライアントが構築される前に登録され、ツールから送出されるすべての例外は最初にスクラバーを通過します。

  • Google が返すすべての情報は信頼できないとラベル付けされる。 場所の名前、編集者による概要、レビュー、ルート案内は、事業主や一般の人々によって書かれています。すべての応答には、モデルに対してそのテキストをデータとして扱うよう警告するメッセージが含まれ、すべての文字列から制御文字が削除されます。

  • すべての引数はリクエストになる前に検証される。 座標は有限でなければなりません。JSON パーサーは、許可すると NaN を渡します。プレイス ID は文字クラスに対して照合され、URL パスにパーセントエンコードされます。自由テキストは長さ制限があり、制御文字を拒否します。

  • 応答は二重に制限される: ソケットから最大4 MiB、モデルのコンテキストに最大96 KiB。

--use-proxy が存在する理由

プロキシ環境変数はデフォルトで無視されます。通常のマシンでは、このデフォルトがキーを保護します。そのような変数が1つあると、すべてのリクエストが他人の選択したホストを経由してしまうからです。

サンドボックスではそれが逆転します。管理された egress プロキシが唯一の出口である場合、それを無視しても何も保護されません。リクエストが決して外部に出ないことが保証されるだけです。そのため、選択は明示的に行われ、想定されるものではありません。そして、デフォルトでオフのままであるのは、それを必要とする環境が自身のことを認識しているからです。

それを有効にしても、2つのことは変わりません。ホスト許可リストはURLが構築される前に実行されるため、コードを新しい宛先に誘導することはできません。また、CONNECTトンネルによりプロキシはリクエストに関与しません。独自の認証局でTLSを終端するプロキシはキーを確認できますが、それは管理されたサンドボックス内であり、すでにコードを実行している同じ当事者です。しかし、想定するよりも知っておく価値があります。

これが意図的に行わないこと

  • 書き込みはありません。 Google Maps Platformにはここで意味のある書き込み面はなく、これによって公開されるものもありません。

  • 呼び出し元が指定するフィールドマスクはありません。 フィールドマスクはHTTPヘッダー値です。モデル出力から組み立てると、最初の改行を待つヘッダーインジェクションとなり、毎回の呼び出しで最も高価なフィールドを要求する方法になります。

  • ローカルの支出台帳はありません。 Google自身のAPIごとの日次上限がエッジで予算を強制し、クライアントで何が実行されていても有効です。それをローカルで複製すると、状態、ロック、そして真実を保つための2番目の数値が追加されます。

  • 地図画像や静的タイルはありません。 それらはモデルが読み取れないバイトであり、そのURLにはキーが含まれています。

実行環境

Surface

Skill

MCP server

Claude Code

はい、フルネットワーク

はい

Claude Desktop

—

はい

claude.ai

はい、ドメインが許可リストに追加されれば

いいえ — ローカルプロセスを起動できません

Claude API container

いいえ — ネットワークアクセスなし、設定不可

いいえ

開発

.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 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