Skip to main content
Glama
mcp-google-business

mcp-google-business

Google Business Profile MCP

日本語 | Русский

npm CI Glama License: MIT

A1 Google Business Profile MCP を使うと、AIアプリが自然言語でGoogle Business Profileのロケーションを操作できます。ロケーションとパフォーマンスの確認、レビューへの返信、ローカル投稿の作成、プロフィール情報の意図的な更新が可能です。

これは、Googleの現在のBusiness Profile APIと、レビューや投稿がまだ存在するレガシーAPIに接続します。GoogleアカウントとOAuth認証情報だけでは不十分で、Cloudプロジェクトに対するBasic API Accessの承認がGoogleから必要です。

  • 20種類のツール。 ロケーションとアカウントデータ、パフォーマンス、レビュー、ローカル投稿、カテゴリと属性。

  • 本物の承認ゲート。 プロジェクトは0 QPMから始まり、GoogleがBasic API Access申請を承認するまで、すべてのAPI呼び出しは失敗します。

  • 明確な公開境界。 下書きした返信・投稿・ロケーション更新は、クライアントが書き込み操作を確認した後にのみ公開情報を変更します。

  • 4つのAPIサーフェス。 Account Management、Business Information、Performance、レガシーv4は、1つの business.manage OAuthスコープで動作します。

読み取り専用の質問から始めましょう:

私のロケーションを一覧表示して、返信がない最新のレビューを見せてください。

サーバーに接続する · ユースケースを見る · 技術ドキュメントを開く


1分で動作を確認する

あなた: 私のロケーションを一覧表示して、返信がない最新のレビューを見せてください。

アシスタント: ロケーションと最近のレビューを表示します。何も変更されません。

あなた: ダウンタウンのロケーションにある最新の3つ星レビューへの返信を下書きしてください。謝罪して、支援を申し出てください。

アシスタント: ロケーション、レビュー、提案された返信を表示し、公開前に確認を求めます。

あなた: 確認します。

アシスタント: 返信を公開します。レビュー、他のロケーション、投稿は変更されません。

Related MCP server: Local Business Data MCP Server

目次

クイックスタート

Node.js 20以上、検証済みのGoogle Business Profile、Google Cloud OAuthクライアント、承認済みのBasic API Access申請が必要です。

  1. 承認済みアクセスを取得する。

  2. サーバーをAIアプリに追加します。

  3. 上記の読み取り専用の質問から始めます。

Settings → Plugins → MCP servers で Add server を選択し、GOOGLE_BUSINESS_CLIENT_ID、GOOGLE_BUSINESS_CLIENT_SECRET、GOOGLE_BUSINESS_REFRESH_TOKEN を指定して npx -y mcp-google-business@latest を追加します。

codex mcp add google-business \
  --env GOOGLE_BUSINESS_CLIENT_ID=your_client_id \
  --env GOOGLE_BUSINESS_CLIENT_SECRET=your_client_secret \
  --env GOOGLE_BUSINESS_REFRESH_TOKEN=your_refresh_token \
  -- npx -y mcp-google-business@latest
codex mcp list

Codex MCPドキュメント

claude mcp add \
  --env GOOGLE_BUSINESS_CLIENT_ID=your_client_id \
  --env GOOGLE_BUSINESS_CLIENT_SECRET=your_client_secret \
  --env GOOGLE_BUSINESS_REFRESH_TOKEN=your_refresh_token \
  --transport stdio --scope user google-business \
  -- npx -y mcp-google-business@latest
claude mcp list

Claude Code MCPドキュメント

Settings → Developer → Edit Config を開いて追加します:

{"mcpServers":{"google-business":{"command":"npx","args":["-y","mcp-google-business@latest"],"env":{"GOOGLE_BUSINESS_CLIENT_ID":"your_client_id","GOOGLE_BUSINESS_CLIENT_SECRET":"your_client_secret","GOOGLE_BUSINESS_REFRESH_TOKEN":"your_refresh_token"}}}}

Edit Config が利用できない場合は、macOSでは ~/Library/Application Support/Claude/claude_desktop_config.json、Windowsでは %APPDATA%\Claude\claude_desktop_config.json を編集します。Claude Desktop MCPドキュメント

macOS/Linuxでは ~/.cursor/mcp.json、Windowsでは %USERPROFILE%\.cursor\mcp.json に {"mcpServers":{"google-business":{"type":"stdio","command":"npx","args":["-y","mcp-google-business@latest"],"env":{"GOOGLE_BUSINESS_CLIENT_ID":"your_client_id","GOOGLE_BUSINESS_CLIENT_SECRET":"your_client_secret","GOOGLE_BUSINESS_REFRESH_TOKEN":"your_refresh_token"}}}} を追加します。Cursor MCPドキュメント

MCP: Open User Configuration を実行して追加します:

{"servers":{"google-business":{"type":"stdio","command":"npx","args":["-y","mcp-google-business@latest"],"env":{"GOOGLE_BUSINESS_CLIENT_ID":"${input:gbp_client_id}","GOOGLE_BUSINESS_CLIENT_SECRET":"${input:gbp_client_secret}","GOOGLE_BUSINESS_REFRESH_TOKEN":"${input:gbp_refresh_token}"}}},"inputs":[{"type":"promptString","id":"gbp_client_id","description":"Google OAuth client ID"},{"type":"promptString","id":"gbp_client_secret","description":"Google OAuth client secret","password":true},{"type":"promptString","id":"gbp_refresh_token","description":"Google OAuth refresh token","password":true}]}

MCP: List Servers で確認します。VS Code MCPドキュメント

何を依頼できるか

  • ロケーション、カテゴリ、属性、現在のプロフィール情報を一覧表示します。

  • 選択した期間の通話数、道順リクエスト、検索キーワードのインプレッションを表示します。

  • 新しいレビューを見つけ、返信を下書きし、確認後に公開します。

  • ローカル投稿の作成、更新、削除を行います。

  • 選択したロケーションのフィールドや属性を、正確な変更内容を表示した上で更新します。

変更できるもの

操作

何が起こるか

確認の境界

アカウント、ロケーション、カテゴリ、属性、パフォーマンス、レビュー、投稿

既存のプロフィールデータを読み取る

変更なし

ロケーションまたはその属性の更新

公開ビジネスプロフィールデータを変更

ロケーションを変更

レビューへの返信

公開オーナー返信を公開

公開コンテンツを変更

ローカル投稿の作成または更新

公開ローカルコンテンツを公開・変更

公開コンテンツを変更

レビュー返信またはローカル投稿の削除

公開コンテンツを削除

破壊的

生のAPIリクエスト

任意の書き込み・削除エンドポイントを呼び出し可能

潜在的に破壊的

確認はAIクライアントが制御します。サーバーはツールにマークを付けるため、クライアントは参照とライブ変更を区別できます。

アクセスを取得する

GoogleではOAuthとBasic API Accessの承認の両方が必要です。

  1. 少なくとも60日以上存在する検証済みかつアクティブなBusiness Profileを使用します。オーナーまたはマネージャーアカウントから申請し、申請内容と一致するビジネスウェブサイトを持っている必要があります。

  2. Google Cloudプロジェクトを作成し、My Business Account Management API、Business Information API、Business Profile Performance API、Google My Business API(レガシーv4)を有効にします。

  3. GBP API問い合わせフォーム を Application for Basic API Access として送信します。承認前はクォータが0 QPMで、承認されたプロジェクトはAPIごとに300 QPMを受け取ります。

  4. OAuthクライアントを作成し、https://www.googleapis.com/auth/business.manage のリフレッシュトークンを取得し、3つの GOOGLE_BUSINESS_* 変数を設定します。

クライアントシークレットとリフレッシュトークンはパスワードとして扱ってください。アクセストークンは1回限りの使用に適した短命の代替手段です。

設定

変数

必須

説明

GOOGLE_BUSINESS_CLIENT_ID

はい*

OAuthクライアントID。

GOOGLE_BUSINESS_CLIENT_SECRET

はい*

OAuthクライアントシークレット。

GOOGLE_BUSINESS_REFRESH_TOKEN

はい*

business.manage スコープのOAuthリフレッシュトークン。

GOOGLE_BUSINESS_ACCESS_TOKEN

はい*

OAuth3点セットに代わる短命のトークン。

GOOGLE_BUSINESS_TIMEOUT_MS

いいえ

リクエストごとのタイムアウト。デフォルト 60000 ms。

GOOGLE_BUSINESS_MAX_RETRIES

いいえ

一時エラーの再試行回数。デフォルト 3。

* OAuth3点セットまたはアクセストークンのいずれかを指定します。APIホストのオーバーライドはツールリファレンスに記載されています。

データ、制限、バックグラウンド処理

  • Googleがプロフィールリクエストを受け取ります。 匿名テレメトリには、インストール情報とバージョン情報、ツール名が含まれますが、OAuthシークレット、プロフィールデータ、引数、プロンプトは含まれません。オプトアウトするには ASKADS_TELEMETRY=0 を設定します。

  • 実際の編集上限。 承認されたプロジェクトはAPIごとに300 QPMを受け取ります。Googleは各Business Profileを1分あたり10回の編集にも制限しています。パフォーマンス指標は数日遅れることがあり、レビュー返信には検証済みのロケーションが必要です。

  • バックグラウンド監視はありません。 サーバーは呼び出されたときのみ実行されます。AIアプリがスケジュールタスクをサポートしている場合は、新しいフィードバックや指標を定期的に確認できます。

技術ドキュメント

サポート

バグを見つけたり、シナリオが必要ですか?イシューを作成 するか、Telegram でお問い合わせください。

Available Tools

26 tools
auth_statusGoogle connection statusA
Read-onlyIdempotent

Shows whether this server is connected to Google: token presence and source (env variables or a stored in-chat login), expiry, the Google account email, granted vs missing OAuth scopes, where the credentials file lives and where the OAuth client comes from. Makes no network calls and never returns the token itself. Call it first when other tools report the server is not connected.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Adds meaningful behavioral assurances beyond the readOnly/idempotent/non-destructive annotations: 'Makes no network calls and never returns the token itself.' This is important safety context for an auth-status tool and goes well beyond what annotations already state.

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 dense but each clause earns its place: the first sentence lists the diagnostic fields, the second adds safety behavior, and the third gives a usage directive. It is front-loaded with the core purpose and contains no fluff.

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?

For a zero-parameter read-only status tool with no output schema, the description is complete: it lists every relevant status dimension and the specific trigger for calling it. An agent has enough to decide when and why to invoke it.

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 tool takes zero parameters, so the baseline is 4. The description compensates by enumerating exactly what information the status output will contain, which is more useful than a bare schema with no properties.

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?

States a specific diagnostic purpose: reporting Google connection status, token presence/source, expiry, account email, OAuth scopes, and credential locations. This clearly distinguishes it from sibling auth-flow tools like start_login, finish_login, and logout.

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?

Provides an explicit trigger: 'Call it first when other tools report the server is not connected.' It does not explicitly list when not to use it or name an alternative, but the diagnostic role relative to the login/logout siblings is clear.

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

create_local_postCreate a local postA

Publishes a new local post on the Business Profile. Pass the LocalPost as post. LocalPost fields: languageCode; summary (the post text); topicType (STANDARD | EVENT | OFFER | ALERT); callToAction {actionType: BOOK | ORDER | SHOP | LEARN_MORE | SIGN_UP | CALL, url}; event {title, schedule{startDate{year,month,day}, startTime{hours,minutes}, endDate, endTime}} — required for EVENT and OFFER; offer {couponCode, redeemOnlineUrl, termsConditions}; media [{mediaFormat: "PHOTO", sourceUrl}]. ALERT posts are restricted to Google-initiated campaigns and are typically rejected. Returns the created post with its name and state (a fresh post is usually PROCESSING before it goes LIVE). Counts against the 10 edits/min per-profile cap. Local posts live only on the legacy v4 API (mybusiness.googleapis.com) — they were never migrated to v1.

NameRequiredDescriptionDefault
postYesThe LocalPost to create, e.g. {"languageCode": "en", "topicType": "STANDARD", "summary": "Fresh croissants every morning!", "callToAction": {"actionType": "LEARN_MORE", "url": "https://example.com"}}.
accountIdYesAccount id — bare "123" or "accounts/123".
locationIdYesLocation id — bare "456", "locations/456" or "accounts/1/locations/456".

TDQS

A5/5.0
Behavior5/5

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

Annotations already set readOnlyHint=false and idempotentHint=false, but the description adds the return state (usually PROCESSING before LIVE), the rate limit, and the legacy-v4-API restriction. This goes beyond annotations and does not contradict them.

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 a single dense paragraph, front-loaded with the action and then systematically covering return format, ALERT restrictions, rate limits, and API scope. Every clause earns its place; no filler or schema repetition.

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?

Given the complex nested LocalPost object and three required parameters, the description is thorough: it discloses the return value with state, warns about ALERT rejections, and informs about rate and API-version constraints. This is complete for a successful invocation.

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?

While schema coverage is 100%, the description explains the nested `post` object fields in detail: topicType options, callToAction structure, required event/offer fields, and media format. This significantly helps construct a valid request beyond the schema's brief example.

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 'Publishes a new local post on the Business Profile' with a specific verb and resource. This clearly distinguishes it from sibling tools like list_local_posts, update_local_post, and delete_local_post by focusing on creation.

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 warns that ALERT posts are restricted to Google-initiated campaigns and are typically rejected, and notes that local posts exist only on the legacy v4 API. It also mentions the 10 edits/min rate cap, providing clear when/when-not context.

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

delete_local_postDelete a local postA
DestructiveIdempotent

Deletes a local post from the Business Profile. Empty response on success. Local posts live only on the legacy v4 API (mybusiness.googleapis.com) — they were never migrated to v1.

NameRequiredDescriptionDefault
postIdYesLocal post id (last segment of the post's `name`).
accountIdYesAccount id — bare "123" or "accounts/123".
locationIdYesLocation id — bare "456", "locations/456" or "accounts/1/locations/456".

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds the behavior that a successful delete returns an empty response and that this tool is exclusive to the legacy v4 API, going beyond what annotations provide. It does not contradict 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 three concise sentences, each delivering distinct value: the action, the success response, and the critical legacy API context. No filler or redundancy, and the core purpose is front-loaded.

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 destructive delete operation with no output schema, the description covers the action, the response format, and an important API constraint. It does not elaborate on error cases or idempotency details, but the annotations (destructive and idempotent hints) fill those gaps, making the description sufficiently 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?

The input schema has 100% description coverage, with each parameter clearly documented (e.g., postId as the last segment of the post's name). The description adds no additional parameter semantics, so the baseline score of 3 applies.

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 ('Deletes') and resource ('local post from the Business Profile'), clearly differentiating this from sibling tools like create_local_post, update_local_post, and list_local_posts. It also notes the empty response and legacy v4 API context, leaving no ambiguity about the tool's function.

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 essential context that local posts live only on the legacy v4 API and were never migrated to v1, implicitly guiding when this tool is applicable. It does not explicitly list alternatives or when-not-to-use scenarios, but the legacy API note is a clear usage signal.

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

delete_review_replyDelete a review replyA
DestructiveIdempotent

Deletes the business's reply to a review (the review itself is the customer's and cannot be deleted). Empty response on success. Reviews live only on the legacy v4 API (mybusiness.googleapis.com) — they were never migrated to v1.

NameRequiredDescriptionDefault
reviewIdYesReview id (from list_reviews `reviewId` or `name`).
accountIdYesAccount id — bare "123" or "accounts/123".
locationIdYesLocation id — bare "456", "locations/456" or "accounts/1/locations/456".

TDQS

A4.3/5.0
Behavior4/5

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

The description adds beyond annotations: empty response on success, legacy v4 only, and the scope (only the reply is deleted, not the review). This complements the destructiveHint and idempotentHint annotations; no contradictions.

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 sentences, front-loaded with verb+resource, each sentence adds value. Extremely concise.

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?

For a simple delete operation with no output schema, the description covers success behavior (empty response), scope, and API migration status. Enough for an agent to select and invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all three parameters. The description adds no additional parameter-level detail, meeting the baseline score.

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?

Specific verb 'Deletes' plus resource 'the business's reply to a review' clearly defines the action. The clarification that the review itself cannot be deleted distinguishes this from broader review deletion tools and prevents misuse.

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?

Provides a clear when-not: the review itself is customer-owned and cannot be deleted. It also notes the v4-only availability, guiding API choice. However, it doesn't explicitly name sibling tools like reply_to_review as the alternative for creating/updating replies.

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

fetch_multi_daily_metricsMultiple daily metrics at onceA
Read-onlyIdempotent

Returns daily time series for SEVERAL performance metrics of a location in one call — same data as get_daily_metrics, but batched. Response: multiDailyMetricTimeSeries[].dailyMetricTimeSeries[] of {dailyMetric, timeSeries.datedValues[]}; values are int64 strings. Prefer this over several get_daily_metrics calls to save quota. Metrics for the most recent days are not available immediately (multi-day lag, typically a few days) — empty values near today are normal, not an error.

NameRequiredDescriptionDefault
endDateYesRange end (inclusive), e.g. 2026-07-31.
startDateYesRange start (inclusive), e.g. 2026-07-01.
locationIdYesLocation id from list_locations (the unobfuscated listing id; locations/123 also works).
dailyMetricsYesThe metrics to fetch (one or more).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, and the description adds valuable behavioral context beyond that: the multi-day lag for recent metrics and that empty values near today are normal, not errors. It also discloses the response shape and that values are int64 strings, which is useful for parsing.

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 compact yet information-dense, covering purpose, relationship to sibling, response format, value types, quota benefit, and a critical data-lag caveat in just three sentences. Every sentence earns its place with no repetition 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?

Despite having no output schema, the description explicitly outlines the nested response structure (multiDailyMetricTimeSeries[].dailyMetricTimeSeries[] of {dailyMetric, timeSeries.datedValues[]}), value type, and the lag behavior. This is complete for a complex batch tool, and the sibling differentiation and quota rationale cover the operational context.

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?

The input schema has 100% description coverage for all four parameters, so the schema already documents their meaning and constraints. The description adds context about batching and response structure, but does not add meaning for the parameters themselves beyond what the schema provides, so it stays at the baseline.

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 returns daily time series for several performance metrics in one batched call, and explicitly differentiates it from the sibling tool get_daily_metrics by noting it returns 'same data as get_daily_metrics, but batched.' This is a specific verb+resource+scope definition with no ambiguity.

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?

It gives explicit when-to-use guidance: 'Prefer this over several get_daily_metrics calls to save quota.' It also names the alternative (get_daily_metrics) and describes the batching advantage, making the choice between sibling tools clear.

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

finish_loginFinish the Google loginA
Idempotent

Second step: waits up to 20 s for the browser consent to finish, saves the tokens to an owner-only file and verifies the login with a read-only identity call, returning the account email and the granted scopes. After success every tool works immediately — no client restart. If the user granted only part of the requested permissions, the login is still saved and missingScopes lists what will not work. Logging in under a different Google account replaces the previous login (its refresh token is revoked best-effort) and the response carries previousAccountEmail so the change never goes unnoticed.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial context beyond annotations: a 20-second wait, owner-only token storage, a read-only identity verification call, returned email/scopes, missingScopes on partial grants, and previous-account replacement with best-effort refresh-token revocation. These details materially inform invocation and outcome expectations.

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 dense but well-structured and front-loaded: sequencing, persistence, verification, partial-scope handling, and account replacement are all covered without wasted exposition.

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?

Despite having no output schema, the description explains the relevant return fields (account email, scopes, missingScopes, previousAccountEmail), side effects, and post-login availability. It is complete enough for an agent to invoke the tool correctly.

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?

There are zero parameters, so the baseline is 4. The description does not need to explain parameter semantics, and it appropriately focuses on behavior and outputs instead.

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 a specific second-step operation: wait for browser consent, save tokens, verify identity, and return account email and granted scopes. It clearly distinguishes this login-completion step from the broader toolset and names concrete outputs.

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?

It clearly frames the tool as the second step after browser consent and explains post-login behavior, partial-scope handling, and account replacement. It does not explicitly name start_login as the required predecessor, but the sequencing is strongly implied.

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

get_daily_metricsDaily metric time seriesA
Read-onlyIdempotent

Returns a daily time series for ONE performance metric of a location: impressions by surface (Maps/Search × desktop/mobile), direction requests, call clicks, website clicks, conversations, bookings, food orders or menu clicks. Response: timeSeries.datedValues[] of {date{year,month,day}, value} — value is int64 serialized as a string; a missing value means no data for that day. Metrics for the most recent days are not available immediately (multi-day lag, typically a few days) — empty values near today are normal, not an error.

NameRequiredDescriptionDefault
endDateYesRange end (inclusive), e.g. 2026-07-31.
startDateYesRange start (inclusive), e.g. 2026-07-01.
locationIdYesLocation id from list_locations (the unobfuscated listing id; locations/123 also works).
dailyMetricYesThe metric to fetch.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds crucial behavioral details beyond those: the multi-day lag, the meaning of missing values, and the int64-as-string serialization. This substantially improves agent understanding of response semantics.

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 yet information-dense, using two sentences to cover purpose, response shape, serialization, and lag. The structure is front-loaded with the core function, then details, and every clause carries value.

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?

Given the simple parameter set and no output schema, the description fully equips the agent: it explains the response structure, value type, missing-data semantics, and latency behavior. This is complete for the tool's complexity.

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 coverage is 100% and every parameter already has a clear description. The description adds no parameter-specific meaning beyond what the schema provides; it only repeats metric categories already captured by the enum. Baseline 3 is appropriate.

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 returns a daily time series for one performance metric, listing the specific metric types. The 'ONE' qualifier distinguishes it from the sibling fetch_multi_daily_metrics, making the purpose and scope unambiguous.

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 for single-metric queries but does not explicitly reference alternatives or when not to use the tool. It lacks the direct 'use X instead' guidance seen in high-scoring examples, so the guidance is only implied.

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

get_locationGet a locationA
Read-onlyIdempotent

Returns one location by id (Business Information API; v1 uses the bare locations/{id} name, no account prefix). The readMask picks which fields come back: title, categories, storefrontAddress, phoneNumbers, websiteUri, regularHours, specialHours, openInfo, profile (description), storeCode, latlng, metadata (mapsUri, newReviewUri, placeId).

NameRequiredDescriptionDefault
readMaskNoComma-separated FieldMask of Location fields to return, e.g. "name,title,storefrontAddress,regularHours,metadata". The API requires it; omit to use the default "name,title,storefrontAddress,phoneNumbers,categories,websiteUri,metadata".
locationIdYesLocation id — bare "123", "locations/123" or "accounts/1/locations/123" all work.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint true, and destructiveHint false, so the safety profile is clear. The description adds useful behavioral context about the API version, path naming convention, and that the readMask controls which fields are returned, which goes beyond the 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 two sentences and directly states the core purpose, followed by a useful list of field options. It is front-loaded with the primary action and avoids irrelevant details, earning 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's simplicity and the rich parameter descriptions in the schema, the description is adequately complete. It explains the API version, return a single location, and how readMask influences output. There's no output schema, but the description plus schema sufficiently cover what's needed for 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?

Schema coverage is 100% and both parameters have descriptions. The description adds extra value by enumerating all possible readMask field choices (title, categories, etc.) and clarifying the acceptable formats for locationId, complementing the schema's example. This goes beyond what the schema alone provides.

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 'Returns one location by id', specifying the exact resource and operation. It also distinguishes from sibling tools like list_locations and get_review by indicating it's a single-location lookup within the Business Information API.

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 context for when to use this tool (fetching a single location by ID) and includes a subtle usage note about v1's bare path name. However, it does not explicitly mention alternatives or when not to use it, though the context implies it for single-location retrieval.

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

get_reviewGet a reviewA
Read-onlyIdempotent

Returns one review by id — same shape as a list_reviews entry (starRating is an enum ONE..FIVE, reviewReply present only if the business already answered). Reviews live only on the legacy v4 API (mybusiness.googleapis.com) — they were never migrated to v1.

NameRequiredDescriptionDefault
reviewIdYesReview id (from list_reviews `reviewId` or `name`).
accountIdYesAccount id — bare "123" or "accounts/123".
locationIdYesLocation id — bare "456", "locations/456" or "accounts/1/locations/456".

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive. The description adds valuable behavioral details beyond annotations: the return shape matches list_reviews, starRating is an enum ONE..FIVE, reviewReply is conditional, and the API legacy constraint. This greatly enriches what an agent knows about the tool's behavior.

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 sentences, front-loaded with the core action, then delivering two high-value clarifications (return shape and API version). No wasted words.

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?

For a simple getter, the description covers return shape via the list_reviews reference, enumerates the starRating values, specifies when reviewReply is present, and warns about the API version. With no output schema, this is sufficient context, and sibling tools (list_reviews, reply_to_review) make the ecosystem clear.

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?

Input schema fully documents all three parameters (100% coverage), including formats and source of reviewId. The description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 applies.

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 it returns one review by id, with a specific verb and resource. It also explicitly distinguishes itself from list_reviews by noting the same shape as a list_reviews entry, making its scoped purpose unambiguous.

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 important context: reviews live only on the legacy v4 API and were never migrated to v1, which guides when this tool should be used. It implicitly distinguishes from list_reviews (single vs. many) but does not explicitly name alternatives or exclusions.

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

list_accountsList Business Profile accountsA
Read-onlyIdempotent

Lists all Google Business Profile accounts the authenticated user can access (the personal account first). Each account has name (accounts/{id} — the id feeds the accountId of other tools), accountName, type (PERSONAL / LOCATION_GROUP / USER_GROUP / ORGANIZATION), role, and verificationState. The API caps pageSize at 20 (unusually small), so follow nextPageToken to see every account.

NameRequiredDescriptionDefault
filterNoFilter expression, e.g. "type=USER_GROUP". Omit to list every account.
pageSizeNoAccounts per page (1..20 — the API's hard cap; default 20).
pageTokenNonextPageToken from the previous page.
parentAccountNoAccount id or accounts/{id}: list this account's sub-accounts instead of top-level ones.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, etc.), the description adds valuable behavioral context: the personal account ordering, the unusually small pageSize cap at 20, and the need to follow nextPageToken. It also explains how the 'name' field feeds accountId into other tools.

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 compact, information-dense sentences with no fluff. Front-loaded with the core purpose, then response fields, then a critical pagination caveat.

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?

No output schema exists, so the description carries the burden of explaining return values. It lists all major fields, explains the id format, covers pagination, and specifies the pageSize cap. This is complete for a simple list tool.

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 coverage is 100%, so the baseline is 3. The description does not add much about parameters themselves beyond what the schema already provides, though it reinforces the pageSize cap and nextPageToken behavior. The main added value is about the response structure, not the parameters.

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 ('Lists') and resource ('Google Business Profile accounts'), clearly distinguishing it from sibling tools like list_locations. It also defines the exact scope ('the authenticated user can access') and provides response field details.

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 implies when to use it (to get accounts and account IDs for other tools) and notes the pagination cap. It does not explicitly name alternatives or exclusions, but context is clear enough for an agent to decide.

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

list_attribute_metadataList available attributesA
Read-onlyIdempotent

Lists which attributes (e.g. wheelchair accessibility, wi-fi, payment options) are legal for a location or for a category+region. Pass locationId for a concrete location, OR categoryName+regionCode to explore. Each entry has parent (the attribute id for update_location_attributes), valueType (BOOL / ENUM / REPEATED_ENUM / URL), displayName, repeatable and valueMetadata (legal values).

NameRequiredDescriptionDefault
showAllNoReturn the whole attribute catalog (requires regionCode + languageCode).
pageSizeNoAttributes per page (default 200).
pageTokenNonextPageToken from the previous page.
locationIdNoLocation id to list attributes for (alternative to categoryName+regionCode).
regionCodeNoISO 3166-1 alpha-2 country code (with categoryName).
categoryNameNoCategory, e.g. "gcid:restaurant" or "categories/gcid:restaurant".
languageCodeNoBCP 47 language for display names.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds valuable context by outlining the structure of each returned entry (parent, valueType, displayName, repeatable, valueMetadata), which is not present in the schema or annotations. It stops short of discussing pagination or potential edge cases, but the added detail is meaningful.

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 core purpose, then usage alternatives, then return-field details. Every sentence earns its place with no filler or redundancy.

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?

Given the tool's complexity (7 params, no output schema, rich annotations), the description covers the essential behaviors: what it lists, the two invocation modes, and the shape of each entry. It is fully sufficient for an agent to understand and invoke the tool correctly.

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 coverage is 100%, so baseline is 3. The description enriches this by explaining the OR relationship between locationId and categoryName+regionCode, and clarifying that 'parent' corresponds to the attribute id used in update_location_attributes. This adds semantic meaning beyond individual parameter descriptions.

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 ('Lists') and clearly defines the resource ('attributes') with concrete examples and scope ('for a location or for a category+region'). It distinguishes from siblings like list_categories and update_location_attributes by focusing on attribute metadata and legal values.

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 instructs when to pass locationId versus categoryName+regionCode, and references update_location_attributes as the consumer of the 'parent' id. While it doesn't name alternative tools for contrast, the usage pattern is clear and actionable.

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

list_categoriesSearch business categoriesA
Read-onlyIdempotent

Lists/searches the reference taxonomy of business categories (e.g. gcid:restaurant). Category names (categories/gcid:...) feed location.categories on update_location and categoryName on list_attribute_metadata. view=FULL also returns serviceTypes and moreHoursTypes per category; filter narrows by display name, e.g. "displayName=coffee".

NameRequiredDescriptionDefault
viewNoBASIC (default) returns name + displayName; FULL adds serviceTypes and moreHoursTypes.
filterNoFilter, e.g. "displayName=coffee".
pageSizeNoCategories per page (1..100; default 100).
pageTokenNonextPageToken from the previous page.
regionCodeYesISO 3166-1 alpha-2 country code the categories should be valid in, e.g. "US".
languageCodeYesBCP 47 language for display names, e.g. "en".

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the operation as read-only, idempotent, and non-destructive. The description adds meaningful behavioral detail about the taxonomy's downstream use and the additional data returned by view=FULL, going beyond what annotations convey without contradiction.

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 core action, and every clause provides useful context—usage, parameter effects, and relationships to sibling operations. No wasted words.

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?

Despite lacking an output schema, the description outlines the primary returned fields (name, displayName, serviceTypes, moreHoursTypes) and explains how the taxonomy connects to other functions. It sufficiently covers the tool's purpose, parameters, and behavior for an agent to invoke it correctly.

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?

Since schema coverage is 100%, the schema already documents all parameters. The description adds contextual meaning by explaining that filter narrows by display name and that category names are used as identifiers in other tools, providing value beyond raw parameter definitions.

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 ('Lists/searches') and a clear resource ('the reference taxonomy of business categories'), immediately distinguishing it from sibling tools like list_locations or list_attribute_metadata. The example 'gcid:restaurant' and the connection to other tools clarify its role.

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 the tool by stating that category names feed location.categories and categoryName, and explains how view and filter parameters affect results. It lacks an explicit 'when not to use' but provides clear contextual alignment with related operations.

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

list_local_postsList local postsA
Read-onlyIdempotent

Lists the local posts (What's New / Event / Offer updates shown on the Business Profile) of a location. Each post has name (accounts//locations//localPosts/{post_id}), summary, topicType, state (LIVE / PROCESSING / REJECTED), searchUrl, createTime and updateTime. Local posts live only on the legacy v4 API (mybusiness.googleapis.com) — they were never migrated to v1.

NameRequiredDescriptionDefault
pageSizeNoPosts per page (default 20).
accountIdYesAccount id — bare "123" or "accounts/123".
pageTokenNonextPageToken from the previous page.
locationIdYesLocation id — bare "456", "locations/456" or "accounts/1/locations/456".

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds valuable context: the API version caveat (legacy v4 API, never migrated to v1) and the fields returned. This provides behavioral insight beyond the 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 compact, with the main verb and resource in the first sentence, followed by a concise list of fields in the second. Every sentence contributes value, with 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?

The description covers the tool's purpose, the returned post fields, and the API version caveat. While it doesn't mention pagination explicitly, the schema provides pageSize and pageToken, so the context is reasonably complete for a list operation without an output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the description does not need to explain parameters. The schema already documents each parameter (pageSize, accountId, pageToken, locationId) with clear descriptions. The description does not add extra parameter semantics.

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 lists local posts for a location, with specific detail about post types (What's New / Event / Offer) and the resource name pattern. This distinguishes it from sibling create/update/delete tools.

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 this is for reading posts rather than modifying them, but it does not explicitly state when to use this tool over siblings or give exclusions. A brief alternative reference (e.g., 'use create_local_post to create') would improve clarity.

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

list_locationsList locations of an accountA
Read-onlyIdempotent

Lists the business locations under an account (Business Information API). Each location's name is locations/{id} — that id feeds locationId everywhere else (including the Performance API and, together with the account id, the v4 reviews/posts tools). totalSize is only present when filter is set. Fields are limited by readMask; ask for metadata to get mapsUri/placeId/newReviewUri.

NameRequiredDescriptionDefault
filterNoFilter expression, e.g. 'title="Coffee Corner"'. Also enables totalSize in the response.
orderByNoSort order, e.g. "title" or "title, storeCode desc".
pageSizeNoLocations per page (1..100; default 10).
readMaskNoComma-separated FieldMask of Location fields to return, e.g. "name,title,storefrontAddress,regularHours,metadata". The API requires it; omit to use the default "name,title,storefrontAddress,phoneNumbers,categories,websiteUri,metadata".
accountIdYesAccount id — bare "123" or "accounts/123" (get it from list_accounts).
pageTokenNonextPageToken from the previous page.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint, covering safety. The description adds valuable behavioral details: totalSize presence depends on filter, fields are controlled by readMask, and metadata must be requested for mapsUri/placeId/newReviewUri. This goes beyond annotations without contradicting them.

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, each earning its place: purpose, id linkage, and conditional behavior. Front-loaded with the core verb and resource, no fluff or redundant restatement.

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 list tool with no output schema, the description covers key caveats: id naming convention, totalSize condition, readMask effect, and metadata fields. It does not explicitly describe pagination behavior or default values, but the schema documents pageToken and pageSize defaults. Overall fairly complete for the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100% for all 6 parameters, so baseline is 3. The description adds some context about how the response id feeds locationId elsewhere, but this is output-related rather than param-specific. It reinforces readMask guidance already in the schema but doesn't materially extend parameter understanding.

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 opens with 'Lists the business locations under an account', a specific verb+resource that clearly differentiates from siblings like get_location or list_accounts. It also states the API context (Business Information API) and explains how the returned id feeds other tools, further clarifying its role.

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 context on when to use this tool: to get location IDs that feed locationId elsewhere (Performance API, reviews/posts). It also notes that totalSize only appears with a filter and that readMask limits fields, guiding usage. It does not explicitly name alternatives or say 'when not to use', but the guidance is clear.

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

list_reviewsList reviewsA
Read-onlyIdempotent

Lists reviews of a location, newest-updated first by default. Response: reviews[] of {name, reviewId, reviewer{displayName, isAnonymous}, starRating (ONE..FIVE enum, not a number), comment, createTime, updateTime, reviewReply{comment, updateTime} if answered}, plus averageRating (1–5) and totalReviewCount. pageSize caps at 50. Reviews live only on the legacy v4 API (mybusiness.googleapis.com) — they were never migrated to v1.

NameRequiredDescriptionDefault
orderByNoSort order; default "updateTime desc".
pageSizeNoReviews per page (1..50 — API cap; default 50).
accountIdYesAccount id — bare "123" or "accounts/123".
pageTokenNonextPageToken from the previous page.
locationIdYesLocation id — bare "456", "locations/456" or "accounts/1/locations/456".

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent, but the description adds substantial behavioral detail: the exact response shape (reviews[] with name, reviewer, starRating, etc.), that starRating is an enum not a number, a pageSize cap of 50, and that reviews exist only on the legacy v4 API. This goes beyond structured 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?

Three sentences deliver core behavior, response contract, and a critical API-version caveat. Every clause is information-dense without redundancy, and the most important information is front-loaded.

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 no output schema, the description compensates by fully describing the return shape, averageRating, totalReviewCount, and pagination cap. It also warns about the legacy v4 API. It doesn't cover error conditions or pageToken mechanics beyond schema, but that's acceptable for a read-only list operation.

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?

All 5 parameters have full schema descriptions (100% coverage), so the baseline is 3. The description adds minimal parameter-specific value beyond the schema—the pageSize cap and default ordering are already in the schema descriptions.

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 'Lists reviews of a location' which is a specific verb-plus-resource, and adds 'newest-updated first by default' to clarify ordering. It clearly distinguishes from sibling get_review by focusing on plural reviews and includes the notable legacy v4 API context.

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 gives clear context: what it lists, default sort, pageSize cap, and the legacy v4 API caveat. However, it does not explicitly compare with get_review or state when not to use it, so it falls short of explicit alternative guidance.

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

list_search_keyword_impressionsMonthly search keywordsA
Read-onlyIdempotent

Returns the search keywords that surfaced the business on Google, month by month. Response: searchKeywordsCounts[] of {searchKeyword, insightsValue} — insightsValue is a UNION: either an exact {value} or a {threshold} for low-volume keywords (the true count is below it; never sum thresholds as exact counts). Months are calendar months; data for the current month appears with a lag.

NameRequiredDescriptionDefault
endMonthYesLast month (inclusive), e.g. 2026-06.
pageSizeNoKeywords per page (1..100; default 100).
pageTokenNonextPageToken from the previous page.
locationIdYesLocation id from list_locations (the unobfuscated listing id; locations/123 also works).
startMonthYesFirst month (inclusive), e.g. 2026-01.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint, openWorldHint, and idempotentHint annotations, the description discloses a critical behavioral nuance: insightsValue is a union that can be either an exact value or a threshold for low-volume keywords, and it explicitly warns against summing thresholds as exact counts. It also clarifies that months are calendar months and that the current month's data lags, which is useful for interpreting results.

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 just two sentences. The first establishes the primary purpose, and the second covers the response union and the key caveat about thresholds. Every sentence earns its place, and the most important warning is prominently placed.

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?

For a tool with a union return type and time-sensitive data, the description fully covers the essential aspects: response shape, union semantics, month calendar handling, and the lag. Since the schema already documents all parameters and there is no output schema, this description is complete enough for an agent to invoke the tool and correctly interpret returns.

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?

All five parameters are already thoroughly described in the input schema (100% coverage), including formats, defaults, and the relationship of locationId to list_locations. The description does not add parameter-specific details, such as how startMonth and endMonth interact with the lag, so it remains at the schema-documented baseline of 3.

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 begins with a specific verb and resource: 'Returns the search keywords that surfaced the business on Google, month by month.' This clearly communicates what the tool does and distinguishes it from siblings such as get_daily_metrics or search_chains by emphasizing monthly, keyword-level Google impression data. The title 'Monthly search keywords' reinforces the same.

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 clearly implies when to use this tool—when you need monthly search keyword impressions—and adds practical context by noting that current month data appears with a lag, which helps set expectations. However, it does not explicitly mention alternatives, such as 'use search_chains for chain-level data' or 'use get_daily_metrics for daily trends,' and there are no explicit exclusions.

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

logoutDisconnect from GoogleA
Destructive

Revokes the stored token at Google (oauth2.googleapis.com/revoke) and deletes the local credentials file. Tokens supplied via env variables are NOT touched — remove them from the MCP client config manually; envTokenStillSet in the response says whether any are still in effect.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations by naming the revocation endpoint, specifying that the local credentials file is deleted, clarifying that env-var tokens are unaffected, and mentioning the envTokenStillSet response field. This is exactly the kind of behavioral detail an agent needs for a destructive action.

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 compact sentences with the most critical action front-loaded. Every sentence adds important information, and there is no fluff or repetition of schema fields.

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?

The description covers the action, side effects, exception case for env-var tokens, and a relevant response field. For a zero-parameter tool with no output schema, this is fully sufficient for an agent to use it correctly and predict its impact.

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 tool has zero parameters, so there is no parameter meaning to add. The description correctly focuses on the action and side effects rather than inventing parameter details. Baseline 4 is appropriate because the schema is trivially complete.

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 a precise verb and resource: it revokes the stored Google token and deletes the local credentials file. The title 'Disconnect from Google' aligns with the behavior, and the description clearly distinguishes this from other auth-related sibling 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 gives clear context: use this to revoke and delete stored credentials. It also explicitly tells the user that env-var tokens are not touched and must be removed manually, which is a valuable usage caveat. It does not name alternatives, but no true alternative exists for this action.

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

raw_requestRaw Google Business Profile API callA
Destructive

Escape hatch to call any Google Business Profile endpoint directly, for endpoints without a dedicated tool. service picks the host: accounts (mybusinessaccountmanagement, v1), businessinfo (mybusinessbusinessinformation, v1), performance (businessprofileperformance, v1) or v4 (legacy mybusiness.googleapis.com — reviews, posts, media). path is relative to the host, e.g. "v1/accounts" or "v4/accounts/1/locations/2/media". Remember v1 quirks: readMask/updateMask go in query. The Bearer token is attached automatically; a path resolving to a foreign origin is rejected.

NameRequiredDescriptionDefault
bodyNoJSON request body (POST/PUT/PATCH).
pathYesAPI path relative to the host, e.g. "v1/accounts".
queryNoQuery parameters (arrays become repeated params).
methodNoHTTP method; defaults to GET.
serviceYesWhich API host to call.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the tool as destructive and non-idempotent. The description adds valuable behavioral details: Bearer token auto-attachment, rejection of foreign-origin paths, and the v1 quirk that readMask/updateMask belong in query parameters. This goes beyond the annotations to explain safety and request construction nuances.

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 a single dense paragraph but each sentence contributes meaning—purpose, service selection, path format, and quirks. It is front-loaded with the primary use case and remains appropriately sized for the tool's complexity, though it could benefit from a slight structural split.

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 5-parameter tool with no output schema, the description covers the essential operational context: supported services, path construction, auth, and a safety constraint. Since this is a raw API caller, the return format is inherently whatever the underlying API returns, so not describing it is acceptable. The description handles the critical gotchas.

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?

Although the schema already describes each parameter, the description adds essential semantics for the service parameter by mapping each enum value to its host and API version. It also provides concrete path examples, which helps the agent construct valid paths beyond the schema's minimal definition.

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 this tool is an 'escape hatch to call any Google Business Profile endpoint directly, for endpoints without a dedicated tool.' This uses a specific verb and resource, and immediately distinguishes it from the many sibling tools by specifying when it should be used.

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?

It explicitly says to use this tool 'for endpoints without a dedicated tool,' which is a clear usage guideline. It also explains how to choose the correct service and describes the path format, giving the agent the context needed to decide when raw_request is appropriate.

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

reply_to_reviewReply to a reviewA
Idempotent

Creates OR replaces the business's public reply to a review (PUT upsert — there is no separate create, and calling it again overwrites the previous reply). Only works on verified locations. Returns the ReviewReply {comment, updateTime}. Counts against the 10 edits/min per-profile cap. Reviews live only on the legacy v4 API (mybusiness.googleapis.com) — they were never migrated to v1.

NameRequiredDescriptionDefault
commentYesThe public reply text (plain text; keep it concise — very long replies may be rejected).
reviewIdYesReview id (from list_reviews `reviewId` or `name`).
accountIdYesAccount id — bare "123" or "accounts/123".
locationIdYesLocation id — bare "456", "locations/456" or "accounts/1/locations/456".

TDQS

A4.7/5.0
Behavior5/5

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

The description adds several behavioral details beyond the annotations: PUT upsert overwriting, verified-location requirement, rate limit of 10 edits/min, and v4-only availability. These complement the idempotent hint and readOnly=false without contradicting any 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?

Two sentences pack a large amount of relevant detail without redundancy. Information is ordered from the core verb to the implications, making it front-loaded.

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?

Given the 4 required params and no output schema, the description covers prerequisites (verified locations), return value format (ReviewReply {comment, updateTime}), rate-limit implications, and API version. This is comprehensive for an AI agent to decide when and how to invoke it.

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 covers all 4 params with descriptions, but the description adds meaning about the upsert effect on the existing reply and the reply text constraints. It clarifies that comment will replace any prior reply, which is not encoded in the schema, and notes the return value.

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 opens with 'Creates OR replaces the business's public reply to a review,' which clearly identifies the action and resource. It also distinguishes itself from sibling tools like delete_review_reply and get_review by explaining the PUT upsert semantics and that it returns the ReviewReply.

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?

It explains that this only works on verified locations, clarifies there is no separate create (calling again overwrites), and notes the legacy v4 API constraint. However, it doesn't explicitly name alternative tools for specific conditions (e.g., 'use delete_review_reply to remove'), so it misses the explicit alternatives benchmark.

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

search_chainsSearch chainsA
Read-onlyIdempotent

Searches business chains by name (exact/partial/fuzzy), ranked by relevance. Each chain has name (chains/{chain_id}), chainNames, websites and locationCount. Use the chain name when relating a location to its brand (location.relationshipData).

NameRequiredDescriptionDefault
pageSizeNoMatches to return (1..500; default 10).
chainNameYesChain name to search for, e.g. "walmart".

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds value by disclosing search behavior (exact/partial/fuzzy, relevance ranking) and the structure of each chain (name, chainNames, websites, locationCount), which enriches the agent's understanding beyond structured fields.

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 core action and search mode, followed by concise details about the return fields and usage hint. Every sentence earns its place with 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?

For a search tool with two parameters and no output schema, the description is complete: it explains what is searched, how it is matched, what is returned, and how to interpret the result for downstream usage. This fully equips the agent to invoke the tool effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so both pageSize and chainName are already documented with descriptive text. The description reinforces that search is by name but doesn't add parameter-specific constraints or syntax beyond what the schema provides. It does add context about returned fields, but that's more output semantics than parameter semantics.

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 searches business chains by name with exact/partial/fuzzy matching, and specifies the resource (business chains) and the outcome (ranked by relevance). It distinguishes itself from sibling tools like list_locations by focusing on chain-level search rather than listing locations.

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 gives clear context on when to use this tool (searching for a chain by name) and even explains how to use the result ('Use the chain name when relating a location to its brand'). It doesn't explicitly mention alternatives or exclusions, but the intended use case is well implied.

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

set_clientSave the OAuth clientA
Idempotent

Saves the OAuth client credentials from the JSON file downloaded from Google Cloud Console ('Download JSON' on a Desktop-app client). Pass the file PATH — the secret must never be pasted into the chat. The client is stored once in the shared ~/.config/mcp-google-auth/client.json (owner-only) and reused by every mcp-google-* server; tokens stay per-server. After this, call start_login.

NameRequiredDescriptionDefault
pathYesAbsolute path to the client_secret_*.json file downloaded from Google Cloud Console.

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate idempotentHint=true (safe to call again) and readOnlyHint=false (it's a write). The description adds valuable context: it stores the client once in a shared path, is reused by all mcp-google-* servers, and tokens stay per-server. It also warns against pasting secrets. This goes beyond annotation basics, though it does not mention any potential side effects like overwriting an old client.

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, each earning its place: the first explains what and source, the second details storage scope, the third directs to start_login. The critical warning is naturally integrated. It is not overly verbose and the essential info is front-loaded.

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 single-parameter tool with no output schema, the description covers key operational aspects: the source file, the storage path, the security precaution, and the follow-up step. The only minor gap is the absence of error conditions (e.g., if the file is invalid), but that is acceptable given the simplicity.

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 100%, so the baseline is 3. The description reinforces that the path is to the JSON file and adds the explicit 'must never be pasted into the chat' security guideline. It doesn't add much beyond the schema, but the security note is valuable enough to nudge to 4.

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 specifies a clear verb ('saves') and resource ('OAuth client credentials from the JSON file') and adds detail about the source and storage location. It does not explicitly distinguish from siblings, but the uniqueness of this tool among the listed siblings is implicit given its specific task.

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?

It provides clear guidance on when to use the tool: after downloading the JSON file and before starting login. It also mentions the prerequisite of calling start_login after. However, it does not explicitly state when not to use it or mention alternatives, though none are obvious.

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

setup_instructionsSetup instructionsA
Read-onlyIdempotent

Step-by-step checklist for connecting this server to Google: creating a Google Cloud project and a Desktop-app OAuth client, publishing the consent screen (mandatory — Testing-mode refresh tokens die after 7 days), downloading the client JSON and handing its PATH to set_client. Works without any credentials; the checklist shortens to 'enable the API + log in' when an OAuth client is already configured (one client serves the whole mcp-google-* line). Never asks the user to paste secrets into the chat.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark it read-only, idempotent, and non-destructive; the description adds valuable context beyond that: it works without credentials, warns that Testing-mode refresh tokens expire in 7 days, mandates publishing the consent screen, and guarantees it never asks users to paste secrets into the chat. No contradiction 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?

Three dense sentences each carry unique, decision-relevant information: the checklist's contents, the shortened path when already configured, and the no-secrets guarantee. There is no filler or repetition.

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?

For a zero-parameter instructional tool, the description fully covers purpose, usage timing, workflow relationships, and key behavioral safeguards. The lack of an output schema is acceptable since the tool's job is to present instructions, and the annotations already cover the operational profile.

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 input schema is empty and parameter coverage is 100%, so there is nothing for the description to add about parameter semantics. The zero-parameter case earns the baseline 4.

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?

States a specific deliverable: a step-by-step checklist for connecting the server to Google, including project creation, OAuth client, consent screen, and handing the client JSON path to set_client. This clearly distinguishes it from sibling tools like auth_status or set_client.

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 when to use it (before credentials exist) and how the checklist shortens when an OAuth client is already configured, referencing set_client as the downstream consumer. It provides clear workflow context, though it does not explicitly say 'use this instead of X' for every alternative.

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

start_loginStart the Google loginA
Idempotent

First step of connecting from the chat, without editing config files or restarting the client. Returns authorizeUrl — show it to the user as a clickable link and ask them to open it in the browser ON THIS MACHINE, pick the Google account and approve access. A one-shot listener on 127.0.0.1 catches Google's redirect; the code is exchanged locally and never passes through the chat. Does not open the browser itself. The attempt lives 10 minutes; when the browser shows the success page, call finish_login.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: it does not open the browser itself, uses a one-shot listener on 127.0.0.1, exchanges the code locally, never passes it through chat, and has a 10-minute attempt lifetime. These details are not present in the annotations and provide meaningful operational guidance.

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 dense but every sentence earns its place: it covers user interaction, browser constraints, security, timeout, and next step without repetition or filler. The most important user-facing instruction is front-loaded.

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?

For a tool with no parameters and no output schema, the description is fully complete. It explains the returned authorizeUrl, how to present it, what will happen afterward, and which sibling tool to call next.

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?

There are zero parameters, so the schema carries no burden and the description correctly avoids inventing parameter details. The baseline for a 0-parameter tool is 4; the description also reinforces that no configuration files or restart are needed.

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 opens with 'First step of connecting from the chat' and names a specific resource and action: start the Google login and return an authorizeUrl. It is clearly distinguished from siblings like finish_login and auth_status by positioning itself as the initial step.

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 it: as the first step of connecting, without editing config files or restarting the client. It also gives direct instructions to show the authorizeUrl to the user, ask them to open it in the browser, and call finish_login after the success page appears.

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

update_local_postUpdate a local postA
Idempotent

Updates fields of an existing local post (PATCH with a required updateMask — only masked fields change, e.g. updateMask "summary" with post {"summary": "New text"}). LocalPost fields: languageCode; summary (the post text); topicType (STANDARD | EVENT | OFFER | ALERT); callToAction {actionType: BOOK | ORDER | SHOP | LEARN_MORE | SIGN_UP | CALL, url}; event {title, schedule{startDate{year,month,day}, startTime{hours,minutes}, endDate, endTime}} — required for EVENT and OFFER; offer {couponCode, redeemOnlineUrl, termsConditions}; media [{mediaFormat: "PHOTO", sourceUrl}]. ALERT posts are restricted to Google-initiated campaigns and are typically rejected. Returns the updated post. Counts against the 10 edits/min per-profile cap. Local posts live only on the legacy v4 API (mybusiness.googleapis.com) — they were never migrated to v1.

NameRequiredDescriptionDefault
postYesPartial LocalPost with the new field values.
postIdYesLocal post id (last segment of the post's `name`).
accountIdYesAccount id — bare "123" or "accounts/123".
locationIdYesLocation id — bare "456", "locations/456" or "accounts/1/locations/456".
updateMaskYesComma-separated FieldMask of post fields to overwrite, e.g. "summary,callToAction".

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, idempotentHint=true, etc.), the description discloses the updateMask partial-update behavior, ALERT rejection risk, rate limit, legacy v4 API constraint, and return value. This is rich context that annotations alone do not provide. No contradiction 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 dense but every sentence provides actionable information: patch semantics, field structure, restrictions, rate limit, API compatibility. No filler words or redundant repetition of schema content. Appropriately front-loaded with the core action and key constraint.

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?

For a complex tool with 5 required params, nested objects, and no output schema, the description is complete: it explains the updateMask behavior, nested field hierarchy, required fields for EVENT/OFFER, media format, ALERT restrictions, rate limit, and legacy API context. An agent has all needed information to invoke it correctly.

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?

Although schema covers each top-level parameter (100% coverage), the description adds substantial meaning for nested objects (callToAction, event, offer, media) with allowed values, required conditions, and examples for updateMask. This goes far beyond the schema's minimal descriptions, especially for the unstructured 'post' object.

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 'Updates fields of an existing local post' with a specific verb and resource, and distinguishes it from sibling tools like create_local_post and delete_local_post by emphasizing 'existing' and the PATCH/updateMask mechanism. The scope is unambiguous.

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 implies usage for existing posts and gives important context: ALERT posts are restricted/rejected and the 10 edits/min cap. It does not explicitly name alternatives like create_local_post for new posts, but the distinction is clear enough for an agent. Lacking explicit 'when not to use' but context is strong.

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

update_locationUpdate a locationA
Idempotent

Updates fields of a location (PATCH with a required updateMask — only masked fields change). Pass the new values in location, e.g. {"title": "New name"} with updateMask "title". Set validateOnly to check the change without applying it. Note: every profile has a hard cap of 10 edits per minute (not raisable) — batch your changes into one call where possible. Returns the updated Location.

NameRequiredDescriptionDefault
locationYesLocation object with the new field values (only fields named in updateMask are applied).
locationIdYesLocation id — bare "123", "locations/123" or "accounts/1/locations/123" all work.
updateMaskYesComma-separated FieldMask of the fields to overwrite, e.g. "title,phoneNumbers.primaryPhone".
validateOnlyNoIf true, validate the update without applying it.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already establish mutation (readOnlyHint=false) and idempotency, but the description adds critical non-obvious behavior: PATCH semantics with updateMask, the 10-edits-per-minute hard cap, validateOnly behavior, and that it returns the updated Location. This exceeds what annotations alone convey.

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 four sentences, front-loaded with the core purpose, then usage, then the rate-limit caveat, and ends with return type. Every sentence earns its place with no redundancy.

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?

For a mutation tool with no output schema, the description covers update semantics, an example, validation mode, rate limiting, batching advice, and return value. Sibling tools overlap but the description is complete enough to use correctly.

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 coverage is 100%, so the baseline is 3, but the description adds a concrete example showing how location and updateMask interact, and clarifies validateOnly. This exceeds mere schema 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 states a specific verb+resource ('Updates fields of a location') and clearly differentiates from sibling tools like update_location_attributes. It also specifies the PATCH method and the required updateMask, making the purpose unambiguous.

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 context: how to pass new values, the role of updateMask, validateOnly for dry-run checks, and a rate limit note advising batching. It does not explicitly mention when to use this instead of alternatives, but the context is strong enough.

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

update_location_attributesUpdate location attributesA
Idempotent

Updates attributes of a location (PATCH). Each attribute needs its name (attributes/{attribute_id} from list_attribute_metadata's parent field) plus values (BOOL/ENUM), uriValues (URL) or repeatedEnumValue ({setValues, unsetValues}). attributeMask defaults to the names of the attributes you pass; name an attribute in the mask with no values to clear it. Counts against the 10 edits/min per-profile cap.

NameRequiredDescriptionDefault
attributesYesAttribute objects to set, e.g. [{"name": "attributes/wi_fi", "repeatedEnumValue": {"setValues": ["free_wi_fi"]}}].
locationIdYesLocation id — bare "123", "locations/123" or "accounts/1/locations/123" all work.
attributeMaskNoComma-separated attribute names to update. Defaults to the names of `attributes`.

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond the annotations, detailing PATCH semantics, the attributeMask default/clearing behavior, the required value formats (BOOL/ENUM, uriValues, repeatedEnumValue), and the rate limit cap. This adds significant behavioral context beyond the readOnlyHint/destructiveHint/idempotentHint annotations, with no contradictions.

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 and well-structured, with four sentences each containing essential information: purpose, attribute format, mask default/clearing, and rate limit. It is front-loaded with the tool's action and has no filler, making every sentence earn its place.

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?

Given the tool's complexity (attribute update with flexible value types, mask logic) and the availability of strong annotations, the description covers all necessary aspects for selection and invocation. It explains how to use the tool effectively, including edge cases like clearing attributes, and even mentions the per-profile rate cap. No output schema exists, but the description's operational detail is sufficient for an update operation.

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?

Although schema coverage is 100%, the description enriches parameter understanding substantially. It explains the source of attribute names from list_attribute_metadata's parent field, the allowed value shapes for the attributes array, and the default behavior of attributeMask. This goes beyond the schema's individual parameter descriptions and provides critical usage nuance.

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: 'Updates attributes of a location (PATCH)' with a specific verb and resource. It distinguishes itself from siblings like update_location by focusing on attributes, and references list_attribute_metadata for attribute IDs, providing scope and precision.

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 context, including how to construct attributes (name + value types), how attributeMask defaults to passed attribute names, and how to clear attributes by naming them in the mask with no values. It also mentions the rate limit cap. While it doesn't explicitly contrast with alternatives, the context makes the intended use clear.

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. 6 tool updatesv1.2.0
    • Addedauth_status
    • Addedfinish_login
    • Addedlogout
    • Addedset_client
    • Addedsetup_instructions
    • Addedstart_login
  2. 20 tool updatesv0.1.0
    • First observedcreate_local_post
    • First observeddelete_local_post
    • First observeddelete_review_reply
    • First observedfetch_multi_daily_metrics
    • First observedget_daily_metrics
    • First observedget_location
    • First observedget_review
    • First observedlist_accounts
    • First observedlist_attribute_metadata
    • First observedlist_categories
    • First observedlist_local_posts
    • First observedlist_locations
    • First observedlist_reviews
    • First observedlist_search_keyword_impressions
    • First observedraw_request
    • First observedreply_to_review
    • First observedsearch_chains
    • First observedupdate_local_post
    • First observedupdate_location
    • First observedupdate_location_attributes

TDQS

A4.2/5.0

Scored across 26 tools

Disambiguation5/5

Tools are cleanly grouped by resource/action: auth setup steps, accounts/locations, reviews, local posts, performance, attributes/categories, and one raw escape hatch. The only close pair, get_daily_metrics vs fetch_multi_daily_metrics, is explicitly differentiated as single-metric vs batched. No two tools appear to do the same thing.

Naming Consistency4/5

Most names follow a predictable snake_case verb_noun pattern (list_locations, get_location, create_local_post, delete_local_post, update_location_attributes). Minor deviations exist: logout, auth_status, setup_instructions, raw_request, and fetch_multi_daily_metrics versus get_daily_metrics. Still highly readable and mostly consistent.

Tool Count3/5

26 tools is heavy and just over the typical comfortable range, partly because OAuth setup alone uses six tools. The domain is broad enough to justify most of them, but some could potentially be consolidated and the surface sits at the borderline of being unwieldy.

Completeness4/5

Core workflows are well covered: accounts, locations, reviews and replies, local posts CRUD, performance metrics, attributes, categories, chains, and auth lifecycle. Notable gaps remain for dedicated media/photo operations and location creation/deletion, but raw_request provides a documented escape hatch for uncovered endpoints.

Maintenance

ActivityActive
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables access to Google Maps business data including search, reviews, photos, and geocoding. Supports searching businesses by location, area, or coordinates, retrieving detailed business information, reviews, and performing reverse geocoding operations.
    13
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to manage Google Business Profile reviews, including a filterable review inbox, per-location stats, and honest review-request campaigns.
    60 npm
    MIT