google-ecommerce-mcp
A read-only MCP server that answers e-commerce analytics, search and site-health questions straight from your own Google accounts.
Check setup (
server_status): see which services are configured and whether the stored OAuth token works.GA4 — run any report on traffic, channels, landing pages, conversions or revenue over a date range (
ga4_report), watch the last 30 minutes to spot double-counted page views (ga4_realtime).Search Console — clicks, impressions, CTR and average position by query, page, country, device or date (
gsc_performance); check whether a URL is indexed, which canonical Google picked and when it was last crawled (gsc_inspect_url); list sitemaps with errors and last download (gsc_sitemaps).Merchant Center — inspect feeds and their fetch URLs (
merchant_data_sources); find disapproved, demoted or warned products and the attribute to fix (merchant_product_issues); run arbitrary MCQL reports such as free-listing performance (merchant_report_query).Tag Manager — inventory tags, triggers and variables plus the live version id, e.g. to spot a tag configured twice (
gtm_inventory).Indexing API — see the latest URL_UPDATED / URL_DELETED notifications Google holds for a URL (
indexing_status).PageSpeed Insights — Lighthouse performance and SEO scores with Core Web Vitals and real-user CrUX data for a URL (
pagespeed).Nothing is ever created, changed or deleted; each tool is scoped to one configured shop, with results carrying freshness and date-range metadata.
Provides read-only access to GA4 reports and realtime data, enabling queries for channels, landing pages, purchases, revenue, and recent activity by period.
Provides read-only access to Search Console performance data, URL inspection, and sitemap information, enabling analysis of clicks, impressions, CTR, position, indexing status, canonical selection, last crawl, and sitemap errors.
Provides Lighthouse performance and SEO scores plus Core Web Vitals for URLs via PageSpeed Insights.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@google-ecommerce-mcpwhich products are disapproved in Merchant Center?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.

Documentation
Page | What is in it |
Components, a tool call step by step, design choices, sequence diagrams | |
Every tool: parameters, output, example questions | |
OAuth client, APIs to enable, where to find each id | |
Scopes, token storage, threats, how to revoke | |
Every error we have met and its fix | |
Questions that work well, by use case | |
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 |
| All | Which services are configured, does the token work |
| GA4 | Any report: channels, landing pages, purchases, revenue, by period |
| GA4 | Last 30 minutes, e.g. to check a page view is counted once |
| GA4 | Every GA4 account and property you can read, to find a property id |
| Search Console | Clicks, impressions, CTR, position by query, page, country, device, date |
| Search Console | Is this URL indexed, which canonical did Google pick, last crawl |
| Search Console | Declared sitemaps, last download, errors |
| Merchant Center | Feeds, labels, countries, fetch URLs |
| Merchant Center | Products with disapprovals or warnings, all pages |
| Merchant Center | Any Merchant Query Language report |
| Tag Manager | Tags, triggers, variables, live version |
| Indexing API | What Google knows about a submitted URL |
| 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 | iexmacOS / Linux:
curl -LsSf https://raw.githubusercontent.com/MoonEyes/google-ecommerce-mcp/main/install.sh | shThen 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:
In Google Cloud Console, create or pick a project.
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.
Configure the OAuth consent screen (External, add yourself as a test user).
Create an OAuth client of type Desktop app and download its JSON file.
Merchant API only: register your Cloud project with your Merchant Center account.
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.jsonLatest 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-mcpEvery variable is optional: a tool for a service you did not configure simply answers not_configured.
Variable | Example | Used by |
|
| GA4 tools |
|
| Search Console tools |
|
| Merchant tools |
|
|
|
| API key |
|
|
| store the token in a file instead of the keyring |
How a call works

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.
readOnlyHintis only a hint.setuprequests 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, andserver_statusflags them when present.Every result carries
fetched_atandfreshness; report tools return thedate_rangequeried, resolved in the data's timezone, withdata_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]"
pytestTests run offline with a fake HTTP session; no Google account needed.
License
MIT, see LICENSE.
Available Tools
13 toolsga4_propertiesGA4 propertiesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_pages | No | Pages of 200 accounts to read at most |
TDQS
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.
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.
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.
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.
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.
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 realtimeARead-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": {...}}.
| Name | Required | Description | Default |
|---|---|---|---|
| metrics | No | GA4 realtime metrics, e.g. activeUsers, screenPageViews, eventCount | |
| dimensions | No | GA4 realtime dimensions, e.g. unifiedScreenName, country, deviceCategory | |
| property_id | No | Numeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID |
TDQS
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.
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.
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.
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.
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.
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 reportARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows returned (1 to 1000); totals always cover every row | |
| metrics | No | GA4 API metric names, e.g. sessions, totalUsers, ecommercePurchases, purchaseRevenue, keyEvents | |
| end_date | No | YYYY-MM-DD, NdaysAgo, yesterday or today | yesterday |
| dimensions | No | GA4 API dimension names, e.g. sessionDefaultChannelGroup, landingPage, sessionSource, yearMonth, itemName | |
| start_date | No | YYYY-MM-DD, NdaysAgo, yesterday or today | 28daysAgo |
| property_id | No | Numeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID | |
| channel_group | No | Optional exact filter on sessionDefaultChannelGroup, e.g. 'Organic Search'; empty for all channels |
TDQS
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.
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.
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.
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.
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.
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 inspectionARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL to inspect; must belong to the configured Search Console property |
TDQS
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.
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.
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.
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.
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.
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 performanceARead-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".
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows returned (1 to 1000); totals always cover the whole property | |
| end_date | No | YYYY-MM-DD; empty means 2 days ago (Search Console data lag) | |
| dimensions | No | How to split the results | |
| start_date | No | YYYY-MM-DD; empty means 30 days ago (Pacific Time) | |
| page_contains | No | Optional: keep only pages whose URL contains this text |
TDQS
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.
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.
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.
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.
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.
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 sitemapsARead-onlyIdempotent
Sitemaps declared in Search Console, with last submission, last download, errors and warnings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 inventoryARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 statusARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL to look up |
TDQS
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.
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.
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.
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.
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.
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 sourcesBRead-onlyIdempotent
Merchant Center data sources (feeds): labels, countries, languages, fetch URLs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 issuesARead-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}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum products returned (1 to 1000) | |
| max_pages | No | Pages of 250 products to scan at most | |
| only_with_issues | No | True: only products with at least one issue; False: every product |
TDQS
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.
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.
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.
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.
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.
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 queryARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Merchant 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
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.
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.
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.
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.
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.
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 InsightsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full public URL to test | |
| strategy | No | Device profile Lighthouse emulates | mobile |
TDQS
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.
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.
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.
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.
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.
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 statusARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v0.3.0- Added
ga4_properties - Changed
ga4_realtime1 field changed- added
Input schema / properties / property_idAdded value: +{ + "default": "", + "description": "Numeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID", + "title": "Property Id", + "type": "string" +}
- Changed
ga4_report2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum rows returned (1 to 1000)"New value: +"Maximum rows returned (1 to 1000); totals always cover every row" - added
Input schema / properties / property_idAdded value: +{ + "default": "", + "description": "Numeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID", + "title": "Property Id", + "type": "string" +}
- Changed
gsc_performance2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum rows returned (1 to 1000)"New value: +"Maximum rows returned (1 to 1000); totals always cover the whole property" - changed
Input schema / properties / start_date / descriptionPrevious value: -"YYYY-MM-DD; empty means 30 days ago"New value: +"YYYY-MM-DD; empty means 30 days ago (Pacific Time)"
8 tool updates
v0.1.2- Changed
ga4_realtime2 fields changed- added
Input schema / properties / dimensions / descriptionAdded value: +"GA4 realtime dimensions, e.g. unifiedScreenName, country, deviceCategory" - added
Input schema / properties / metrics / descriptionAdded value: +"GA4 realtime metrics, e.g. activeUsers, screenPageViews, eventCount"
- Changed
ga4_report8 fields changed- added
Input schema / properties / channel_group / descriptionAdded value: +"Optional exact filter on sessionDefaultChannelGroup, e.g. 'Organic Search'; empty for all channels" - added
Input schema / properties / dimensions / descriptionAdded value: +"GA4 API dimension names, e.g. sessionDefaultChannelGroup, landingPage, sessionSource, yearMonth, itemName" - added
Input schema / properties / end_date / descriptionAdded value: +"YYYY-MM-DD, NdaysAgo, yesterday or today" - added
Input schema / properties / limit / descriptionAdded value: +"Maximum rows returned (1 to 1000)" - added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / metrics / descriptionAdded value: +"GA4 API metric names, e.g. sessions, totalUsers, ecommercePurchases, purchaseRevenue, keyEvents" - added
Input schema / properties / start_date / descriptionAdded value: +"YYYY-MM-DD, NdaysAgo, yesterday or today"
- Changed
gsc_inspect_url1 field changed- added
Input schema / properties / url / descriptionAdded value: +"Full URL to inspect; must belong to the configured Search Console property"
- Changed
gsc_performance8 fields changed- added
Input schema / properties / dimensions / descriptionAdded value: +"How to split the results" - added
Input schema / properties / dimensions / items / enumAdded value: +[ + "query", + "page", + "country", + "device", + "date", + "searchAppearance" +] - added
Input schema / properties / end_date / descriptionAdded value: +"YYYY-MM-DD; empty means 2 days ago (Search Console data lag)" - added
Input schema / properties / limit / descriptionAdded value: +"Maximum rows returned (1 to 1000)" - added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / page_contains / descriptionAdded value: +"Optional: keep only pages whose URL contains this text" - added
Input schema / properties / start_date / descriptionAdded value: +"YYYY-MM-DD; empty means 30 days ago"
- Changed
indexing_status1 field changed- added
Input schema / properties / url / descriptionAdded value: +"Full URL to look up"
- Changed
merchant_product_issues7 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum products returned (1 to 1000)" - added
Input schema / properties / limit / maximumAdded value: +1000 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / max_pages / descriptionAdded value: +"Pages of 250 products to scan at most" - added
Input schema / properties / max_pages / maximumAdded value: +200 - added
Input schema / properties / max_pages / minimumAdded value: +1 - added
Input schema / properties / only_with_issues / descriptionAdded value: +"True: only products with at least one issue; False: every product"
- Changed
merchant_report_query1 field changed- added
Input schema / properties / query / descriptionAdded value: +"Merchant Center Query Language (MCQL) statement. Tables include product_view (must select id) and product_performance_view (clicks, impressions by date or offer)"
- Changed
pagespeed3 fields changed- added
Input schema / properties / strategy / descriptionAdded value: +"Device profile Lighthouse emulates" - added
Input schema / properties / strategy / enumAdded value: +[ + "mobile", + "desktop" +] - added
Input schema / properties / url / descriptionAdded value: +"Full public URL to test"
12 tool updates
v0.1.0- First observed
ga4_realtime - First observed
ga4_report - First observed
gsc_inspect_url - First observed
gsc_performance - First observed
gsc_sitemaps - First observed
gtm_inventory - First observed
indexing_status - First observed
merchant_data_sources - First observed
merchant_product_issues - First observed
merchant_report_query - First observed
pagespeed - First observed
server_status
TDQS
Scored across 13 tools
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.
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.
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.
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
Related MCP Connectors
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
Marketing data and actions for AI agents: GA4, Search Console, ads, social, SEO and WordPress.
- MCP AdsOAuthcom.mcp-ads
Run Google Ads, Meta Ads, GA4 and Search Console from chat: read, audit and launch campaigns.
200+ read/write tools for GA4, Search Console, Google Ads, Shopify, WooCommerce, Shopware & more.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables 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 npmISC
- AlicenseAqualityAmaintenanceProvides 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.4175 npm9MIT
- AlicenseBqualityBmaintenanceProvides 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.338 npmMIT
- AlicenseAqualityCmaintenanceConnects 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.15MIT