Skip to main content
Glama
rgellis

Google Search Console MCP Server

by rgellis

Google Search Console MCP Server

An MCP server covering the entire Google Search Console API — all 11 published methods, plus task-shaped tools on top for the questions people actually ask of search performance data.

Overview

This project provides a Model Context Protocol server that wraps the Google Search Console API v1, letting LLMs work with search performance data, sitemaps, property management and URL indexing through a standardised interface.

Search Console ships no official SDK in any language, so this is built on the generic google-api-python-client with complete static types supplied by google-api-python-client-stubs. See Why there is no Search Console SDK.

Related MCP server: Google Search Console MCP Server

Features

  • Complete API Coverage: all 11 published API methods, enforced by a test rather than claimed

  • Full Type Safety: strict pyright with 0 errors

  • 100% Test Coverage: 144 tests, 100% statement and branch coverage, floor enforced in config

  • Task-Shaped Tools: 11 convenience tools on top of the raw API

  • MCP Compliant: FastMCP 4, stdio transport

  • Async Throughout: the synchronous Google client is dispatched off the event loop

  • Read-Only Mode: an opt-in switch that refuses every mutating call

Installation

git clone https://github.com/rgellis/google-search-console-mcp.git
cd google-search-console-mcp

# Install dependencies using uv
uv sync

Requires Python 3.12+.

1. Enable the API

Search Console API must be enabled on the Google Cloud project that owns your OAuth client:

gcloud services enable searchconsole.googleapis.com --project=<project>

2. Create an OAuth client

In the Google Cloud console, create an OAuth 2.0 client of type Desktop app (or Web application with http://localhost as an authorised redirect URI). Note the client ID and secret.

3. Mint a refresh token

Search Console needs the https://www.googleapis.com/auth/webmasters scope:

GOOGLE_CLIENT_ID="..." GOOGLE_CLIENT_SECRET="..." \
  uv run scripts/get_refresh_token.py

# or, if this server will never manage properties:
GOOGLE_CLIENT_ID="..." GOOGLE_CLIENT_SECRET="..." \
  uv run scripts/get_refresh_token.py --read-only

Sign in as an account with access to the Search Console properties you need. The script prints the refresh token.

Scope the token to this server alone rather than reusing one minted for other Google APIs — re-consenting a shared token to add webmasters rotates a secret everything else using it depends on.

4. Set credentials

export GOOGLE_CLIENT_ID="your_client_id"
export GOOGLE_CLIENT_SECRET="your_client_secret"
export GOOGLE_SEARCH_CONSOLE_REFRESH_TOKEN="token_from_step_3"

# optional: request only the readonly scope and refuse all mutations
export SEARCH_CONSOLE_READ_ONLY=false

If those three are not all set, the client falls back to Application Default Credentials, which covers a service account via GOOGLE_APPLICATION_CREDENTIALS as well as local gcloud auth.

5. Verify

uv run main.py --groups sites

Then call check_client_status, which reports whether credentials resolve, the scopes in use, and whether read-only mode is active — without spending API quota.

Usage

uv run main.py                             # all tools, over stdio
uv run main.py --groups sites,analytics    # a subset

Groups: sites, sitemaps, analytics, inspection, testing-tools.

With an MCP client

{
  "mcpServers": {
    "search-console": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/google-search-console-mcp", "main.py"],
      "env": {
        "GOOGLE_CLIENT_ID": "...",
        "GOOGLE_CLIENT_SECRET": "...",
        "GOOGLE_SEARCH_CONSOLE_REFRESH_TOKEN": "..."
      }
    }
  }
}

Property identifiers

Search Console has two property types and the API is strict about the exact string for each. Tools normalise input, so all of these work:

You pass

Sent to the API

sc-domain:example.com

sc-domain:example.com

example.com

sc-domain:example.com

https://example.com

https://example.com/

https://example.com/

https://example.com/

A URL-prefix property passed without its trailing slash is the most common cause of a spurious 403 from this API, which is why normalisation happens here rather than being left to the caller. A 403 raised by this server appends a reminder of exactly that.

Feature Parity Table

Implementation status of Google Search Console API v1 methods (discovery revision 20260909):

Tool

Category

API Method

Implemented

Test Coverage

Notes

Property Management

list_sites

Sites

sites.list

✅ Yes

✅ Yes

All properties and permission levels

get_site

Sites

sites.get

✅ Yes

✅ Yes

One property, with permission level

add_site

Sites

sites.add

✅ Yes

✅ Yes

Mutation; needs verification afterwards

delete_site

Sites

sites.delete

✅ Yes

✅ Yes

Mutation; irreversible via the API

Sitemaps

list_sitemaps

Sitemaps

sitemaps.list

✅ Yes

✅ Yes

Optional sitemap-index drill-down

get_sitemap

Sitemaps

sitemaps.get

✅ Yes

✅ Yes

Processing status and error counts

submit_sitemap

Sitemaps

sitemaps.submit

✅ Yes

✅ Yes

Mutation

delete_sitemap

Sitemaps

sitemaps.delete

✅ Yes

✅ Yes

Mutation

submit_sitemaps

Sitemaps

(composes sitemaps.submit)

✅ Yes

✅ Yes

Bulk; failure-tolerant per sitemap

Search Analytics

query_search_analytics

Search Analytics

searchanalytics.query

✅ Yes

✅ Yes

Raw 1:1 wrapper, full request control

query_all_rows

Search Analytics

(composes searchanalytics.query)

✅ Yes

✅ Yes

Pages past the 25,000-row cap

top_queries

Search Analytics

(grouped by QUERY)

✅ Yes

✅ Yes

Sorted by clicks, named fields

top_pages

Search Analytics

(grouped by PAGE)

✅ Yes

✅ Yes

Sorted by clicks

performance_by_date

Search Analytics

(grouped by DATE)

✅ Yes

✅ Yes

Daily time series

performance_by_country

Search Analytics

(grouped by COUNTRY)

✅ Yes

✅ Yes

ISO-3166-1 alpha-3

performance_by_device

Search Analytics

(grouped by DEVICE)

✅ Yes

✅ Yes

Desktop / mobile / tablet

performance_by_search_appearance

Search Analytics

(grouped by SEARCH_APPEARANCE)

✅ Yes

✅ Yes

Rich result types

compare_periods

Search Analytics

(two queries, with deltas)

✅ Yes

✅ Yes

Equal-length preceding period, flags new

URL Inspection

inspect_url

URL Inspection

urlInspection.index.inspect

✅ Yes

✅ Yes

Index status, canonicals, crawl, AMP

inspect_urls

URL Inspection

(composes urlInspection.index.inspect)

✅ Yes

✅ Yes

Bulk, quota-aware, verdict summary

URL Testing Tools

run_mobile_friendly_test

Testing Tools

urlTestingTools.mobileFriendlyTest.run

✅ Yes

✅ Yes

⚠️ Shut down by Google 1 Dec 2023

Diagnostics

check_client_status

Diagnostics

(no API call)

✅ Yes

✅ Yes

Credential state; spends no quota

Summary Statistics

  • API Methods Implemented: 11 out of 11 Search Console API v1 methods (100%)

  • Total Tools: 22 (11 API methods + 11 convenience tools)

  • Tools with Tests: 22 (100% test coverage)

  • Line & Branch Coverage: 100% across src (468 statements, 96 branches), enforced by fail_under = 100

  • Test Count: 144

  • Type Safety: pyright strict, 0 errors

Implementation Highlights

  1. Complete API Surface: every published method, including the one Google deprecated

  2. Coverage Enforced, Not Claimed: tests/test_api_coverage.py diffs the implementation against the vendored discovery document in both directions

  3. End-to-End Tool Tests: every tool is invoked through a real MCP client, not just unit-tested at the service layer

  4. Correct Metric Aggregation: totals recompute CTR from summed clicks/impressions and weight position by impressions — averaging either across rows gives a wrong answer

  5. Quota Awareness: bulk URL inspection refuses to exceed the documented 2,000/property/day limit

Key Features

  • Typed Discovery Client: complete static types from google-api-python-client-stubs

  • Off-Loop Execution: the synchronous Google client is dispatched via asyncio.to_thread, so it never blocks the MCP event loop

  • Uniform Error Translation: one execute() helper turns HttpError into a readable message, including a 403 hint about property-identifier format

  • Lazy Client Initialisation: credentials resolve on first use, so the server starts even when misconfigured and check_client_status can say why

  • Read-Only Mode: SEARCH_CONSOLE_READ_ONLY=true requests the readonly scope and refuses all four mutations

  • Property Normalisation: domain vs URL-prefix properties handled at the boundary

Deprecated API Methods

Nothing is unimplemented. One method is implemented but non-functional upstream:

  • urlTestingTools.mobileFriendlyTest.run — Google shut this down on 1 December 2023. It is still published in the discovery document, so it is implemented here for complete coverage, and its docstring says plainly that it returns an error. For mobile usability signals use inspect_url, whose response carries a mobileUsabilityResult.

Why there is no Search Console SDK

Search Console is a discovery-document API. Google ships no dedicated client library for it in any language — no equivalent of google-ads or google-analytics-data. It is one of ~300 APIs served by the generic google-api-python-client, whose resources are built dynamically at runtime and are entirely untyped.

Other languages fare better, because their generic clients generate code at build time into per-API packages: Go has google.golang.org/api/searchconsole/v1, Java has google-api-services-searchconsole, .NET has Google.Apis.SearchConsole.v1, and Node's googleapis ships Schema$* TypeScript interfaces. Python is the outlier — its client parses the discovery document at runtime, so there is nothing to type-check.

That would normally rule out strict type checking. The way out is google-api-python-client-stubs, which covers searchconsole/v1 completely: all 30 schemas as TypedDicts with Literal enums, and a build() overload keyed on the literal service name. It is a dev-only dependency — stubs never ship at runtime, so if it goes stale the cost is type-checking, not functionality.

Two consequences to know before editing:

  • src/client.py imports SearchConsoleResource under if TYPE_CHECKING:. The googleapiclient._apis package does not exist at runtime; that guard must stay.

  • FastMCP resolves tool annotations at runtime, so tool signatures use Dict[str, Any] while the service layer beneath stays precisely typed. Annotating a tool with a stub type raises NameError at registration.

Testing

# Run tests
uv run pytest

# Run tests with coverage (must stay at 100%)
.venv/bin/python -m pytest --cov --cov-report=term-missing

# Run type checking
uv run pyright

# Run code formatting
uv run ruff format .

# Everything at once
./scripts/typecheck.sh

Coverage is invoked as .venv/bin/python -m pytest rather than uv run pytest for one reason, documented in pyproject.toml: constructing a FastMCP instance inside a coverage-instrumented module trips a type check in cryptography's Rust bindings, so main.py is excluded from the measured source set and covered end-to-end by tests/test_api_coverage.py instead.

Test layout

File

Covers

test_tools.py

Every tool invoked through a real MCP client, end to end

test_sites_service.py

Sites service methods

test_sitemaps_service.py

Sitemaps service methods

test_search_analytics_service.py

Query building, pagination, aggregation maths, period comparison

test_url_inspection_service.py

Inspection, bulk summarising, quota guard

test_url_testing_tools_service.py

Deprecated Mobile-Friendly Test

test_client.py

Credential resolution, scopes, read-only gate, lifecycle

test_base.py

Error translation, 403 hint, off-loop dispatch

test_utils.py

Property normalisation, date maths, dotenv

test_api_coverage.py

The API coverage contract, both directions

When Google revises the API

uv run scripts/refresh_discovery.py
uv run pytest tests/test_api_coverage.py

A new method fails test_every_api_method_is_declared until it is implemented and mapped in src/coverage.py. A removed one fails test_no_declared_method_has_been_removed. That failure is the intended alarm — do not weaken the test.

Repository layout

src/client.py            credentials, typed discovery client, read-only gate
src/coverage.py          API method -> tool mapping; the coverage contract
src/services/            one module per API resource
src/services/base.py     off-loop dispatch and error translation
refs/                    vendored discovery document
scripts/                 token minting, discovery refresh, checks
tests/                   144 tests, 100% coverage
main.py                  stdio MCP server

Contributing

Contributions are welcome. Please ensure:

  1. All code has proper type annotations

  2. Tests are added for new functionality — coverage must stay at 100%

  3. Code passes uv run pyright with no errors

  4. Code is formatted with uv run ruff format

  5. Any new API method is mapped in src/coverage.py

License

MIT — see LICENSE.

Disclaimer

This is an unofficial integration and is not affiliated with or endorsed by Google. Search Console API quotas apply; the URL Inspection API is limited to 2,000 queries per property per day and 600 per minute.

Available Tools

22 tools
add_siteAdd SiteA

Add a property to Search Console. Requires verification afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesProperty identifier to add.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose one meaningful post-condition (verification is required after adding), which is real behavioral context. However, it omits idempotency behavior, required auth level, and the outcome when the site already exists.

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 short sentences with zero filler; the core action is front-loaded and the verification caveat follows immediately.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. For a mutation tool with no annotations, though, the description is thin: it does not cover permissions, duplicate-handling, or what verification entails, which are the main things an agent would need.

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?

There is a single parameter with 100% schema description coverage, so the schema already defines site_url as the property identifier. The description adds no format guidance (e.g. URL vs domain property syntax), so baseline 3 applies.

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 states a specific verb and resource ("Add a property to Search Console"), which clearly distinguishes it from siblings like delete_site and list_sites. It stops short of naming an alternative or contrast condition, but the action 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 Guidelines3/5

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

Usage is implied by the verb and the note that verification is required afterwards, but the description never states when to add a site versus other management tools, nor any prerequisites (permissions, ownership) or what to do if the property already exists.

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

check_client_statusCheck Client StatusA

Check that the Search Console client is configured and can authenticate.

Returns: Whether credentials resolve, whether the server is in read-only mode, and the OAuth scopes in use.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does reasonably well: it discloses what the check exposes (credential resolution, read-only mode, OAuth scopes), which is meaningful behavior beyond the empty schema. It stops short of saying whether this performs a live network round-trip or how failures surface.

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?

One-sentence purpose followed by a compact 'Returns' block; the key claim (configured and can authenticate) is front-loaded and nothing is wasted.

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 is adequate for a simple zero-param diagnostic, and the 'Returns' section redundantly but harmlessly previews the output schema. It lacks only guidance on interpreting failure (e.g., what a false credential resolution implies for subsequent calls).

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 by rule. The description correctly signals a no-input check and adds no misleading parameter expectations.

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 verb ('check') and resource (the Search Console client's configuration/authentication), which unambiguously separates it from the data-fetching siblings like list_sites and query_search_analytics. An agent can tell this is a diagnostic/preflight tool without opening the schema.

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?

Usage is only implied: the purpose (verify config and auth) suggests calling it before other operations or when auth fails, but the description never states when to use it, when not to, or what to do with the result. No alternatives are named.

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

compare_periodsCompare PeriodsB

Compare a period against the equal-length period immediately before it.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoSimplified filters combined with AND.
end_dateNoInclusive end of the current period.
site_urlYesProperty identifier.
dimensionNoOptional dimension to break the comparison down by, e.g. QUERY or PAGE. Omit for property-level totals only.
row_limitNoRows per period when a dimension is given.
start_dateNoInclusive start of the current period. Defaults to a 28-day window ending three days ago.
search_typeNoReport type.WEB

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the operation is read-only, what permissions are required, whether there are rate limits, or how pagination works.

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?

It is a single front-loaded sentence with zero waste. The comparison semantics are stated immediately.

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

Completeness3/5

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

The schema fully documents parameters and an output schema exists, so the description need not cover returns. Still, it omits when-to-use guidance and behavioral context, leaving it only minimally complete for an analytics comparison 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 description coverage is 100%, so the parameter meanings are already fully documented in the schema. The description adds no parameter-level meaning beyond what is structured.

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?

States a specific verb and resource: compare a period against the equal-length period immediately before it. However, it does not distinguish this tool from sibling analytics tools such as performance_by_date or query_search_analytics.

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

Usage Guidelines2/5

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

No when-to-use guidance, prerequisites, or alternatives are given. The description only says what the tool does, leaving the agent to infer when it should be selected over siblings.

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

delete_siteDelete SiteA

Remove a property from Search Console.

This unlinks the property from the account. Historical data is retained by Google but becomes inaccessible until the property is re-added and re-verified.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesProperty identifier to remove.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and succeeds in disclosing key behavior: the property is unlinked from the account, and historical data remains with Google but is inaccessible until re-adding and re-verification. It does not mention permission requirements or confirmation behavior, which keeps it from a 5.

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 and immediately followed by the key consequence. Every sentence earns its place with no redundant or filler content.

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 tool has one required parameter with full schema coverage and an output schema that handles return values. The description fully covers the effect and data-retention behavior, leaving nothing essential for an agent to call it 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 single site_url parameter is already well documented. The description adds no further syntax or format details beyond what the schema provides, matching the baseline for full schema coverage.

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 names a specific verb and resource: 'Remove a property from Search Console.' It clearly distinguishes this tool from sibling operations like add_site and delete_sitemap, which target different resources.

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 when to use the tool by saying it removes a property, but it does not explicitly state when to choose this over alternatives such as delete_sitemap or list_sites. No exclusions or prerequisites are given.

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

delete_sitemapDelete SitemapC

Delete a sitemap from Search Console.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedpathYesFull URL of the sitemap to delete.
site_urlYesProperty identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the bare action. It does not state that deletion is irreversible, whether the sitemap must first exist, whether the property permission level matters, or what happens on a nonexistent sitemap. For an unannotated destructive mutation this is a significant gap.

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?

A single short sentence with zero filler, and the action verb is front-loaded. Nothing is padded or repeated.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the description is still incomplete for a destructive, unannotated tool. It should at minimum state irreversibility and any preconditions for deletion; as written, the agent learns nothing it could not already infer from the tool name and 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%; both site_url (property identifier) and feedpath (full URL of the sitemap) are documented in the schema itself. The description adds no syntax, format, or example detail beyond that, so the baseline of 3 applies.

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 states a specific verb (Delete) and resource (a sitemap from Search Console), so an agent can immediately tell what the tool does. However, it makes no attempt to distinguish itself from siblings such as submit_sitemap, submit_sitemaps, or get_sitemap, so differentiation is left to inference.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no precondition stating the sitemap must already be registered, and no mention of authorization requirements. The agent must infer that this is the inverse of submit_sitemap purely from the name.

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

get_siteGet SiteB

Get one Search Console property and the caller's permission level.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesProperty identifier. Either a domain property ("sc-domain:example.com") or a URL-prefix property ("https://example.com/"). A bare hostname is treated as a domain property.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the response includes the caller's permission level and implies a read-only operation, but does not state auth requirements, explicitly confirm read-only behavior, or describe error handling.

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?

A single front-loaded sentence with no filler. Every word contributes to stating the verb, resource, and additional return detail without redundancy.

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 low complexity (one fully documented parameter), the presence of an output schema, and no annotations, the description is nearly complete. It could be improved by clarifying when to choose get_site over list_sites, but it provides enough to invoke the tool 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 sole parameter 'site_url' is already fully documented in the schema. The description adds no additional meaning, syntax, or constraints beyond what the schema provides; baseline 3 is appropriate.

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?

States a specific verb ('Get') and resource ('Search Console property'), plus an additional return item ('caller's permission level'). It implicitly distinguishes from list_sites by saying 'one', but does not explicitly name or contrast with any sibling tool.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus list_sites or other siblings. It does not state prerequisites, exclusions, or alternatives, leaving the agent to infer usage from the purpose alone.

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

get_sitemapGet SitemapA

Get one sitemap's processing status and error counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedpathYesFull URL of the sitemap, e.g. https://example.com/sitemap.xml
site_urlYesProperty identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Get' plus the read-oriented framing (status and error counts) makes the read-only, non-destructive nature apparent, but permissions, whether an unsubmitted or unprocessed sitemap returns an error, and rate-limit behavior are all undisclosed.

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?

A single tight sentence with the resource and the returned content front-loaded. No filler, no restatement of the title.

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?

An output schema exists, so the description need not explain return values, and the two parameters are fully documented in the schema. For a simple single-resource read this is nearly complete; only the usage routing against list_sitemaps/submit_sitemap siblings is missing.

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%: feedpath is documented as a full URL with an example and site_url as a property identifier. The description adds no further parameter meaning, so the baseline 3 applies.

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?

States a specific verb (Get) and resource (one sitemap), plus what it returns: processing status and error counts. It implicitly distinguishes itself from the plural sibling list_sitemaps, though it never names that sibling or explicitly contrasts the two.

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?

Usage is only implied: an agent can infer this is for inspecting a single already-known sitemap rather than enumerating them, but the description gives no explicit when-to-use condition, no prerequisite (e.g. the sitemap must have been submitted), and no named alternative such as list_sitemaps.

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

inspect_urlInspect UrlA

Inspect one URL's index status in Google Search.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesProperty identifier. The inspected URL must be under it.
language_codeNoBCP-47 code for translated issue messages, e.g. en-US.en-US
inspection_urlYesFull URL to inspect.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'Inspect' implies a read-only, non-destructive operation, and the output schema covers return values, but the description does not disclose permission requirements, quota behavior, or Search Console property ownership constraints.

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?

A single efficient sentence front-loads the operation and resource. There is no redundant or wasted phrasing.

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

Completeness4/5

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

For a simple read-only inspection tool with full schema descriptions and an output schema, the description is largely complete: it identifies the operation, scope, and resource. It could explicitly route the agent to 'inspect_urls' for multiple URLs, but that is the main missing contextual detail.

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 input schema already documents all three parameters clearly. The description adds only the concept of inspecting one URL's index status and does not contribute additional parameter syntax or constraints beyond the schema.

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

Purpose5/5

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

States a specific verb ('Inspect'), a clear resource ('one URL's index status in Google Search'), and the singular scope distinguishes it from the sibling 'inspect_urls' bulk tool. An agent can identify the operation without opening the schema.

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 phrase 'one URL' implies this is for single-URL inspection versus the plural sibling 'inspect_urls', but the description does not explicitly say when to use this tool, when not to, or that batch inspection should use the alternative. Usage is only implied.

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

inspect_urlsInspect UrlsA

Inspect several URLs and summarise their index status.

Each URL costs one unit of the 2,000-per-property-per-day URL Inspection quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesProperty identifier.
language_codeNoBCP-47 code for translated issue messages.en-US
inspection_urlsYesFull URLs to inspect, all under the property.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it usefully discloses a hard operational constraint: one unit per URL against a 2,000-per-property-per-day quota. It says nothing about auth requirements or partial-failure behavior across multiple URLs, which is the main remaining gap.

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 short sentences, front-loaded with the action and result, then the cost constraint. Every sentence earns its place with no filler.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and all parameters are schema-documented. The quota disclosure fills the biggest behavioral gap; only the missing routing guidance versus inspect_url keeps this from being complete.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (site_url, language_code, inspection_urls) are already documented in the schema. The description adds no syntax, format, or constraint detail beyond that, so the baseline 3 applies.

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 gives a specific verb and resource ('Inspect several URLs') plus the purpose of the result ('summarise their index status'). The plural framing implicitly distinguishes it from the singular sibling inspect_url, but it never names that sibling explicitly, so differentiation relies on inference.

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

Usage Guidelines2/5

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

Apart from the quota cost note, there is no guidance on when to choose this over inspect_url or the other sibling tools, and no stated prerequisites or exclusions. The agent must infer that this is the batch counterpart to inspect_url.

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

list_sitemapsList SitemapsC

List the sitemaps submitted for a property.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesProperty identifier.
sitemap_indexNoOptional sitemap index URL. When given, lists the child sitemaps of that index instead of the top-level ones.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it says nothing about read-only vs mutating semantics, permissions/auth, pagination, or limits. A single sentence for a bare list operation leaves the agent with little beyond the read-only inference from the verb 'List'.

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?

One short sentence with no wasted words and the key scope ('submitted for a property') front-loaded. It is efficient, though arguably under-specified rather than tight for a tool with siblings needing differentiation.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the core read operation is conveyed. But with no annotations and no usage or behavioral context, the definition is only minimally complete for selecting this tool among its many siblings.

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%, including a well-documented sitemap_index parameter explaining child-sitemap listing, so the schema does the heavy lifting. The description adds no parameter meaning beyond what is already documented, which matches the baseline 3 for high coverage.

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 gives a specific verb (List) and resource (sitemaps) scoped to a property, which is clearer than the title alone. However, it does nothing to distinguish itself from close siblings like get_sitemap, submit_sitemaps, or delete_sitemap, so an agent must infer the difference from names alone.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, nor any prerequisites or exclusions. The agent must guess, for example, that this lists sitemaps while get_sitemap retrieves a single one.

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

list_sitesList SitesA

List all Search Console properties the account can access.

Returns: Each property's siteUrl and the caller's permissionLevel (siteOwner, siteFullUser, siteRestrictedUser or siteUnverifiedUser).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It implicitly conveys a safe read-only enumeration and names the returned fields, but says nothing about permissions needed or result limits; the return details are also partially redundant given an output schema exists.

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 tight sentences, front-loaded with the core action and scope, followed by a compact return summary. Every line earns its place with no filler.

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

Completeness4/5

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

For a zero-parameter list tool with an output schema, the description covers what it does and what comes back, so an agent can call it confidently. The only shortfall is the absence of any usage context or sibling routing.

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, which is the documented baseline of 4. There is no parameter meaning for the description to add, and it correctly avoids inventing any.

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?

States a specific verb and resource ('List all Search Console properties') with an explicit scope ('the account can access'). It is clearly distinguishable from siblings like get_site, add_site, and delete_site, though it does not name any of them directly.

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?

Usage is only implied: an agent can infer this is the discovery step before using get_site/add_site, but the description offers no when-to-use framing, prerequisites, or explicit alternatives. Adequate but with clear gaps.

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

performance_by_countryPerformance By CountryC

Performance broken down by country.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoSimplified filters combined with AND.
end_dateNoInclusive end date.
site_urlYesProperty identifier.
row_limitNoNumber of countries to return.
start_dateNoInclusive start date. Defaults to a 28-day window ending three days ago.
search_typeNoReport type.WEB

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, and it adds nothing: no mention of default date windowing, row-limit behavior, rate limits, or authentication needs. The schema does encode defaults (28-day window, row_limit 100), but the description offers no behavioral context beyond the title.

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?

A single short sentence with no filler and the grouping dimension front-loaded. It is efficient, though its brevity borders on under-specification rather than tight writing.

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

Completeness2/5

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

An output schema exists, so return values need not be described, and the schema covers parameters well. Still, for a tool in a family of four 'performance_by_*' siblings with no annotations, the description should at minimum say what metrics are reported and how it differs from the other breakdowns.

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%, including enum values, defaults, and the date-window default, so the schema fully documents all six parameters. The description adds no additional parameter meaning, which is the expected baseline when the schema does the heavy lifting.

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

Purpose3/5

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

The phrase 'Performance broken down by country' names the resource and the grouping dimension, which loosely distinguishes it from siblings like performance_by_date. However, 'performance' is never defined (clicks, impressions, CTR, position?), so the purpose is only implied rather than stated with a concrete verb/resource pair.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus performance_by_date, performance_by_device, or performance_by_search_appearance, nor any mention of prerequisites such as which site properties are valid. The agent must infer usage purely from the tool name.

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

performance_by_datePerformance By DateC

Daily performance time series for a property.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoSimplified filters combined with AND.
end_dateNoInclusive end date.
site_urlYesProperty identifier.
row_limitNoMaximum days to return.
start_dateNoInclusive start date. Defaults to a 28-day window ending three days ago.
search_typeNoReport type.WEB

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it only restates the shape of the result. It says nothing about read-only behavior, authentication/scope requirements, rate limits, data freshness, or the default 28-day window semantics that drive results.

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?

A single eight-word sentence with no filler and a front-loaded subject. It is efficiently sized, though arguably too terse to carry any detail an agent could use.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the schema covers all six parameters. However, given the dense sibling set of similar performance_* tools and the absence of annotations, the description omits any disambiguation or behavioral context needed to pick this tool confidently.

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 every parameter (including filter combination semantics, inclusive date bounds, row_limit, and the search_type enum) is already documented in the schema. The description adds no syntax, format, or interaction detail beyond that, so the baseline of 3 applies.

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?

States a specific resource (performance) and a specific dimension (daily/date-based time series), which implicitly distinguishes it from the sibling dims performance_by_country and performance_by_device. It does not explicitly name an alternative, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when to prefer it over performance_by_country/performance_by_device or query_search_analytics, and no prerequisites. The reader must infer intended usage from the name alone.

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

performance_by_devicePerformance By DeviceB

Performance broken down by device (desktop, mobile, tablet).

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoSimplified filters combined with AND.
end_dateNoInclusive end date.
site_urlYesProperty identifier.
start_dateNoInclusive start date. Defaults to a 28-day window ending three days ago.
search_typeNoReport type.WEB

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It does not state read-only/destructive status, authorization needs, rate limits, or that it returns aggregate reporting rather than modifying data; only the tool name implies a read operation.

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?

A single front-loaded sentence with no wasted words. It is extremely terse, but conciseness is appropriate and not verbose.

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?

An output schema exists and the input schema fully documents parameters, so the description need not explain return values or parameter details. It identifies the device breakdown clearly enough to route among the performance_by_* siblings, though it omits usage and behavioral 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?

Schema description coverage is 100%, so the schema already documents all five parameters including defaults and the search_type enum. The description adds device breakdown context but no parameter semantics beyond what the schema provides; baseline 3 applies.

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?

States a specific resource and breakdown dimension ('performance broken down by device'), and 'by device' distinguishes it from siblings like performance_by_date, performance_by_country, and performance_by_search_appearance. However, it lacks an explicit verb and does not directly name alternatives.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, prerequisites, or comparison to alternative performance breakdown tools. The agent is not told when to choose this over performance_by_date, performance_by_country, or compare_periods.

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

performance_by_search_appearancePerformance By Search AppearanceA

Performance broken down by search appearance (rich result types).

Note that SEARCH_APPEARANCE cannot be combined with other dimensions in the same request, which is why this has no filters argument.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoInclusive end date.
site_urlYesProperty identifier.
row_limitNoNumber of appearance types to return.
start_dateNoInclusive start date. Defaults to a 28-day window ending three days ago.
search_typeNoReport type.WEB

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses a request-level limitation (the dimension cannot be combined, hence no filters argument), which is genuine behavioral context. However, it says nothing about read-only nature, permission scope, pagination, or result ordering.

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 purpose and followed by the single most surprising design fact. No filler, no restatement of the title.

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?

An output schema exists, so return values need not be described, and the schema fully documents parameters. The description supplies the one non-obvious constraint about dimension incompatibility. Minor gaps remain around result ordering and how appearance types are enumerated, but nothing blocking.

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 end_date, site_url, row_limit, start_date and search_type are all documented in the schema itself. The description adds no parameter-level detail beyond explaining the deliberate absence of a filters argument, so the baseline 3 applies.

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?

States a specific verb and resource ('Performance broken down by search appearance') and clarifies the dimension with 'rich result types'. The dimension name inherently distinguishes it from parallel siblings like performance_by_date, performance_by_country and performance_by_device, though it never names them explicitly.

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 note that SEARCH_APPEARANCE cannot be combined with other dimensions gives a real usage constraint, but there is no explicit statement of when to pick this tool over the parallel performance_by_* siblings or what the intended scenarios are. Usage is only implied by the groupby dimension.

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

query_all_rowsQuery All RowsB

Retrieve every row for a query, paging past the 25,000-row cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoSimplified filters combined with AND, each {"dimension": ..., "operator": ..., "expression": ...}.
end_dateYesInclusive end date, YYYY-MM-DD.
max_rowsNoSafety ceiling on rows retrieved. Default 100,000.
site_urlYesProperty identifier.
data_stateNoFINAL (default) or ALL to include fresh partial data.
dimensionsNoDimensions to group by. Defaults to ["QUERY"].
start_dateYesInclusive start date, YYYY-MM-DD.
search_typeNoWEB, IMAGE, VIDEO, NEWS, DISCOVER or GOOGLE_NEWS.WEB

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the pagination behavior past the 25,000-row cap, which is genuinely useful, but adds nothing about rate limits, permission requirements, or the cost of exhaustively paging large result sets despite max_rows defaulting to 100,000.

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?

A single sentence, front-loaded with the action and the distinguishing pagination behavior. Every word earns its place with no redundancy.

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

Completeness3/5

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

The description covers the core purpose and the row-cap behavior, and an output schema exists so return values need not be explained. However, for an 8-parameter exhaustive-retrieval tool with no annotations, the lack of guidance on cost, permissions, or when to prefer it over narrower analytics siblings leaves meaningful gaps.

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 already documents all 8 parameters including enums, defaults, and date formats. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.

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?

States a specific verb (retrieve) and resource (every row for a query) and distinguishes itself by promising full retrieval past the 25,000-row cap, which sets it apart from siblings like top_queries that likely cap results. It doesn't explicitly name which sibling to use instead, keeping it from a 5.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance relative to the many analytics siblings (query_search_analytics, top_queries, performance_by_date). The agent must infer that this is the exhaustive-retrieval option from the phrase 'every row,' with no stated exclusions or cost warnings.

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

query_search_analyticsQuery Search AnalyticsA

Run a raw Search Analytics query with full control over the request.

This is the unmodified API method. For the common cases prefer top_queries, top_pages, performance_by_date, performance_by_country, performance_by_device, compare_periods or query_all_rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesInclusive end date, YYYY-MM-DD (PST).
site_urlYesProperty identifier.
row_limitNo1 to 25,000. Page with start_row beyond that.
start_rowNoZero-based index of the first row to return.
data_stateNoFINAL for finalised data only (default), ALL to include fresh partial data from the last ~2 days, HOURLY_ALL for hourly.
dimensionsNoDimensions to group by, in order. Results are keyed by the combination of these, in the order supplied.
start_dateYesInclusive start date, YYYY-MM-DD (PST).
search_typeNoWEB, IMAGE, VIDEO, NEWS, DISCOVER or GOOGLE_NEWS.WEB
aggregation_typeNoAUTO, BY_PROPERTY or BY_PAGE. Use AUTO when grouping or filtering by PAGE.
dimension_filter_groupsNoNative filter groups, e.g. [{"groupType": "AND", "filters": [{"dimension": "QUERY", "operator": "CONTAINS", "expression": "buy"}]}]

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It hints the query is 'raw' and 'full control', but says nothing about authorization requirements, rate limits, whether results are paginated (though the schema mentions paging), or what the return structure is (output schema exists, so that's partially covered). For a complex 10-parameter analytics tool with no annotations, this is a significant gap.

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?

Ten words in the first sentence and a single list of alternatives in the second — no filler, and the key distinction (raw vs. preset) is front-loaded.

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

Completeness3/5

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

Given the 10 parameters and no annotations, the description does not provide enough operational context (e.g., auth scope, rate limits, pagination behavior beyond what the schema implies). An output schema exists so return-value explanation is not required, but behavioral gaps remain for a complex query 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 description coverage is 100%, so the schema already documents all 10 parameters depthfully. The description adds no parameter-level meaning beyond the schema. Baseline 3 is appropriate when the schema is comprehensive.

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 first sentence states a specific verb and resource ('Run a raw Search Analytics query') and the second sentence clarifies the tool's positioning ('unmodified API method'). However, it doesn't explicitly state what distinguishes it from the named siblings beyond being raw/not preset; the mechanism of distinction is implied by the alternative names.

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?

Explicitly names seven alternative tools for common cases (top_queries, top_pages, performance_by_date, etc.) and states the condition for using this tool ('full control over the request'), creating a clear when-to-use / when-to-use-something-else split.

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

run_mobile_friendly_testRun Mobile Friendly TestA

DEPRECATED AND NON-FUNCTIONAL. Run the Mobile-Friendly Test on a URL.

Google shut this API down on 1 December 2023; calling it returns an error. It exists here only so this server covers the published API surface completely. Do not call it expecting a result. For mobile usability signals, use inspect_url instead, whose response carries a mobileUsabilityResult.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to test.
request_screenshotNoWhether to request a rendered screenshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses the API shutdown date, that calling it returns an error, and that it exists only for API-surface completeness. It stops short of describing the concrete error shape or whether the call still consumes quota, but the essential behavior is unambiguous.

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 critical warning is front-loaded in the first line, followed by the reason and the alternative. Every sentence earns its place and nothing is wasted.

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?

An output schema exists, so return values need no explanation. Combined with the deprecation status, error behavior, and the explicit redirect to inspect_url, an agent has everything needed to decide not to call this 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 description coverage is 100% and both parameters (url, request_screenshot) are documented in the schema, so the baseline is 3. The description adds nothing about parameter semantics, but the schema already does the heavy lifting for a two-param tool.

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 the specific verb+resource ('Run the Mobile-Friendly Test on a URL') and immediately qualifies it with 'DEPRECATED AND NON-FUNCTIONAL', so an agent understands both the nominal purpose and its unusability. It also names a sibling (inspect_url) so it can be distinguished without opening schemas.

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?

Explicitly says 'Do not call it expecting a result' and redirects to the alternative ('use inspect_url instead, whose response carries a mobileUsabilityResult'), naming the exact field to look for. This is textbook when-not-to-use plus the replacement path.

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

submit_sitemapSubmit SitemapC

Submit a sitemap to Search Console.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedpathYesFull URL of the sitemap to submit.
site_urlYesProperty identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing about idempotency, permissions, error handling, rate limits, or what happens if the sitemap is invalid — only that a submission occurs.

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?

A single front-loaded sentence with no wasted words. It is structurally sound but extremely terse for a mutation tool.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the input schema is fully described. However, the description lacks sibling differentiation and behavioral context for a write operation, leaving it partially incomplete.

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 already documents both parameters. The description adds no additional meaning about site_url or feedpath formats beyond what the schema provides, making the baseline of 3 appropriate.

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?

States a specific verb 'Submit' and resource 'sitemap' with the destination 'Search Console,' making the core action clear. However, it does not distinguish this tool from the sibling 'submit_sitemaps,' leaving ambiguity for an agent choosing between the two.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of alternatives like submit_sitemaps, and no prerequisites or conditions for invocation. Usage is only implied by the verb.

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

submit_sitemapsSubmit SitemapsB

Submit several sitemaps to one property in a single call.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYesProperty identifier.
feedpathsYesFull URLs of the sitemaps to submit.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It doesn't disclose what happens on duplicate or invalid URLs, whether re-submission is idempotent, any per-property sitemap limits, or auth requirements for a mutating submission.

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?

A single front-loaded sentence with no filler; the batch scope and target are stated immediately.

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

Completeness3/5

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

With an output schema present and full parameter coverage, return values need no explanation. However, for a mutating submission tool with zero annotations and a near-identical sibling, the description leaves behavioral expectations and tool selection entirely to inference.

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 site_url and feedpaths are already documented as a property identifier and a list of full sitemap URLs. The description adds only the constraint that all submitted sitemaps target one property, which is marginal over the schema.

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 gives a specific verb (Submit) and resource (sitemaps) plus the batch scope ('several sitemaps... in a single call'), which implicitly distinguishes it from the singular submit_sitemap sibling. It stops short of naming that alternative, so differentiation is inferable rather than stated.

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?

'Several sitemaps ... in a single call' hints at the batch use case versus the singular submit_sitemap, but the description never explicitly says when to use this tool instead of that sibling or what preconditions (ownership/verification of the property) apply. Usage is implied, not stated.

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

top_pagesTop PagesC

Top landing pages by clicks for a property.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoSimplified filters combined with AND.
end_dateNoInclusive end date.
site_urlYesProperty identifier.
row_limitNoNumber of pages to return.
start_dateNoInclusive start date. Defaults to a 28-day window ending three days ago.
search_typeNoReport type.WEB

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: not that this is a read-only, non-destructive query, not how ranking is defined (implicitly clicks descending?), and not pagination or row_limit truncation behavior. For a multi-parameter analytics tool with zero annotation coverage this is a significant gap.

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?

A single front-loaded sentence with no filler, which is structurally efficient. It is arguably under-specified rather than concise, but it wastes no words.

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

Completeness2/5

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

An output schema exists so return values need not be restated, but with six parameters, no annotations, and a ranking-based semantic, the description leaves the agent without ordering rules, default behavior context, or safety profile. Too thin for a core analytics query 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 description coverage is 100%, so the schema already documents site_url, filters, dates, row_limit, and search_type, making 3 the baseline. The description adds nothing beyond the schema, not even clarifying that 'top' is ranked by the click metric the schema never names.

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?

States a specific resource (landing pages), a metric (clicks), and a scope (a property), which is enough to place it among siblings like top_queries and performance_by_date. It does not explicitly name how it differs from query_search_analytics, which also returns ranked results, but the 'landing pages' phrasing is a meaningful disambiguator.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives (top_queries, query_all_rows), and no stated prerequisites such as needing a valid site_url or an accessible property. The agent must infer all of this from the name and siblings.

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

top_queriesTop QueriesC

Top search queries by clicks for a property.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoSimplified filters combined with AND.
end_dateNoInclusive end date.
site_urlYesProperty identifier.
row_limitNoNumber of queries to return.
start_dateNoInclusive start date. Defaults to a 28-day window ending three days ago, so the last day is not partial.
search_typeNoReport type.WEB

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it only discloses the click-based ordering. It says nothing about authentication requirements, rate limits, pagination, or whether results are truncated at row_limit, all of which matter for an analytics retrieval tool.

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

Conciseness3/5

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

The single sentence is front-loaded and free of filler, but it is arguably under-sized rather than concise for a six-parameter analytics tool. Nothing is wasted, yet too little is said.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the schema thoroughly documents parameters. However, with zero annotations and no usage or behavioral context, the definition leaves an agent without enough to confidently choose this tool over its many analytics siblings.

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 every parameter including the filters object and the default 28-day date window is already documented in the schema. The description adds no parameter-level meaning beyond the click-ordering hint, making 3 the correct baseline.

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 names a specific resource (search queries) and a ranking metric (by clicks) scoped to a property, which is enough to distinguish it from siblings like top_pages or performance_by_date. It stops short of explicitly naming those alternatives, so it doesn't reach the top tier.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus query_search_analytics, query_all_rows, or top_pages, and no mention of prerequisites. The agent must infer usage purely from the name and resource.

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. 22 tool updatesv0.1.0
    • First observedadd_site
    • First observedcheck_client_status
    • First observedcompare_periods
    • First observeddelete_site
    • First observeddelete_sitemap
    • First observedget_site
    • First observedget_sitemap
    • First observedinspect_url
    • First observedinspect_urls
    • First observedlist_sitemaps
    • First observedlist_sites
    • First observedperformance_by_country
    • First observedperformance_by_date
    • First observedperformance_by_device
    • First observedperformance_by_search_appearance
    • First observedquery_all_rows
    • First observedquery_search_analytics
    • First observedrun_mobile_friendly_test
    • First observedsubmit_sitemap
    • First observedsubmit_sitemaps
    • First observedtop_pages
    • First observedtop_queries

TDQS

B3.4/5.0

Scored across 22 tools

Disambiguation4/5

Most tools target distinct resources or actions, and descriptions explicitly differentiate the raw analytics query from specialized ones. Minor overlap exists between singular/plural pairs (submit_sitemap/submit_sitemaps, inspect_url/inspect_urls), but the text clarifies the distinction.

Naming Consistency4/5

Names are consistently snake_case and mostly follow a verb_noun pattern. A few analytics tools are noun phrases (top_queries, performance_by_date), which is a minor deviation but still readable and coherent.

Tool Count3/5

At 22 tools the set feels heavy for the domain. Several analytics wrappers overlap with query_search_analytics, and run_mobile_friendly_test is explicitly deprecated and non-functional, so not every tool earns its place.

Completeness5/5

The surface covers full lifecycle operations for sites and sitemaps, offers comprehensive search analytics breakdowns, and includes both single and batch URL inspection. No obvious gaps remain for the Google Search Console API.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables querying Google Search Console and Google Analytics 4 data to retrieve search performance and site analytics. It provides tools for listing web properties and running detailed reports using secure Google OAuth authentication.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query Google Search Console data including search analytics, URL inspection, sitemap management, and site performance monitoring, with per-user OAuth authentication.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Connects Google Search Console to AI assistants, enabling natural language analysis of SEO data. Provides read-only tools for properties, search analytics, URL inspection, and sitemaps.
    15
    MIT