Skip to main content
Glama
get-mcp-ads

Google Search Console by Get MCP Ads

Google Search Console MCP server

Bring your search performance into the conversation.

Investigate queries, pages, indexing and sitemaps through a read-only MCP server.

Release CI Smithery License: Apache 2.0 Node

Watch the film · What's new · Install · Tool reference · Try hosted getmcpads

Watch the getmcpads film: every ad account in one conversation with your AI assistant

Play the 45-second film

The film shows hosted getmcpads with sample data. Its MCP Apps, from creative galleries and alerts to Google Sheets exports and bulk launches, belong to the hosted product. This repository provides the standalone native API tools.

20 read tools · Read-only by design.

Run locally with your own platform credentials and a client that supports stdio MCP, such as Claude Desktop, Claude Code or Cursor. Your requests go directly to the platform. For managed connections, including supported ChatGPT setups, use the hosted option.

What's new

v2.1.1: Zod 4 security update · October 26, 2026

  • Update zod to 4.6.7. Every Zod release before 4.6.6 is covered by the high-severity advisory GHSA-mrhx-c7xc-m3w5: validating an oversized constrained collection can exhaust memory, and no Zod 3 release carries the fix. npm audit --omit=dev reports no vulnerability again.

  • Keep the Zod 3 validation behaviour. A parameter default is still validated and completed before use, so an omitted object must still supply its required fields.

  • Keep each parameter's own description when the parameter is optional or has a default. Zod 4 stores a description on the wrapped schema only, so the shared fallback description could otherwise replace it.

  • Tool names, parameters and descriptions published over MCP are unchanged. server-card.json is regenerated with Zod 4's JSON Schema output, which spells some constraints differently.

Earlier releases

Version

Date

Highlights

2.1.0

October 23, 2026

Site allowlist and revoked-token handling

2.0.1

September 23, 2026

Public repository restored

2.0.0

September 20, 2026

Gateway sync and security fixes

1.1.0

September 13, 2026

Platform capability sync and quality contracts

1.0.2

August 30, 2026

Announce the package version over MCP.

1.0.1

August 30, 2026

Add server.json and mcpName for the official MCP Registry, under com.getmcpads/google-search-console.

1.0.0

August 29, 2026

First open-source release

Full changelog · All releases

Source synchronization: SOURCE_SYNC.md.

Upgrade notes

Requires Node.js 22.23.4, 24.22.1 or 26.12.1, or a newer release of one of these lines. Older releases lack the October 2026 security fixes, and the server prints a warning on stderr when it starts on one. CI covers Node 22, 24 and 26.

This release makes no breaking change to the configuration. One change is announced for 3.0.0: GSC_SITE_URLS is optional in 2.x and becomes required. When set, every tool is limited to the listed properties, and GSC_SITE_URL must be one of them. When unset, the server starts as before and prints one line on stderr recommending it. The 20 tools, their schemas and the bounded reporting limits are unchanged.

Related MCP server: Google Ads by Get MCP Ads

Install this release

This is a GitHub source release. npm and MCP Registry versions are published separately. The commands below select this exact version; unpinned npx examples later in this document select the version currently available on npm.

git clone --branch v2.1.1 --depth 1 https://github.com/get-mcp-ads/google-search-console-mcp-server.git
cd google-search-console-mcp-server
npm ci
npm run build

Configure your MCP client to run node with the absolute path to dist/cli.js and the platform credentials documented below.

Prefer a managed connection? Use Google Search Console with hosted getmcpads. Connect your account, select the data your assistant may access and use the hosted MCP connection. See the site for current features and plans.

What you get

20 read tools

Search Analytics, sites, sitemaps, URL Inspection, and analyses built on top of them

SEO analyses, not just an API wrapper

Cannibalisation detection, query clustering, wins and losses between periods, indexation watchlists, large-site sampling plans

7 resources

Live catalogues the model can read: metrics, dimensions, filters, compatibility rules, 8 workflow recipes, read-only playbooks

Quota guardrails

Every URL Inspection call is capped at 10 URLs, so one exploratory question cannot burn a day of quota

No writes at all

Not a flag, a property of the code. See below

What it does beyond fetching rows

Search Console answers questions about rows. Most real questions are about change: which queries did we lose, which pages compete for the same term, is indexing drifting.

These tools do that work rather than leaving it to the model:

Tool

Question it answers

gsc_detect_cannibalization

Which pages compete for the same query

gsc_find_losses_gains

What we won and lost between two periods

gsc_cluster_queries

Which queries belong to the same intent

gsc_compare_search_types

How web, image, video and news differ

gsc_analyze_search_appearance_trends

How rich results evolve

gsc_indexation_watchlist

Which URLs changed indexing verdict

gsc_plan_large_site_sampling

Which URLs to inspect, when you cannot inspect them all


One thing to know before you trust a number

Search Console returns a top N, not a site total.

When you query with a dimension such as query or page, the API returns the highest ranked rows up to your row limit, ordered by clicks. Summing the clicks of those rows does not give you the site total: the long tail is missing, and on a large site it can be most of the traffic.

To get a real total, query without dimensions. To compare periods, compare like with like: same dimensions, same row limit, same search type.

gsc_query_search_analytics reports what it actually returned, and gsc_validate_query checks a combination before it runs. But the arithmetic mistake is yours to avoid, and it is the most common one in Search Console analysis.

Two other limits worth carrying in your head:

  • Roughly 16 months of history. Anything older is gone, not slow.

  • Data settles over about three days. gsc_get_data_freshness tells you what is final.


Read-only, and why it stays that way

There are no write tools, and no environment variable that adds any. The Search Console API can submit and delete sitemaps, add and remove properties, and request indexing. This server exposes none of that.

The scope it asks for reflects that: webmasters.readonly, not webmasters. Even if the model tried, the token cannot write.

Our ad platform servers, where writes make sense, do have them, guarded by a mandatory preview: Meta Ads · Google Ads · TikTok Ads

The hosted version at getmcpads.com keeps the same rule: Search Console stays read-only there too.


Getting credentials

Three values, obtained once.

1. OAuth client

In a Google Cloud project, enable the Google Search Console API, then create an OAuth client under APIs & Services → Credentials. Choose Desktop app for local use. Note the client ID and client secret.

2. Refresh token

Run the OAuth consent flow once, signed in as a Google account that owns or can read your properties, and keep the refresh token. Request webmasters.readonly and nothing more.

📖 Google OAuth for installed apps

The refresh token does not expire. Use an OAuth client dedicated to this server so you can revoke it on its own.

For a quick trial you can set GSC_ACCESS_TOKEN to a short-lived token instead, but it expires within the hour and is useless for daily work.

If setting up an OAuth client is more than you want to do for one property, getmcpads.com handles the consent flow for you and gives you the same tools behind a hosted endpoint.

3. Site URL, optional

Set GSC_SITE_URL to avoid passing it on every call. Both property forms work:

Property type

Value

URL-prefix

https://example.com/ (the trailing slash matters)

Domain

sc-domain:example.com

List what you can reach with gsc_list_sites, and run gsc_health_check as your first call. It verifies the credentials without printing any secret.


Setup

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "search-console": {
      "command": "npx",
      "args": ["-y", "@getmcpads/google-search-console-mcp-server"],
      "env": {
        "GSC_CLIENT_ID": "your-client-id",
        "GSC_CLIENT_SECRET": "your-client-secret",
        "GSC_REFRESH_TOKEN": "your-refresh-token",
        "GSC_SITE_URLS": "sc-domain:example.com"
      }
    }
  }
}

Restart Claude Desktop. Ask it: "which queries did we lose last month?".

Claude Code

claude mcp add search-console --env GSC_CLIENT_ID=... --env GSC_CLIENT_SECRET=... --env GSC_REFRESH_TOKEN=... -- npx -y @getmcpads/google-search-console-mcp-server

Cursor

.cursor/mcp.json in your project, same shape as the Claude Desktop config above.

From source

git clone https://github.com/get-mcp-ads/google-search-console-mcp-server.git
cd google-search-console-mcp-server
npm install && npm run build
cp .env.example .env   # then fill in your credentials
npm start

Configuration

Variable

Default

Meaning

GSC_CLIENT_ID

none

OAuth client ID

GSC_CLIENT_SECRET

none

OAuth client secret

GSC_REFRESH_TOKEN

none

From the consent flow

GSC_ACCESS_TOKEN

none

Alternative to the three above, expires within the hour

GSC_SITE_URL

none

Optional default property

GSC_SITE_URLS

unset

Recommended. Comma-separated properties every tool is limited to, written exactly as Search Console shows them. Unset, every property the credentials reach is available. Required in 3.0.0

LOG_LEVEL

info

debug, info, warn, error

Either the three OAuth values, or GSC_ACCESS_TOKEN. The server refuses to start with neither.

npm run doctor

Tools

Every tool is listed below. See server-card.json for complete parameter and output schemas.

Tool

Purpose

gsc_list_sites

List all Google Search Console properties accessible with the current credentials.

gsc_get_site

Get one Search Console property and its exact permission level (read-only sites.get).

gsc_health_check

Verify Google Search Console read-only authentication, visible properties, configured default site, and permission levels without exposing tokens.

gsc_query_search_analytics

Query Google Search Console Search Analytics.

gsc_inspect_url

Inspect a URL for Google indexing status, crawl info, mobile usability, AMP, and rich results.

gsc_bulk_inspect_urls

Inspect multiple URLs with a conservative sequential limit and normalized URL Inspection results.

gsc_list_sitemaps

List sitemaps submitted for a Search Console property, including processing status and submitted/indexed counts.

gsc_get_sitemap

Get one submitted sitemap by full feed path, including type, fetch state, warnings/errors, and submitted/indexed content totals.

gsc_get_sitemap_health

Return an enriched read-only sitemap health summary with status totals, submitted/indexed content counts, warnings, and errors.

gsc_compare_search_types

Compare performance across Search Console search types: web, image, video, news, discover, and Google News.

gsc_get_data_freshness

Detect the most recent date with Search Analytics data by querying recent daily rows.

gsc_monitor_indexation_freshness

Read-only monitoring snapshot for Search Analytics freshness, sitemap indexation totals, and an optional small URL Inspection sample.

gsc_track_sitemap_deltas

Read-only sitemap delta tracker.

gsc_analyze_search_appearance_trends

Analyze structured data and rich-result trend signals via the Search Analytics searchAppearance dimension when GSC exposes it.

gsc_plan_large_site_sampling

Build a read-only URL Inspection sampling plan for large sites from sitemap risk signals and Search Analytics page performance.

gsc_indexation_watchlist

Read-only URL Inspection watchlist for critical URLs.

gsc_find_losses_gains

Compare two periods for query or page performance and return click/impression/CTR/position deltas.

gsc_cluster_queries

Cluster Search Console queries by simple tokens and intent signals: brand/non-brand, question, category, and topic tokens.

gsc_detect_cannibalization

Detect queries where multiple pages compete for clicks/impressions in Search Analytics query-page rows.

gsc_validate_query

Validate a Search Console metric/dimension/search type combination before executing it.

URI

Contents

gsc://manifest

What this server exposes, and which tool to run first

gsc://metrics

The 8 Search Analytics metrics, raw and derived

gsc://dimensions

The 7 dimensions and where they are valid

gsc://filters

The 5 filter operators and their accepted values

gsc://compatibility

Which dimensions work with which search types and data states

gsc://recipes

8 step-by-step workflows

gsc://p2-readonly-playbooks

Monitoring playbooks and their invariants


Security

  • The client secret and refresh token are never logged, at any log level, or written to disk.

  • A revoked refresh token is reported once. When Google answers invalid_grant, every later call returns the same message with the steps to authorize again, and the server stops asking Google for a token until it restarts.

  • Properties can be limited. With GSC_SITE_URLS set, a call naming another property is refused before any request, and gsc_list_sites lists only the allowed properties.

  • Three hosts are contacted, and only three: searchconsole.googleapis.com and www.googleapis.com for the API, oauth2.googleapis.com for the token refresh. A test fails the build if a fourth host appears in the source.

  • No fetch follows a redirect. Every outbound call sets redirect: "error", so a redirect cannot forward a bearer token or client secret to another host. A test fails the build if any fetch omits this.

  • The scope is webmasters.readonly. The token itself cannot write.

  • No telemetry. The server makes no network call other than to Google.

Full policy: SECURITY.md.


Looking for a managed, multi-platform version?

Try hosted Search Console if you want to use this source without operating a local server. getmcpads also connects advertising, Search Console and GA4 through one MCP URL. Source availability and plan limits are listed on the site; connecting an account is still required.

  1. Follow the Search Console connection guide.

  2. Select the account or property your assistant may read.

  3. Connect Claude, ChatGPT or Codex.

  4. Try a read-only review: “Find which pages and queries account for a change in organic clicks. State missing data and do not change anything.”

See the current hosted tool catalogue and pricing before choosing a paid plan. This Apache 2.0 adapter remains independently useful with your own credentials.


Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md. Please read SECURITY.md before reporting anything security-related.

Licence

Apache License 2.0. See also NOTICE.

Google and Google Search Console are trademarks of Google LLC. This project is not affiliated with, endorsed by, or sponsored by Google LLC. It is an independent client of a public API.

MCP contracts and desktop bundle

Every tool declares read/write annotations, parameter descriptions and a structured output schema. Successful calls expose the payload as structuredContent.result; errors retain isError: true. The generated server card contains definitions only.

Run npm run bundle -- /path/to/output to build a .mcpb desktop bundle from the current catalog. Credentials are entered locally during installation. This server remains read-only.

More from getmcpads

Meta Ads · Google Ads · Google Analytics 4 · TikTok Ads · Pinterest Ads · X Ads

Maintained by Emmanuel at getmcpads. Questions: hello@getmcpads.com.

Available Tools

20 tools
gsc_bulk_inspect_urlsgsc bulk inspect urlsA
Read-onlyIdempotent

Inspect multiple URLs with a conservative sequential limit and normalized URL Inspection results. Quota: 2000 requests/day/property.

NameRequiredDescriptionDefault
urlsYesFull URLs to inspect. Maximum 10 per call to protect URL Inspection quota.
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
languageCodeNoOptional IETF language tag, e.g. en-US or fr-FR.
continueOnErrorNoWhen true, returns per-URL errors instead of failing the entire batch.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description correctly adds context they cannot: sequential conservative execution, normalized output, and the 2000 requests/day/property quota. It stops short of stating what normalization means or how partial failures surface (though continueOnError in the schema covers that).

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, zero waste: behavioral scope first, hard quota constraint second. Nothing to trim and the constraint is front-loaded.

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

Completeness4/5

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

With an output schema, complete parameter descriptions, and safety annotations, the description only needs to carry quota and execution behavior, which it does. Slightly incomplete on how errors are aggregated, though continueOnError's schema description covers that ground.

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 four parameters (urls, siteUrl, languageCode, continueOnError) are already documented in the schema. The description adds only the quota rationale, which partially overlaps the urls maxItems note, 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?

States a specific verb and resource ('Inspect multiple URLs') and the batching scope, which inherently separates it from the single-URL sibling gsc_inspect_url. It does not name that sibling explicitly, so differentiation is implied 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?

The word 'multiple' and the 10-URL cap imply batch usage, but the description never says when to prefer this over gsc_inspect_url or gsc_plan_large_site_sampling, nor when not to use it. Usage is inferable only from the tool name and quota note.

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

gsc_cluster_queriesgsc cluster queriesB
Read-onlyIdempotent

Cluster Search Console queries by simple tokens and intent signals: brand/non-brand, question, category, and topic tokens.

NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
dateRangeNoExplicit reporting start and end dates in YYYY-MM-DD format.
brandTermsNoOptional brand terms. Defaults to terms derived from the property domain.
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
searchTypeNoSearch surface to report, such as web, image, video, news or Discover. Availability depends on the property.web
maxClustersNoMaximum query clusters to return.
categoryRulesNoOptional map of category name to matching tokens/phrases.
topQueriesPerClusterNoMaximum example queries returned for each cluster.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The phrase 'simple tokens and intent signals' usefully signals that clustering is heuristic/token-based rather than semantic, but nothing is said about deriving brand terms by default, how many API rows are fetched, or cost/rate implications of a wide date range.

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 the verb first and no filler; it earns its place but is thin for a nine-parameter tool with nested objects and enums.

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 a fully documented schema and an output schema present, the mechanical gaps are filled elsewhere. What remains missing is the routing context an agent needs: what the cluster output is good for and how it relates to its siblings, which matters given nine optional parameters and nested date/rule objects.

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 carries parameter meaning and a baseline of 3 applies. The description's mention of brand/non-brand and category tokens loosely maps to brandTerms and categoryRules, but adds no syntax or behavioral detail beyond what the schema says.

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 ('Cluster') and resource ('Search Console queries') and names the dimensions that define the clusters (brand/non-brand, question, category, topic tokens). No sibling tool does clustering, so it is distinguishable, though the description never states the tool is not a plain query listing like gsc_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?

There is no statement of when to use this instead of gsc_query_search_analytics, gsc_compare_search_types, or any other sibling, and no prerequisites or exclusions. The agent must infer from the name alone that this is the aggregation step after pulling query data.

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

gsc_compare_search_typesgsc compare search typesB
Read-onlyIdempotent

Compare performance across Search Console search types: web, image, video, news, discover, and Google News.

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
dateRangeNoExplicit reporting start and end dates in YYYY-MM-DD format.
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
searchTypesNoSearch surfaces to compare. Each surface is queried separately; do not sum overlapping surfaces.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is fully covered. The description adds nothing behavioral beyond re-listing the enum values that already appear in the schema: no mention of per-surface data limitations (e.g. Discover/News coverage constraints), cost/rate considerations of querying up to six surfaces, or that overlapping surfaces must not be summed.

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 front-loaded sentence with the verb and resource leading, no filler. It loses a point only for redundantly enumerating all six surface names that the schema enum already specifies.

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 rich annotations, a full output schema, and 100% schema coverage, most burden is carried by structured fields. However, for a multi-surface comparison tool the description should at least note that results are per-surface and not additive, and when to choose it over single-surface analytics queries.

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 the key caveat that 'each surface is queried separately; do not sum overlapping surfaces'. The description merely repeats the surface names already present in the schema enum and adds no syntax, defaults, or defaults-override guidance.

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 (compare) and resource (Search Console search types), and enumerates the surfaces involved. An agent can distinguish it from gsc_query_search_analytics, but the description never explicitly says how it differs from that sibling (presumably single-surface querying).

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 word 'compare' implies the use case (side-by-side surface performance), but there is no explicit when-to-use, when-not-to-use, or named alternative. Nothing tells the agent to prefer gsc_query_search_analytics for a single surface instead.

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

gsc_detect_cannibalizationgsc detect cannibalizationC
Read-onlyIdempotent

Detect queries where multiple pages compete for clicks/impressions in Search Analytics query-page rows.

NameRequiredDescriptionDefault
topNNoMaximum number of highest-ranked results to return.
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
minPagesNoMinimum distinct pages ranking for a query before it is considered a cannibalization candidate.
dateRangeNoExplicit reporting start and end dates in YYYY-MM-DD format.
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
searchTypeNoSearch surface to report, such as web, image, video, news or Discover. Availability depends on the property.web
minImpressionsNoMinimum reported impressions required for a row to enter the analysis.
maxTopPageClickShareNoOnly flag queries where the top page owns less than or equal to this click share.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description's only remaining burden is behavioral detail it does not supply — no mention of how candidates are ranked, what the result ordering is, whether low-impression queries are dropped, or any data-volume caveats. It essentially restates the purpose and stops.

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 zero filler or redundancy. It is efficient, though its brevity borders on under-specification for a nine-parameter analytical 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 and all nine parameters are documented, so the essentials are covered. For a multi-parameter heuristic analysis tool, however, the description leaves the detection logic and result semantics entirely to the schema, which is the minimum viable level.

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 minPages, minImpressions and maxTopPageClickShare is fully documented in the schema; baseline 3 applies. The description adds no interpretation of thresholds or how they interact (e.g. how minPages and maxTopPageClickShare jointly define a candidate).

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?

Names a specific verb ('detect') and a precise analytical concept ('queries where multiple pages compete for clicks/impressions'), which is unmistakably keyword cannibalization analysis rather than a raw query dump. It is distinguishable from gsc_query_search_analytics in substance, though it never names a sibling explicitly.

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, when-not-to-use, or alternative routing guidance. The agent must infer from the one-sentence purpose that this is the analysis tool versus gsc_query_search_analytics or gsc_cluster_queries, with no stated conditions or prerequisites.

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

gsc_find_losses_gainsgsc find losses gainsB
Read-onlyIdempotent

Compare two periods for query or page performance and return click/impression/CTR/position deltas.

NameRequiredDescriptionDefault
topNNoMaximum number of highest-ranked results to return.
limitNoRows to fetch for each period.
sortByNoMetric or dimension used to rank the returned results.clicksDelta
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
dimensionNoReporting dimension used to group and compare results.query
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
searchTypeNoSearch surface to report, such as web, image, video, news or Discover. Availability depends on the property.web
currentDateRangeNoCurrent period. Defaults to datePreset.
minAbsClickDeltaNoFilter out rows with smaller absolute click delta.
previousDateRangeNoPrevious period. Defaults to the immediately preceding period with the same length.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds that the tool returns deltas rather than raw rows, which is useful, but it says nothing about cost/latency of fetching two periods, topN/limit interaction, or how previousDateRange is defaulted.

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 sentence, front-loaded with the comparison action and the returned metrics, with no filler. It is efficient, though the brevity leaves important behavioral details unstated.

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?

This is a complex tool: 10 parameters, nested current/previous date range objects, a preset fallback, and topN vs limit semantics. Given that surface, a single sentence does not tell the agent how the two periods are constructed, what the previous-period default means, or how ranking/filtering interact, leaving meaningful gaps despite the presence of an output schema and strong annotations.

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 each of the 10 parameters (including nested date-range objects) is documented in the schema. The description contributes no additional parameter meaning, 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 verb ('Compare') and resource ('query or page performance') and names the exact outputs ('click/impression/CTR/position deltas'). It is clear enough to distinguish from gsc_query_search_analytics, but it never explicitly contrasts itself with siblings like gsc_compare_search_types, so it stops 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?

The only guidance is the implicit 'use this to compare two periods'. There is no statement of when to prefer it over gsc_query_search_analytics or gsc_compare_search_types, no mention of prerequisites, and no hint about how to choose between datePreset and the custom range objects.

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

gsc_get_data_freshnessgsc get data freshnessB
Read-onlyIdempotent

Detect the most recent date with Search Analytics data by querying recent daily rows.

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
searchTypeNoSearch surface to report, such as web, image, video, news or Discover. Availability depends on the property.web
lookbackDaysNoRecent days to scan for daily data. Max 30.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds a small amount of behavioral context — that the detection works by scanning recent daily rows — but says nothing about cost, API call volume, rate limits, or what happens when no data is found within the lookback window.

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 that leads with the outcome and ends with the mechanism; there is no filler and nothing is buried.

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 needn't be explained, and read-only/idempotent behavior is covered by annotations. What's missing is the operational context an agent still needs: which counts as valid output when no data is found, and how this differs from the other freshness-flavored sibling.

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 siteUrl, searchType and lookbackDays (including the 3–30 bound) are fully documented in the schema. The description's reference to "recent daily rows" loosely gestures at lookbackDays but adds no format or defaulting behavior, 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 ("detect") and a precise resource/outcome ("the most recent date with Search Analytics data"), plus the mechanism ("querying recent daily rows"). That is enough to distinguish it from analytics-query siblings, though it never names the similarly-titled gsc_monitor_indexation_freshness, which an agent could easily confuse it with.

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 at all: it doesn't say to call this before gsc_query_search_analytics to avoid querying stale dates, nor when to prefer gsc_monitor_indexation_freshness instead. The only usage context is implicitly inferred from the word "detect".

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

gsc_get_sitegsc get siteA
Read-onlyIdempotent

Get one Search Console property and its exact permission level (read-only sites.get).

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that the response includes the caller's permission level and maps to the read-only sites.get method, which is useful context beyond the structured fields, but says nothing about failure modes for inaccessible properties.

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 sentence, front-loaded with the verb and resource; nothing is wasted. The trailing parenthetical '(read-only sites.get)' is slightly cryptic but adds the API mapping cheaply.

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

Completeness4/5

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

With an output schema, full parameter documentation and annotations covering safety, a single sentence stating what is fetched and what distinguishes the result is close to sufficient. Only the relationship to the sibling listing tool is left unstated.

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

Parameters3/5

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

Schema coverage is 100% and the single siteUrl parameter already documents format examples and the GSC_SITE_URL fallback. The description contributes no additional parameter meaning, 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?

Names a specific verb and resource ('Get one Search Console property') plus the returned attribute ('exact permission level'). The word 'one' implicitly contrasts with the sibling gsc_list_sites, but that sibling is never named, leaving the differentiation 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 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 single-property lookup versus gsc_list_sites for enumeration, but there is no explicit when-to-use or when-not-to-use guidance and no prerequisites stated.

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

gsc_get_sitemapgsc get sitemapA
Read-onlyIdempotent

Get one submitted sitemap by full feed path, including type, fetch state, warnings/errors, and submitted/indexed content totals.

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
feedpathYesFull sitemap URL exactly as submitted to Search Console.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description's enumeration of returned fields (type, fetch state, warnings/errors, totals) adds a little context, but with an output schema present it is largely redundant and adds nothing about auth, rate limits, or error behavior.

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

Conciseness5/5

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

A single front-loaded sentence with the resource, the keying parameter, and the payload all in order, and no filler. Nothing in it could be cut without losing information.

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 two-parameter read tool with full schema coverage, an output schema, and complete annotations, this covers the essentials. The remaining gap is failure/not-found behavior and how it relates to the sitemap-health sibling, which is minor for a simple lookup.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented, including the GSC_SITE_URL fallback for siteUrl. The description's "by full feed path" reinforces that the required path must be the exact submitted URL, but adds no new semantics; 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?

Specific verb plus resource ("Get one submitted sitemap") scoped by "full feed path", which implicitly separates it from the sibling gsc_list_sitemaps. It stops short of naming the alternative, but an agent can still tell the single-item fetch apart from the list operation.

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: fetch details for a single sitemap once you know its feed path. There is no explicit guidance on when to prefer this over gsc_list_sitemaps or gsc_get_sitemap_health, and no note about what happens if the sitemap was never submitted.

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

gsc_get_sitemap_healthgsc get sitemap healthB
Read-onlyIdempotent

Return an enriched read-only sitemap health summary with status totals, submitted/indexed content counts, warnings, and errors.

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is fully covered. The description adds that the result is an aggregate 'enriched' summary with status totals and warnings/errors, which is useful context, but it does not state anything about freshness/caching, rate limits, or what happens when no sitemap 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?

A single, front-loaded sentence with no filler. The payload contents are listed compactly and nothing is wasted.

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 tool has one optional, fully documented parameter, rich annotations, and an output schema, so the description does not need to explain return values. The missing piece for a 19-sibling toolset is routing context: why choose this over the other sitemap tools, which the description leaves unaddressed.

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%: siteUrl is documented in the schema with an example format and the GSC_SITE_URL fallback. The description adds nothing about siteUrl, so the baseline 3 for high-coverage schemas 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 ('Return an enriched read-only sitemap health summary') and enumerates the payload contents (status totals, submitted/indexed counts, warnings, errors), so the agent knows exactly what it gets. It does not, however, distinguish itself from sitemap siblings such as gsc_list_sitemaps, gsc_get_sitemap, or gsc_track_sitemap_deltas.

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 call this instead of gsc_list_sitemaps, gsc_get_sitemap, or gsc_track_sitemap_deltas, despite four sitemap-related siblings. The agent must infer the choice from the description's mention of 'health summary' and 'totals' alone.

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

gsc_health_checkgsc health checkA
Read-onlyIdempotent

Verify Google Search Console read-only authentication, visible properties, configured default site, and permission levels without exposing tokens.

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description still adds real value by disclosing that tokens are never exposed in output, which is a security-relevant behavior an agent would otherwise have to discover empirically.

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 dense sentence with no filler; the action verb leads and the enumerated checks follow immediately. Nothing needs trimming.

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 details needn't be spelled out, and the single parameter is fully documented. The one remaining gap is the operational framing — when in a workflow an agent should call this and how to react to a failed check.

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?

With a single optional parameter at 100% schema coverage, the schema fully documents siteUrl and its GSC_SITE_URL fallback. The description only obliquely gestures at this via 'configured default site', adding little semantic meaning beyond 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?

Specific verb (verify) plus a concrete list of resources checked: read-only authentication, visible properties, default site, permission levels. It is distinguishable from data-querying siblings like gsc_query_search_analytics or gsc_list_sites, though it never names a sibling to draw the contrast 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?

Usage is only implied by the name and the word 'Verify' — an agent can infer this is a diagnostic/setup tool, but the description never says to run it before other calls, what to do on failure, or when gsc_list_sites would be the better choice.

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

gsc_indexation_watchlistgsc indexation watchlistA
Read-onlyIdempotent

Read-only URL Inspection watchlist for critical URLs. Inspects up to 10 URLs and returns alert/review/ok assessments without storing state.

NameRequiredDescriptionDefault
urlsYesWatchlist entries. Maximum 10 per call to protect URL Inspection quota.
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
languageCodeNoOptional IETF language tag, e.g. en-US or fr-FR.
continueOnErrorNoContinue with other URLs when one inspection fails, returning individual failures.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds genuinely new context: statelessness ("without storing state") and the triage output shape (alert/review/ok), which tells the agent what to expect from a monitoring call. The 10-URL cap is repeated from the schema rather than added.

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 read-only scope and the batch limit, with nothing redundant. Every clause carries information.

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 annotations cover safety. What is missing is the core mechanic: that assessments are produced by comparing entries against expectedVerdict/expectedCanonical/expectedCoverageState. Useful but slightly incomplete for an expectation-checking 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 urls, siteUrl fallback to GSC_SITE_URL, languageCode, and continueOnError. The description adds no meaning beyond it, so the baseline 3 applies; notably it never mentions the expectedVerdict/expectedCanonical comparison fields that drive the assessment.

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 (inspects) and resource (URL Inspection watchlist of critical URLs) and names the output vocabulary (alert/review/ok assessments). It does not explicitly differentiate itself from close siblings like gsc_inspect_url or gsc_bulk_inspect_urls, so the agent must infer that this is the expectation-driven variant.

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?

"For critical URLs" and "without storing state" imply when to reach for it, but there is no explicit when-not guidance or pointer to gsc_inspect_url / gsc_bulk_inspect_urls for other cases. The agent is left to infer the boundary between this and the bulk inspection siblings.

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

gsc_inspect_urlgsc inspect urlA
Read-onlyIdempotent

Inspect a URL for Google indexing status, crawl info, mobile usability, AMP, and rich results. Quota: 2000 requests/day/property.

NameRequiredDescriptionDefault
urlYesFull URL to inspect.
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
languageCodeNoOptional IETF language tag, e.g. en-US or fr-FR.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the description's main contribution is the 2000-requests/day/property quota — a real rate limit not present in structured fields. It stops short of noting what happens for a URL not owned by the property or that inspection can be slow/queued.

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: purpose first, operational constraint second. No filler, and the quota caveat is placed where an agent will see it before calling.

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 the description covers what is inspected plus the quota constraint. Only the single-vs-bulk routing against gsc_bulk_inspect_urls is left unaddressed for a network-bound, quota-limited 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 the schema already documents url, siteUrl (including the GSC_SITE_URL fallback) and languageCode. The description adds nothing about parameter behavior, 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?

Specific verb (Inspect) plus resource (URL) and it enumerates the exact facets returned: indexing status, crawl info, mobile usability, AMP, rich results. It does not distinguish itself from the sibling gsc_bulk_inspect_urls, so an agent must infer single-vs-bulk from the 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 Guidelines3/5

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

Usage is only implied by the singular 'a URL' and by the stated daily quota, which hints that repeated single calls are expensive. It never names gsc_bulk_inspect_urls as the alternative or states a condition such as 'for more than a few URLs, use bulk'.

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

gsc_list_sitemapsgsc list sitemapsB
Read-onlyIdempotent

List sitemaps submitted for a Search Console property, including processing status and submitted/indexed counts.

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
sitemapIndexNoOptional sitemap index URL used to return only its child sitemaps.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds some behavioral value by noting that results include processing status and submitted/indexed counts, but it does not discuss permissions, rate limits, or pagination behavior—gaps that are somewhat mitigated by the annotations and the presence of an output schema.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states the resource and the data returned without any filler. Every phrase contributes directly to the tool's purpose.

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 rich annotations, 100% schema coverage, and an existing output schema, the description is nearly complete for an agent to invoke the tool correctly. The main missing piece is sibling differentiation, which prevents a full 5, but no critical call-time information is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so both siteUrl and sitemapIndex are fully documented in the input schema. The description implies a property-scoped list but adds no syntax, format, or fallback details beyond what the schema already provides. A baseline 3 is appropriate 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.

Purpose4/5

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

The description uses a specific verb ('List') and resource ('sitemaps submitted for a Search Console property'), so the core purpose is immediately clear. However, it does not distinguish this tool from siblings such as gsc_get_sitemap, gsc_get_sitemap_health, or gsc_track_sitemap_deltas, leaving the agent to infer which one to call.

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?

The description states what the tool lists but gives no explicit guidance on when to use it versus alternatives like gsc_get_sitemap for a single sitemap or gsc_get_sitemap_health for health metrics. No exclusions or contextual triggers are provided.

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

gsc_list_sitesgsc list sitesA
Read-onlyIdempotent

List all Google Search Console properties accessible with the current credentials.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The phrase 'accessible with the current credentials' usefully signals that results are permission-scoped, but nothing is said about pagination, result limits, or how many properties are returned.

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 scope qualifier comes after the core purpose where it belongs. Nothing could be removed without losing meaning.

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 no parameters are required, so the description carries little burden and covers what it must. The only missing piece is a hint about what the listing contains (site URLs and permission levels), which would aid an agent's next step.

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 applies and there is no parameter semantics to explain. The description does not needlessly describe nonexistent inputs.

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 (list) and resource (Google Search Console properties) with scope 'accessible with the current credentials'. It implicitly contrasts with sibling gsc_get_site (single property) but never names it explicitly, so sibling 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 Guidelines3/5

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

Usage is implied: this is the discovery call to enumerate available properties before calling per-site tools. There is no explicit when-to-use statement, no mention of prerequisites, and no named alternative such as gsc_get_site for a known site.

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

gsc_monitor_indexation_freshnessgsc monitor indexation freshnessB
Read-onlyIdempotent

Read-only monitoring snapshot for Search Analytics freshness, sitemap indexation totals, and an optional small URL Inspection sample.

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
inspectUrlsNoOptional URLs to inspect. Maximum 10 to protect URL Inspection quota.
searchTypesNoSearch surfaces to compare. Each surface is queried separately; do not sum overlapping surfaces.
languageCodeNoOptional IETF language tag for URL Inspection, e.g. en-US or fr-FR.
lookbackDaysNoRecent days to scan for Search Analytics freshness.
freshnessLagWarningDaysNoMaximum acceptable lag in days before freshness is marked delayed/stale.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to restate safety. It adds some context by calling the URL Inspection portion optional and 'small', matching the schema's quota-protection limit, but it does not explain operational behavior such as how the three data sources are combined or whether failures in one section affect the snapshot.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It efficiently lists the three main outputs an agent gets from the call.

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 tool has six optional parameters, rich schema descriptions, annotations, and an output schema, so much of the required context is carried by structured fields. However, for a composite monitoring tool surrounded by more specific siblings, the description should do more to explain why an agent would use this snapshot instead of calling the individual data-freshness, sitemap, and URL-inspection tools.

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 six parameters are already well documented in the input schema. The description adds only the notion of an optional small inspection sample, which lightly reinforces inspectUrls but does not add meaning beyond the schema for siteUrl, searchTypes, lookbackDays, languageCode, or freshnessLagWarningDays.

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 composite resource: a monitoring snapshot covering Search Analytics freshness, sitemap indexation totals, and an optional URL Inspection sample. That is clear enough to distinguish it from generic tools, but it does not explicitly contrast itself with siblings such as gsc_get_data_freshness, gsc_list_sitemaps, or gsc_inspect_url.

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?

The phrase 'monitoring snapshot' implies a monitoring use case, but there is no explicit guidance on when to choose this tool over the many sibling tools that cover its individual components. No prerequisites, exclusions, or alternatives are stated.

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

gsc_plan_large_site_samplinggsc plan large site samplingA
Read-onlyIdempotent

Build a read-only URL Inspection sampling plan for large sites from sitemap risk signals and Search Analytics page performance.

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
dateRangeNoExplicit reporting start and end dates in YYYY-MM-DD format.
pageLimitNoMaximum number of pages considered for the sampling plan.
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
objectivesNoAnalysis goals that determine the recommended large-site sampling strategy.
searchTypeNoSearch surface to report, such as web, image, video, news or Discover. Availability depends on the property.web
staleSitemapDaysNoNumber of days after which a sitemap's last download is considered stale.
maxInspectionUrlsNoMaximum URL Inspection candidates included in the plan; inspection calls consume provider quota.
minImpressionsForLowCtrNoMinimum impressions before a page is considered for low-CTR analysis.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so 'read-only' largely restates structured data. The description does add the useful note that the plan is derived from sitemap risk plus Search Analytics performance, but skips quota/cost context (inspection calls consume provider quota) that the schema buries in one parameter.

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, and the key qualifier ('read-only ... sampling plan') appears immediately. Slightly wasteful in repeating the read-only trait already carried by annotations.

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

Completeness4/5

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

With 100% schema coverage, an output schema, and annotations covering safety, the description only needs to frame the tool's role, which it does. The remaining gap is that it doesn't clarify the plan's outcome or how objectives shape the recommendation, but the output schema can carry that.

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 one of the 9 parameters is already documented, which sets the baseline at 3. The description only loosely gestures at parameters by naming 'sitemap risk signals' and 'page performance', adding little beyond the schema's own objectives and staleSitemapDays docs.

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: 'build' a 'read-only URL Inspection sampling plan for large sites', and names the two input signal families (sitemap risk, Search Analytics performance). It stops short of explicitly distinguishing it from the inspection-execution siblings (gsc_inspect_url / gsc_bulk_inspect_urls), so an agent must infer that this only plans rather than inspects.

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 context is implied by 'for large sites' and by the input signal names, but there is no explicit when-to-use, when-not-to-use, or named alternative such as gsc_bulk_inspect_urls for actually running inspections. The planning-vs-execution boundary is left to inference.

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

gsc_query_search_analyticsgsc query search analyticsA
Read-onlyIdempotent

Query Google Search Console Search Analytics. Returns clicks, impressions, CTR, and average position for queries, pages, countries, devices, dates, and search appearances. Use gsc://metrics, gsc://dimensions, gsc://filters, and gsc://compatibility for available fields and rules.

NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
filtersNoFilters combined according to this tool's query schema. Use provider field names and the declared operators.
metricsNoNative: clicks, impressions, ctr, position. Calculated: ctrOpportunity, clicksPerImpression, impressionShare, clickShare.
orderByNoField used to order report rows.clicks
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
startRowNoOptional 0-based row offset for explicit pagination.
dataStateNofinal=stable data, all=fresh daily data, hourly_all=fresh hourly data (use hour dimension).all
dateRangeNoExplicit reporting start and end dates in YYYY-MM-DD format.
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
dimensionsNoUp to 5 dimensions selected from query, page, country, device, date, hour, searchAppearance.
searchTypeNoSearch surface to report, such as web, image, video, news or Discover. Availability depends on the property.web
autoPaginateNoWhen true, omit rowLimit so the GSC client auto-paginates until exhaustion.
orderDirectionNoSort direction for the selected ordering field.DESC
aggregationTypeNoOfficial GSC aggregation. byProperty is incompatible with page grouping/filtering and Discover/Google News. byNewsShowcasePanel requires discover/googleNews plus searchAppearance equals NEWS_SHOWCASE, and forbids page grouping/filtering or another searchAppearance filter.auto

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds the metric set it returns, but says nothing about GSC row caps, quota/rate-limit behavior, or how autoPaginate interacts with limit, all of which matter semantically for this call.

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 action and the return shape, with the discovery pointer last. No filler or repetition 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?

With 14 parameters, nested filter objects, and an output schema, the short description is defensible because the schema is fully documented and return values are covered by the output schema. The one real gap is guidance on dimension/metric compatibility, which is deferred entirely to the gsc:// resources rather than summarized.

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 bounds, defaults, enum meanings, and the aggregationType compatibility constraints, so the schema carries the burden. The description adds no parameter-level meaning beyond redirecting to the gsc:// resources, which is the baseline-3 case.

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 (query Google Search Console Search Analytics) and enumerates the returned metrics and supported breakdown dimensions, so an agent knows exactly what data it gets. It does not name any sibling to contrast with (e.g. gsc_find_losses_gains or gsc_compare_search_types), so differentiation is left implicit.

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 only usage direction is a pointer to gsc://metrics, gsc://dimensions, gsc://filters, and gsc://compatibility for valid fields and compatibility rules, which is genuinely useful for a tool with 6 enums and cross-field constraints. There is no statement of when to choose this tool over the many analysis siblings, and no exclusions or prerequisites.

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

gsc_track_sitemap_deltasgsc track sitemap deltasA
Read-onlyIdempotent

Read-only sitemap delta tracker. Fetches the current sitemap snapshot and compares it to an agent-provided baseline; no state is written.

NameRequiredDescriptionDefault
siteUrlNoSearch Console property URL, e.g. https://example.com/ or sc-domain:example.com. Uses GSC_SITE_URL when omitted.
baselineNoPrevious snapshot entries from this tool's snapshot output.
includeUnchangedNoInclude entries with no observed change in the comparison.
minAbsIndexedDeltaNoMinimum absolute indexed URL delta to include otherwise unchanged sitemaps.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, but the description still adds meaningful context: the comparison is stateless and depends on an agent-supplied baseline, meaning the server stores nothing between calls. That goes beyond the annotation set and shapes invocation behavior. It stops short of describing the delta output shape, but 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 sentences, zero waste, with the read-only stateless nature front-loaded before the mechanism. Nothing redundant.

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

Completeness4/5

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

With an output schema, rich annotations, and full schema coverage, the description is nearly sufficient. The one omission an agent might want is the first-run behavior (empty default baseline returns a full snapshot), which is only inferable from the schema default.

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 four parameters (including baseline, includeUnchanged, minAbsIndexedDelta) are already documented. The description only reinforces that the baseline is agent-provided; it adds no syntax or format detail beyond the schema, so baseline 3 is correct.

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 chain (fetch current snapshot, compare to baseline) and a clear resource (sitemap deltas). It's distinguishable from gsc_list_sitemaps and gsc_get_sitemap_health by the comparison framing, though it doesn't name those siblings 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?

'agent-provided baseline' implies this is a repeat-call tool where the prior snapshot output is fed back in, which is useful implied usage. However, it never says when to pick this over gsc_get_sitemap_health or gsc_list_sitemaps, nor what happens on a first call with no baseline.

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

gsc_validate_querygsc validate queryB
Read-onlyIdempotent

Validate a Search Console metric/dimension/search type combination before executing it.

NameRequiredDescriptionDefault
dateRangeNoExplicit reporting start and end dates in YYYY-MM-DD format.
dimensionsNoDimensions to validate.
searchTypeNoSearch surface to report, such as web, image, video, news or Discover. Availability depends on the property.web

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds the useful nuance that the tool validates rather than executes, but it is silent on what a validation result looks like behaviorally (does an invalid combo raise an error or return a report?), and the presence of an output schema offsets the need to explain returns.

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; the purpose and the pre-execution timing are both stated immediately. It is perhaps too terse for the behavioral gaps it leaves, but as structure it is efficient.

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 tool is simple and both the schema and an output schema are rich, so the description does not need to carry much. Still, for a validation tool it leaves the key questions open: what is checked, whether invalid combinations return errors or warnings, and whether it is a required predecessor to the 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% and all three parameters (dateRange, dimensions, searchType with enum) are documented in-schema, so the baseline of 3 applies. The description adds no format or constraint detail, and it mentions 'metric' as part of the validated combination even though no metric parameter exists — a small inconsistency that the schema silently corrects.

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 (validate) plus the resource concept (metric/dimension/search type combination), and the phrase 'before executing it' hints that this is a pre-flight check rather than a data-fetching call. It does not name the sibling it precedes (gsc_query_search_analytics), so sibling differentiation is implicit rather than explicit.

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?

'Before executing it' implies the usage window (pre-flight to an actual query), which is useful, but it never explicitly names gsc_query_search_analytics as the tool being validated for, nor does it say what to do when validation fails or whether this step is optional.

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. 20 tool updatesv2.1.1
    • Changedgsc_analyze_search_appearance_trends8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / currentDateRange / additionalProperties
        Removed value: -false
      • addedInput schema / properties / minImpressions / maximum
        Added value: +9007199254740991
      • removedInput schema / properties / previousDateRange / $ref
        Removed value: -"#/properties/currentDateRange"
      • addedInput schema / properties / previousDateRange / properties
        Added value: +{
        +  "endDate": {
        +    "description": "End date YYYY-MM-DD",
        +    "type": "string"
        +  },
        +  "startDate": {
        +    "description": "Start date YYYY-MM-DD",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / previousDateRange / required
        Added value: +[
        +  "startDate",
        +  "endDate"
        +]
      • addedInput schema / properties / previousDateRange / type
        Added value: +"object"
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_bulk_inspect_urls2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_cluster_queries4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / categoryRules / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / dateRange / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_compare_search_types3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / dateRange / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_detect_cannibalization4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / dateRange / additionalProperties
        Removed value: -false
      • addedInput schema / properties / minImpressions / maximum
        Added value: +9007199254740991
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_find_losses_gains7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / currentDateRange / additionalProperties
        Removed value: -false
      • removedInput schema / properties / previousDateRange / $ref
        Removed value: -"#/properties/currentDateRange"
      • addedInput schema / properties / previousDateRange / properties
        Added value: +{
        +  "endDate": {
        +    "description": "End date YYYY-MM-DD",
        +    "type": "string"
        +  },
        +  "startDate": {
        +    "description": "Start date YYYY-MM-DD",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / previousDateRange / required
        Added value: +[
        +  "startDate",
        +  "endDate"
        +]
      • addedInput schema / properties / previousDateRange / type
        Added value: +"object"
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_get_data_freshness2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_get_site2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_get_sitemap2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_get_sitemap_health2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_health_check2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_indexation_watchlist3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / urls / items / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_inspect_url2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_list_sitemaps2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_list_sites1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_monitor_indexation_freshness2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_plan_large_site_sampling4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / dateRange / additionalProperties
        Removed value: -false
      • addedInput schema / properties / minImpressionsForLowCtr / maximum
        Added value: +9007199254740991
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_query_search_analytics5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / dateRange / additionalProperties
        Removed value: -false
      • removedInput schema / properties / filters / items / additionalProperties
        Removed value: -false
      • addedInput schema / properties / startRow / maximum
        Added value: +9007199254740991
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_track_sitemap_deltas8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / baseline / items / additionalProperties
        Removed value: -false
      • addedInput schema / properties / baseline / items / properties / errors / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / baseline / items / properties / indexed / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / baseline / items / properties / submitted / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / baseline / items / properties / warnings / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / minAbsIndexedDelta / maximum
        Added value: +9007199254740991
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgsc_validate_query3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / dateRange / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  2. 20 tool updatesv2.0.1
    • First observedgsc_analyze_search_appearance_trends
    • First observedgsc_bulk_inspect_urls
    • First observedgsc_cluster_queries
    • First observedgsc_compare_search_types
    • First observedgsc_detect_cannibalization
    • First observedgsc_find_losses_gains
    • First observedgsc_get_data_freshness
    • First observedgsc_get_site
    • First observedgsc_get_sitemap
    • First observedgsc_get_sitemap_health
    • First observedgsc_health_check
    • First observedgsc_indexation_watchlist
    • First observedgsc_inspect_url
    • First observedgsc_list_sitemaps
    • First observedgsc_list_sites
    • First observedgsc_monitor_indexation_freshness
    • First observedgsc_plan_large_site_sampling
    • First observedgsc_query_search_analytics
    • First observedgsc_track_sitemap_deltas
    • First observedgsc_validate_query

TDQS

A3.5/5.0

Scored across 20 tools

Disambiguation4/5

Most tools have distinct purposes, especially the core site, analytics, URL inspection, and sitemap tools. There is some overlap among the monitoring/freshness helpers, such as get_data_freshness, monitor_indexation_freshness, get_sitemap_health, and health_check, but descriptions provide enough distinction.

Naming Consistency5/5

All tools use a consistent gsc_ snake_case prefix with mostly predictable verb_noun or verb_object phrasing. Minor exceptions like gsc_health_check are still readable and fit the same convention.

Tool Count3/5

The server exposes 20 tools, which is on the heavy side for a Search Console integration. Many are useful read-only analytics helpers, but several specialized monitoring/analysis tools could likely be consolidated.

Completeness4/5

The surface covers the major read-only GSC workflows: properties, Search Analytics, URL Inspection, sitemaps, freshness, and comparisons. Gaps are minor for an explicitly read-only server, though sitemap/property write operations and some higher-level reporting conveniences are absent.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Self-hosted Google Ads MCP server: 35 read tools and 10 opt-in, preview-first write tools. Maintained source relocated from getmcpads-com/google-ads-mcp-server; npm package remains @getmcpads/google-ads-mcp-server.
    35
    593 npm
    1
    Apache 2.0
  • A
    license
    B
    quality
    A
    maintenance
    Self-hosted Meta Ads MCP server with 41 read tools and 23 opt-in, preview-first write tools. Maintained source relocated from getmcpads-com/meta-ads-mcp-server; npm package remains @getmcpads/meta-ads-mcp-server.
    42
    623 npm
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Self-hosted Pinterest Ads MCP server with 28 read tools and 25 opt-in, preview-first write tools. Maintained source relocated to get-mcp-ads/pinterest-ads-mcp-server; npm package remains @getmcpads/pinterest-ads-mcp-server.
    535 npm
    Apache 2.0