Skip to main content
Glama
mcp-google-business

mcp-google-business

Google Business Profile MCP

English | Русский

npm CI Glama License: MIT

A1 Google Business Profile MCP는 AI 앱이 자연어로 Google Business Profile 위치와 작업할 수 있게 해줍니다. 위치와 실적을 확인하고, 리뷰에 응답하고, 로컬 게시물을 준비하고, 프로필 정보를 신중하게 업데이트할 수 있습니다.

현재 Business Profile API와 리뷰 및 게시물이 여전히 존재하는 레거시 API에 연결합니다. Google 계정과 OAuth 자격 증명만으로는 충분하지 않습니다. Google이 Cloud 프로젝트에 대한 Basic API Access를 승인해야 합니다.

  • 도구 20개. 위치 및 계정 데이터, 실적, 리뷰, 로컬 게시물, 카테고리 및 속성.

  • 실제 승인 게이트. 프로젝트는 0 QPM으로 시작하며, Google이 Basic API Access 신청을 승인하기 전까지 모든 API 호출이 실패합니다.

  • 별도의 공개 경계. 준비된 답변, 게시물 또는 위치 업데이트는 클라이언트가 쓰기 작업을 확인한 후에만 공개 비즈니스 정보를 변경합니다.

  • 4가지 API 표면. 계정 관리(Account Management), 비즈니스 정보(Business Information), 실적(Performance) 및 레거시 v4는 하나의 business.manage OAuth 범위를 통해 작동합니다.

읽기 전용 질문으로 시작해 보세요:

내 위치를 나열하고 답글이 없는 최신 리뷰를 보여줘.

서버 연결 · 사용 사례 살펴보기 · 기술 문서 열기


1분 만에 작동 확인하기

You: 내 위치를 나열하고 답글이 없는 최신 리뷰를 보여줘.

Assistant: 위치와 최근 리뷰를 표시합니다. 변경되는 것은 없습니다.

You: 시내 지점의 최신 3성 리뷰에 답글 초안을 작성해 줘. 사과하고 도움을 제안해.

Assistant: 위치, 리뷰, 제안된 답글을 표시한 후 게시 전에 확인을 요청합니다.

You: 확인.

Assistant: 답글을 게시합니다. 리뷰나 다른 위치, 게시물은 변경하지 않습니다.

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 문의 양식을 Basic API Access 신청으로 제출하세요. 승인 전에는 할당량이 0 QPM이며, 승인된 프로젝트는 API당 300 QPM을 받습니다.

  4. OAuth 클라이언트를 만들고 https://www.googleapis.com/auth/business.manage에 대한 갱신 토큰을 획득한 다음 세 개의 GOOGLE_BUSINESS_* 변수를 설정하세요.

클라이언트 시크릿과 갱신 토큰을 비밀번호처럼 취급하세요. 액세스 토큰은 일회용으로 사용할 수 있는 단기 대안입니다.

구성

변수

필수

설명

GOOGLE_BUSINESS_CLIENT_ID

예*

OAuth 클라이언트 ID.

GOOGLE_BUSINESS_CLIENT_SECRET

예*

OAuth 클라이언트 시크릿.

GOOGLE_BUSINESS_REFRESH_TOKEN

예*

business.manage 권한이 있는 OAuth 갱신 토큰.

GOOGLE_BUSINESS_ACCESS_TOKEN

예*

OAuth 3종 세트의 단기 대안.

GOOGLE_BUSINESS_TIMEOUT_MS

아니요

요청당 시간 제한, 기본값 60000ms.

GOOGLE_BUSINESS_MAX_RETRIES

아니요

임시 오류 재시도 횟수, 기본값 3.

* OAuth 3종 세트 또는 액세스 토큰 중 하나를 제공하세요. API 호스트 재정의는 도구 참조에 문서화되어 있습니다.

데이터, 한도 및 백그라운드 작업

  • Google이 프로필 요청을 수신합니다. 익명 텔레메트리에는 설치 및 버전 데이터와 도구 이름이 포함되며, OAuth 시크릿, 프로필 데이터, 인수 또는 프롬프트는 절대 포함되지 않습니다. 옵트아웃하려면 ASKADS_TELEMETRY=0을 설정하세요.

  • 실제 편집 상한. 승인된 프로젝트는 API당 300 QPM을 받으며, Google은 각 Business Profile을 분당 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