Skip to main content
Glama
MoonEyes

google-ecommerce-mcp

google-ecommerce-mcp

One read-only MCP server for the Google services an online shop lives on: GA4, Search Console, Merchant Center, Tag Manager, Indexing API and PageSpeed.

Ask your AI assistant "how much organic traffic did we get this month?", "which products are disapproved in Merchant Center?" or "is GA4 loaded twice on my site?" and it answers from your own Google accounts.

Built by MoonEyes, a small French shop selling 3D-printed tabletop terrain, because no existing MCP server covered GA4, Search Console and Merchant Center together.

tests license python PyPI MCP Registry

Architecture overview

Documentation

Page

What is in it

Architecture

Components, a tool call step by step, design choices, sequence diagrams

Tool reference

Every tool: parameters, output, example questions

Google Cloud setup

OAuth client, APIs to enable, where to find each id

Security model

Scopes, token storage, threats, how to revoke

Troubleshooting

Every error we have met and its fix

Example prompts

Questions that work well, by use case

Client configs

Claude Desktop (one or two shops), Claude Code

Related MCP server: Google Search Console MCP Server

Why this one

  • All-in-one for e-commerce. Other MCP servers cover one or two of these services. This one covers the six a shop owner checks every week.

  • Read-only by design. No tool creates, updates, publishes or deletes anything. A test enforces it.

  • Token in your OS keyring. The OAuth token goes to Windows Credential Manager, macOS Keychain or Secret Service, not to a plain file (a file is still possible if you prefer).

  • Answers a model can read correctly. Reports return the top rows plus totals over everything, the unit and definition of each metric, and dates resolved in the property's timezone with a flag when the last days can still change.

  • No third party. Requests go straight from your machine to Google.

Tools

Tool

Service

What it answers

server_status

All

Which services are configured, does the token work

ga4_report

GA4

Any report: channels, landing pages, purchases, revenue, by period

ga4_realtime

GA4

Last 30 minutes, e.g. to check a page view is counted once

ga4_properties

GA4

Every GA4 account and property you can read, to find a property id

gsc_performance

Search Console

Clicks, impressions, CTR, position by query, page, country, device, date

gsc_inspect_url

Search Console

Is this URL indexed, which canonical did Google pick, last crawl

gsc_sitemaps

Search Console

Declared sitemaps, last download, errors

merchant_data_sources

Merchant Center

Feeds, labels, countries, fetch URLs

merchant_product_issues

Merchant Center

Products with disapprovals or warnings, all pages

merchant_report_query

Merchant Center

Any Merchant Query Language report

gtm_inventory

Tag Manager

Tags, triggers, variables, live version

indexing_status

Indexing API

What Google knows about a submitted URL

pagespeed

PageSpeed Insights

Lighthouse performance and SEO scores, Core Web Vitals

Quick install

Create your Google OAuth client first (step 1 below), then run one line. The installer installs uv if needed, asks your ids, opens the Google consent screen and adds the server to Claude Desktop (your previous config is backed up).

Windows (PowerShell):

irm https://raw.githubusercontent.com/MoonEyes/google-ecommerce-mcp/main/install.ps1 | iex

macOS / Linux:

curl -LsSf https://raw.githubusercontent.com/MoonEyes/google-ecommerce-mcp/main/install.sh | sh

Then quit Claude Desktop completely and reopen it. Prefer to read a script before running it? Download it, read it, then run it with options, for example .\install.ps1 --ga4 123456789 --gsc sc-domain:example.com --client-secret client_secret.json. Run google-ecommerce-mcp install --help for every option.

Setup, step by step

If you used the quick install, you only need step 1. The steps below are the manual path.

1. Google Cloud (once, about 10 minutes)

Full walkthrough with every click explained: docs/SETUP-GOOGLE-CLOUD.md. Short version:

  1. In Google Cloud Console, create or pick a project.

  2. Enable the APIs you need: Google Analytics Data API, Google Analytics Admin API, Google Search Console API, Merchant API, Tag Manager API, Web Search Indexing API, PageSpeed Insights API.

  3. Configure the OAuth consent screen (External, add yourself as a test user).

  4. Create an OAuth client of type Desktop app and download its JSON file.

  5. Merchant API only: register your Cloud project with your Merchant Center account.

  6. Optional: create an API key restricted to PageSpeed Insights (the anonymous quota is shared and often exhausted).

2. Install and authorize

# with uv (recommended): nothing to install, uvx fetches the package from PyPI
uvx google-ecommerce-mcp setup --client-secret path/to/client_secret.json --with-merchant
# read-only scopes only by default; --with-merchant / --with-indexing add the write-capable ones you need

# or with pip
pip install google-ecommerce-mcp
google-ecommerce-mcp setup --client-secret path/to/client_secret.json

Latest development version: uvx --from git+https://github.com/MoonEyes/google-ecommerce-mcp google-ecommerce-mcp.

Your browser opens the Google consent screen. The token is then stored in your OS keyring. Check everything with google-ecommerce-mcp check.

3. Add it to your MCP client

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "google-ecommerce": {
      "command": "uvx",
      "args": ["google-ecommerce-mcp"],
      "env": {
        "GA4_PROPERTY_ID": "123456789",
        "GSC_SITE_URL": "sc-domain:example.com",
        "MERCHANT_ACCOUNT_ID": "1234567890",
        "GTM_CONTAINER_ID": "GTM-XXXXXXX",
        "PAGESPEED_API_KEY": ""
      }
    }
  }
}

Claude Code:

claude mcp add google-ecommerce -e GA4_PROPERTY_ID=123456789 -e GSC_SITE_URL=sc-domain:example.com \
  -e MERCHANT_ACCOUNT_ID=1234567890 -e GTM_CONTAINER_ID=GTM-XXXXXXX \
  -- uvx google-ecommerce-mcp

Every variable is optional: a tool for a service you did not configure simply answers not_configured.

Variable

Example

Used by

GA4_PROPERTY_ID

123456789 (numeric property id)

GA4 tools

GSC_SITE_URL

sc-domain:example.com or https://www.example.com/

Search Console tools

MERCHANT_ACCOUNT_ID

1234567890

Merchant tools

GTM_CONTAINER_ID

GTM-XXXXXXX

gtm_inventory

PAGESPEED_API_KEY

API key

pagespeed

GOOGLE_TOKEN_FILE

~/.config/google-ecommerce-mcp/token.json

store the token in a file instead of the keyring

How a call works

Sequence of one tool call

Security notes

Details: docs/SECURITY.md.

  • Read-only is enforced, not just declared: every request is checked against an allow-list before it is sent, and CI fails if any tool tries an endpoint outside it. readOnlyHint is only a hint.

  • setup requests read-only scopes only. Google has no read-only scope for Merchant Center (content) or the Indexing API (indexing); they are requested only with --with-merchant / --with-indexing, and server_status flags them when present.

  • Every result carries fetched_at and freshness; report tools return the date_range queried, resolved in the data's timezone, with data_complete.

  • Revoke access at any time from your Google account permissions.

Limitations

  • The Merchant API is recent and Google keeps changing it; the older Content API for Shopping is being shut down. Open an issue if a call breaks.

  • One site, Merchant account and container per server instance; GA4 tools accept any readable property_id. Run several instances for several shops.

  • GA4 Data API quotas apply to ga4_report.

Contributing

See CONTRIBUTING.md. Security reports: SECURITY.md.

Development

pip install -e ".[dev]"
pytest

Tests run offline with a fake HTTP session; no Google account needed.

License

MIT, see LICENSE.

Available Tools

13 tools
ga4_propertiesGA4 propertiesA
Read-onlyIdempotent

GA4 accounts and properties the authorized Google account can read (Admin API accountSummaries), so the assistant can find a property id itself and pass it as property_id to ga4_report or ga4_realtime. Returns {"properties": [{property_id, property_name, property_type, account_id, account_name, configured}], "configured_property_id"}. Needs the Google Analytics Admin API enabled; no extra OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_pagesNoPages of 200 accounts to read at most

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world, non-destructive. The description adds genuinely new operational context: it requires the Google Analytics Admin API to be enabled but needs no extra OAuth scope, and it documents the response shape and configured_property_id. Missing only rate-limit/pagination-limit behavior.

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 dense but well-ordered paragraph: capability, then handoff to siblings, then return shape, then prerequisites. Front-loaded and largely waste-free, though packed tightly.

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 no output schema, the description usefully enumerates return fields and the configured_property_id, plus the API prerequisite. It stops short of explaining the pagination/truncation ceiling implied by max_pages or what 'configured' means for the agent.

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 max_pages is fully documented in the schema (pages of 200 accounts, max 20). The description adds nothing about the parameter, so baseline 3 is correct.

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

Purpose5/5

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

States a specific verb+resource (read GA4 accounts/properties via Admin API accountSummaries) and even names the exact data source. It distinguishes itself from siblings by explaining it produces the property_id that ga4_report and ga4_realtime consume.

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

Usage Guidelines5/5

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

Explicitly says when to use it and what to do with the result ('find a property id itself and pass it as property_id to ga4_report or ga4_realtime'), naming the two sibling tools. The dispatching intent is unambiguous.

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

ga4_realtimeGA4 realtimeA
Read-onlyIdempotent

GA4 realtime report for the last 30 minutes. Useful to check a tracking change, for example that one page view is counted once and not twice. Returns {"rows": [...], "row_count": n, "totals": {...}, "metrics": {...}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsNoGA4 realtime metrics, e.g. activeUsers, screenPageViews, eventCount
dimensionsNoGA4 realtime dimensions, e.g. unifiedScreenName, country, deviceCategory
property_idNoNumeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID

TDQS

A4/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. The description adds a real behavioral constraint beyond them — data is limited to the last 30 minutes — plus the return shape, though it says nothing about rate limits, realtime API quotas, or sampling.

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

Conciseness5/5

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

Three short, front-loaded sentences: what it is, when it is useful, what it returns. No filler, and the scope constraint (30 minutes) comes before anything else.

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 no output schema, the inline return shape ('rows', 'row_count', 'totals', 'metrics') usefully fills that gap, and all three parameters are documented. Only minor omissions remain, such as the realtime API's data freshness or result limits.

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%, with each parameter (metrics, dimensions, property_id defaulting to GA4_PROPERTY_ID) fully documented in the schema. The description adds nothing about parameter syntax or valid values, 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+resource+scope: 'GA4 realtime report for the last 30 minutes'. An agent immediately knows this is the realtime variant versus a historical report, though the sibling ga4_report is never named for direct contrast.

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

Usage Guidelines4/5

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

'Useful to check a tracking change, for example that one page view is counted once and not twice' gives a concrete when-to-use scenario. It lacks any when-not-to-use guidance (e.g. use ga4_report for historical windows), so it stops short of the top score.

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

ga4_reportGA4 reportA
Read-onlyIdempotent

Run a Google Analytics 4 report (Data API runReport): traffic, conversions or revenue split by any dimensions over a date range. Returns the top rows ({"rows": [{dimension: value, metric: number}]}), "totals" over every row, "row_count" and "truncated", the unit and definition of each metric under "metrics", the currency, and a "date_range" resolved to calendar dates in the property's timezone with "data_complete". Use ga4_realtime for the last 30 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows returned (1 to 1000); totals always cover every row
metricsNoGA4 API metric names, e.g. sessions, totalUsers, ecommercePurchases, purchaseRevenue, keyEvents
end_dateNoYYYY-MM-DD, NdaysAgo, yesterday or todayyesterday
dimensionsNoGA4 API dimension names, e.g. sessionDefaultChannelGroup, landingPage, sessionSource, yearMonth, itemName
start_dateNoYYYY-MM-DD, NdaysAgo, yesterday or today28daysAgo
property_idNoNumeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID
channel_groupNoOptional exact filter on sessionDefaultChannelGroup, e.g. 'Organic Search'; empty for all channels

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, yet the description adds substantial context beyond them: the returned shape (rows, totals, row_count, truncated), the fact that totals cover every row regardless of limit, metric unit/definition metadata, currency, and a date_range resolved to calendar dates in the property's timezone with data_complete. This is exactly the behavioral disclosure structured fields cannot carry.

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?

Purpose and scope come first, followed by the return contract and the sibling pointer — front-loaded and information-dense with no filler. The return-shape clause packs several quoted keys into one sentence, which reads slightly clunky but is justified given there is no output schema.

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

Completeness5/5

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

With no output schema, the description must describe the response, and it does so thoroughly (rows, totals, row_count, truncated, metrics, currency, resolved date_range). For a 7-parameter read tool with full schema coverage and complete annotations, nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents limit, metrics, dimensions, dates, property_id and channel_group, including defaults and the 1-1000 bound. The description adds no syntax or format detail beyond that, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Run a Google Analytics 4 report (Data API runReport)') and names the scope: traffic, conversions or revenue split by dimensions over a date range. It also explicitly contrasts with the ga4_realtime sibling, so an agent can tell the two apart without opening schemas.

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

Usage Guidelines4/5

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

Explicitly routes the agent to ga4_realtime for the last 30 minutes, which is a clear when-to-use-this-vs-alternative statement. It lacks broader eligibility context (e.g. where metrics/dimensions account for unavailable combinations), so it falls short of a full 5.

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

gsc_inspect_urlSearch Console URL inspectionA
Read-onlyIdempotent

Google index status of one URL (URL Inspection API): verdict, coverage state, user and Google-selected canonical, robots.txt state, page fetch state and last crawl time. Quota: 2,000 inspections per day.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL to inspect; must belong to the configured Search Console property

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds a concrete behavioral constraint the annotations do not: a hard quota of 2,000 inspections per day, which materially affects how an agent should batch calls. It omits any note on error behavior for URLs outside the property.

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 purpose and then the returned fields, ending with the quota constraint. No filler or restatement of the tool name.

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 no output schema, the description usefully enumerates what the response contains, which is exactly the missing structured information. For a one-parameter, read-only inspection tool this is nearly sufficient; only error/edge-case behavior is 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?

There is a single parameter with 100% schema description coverage, so the schema already explains that the URL must belong to the configured Search Console property. The description adds no syntax, format, or constraint detail beyond that, which is the expected baseline when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific resource and action: returns Google index status for a single URL via the URL Inspection API, enumerating the returned fields (verdict, coverage state, canonicals, robots.txt, fetch state, last crawl). An agent can tell this is a per-URL diagnostic read. It does not explicitly differentiate itself from the sibling indexing_status, 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 Guidelines3/5

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

Usage is implied by the name and the 'one URL' scoping, and the quota line hints that it is a metered, limited operation. However, there is no statement of when to prefer this over indexing_status or gsc_performance, and no prerequisites or exclusions are given.

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

gsc_performanceSearch Console performanceA
Read-onlyIdempotent

Google Search Console search performance for the configured property: clicks, impressions, CTR and average position, split by query, page, country, device or date. Returns the top rows, "totals" for the whole period (same filter, no split), "truncated", the unit and definition of each metric under "metrics", and a "date_range" in Pacific Time (Search Console's timezone) with "data_complete".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows returned (1 to 1000); totals always cover the whole property
end_dateNoYYYY-MM-DD; empty means 2 days ago (Search Console data lag)
dimensionsNoHow to split the results
start_dateNoYYYY-MM-DD; empty means 30 days ago (Pacific Time)
page_containsNoOptional: keep only pages whose URL contains this text

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent safety, but the description adds genuinely useful behavior: top-rows truncation with a "truncated" flag, "totals" computed over the whole period regardless of the requested split, Pacific Time date range, and a "data_complete" indicator. It stops short of describing rate limits or pagination mechanics.

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, fully front-loaded: metrics first, then returned structure. No filler wording, and the key behavioral caveats (totals, truncated, timezone) are packed into the second sentence efficiently.

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 no output schema, the description compensates well by enumerating the response keys (rows, totals, truncated, metrics, date_range, data_complete). A read-only tool with full annotation coverage needs little more; only finer details like sort order or error conditions are 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 the schema already carries parameter meaning and a 3 is the baseline. The description restates the split dimensions (query, page, country, device, date) and notes that totals ignore the split, but omits searchAppearance and adds no format detail 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?

The description names a specific resource (Search Console search performance for the configured property) and enumerates the exact metrics (clicks, impressions, CTR, average position) and split dimensions. It is clear what the tool does, though it never explicitly positions itself against siblings like ga4_report 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?

There is no guidance on when to use this tool versus alternatives such as ga4_report or gsc_inspect_url. Defaults for date range are implied only indirectly via the schema, not the description, so the agent must infer usage context.

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

gsc_sitemapsSearch Console sitemapsA
Read-onlyIdempotent

Sitemaps declared in Search Console, with last submission, last download, errors and warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/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 adds value by disclosing what the payload contains (submission/download timestamps, errors, warnings), which goes beyond the annotations.

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

Conciseness5/5

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

A single front-loaded sentence that names the resource and its payload with zero filler. Nothing to trim.

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 no-parameter read tool with no output schema, the description gives a reasonable picture of the return fields, which is what an agent needs. It could be slightly more complete by noting scope (per-property) or how to use the results, but it is adequate.

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 there are no parameter semantics to document and the baseline of 4 applies. The schema is trivially complete with 100% coverage.

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

Purpose4/5

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

The description names the specific resource (sitemaps declared in Search Console) and enumerates the returned fields (last submission, last download, errors, warnings). It is clear what the tool retrieves, though it doesn't explicitly name a verb like 'list' or differentiate itself from siblings such as gsc_performance.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like gsc_performance or gsc_inspect_url. No prerequisites, no context about when sitemap data is relevant, and no exclusions are given.

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

gtm_inventoryTag Manager inventoryA
Read-onlyIdempotent

Tags (type, paused, firing triggers, parameters), triggers and variables of the configured Google Tag Manager container's default workspace, plus the id of the live published version. Built-in trigger ids are translated, e.g. All Pages. Useful to spot a tag configured twice.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/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 safety is covered. The description adds real behavioral context beyond that: it reads only the default workspace, translates built-in trigger ids (e.g. All Pages), and includes the published version id. It does not mention response size or paging, which is the only notable gap.

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

Conciseness4/5

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

Two sentences, front-loaded with what the tool returns and no filler. The second sentence is a small add-on hint rather than noise, though the first sentence is slightly dense with parenthetical field lists.

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 no output schema, the description does the work of describing the returned data (tags/triggers/variables fields, published version id, translated trigger ids), which is adequate for a zero-argument read tool. It stops short of covering response size, workspace selection assumptions, or error conditions.

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 there is nothing for the description to disambiguate and the baseline of 4 applies.

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

Purpose5/5

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

Names the exact resource and scope: tags (with type, paused state, firing triggers, parameters), triggers, variables of the container's default workspace, plus the live published version id. That is specific enough to distinguish it from the GA4/GSC/Merchant siblings, which cover entirely different resources.

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

Usage Guidelines3/5

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

"Useful to spot a tag configured twice" implies a use case (auditing/duplicate detection) but gives no explicit when-to-use conditions, prerequisites, or alternatives. Usage is inferable rather than stated.

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

indexing_statusIndexing API statusA
Read-onlyIdempotent

Latest Indexing API notifications (URL_UPDATED / URL_DELETED) Google holds for a URL. Read only: nothing is submitted. Most URLs were never notified, which is reported as such.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL to look up

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly=true, idempotent=true, openWorld=true, so 'nothing is submitted' mostly restates them. However, the description adds genuinely new behavioral context: it reveals the notification-type vocabulary (URL_UPDATED / URL_DELETED) and, importantly, that most URLs were never notified and this is reported as such – preventing an agent from misreading an empty response as an error.

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?

Two tight sentences with the core purpose front-loaded and no filler. Slightly terse given there is no output schema, but every clause earns its place.

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

Completeness4/5

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

For a single-parameter read tool with no output schema, the description covers the relevant scope: what is returned (notification records), the notification types, and the common empty case. It lacks detail on the returned record shape because no output schema exists, but it is sufficient to call the tool correctly.

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

Parameters3/5

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

Schema coverage is 100% with a single 'url' parameter that the schema already documents as 'Full URL to look up'. The description adds no format, canonicalization, or property-vs-URL semantics beyond the schema, 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+resource: retrieves the latest Indexing API notifications (URL_UPDATED / URL_DELETED) Google holds for a URL. This is clearer than a generic status check, but it never distinguishes itself from the closely related gsc_inspect_url sibling, leaving the agent to infer which indexing-status tool to pick.

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

Usage Guidelines3/5

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

The description implies usage ('Latest ... notifications ... for a URL') and gives a useful empty-result expectation, but never states when to use this versus gsc_inspect_url or other URL-level siblings, nor any prerequisites. Usage is implied rather than guided.

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

merchant_data_sourcesMerchant Center data sourcesB
Read-onlyIdempotent

Merchant Center data sources (feeds): labels, countries, languages, fetch URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already fully declare the behavioral profile (readOnly, idempotent, non-destructive, open-world), so the description owes little here. What it does add is only a content list; it says nothing about auth requirements, pagination, or how sources are keyed, so it contributes almost no behavioral context beyond the structured hints.

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

Conciseness4/5

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

One short noun-phrase line, front-loaded with the resource name and followed by the content categories. Nothing is redundant, though the fragment style means the action itself is left implicit.

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?

For a zero-parameter read tool with no output schema, the description gives a reasonable hint at the returned fields but never states the shape of the result (list vs. single object, grouping, sorting) or scope limits. It is adequate but leaves the agent guessing about the response.

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

Parameters4/5

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

The tool takes zero parameters, which sets the baseline at 4. The description's field list (labels, countries, languages, fetch URLs) is essentially descriptive metadata about the payload rather than a parameter explanation, so there is no gap to compensate for.

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

Purpose4/5

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

The description names a specific resource (Merchant Center data sources/feeds) and enumerates the content it covers (labels, countries, languages, fetch URLs), so an agent knows the domain. However, it supplies no verb at all — it never says whether the tool lists, fetches, or summarizes these sources — and it draws no boundary against the sibling merchant_report_query.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the adjacent merchant_* siblings (merchant_product_issues, merchant_report_query) that an agent must choose between. The agent is left to infer the trigger condition entirely.

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

merchant_product_issuesMerchant Center product issuesA
Read-onlyIdempotent

Merchant Center products with their item-level issues (disapprovals, demotions, warnings) per destination, with the attribute to fix. Scans every page of products up to max_pages. Returns {"products": [{offer_id, feed_label, title, link, issues: [{code, severity, description, attribute, destination}]}], "scanned": n, "truncated": bool}.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum products returned (1 to 1000)
max_pagesNoPages of 250 products to scan at most
only_with_issuesNoTrue: only products with at least one issue; False: every product

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds real behavioral context beyond that: it scans every page of products up to max_pages and reports a truncation flag, which tells the agent how to interpret partial results. It stops short of 5 by not mentioning auth requirements or rate-limit/scan-cost implications of paging up to 200 pages.

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?

Two densely packed sentences with the core purpose front-loaded; the inline return-shape sketch is justified because there is no output schema. Slightly long, but almost every clause carries information about either scope or output structure.

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 no output schema, the description usefully closes that gap by specifying the returned keys (products, offer_id, issues, scanned, truncated). It covers paging and truncation semantics but says nothing about authentication, quota, or what destinations/labels mean, leaving minor gaps for a multi-parameter read tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description goes slightly beyond the schema by tying max_pages to the scan behavior and the returned truncated flag, clarifying why the agent should care about that parameter rather than just its range.

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

Purpose4/5

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

The description names a specific resource and scope: Merchant Center products with item-level issues (disapprovals, demotions, warnings) per destination, plus the attribute to fix. This is far more specific than the sibling names merchant_report_query or merchant_data_sources, but it never explicitly contrasts itself with those siblings, 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 Guidelines3/5

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

Usage is implied by the framing (this is the tool you call to audit product-level issues), and the only_with_issues default of true hints at the default audit workflow. There is no explicit when-to-use/when-not-to-use statement and no mention of when a sibling such as merchant_report_query would be preferable.

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

merchant_report_queryMerchant Center report queryA
Read-onlyIdempotent

Run a Merchant Center report (Merchant API reports:search) with an MCQL query, for example product status or free-listing performance. Returns Google's raw result rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoMerchant Center Query Language (MCQL) statement. Tables include product_view (must select id) and product_performance_view (clicks, impressions by date or offer)SELECT id, offer_id, title, aggregated_reporting_context_status FROM product_view LIMIT 50

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond them by disclosing that it hits Merchant API reports:search and that it returns Google's raw result rows rather than a normalized/transformed shape.

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?

Two short sentences, front-loaded with the action and the API surface, followed by the return shape. No filler; slightly more compact than most peers.

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 no output schema, the description correctly compensates by noting the return is Google's raw result rows, and the single input parameter is fully specified in the schema. An agent has enough to call it correctly, though pagination/result-size behavior is 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 description coverage is 100% and the single parameter is fully documented in the schema (MCQL statement, available tables, product_view id requirement, performance metrics). The description only restates "with an MCQL query" and adds no syntax, default, or format detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Run a Merchant Center report") and names the underlying API call (reports:search) plus concrete use cases (product status, free-listing performance). It is distinguishable from the GA4/GSC siblings, though it does not explicitly separate itself from merchant_product_issues, which covers overlapping product-status territory.

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

Usage Guidelines3/5

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

The description implies when to use it by giving two example report categories, which is useful context, but it offers no exclusions or alternatives — it never says when to reach for merchant_product_issues or merchant_data_sources instead. Usage is inferable but not explicit.

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

pagespeedPageSpeed InsightsA
Read-onlyIdempotent

Lighthouse performance and SEO scores (0 to 100) plus LCP, CLS and TBT for a URL, and the Chrome UX Report field category when Google has real-user data. Set PAGESPEED_API_KEY to avoid the shared anonymous quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull public URL to test
strategyNoDevice profile Lighthouse emulatesmobile

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered. The description meaningfully adds that scores are bounded 0-100, that CrUX data only appears when real-user data exists, and that the anonymous shared quota can be bypassed with PAGESPEED_API_KEY — real behavioral/rate-limit context beyond the structured fields.

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

Conciseness4/5

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

Roughly two sentences, front-loaded with the output payload and ending with the quota/auth caveat. No filler or repetition; each clause carries information. Dense metric enumeration is justified for a scoring tool.

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 no output schema, the description correctly carries the burden of describing return values (scores, LCP/CLS/TBT, CrUX category) and the auth/quota caveat. The one shortfall is silence on the strategy parameter's effect on the returned scores, but otherwise it is complete for a two-parameter, read-only 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% (url: 'Full public URL to test'; strategy: 'Device profile Lighthouse emulates', default mobile), so the description can lean on the schema. It adds no extra parameter semantics — notably it never mentions the mobile/desktop strategy knob, which materially changes results. Baseline 3 is appropriate.

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

Purpose4/5

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

The description names a concrete resource (PageSpeed/Lighthouse analysis of a URL) and enumerates the exact outputs: 0-100 performance and SEO scores plus LCP, CLS, TBT, and the CrUX field category. An agent immediately knows what it gets back. No similar sibling exists (ga4/gsc/merchant tools are unrelated), so differentiation is moot, but the phrasing is still slightly output-centric rather than a clean verb+resource statement.

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 choose this tool versus alternatives or when not to use it. The only conditional remark is the API-key/quota note, which is a prerequisite for access rather than usage guidance. A reader must infer the trigger ('I want to audit a page') entirely from the name.

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

server_statusServer statusA
Read-onlyIdempotent

Which Google services are configured for this server, and whether the stored OAuth token works. Call it first when another tool answers not_configured or not_authenticated. Returns one boolean per service, the token storage (os-keyring or file), "token": "ok" or the error, and the package version.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/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 covered. The description goes beyond them by disclosing the return contents (one boolean per service, token storage backend of os-keyring or file, token ok/error, package version), which is valuable given there is no 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?

Three sentences, each earning its place: what it reports, when to call it, and what it returns. The purpose is front-loaded and the routing hint follows naturally.

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

Completeness5/5

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

With no output schema, the description must describe returns, and it does so precisely (per-service booleans, token backend, error string, version). For a zero-parameter read-only probe, an agent has everything needed to call and interpret it.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly implies a no-argument probe and adds nothing that could conflict with the empty schema.

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

Purpose5/5

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

States a specific diagnostic purpose: reporting which Google services are configured and whether the stored OAuth token is valid. This is clearly distinguishable from all sibling tools, which are data-fetching tools for GA4/GSC/Merchant/GTM, not server diagnostics.

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

Usage Guidelines4/5

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

Gives an explicit trigger condition: call it first when another tool returns not_configured or not_authenticated. That is a concrete routing rule an agent can act on, though it stops short of naming when-not-to-use or an alternative diagnostic tool.

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. 4 tool updatesv0.3.0
    • Addedga4_properties
    • Changedga4_realtime1 field changed
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": "",
        +  "description": "Numeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID",
        +  "title": "Property Id",
        +  "type": "string"
        +}
    • Changedga4_report2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum rows returned (1 to 1000)"New value: +"Maximum rows returned (1 to 1000); totals always cover every row"
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": "",
        +  "description": "Numeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID",
        +  "title": "Property Id",
        +  "type": "string"
        +}
    • Changedgsc_performance2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum rows returned (1 to 1000)"New value: +"Maximum rows returned (1 to 1000); totals always cover the whole property"
      • changedInput schema / properties / start_date / description
        Previous value: -"YYYY-MM-DD; empty means 30 days ago"New value: +"YYYY-MM-DD; empty means 30 days ago (Pacific Time)"
  2. 8 tool updatesv0.1.2
    • Changedga4_realtime2 fields changed
      • addedInput schema / properties / dimensions / description
        Added value: +"GA4 realtime dimensions, e.g. unifiedScreenName, country, deviceCategory"
      • addedInput schema / properties / metrics / description
        Added value: +"GA4 realtime metrics, e.g. activeUsers, screenPageViews, eventCount"
    • Changedga4_report8 fields changed
      • addedInput schema / properties / channel_group / description
        Added value: +"Optional exact filter on sessionDefaultChannelGroup, e.g. 'Organic Search'; empty for all channels"
      • addedInput schema / properties / dimensions / description
        Added value: +"GA4 API dimension names, e.g. sessionDefaultChannelGroup, landingPage, sessionSource, yearMonth, itemName"
      • addedInput schema / properties / end_date / description
        Added value: +"YYYY-MM-DD, NdaysAgo, yesterday or today"
      • addedInput schema / properties / limit / description
        Added value: +"Maximum rows returned (1 to 1000)"
      • addedInput schema / properties / limit / maximum
        Added value: +1000
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / metrics / description
        Added value: +"GA4 API metric names, e.g. sessions, totalUsers, ecommercePurchases, purchaseRevenue, keyEvents"
      • addedInput schema / properties / start_date / description
        Added value: +"YYYY-MM-DD, NdaysAgo, yesterday or today"
    • Changedgsc_inspect_url1 field changed
      • addedInput schema / properties / url / description
        Added value: +"Full URL to inspect; must belong to the configured Search Console property"
    • Changedgsc_performance8 fields changed
      • addedInput schema / properties / dimensions / description
        Added value: +"How to split the results"
      • addedInput schema / properties / dimensions / items / enum
        Added value: +[
        +  "query",
        +  "page",
        +  "country",
        +  "device",
        +  "date",
        +  "searchAppearance"
        +]
      • addedInput schema / properties / end_date / description
        Added value: +"YYYY-MM-DD; empty means 2 days ago (Search Console data lag)"
      • addedInput schema / properties / limit / description
        Added value: +"Maximum rows returned (1 to 1000)"
      • addedInput schema / properties / limit / maximum
        Added value: +1000
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / page_contains / description
        Added value: +"Optional: keep only pages whose URL contains this text"
      • addedInput schema / properties / start_date / description
        Added value: +"YYYY-MM-DD; empty means 30 days ago"
    • Changedindexing_status1 field changed
      • addedInput schema / properties / url / description
        Added value: +"Full URL to look up"
    • Changedmerchant_product_issues7 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum products returned (1 to 1000)"
      • addedInput schema / properties / limit / maximum
        Added value: +1000
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / max_pages / description
        Added value: +"Pages of 250 products to scan at most"
      • addedInput schema / properties / max_pages / maximum
        Added value: +200
      • addedInput schema / properties / max_pages / minimum
        Added value: +1
      • addedInput schema / properties / only_with_issues / description
        Added value: +"True: only products with at least one issue; False: every product"
    • Changedmerchant_report_query1 field changed
      • addedInput schema / properties / query / description
        Added value: +"Merchant Center Query Language (MCQL) statement. Tables include product_view (must select id) and product_performance_view (clicks, impressions by date or offer)"
    • Changedpagespeed3 fields changed
      • addedInput schema / properties / strategy / description
        Added value: +"Device profile Lighthouse emulates"
      • addedInput schema / properties / strategy / enum
        Added value: +[
        +  "mobile",
        +  "desktop"
        +]
      • addedInput schema / properties / url / description
        Added value: +"Full public URL to test"
  3. 12 tool updatesv0.1.0
    • First observedga4_realtime
    • First observedga4_report
    • First observedgsc_inspect_url
    • First observedgsc_performance
    • First observedgsc_sitemaps
    • First observedgtm_inventory
    • First observedindexing_status
    • First observedmerchant_data_sources
    • First observedmerchant_product_issues
    • First observedmerchant_report_query
    • First observedpagespeed
    • First observedserver_status

TDQS

A3.8/5.0

Scored across 13 tools

Disambiguation4/5

Almost every tool targets a distinct service+resource (ga4_report vs ga4_realtime vs ga4_properties; gsc_performance vs gsc_inspect_url vs gsc_sitemaps), and the descriptions reinforce the boundaries. The only mild overlap is between merchant_product_issues and merchant_report_query, since item-level product status could also be surfaced via an MCQL report, but the descriptions differentiate them adequately.

Naming Consistency4/5

All names use snake_case, and service prefixes (ga4_, gsc_, merchant_, gtm_) are applied predictably to most tools. Minor deviations: server_status, indexing_status and pagespeed lack a service prefix, and a few names are noun-only while others are verb_noun, but the convention remains readable.

Tool Count5/5

13 tools is well-scoped for covering six Google surfaces (Analytics 4, Search Console, Merchant Center, Tag Manager, Indexing, PageSpeed). Each tool maps to a concrete query or inspection and none feels redundant padding.

Completeness4/5

Read/audit coverage is strong across GA4, GSC, Merchant Center and GTM, with realtime, inspection, sitemaps and feed listings all present. The main gap is that the surface is entirely read-only: there is no way to submit URLs, sitemaps, or push GTM changes, which limits remediation workflows (though some of this appears intentional).

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to manage Google Tag Manager, Google Search Console, and Google Analytics (GA4) through unified access to tags, search performance data, URL inspection, sitemaps, and analytics reporting.
    9 npm
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    Provides AI agents with read-only access to Google Search Console data, including search analytics, index coverage, and sitemap status. It enables users to query clicks, impressions, and ranking performance or check URL indexing status through natural language.
    4
    175 npm
    9
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Provides AI agents with hands-on control of Google SEO and analytics tools including Search Console, GA4, Tag Manager, Indexing API, and PageSpeed Insights, with self-configuring OAuth2.
    33
    8 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Connects Google Search Console to AI assistants, enabling natural language analysis of SEO data. Provides read-only tools for properties, search analytics, URL inspection, and sitemaps.
    15
    MIT