Skip to main content
Glama
get-mcp-ads

Google Analytics 4 by Get MCP Ads

Google Analytics 4 MCP server

Understand what happens after the click.

Explore traffic, conversions, funnels and property configuration through a read-only MCP server.

Release CI License: Apache 2.0 Node

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

Watch the getmcpads product demo: campaign review in Claude

Play the 27-second product film

The film demonstrates hosted getmcpads with staged data. Its creative galleries and MCP Apps interface belong to the hosted product. This repository provides the standalone native API tools.

27 read tools · Read-only by design.

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

What's new

v2.0.1: Native tools and security update · September 20, 2026

  • Confirm the current native 27-tool read catalog against the hosted implementation.

  • Retain standalone OAuth and redirect protections; no hosted account-selection or application database dependency is introduced.

  • Require Node.js 22.12 or newer and check Node 22/24 in CI.

  • Update vulnerable dependencies and regenerate the MCP catalog.

Full changelog · Source synchronization details · All releases

Upgrade notes

Requires Node.js 22.12 or newer. CI covers Node 22 and 24. Version 2.0.1 drops Node 18 and 20 support. Hosted creative integrations and MCP Apps UI are outside this release.

Related MCP server: google-analytics-adsense-remote-mcp

Install this release

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

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

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

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

What you get

27 read tools

Reports, pivots, funnels, realtime, plus the Admin API: properties, data streams, custom definitions, key events, audiences

Diagnostics

Ecommerce, BigQuery export, server-side tagging, audience exports, quota snapshots

51 metrics, 62 dimensions

With a compatibility matrix that catches invalid combinations before they hit the API

6 resources

Live catalogues the model can read: metrics, dimensions, compatibility rules, 12 workflow recipes

Identifier redaction

User, email and device identifiers redacted by default on access bindings and audience exports, with explicit opt-in to see them

No writes at all

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

Compatibility, checked before the call

GA4 rejects many metric and dimension combinations, and its errors rarely explain which pair is at fault. This server carries the compatibility matrix, so ga4_check_compatibility and ga4_validate_query let the model verify a combination before spending a call and a quota token on it.

Quotas matter here more than on ad platforms: GA4 charges tokens per property per day, and a few careless exploratory queries can exhaust them. ga4_get_property_quotas_snapshot shows what is left.


Read-only, and why it stays that way

There are no write tools, and no environment variable that adds any. Every tool calls a read method of the Data API or the Admin API.

This is not caution for its own sake. A misread report is a wrong answer you can spot. A mistaken write to an analytics property, a deleted audience or an edited data stream, corrupts the record you use to judge everything else, and often silently. The other servers we publish do have write tools, guarded by a mandatory preview. This one has none.

Our ad platform servers with guarded writes: Meta Ads · Google Ads · TikTok Ads


Personal data

Analytics data is not anonymous by default. A GA4 property can carry a userId you set yourself, a device identifier, or a Google Signals pseudonymous ID. An MCP conversation sends whatever a tool returns to a model.

Identifiers are redacted by default wherever this server can return them, and showing them is an explicit opt-in, never the default.

Tool

Behaviour

ga4_list_admin_resources

Access bindings have user and email identifiers redacted

ga4_query_audience_export

Identifier columns redacted, matched against the export's own dimension metadata

ga4_get_audience_export_diagnostics

Same redaction on the row sample

Every one of these accepts includePersonalIdentifiers: true to return raw values, and defaults to false.

Audience export rows are positional, so the redaction reads the export's dimension metadata to find identifier columns. If that metadata is missing, every value in the row is redacted rather than guessing which column is safe. Failing closed is the point.

Report rows are not redacted. ga4_run_report and the other reporting tools return what you asked for. Altering the numbers a report returns would be worse than returning them.

So one decision stays yours: if your property carries a userId you consider personal, do not request it as a report dimension in a conversation whose transcript leaves your machine.


Getting credentials

Three values, obtained once.

1. OAuth client

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

2. Refresh token

Run the OAuth consent flow once, signed in as a Google account with access to your GA4 properties, and keep the refresh token. The analytics.readonly scope is enough, and it is the only one you should grant.

📖 Google OAuth for installed apps

The refresh token does not expire. It is the sensitive value: anyone holding it can mint access tokens indefinitely. Use an OAuth client dedicated to this server so you can revoke it on its own.

3. Property ID, optional

Set GA4_PROPERTY_ID to avoid passing it on every call. Find it in GA4 under Admin → Property Settings, or list them with ga4_list_properties.

Run ga4_health_check as your first call. It verifies the credentials and lists the properties you can actually reach, without printing any secret.


Setup

Claude Desktop

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

{
  "mcpServers": {
    "google-analytics": {
      "command": "npx",
      "args": ["-y", "@getmcpads/google-analytics-mcp-server"],
      "env": {
        "GA4_CLIENT_ID": "your-client-id",
        "GA4_CLIENT_SECRET": "your-client-secret",
        "GA4_REFRESH_TOKEN": "your-refresh-token"
      }
    }
  }
}

Restart Claude Desktop. Ask it: "list my Google Analytics properties".

Claude Code

claude mcp add google-analytics --env GA4_CLIENT_ID=... --env GA4_CLIENT_SECRET=... --env GA4_REFRESH_TOKEN=... -- npx -y @getmcpads/google-analytics-mcp-server

Cursor

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

From source

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

Configuration

Variable

Default

Meaning

GA4_CLIENT_ID

none

Required. OAuth client ID

GA4_CLIENT_SECRET

none

Required. OAuth client secret

GA4_REFRESH_TOKEN

none

Required. From the consent flow

GA4_PROPERTY_ID

none

Optional default, saves passing it on every call

LOG_LEVEL

info

debug, info, warn, error

Check your setup at any time:

npm run doctor

Tools

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

Tool

Purpose

ga4_health_check

Read-only GA4 health check.

ga4_list_properties

List all GA4 properties accessible with the current credentials.

ga4_run_report

Run a GA4 analytics report with intelligent query planning.

ga4_run_realtime_report

Run a read-only GA4 Data API realtime report.

ga4_get_metadata

Get the complete list of dimensions and metrics available for a specific GA4 property.

ga4_get_custom_definitions

List custom dimensions and custom metrics exposed by GA4 Data API metadata.

ga4_get_key_events

Inventory GA4 key events/conversions using metadata-aware Data API reports.

ga4_get_ecommerce_diagnostics

Read-only ecommerce coverage diagnostics for core ecommerce events, revenue metrics, and item-level reporting over a date range.

ga4_get_event_parameters

Best-effort event parameter inventory from GA4 metadata plus event reports.

ga4_run_funnel_recipe

Run a read-only configurable funnel recipe using one GA4 report per eventName/pagePath step and return simple step counts.

ga4_get_audience_export_diagnostics

Read-only Audience Export diagnostics.

ga4_get_audience_diagnostics

Read-only audience diagnostics from Admin API audiences, Data API recurring audience lists, and observed audienceName report fallback.

ga4_get_bigquery_export_diagnostics

Detect GA4 BigQuery export links and diagnose export modes, stream coverage, excluded events, and dataset location.

ga4_get_server_side_tagging_diagnostics

Best-effort read-only server-side tagging diagnostics from data streams, Measurement Protocol secrets, event rules, and stream settings.

ga4_run_advanced_funnel_report

Run the GA4 Data API v1alpha runFunnelReport endpoint with optional breakdown/next-action, falling back to read-only step counts if unavailable.

ga4_get_channel_groups

List custom channel groups defined for a GA4 property.

ga4_validate_query

Validate a metric/dimension combination BEFORE executing.

ga4_run_pivot_report

Run a read-only GA4 Data API pivot report with native filters, ordering, quota state, multiple date ranges, and up to 250,000 pivot cells.

ga4_batch_run_reports

Run 1-5 independent read-only GA4 Core reports for the same property in one official Data API batch request.

ga4_batch_run_pivot_reports

Run 1-5 independent read-only GA4 pivot reports for the same property in one official Data API batch request.

ga4_check_compatibility

Ask the official GA4 Data API which dimensions and metrics are compatible with a proposed Core report selection.

ga4_get_property_quotas_snapshot

Read the current GA4 Data API property quota snapshot from the official v1alpha endpoint.

ga4_list_accounts

List raw GA4 Analytics Admin accounts accessible to the authenticated user (read-only, auto-paginated).

ga4_list_admin_resources

List an allowlisted GA4 Admin collection in read-only mode: streams, custom definitions, key events, audiences, product links, annotations, channel groups, expanded datasets, subproperty/rollup configuration, and access bindings.

ga4_get_property_configuration

Read GA4 property details plus selected singleton Admin settings (attribution, retention, Google Signals, reporting identity, or user-provided-data settings).

ga4_list_audience_exports

List existing GA4 Audience Export snapshots and Recurring Audience Lists without creating new exports.

ga4_query_audience_export

Query rows from an existing GA4 Audience Export.

URI

Contents

ga4://manifest

What this server exposes, and which tool to run first

ga4://metrics

All 51 metrics with categories and formats

ga4://dimensions

All 62 dimensions and where they are valid

ga4://compatibility

The compatibility matrix

ga4://recipes

12 step-by-step workflows

ga4://p2-diagnostics

Diagnostic playbooks


Security

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

  • Three hosts are contacted, and only three: analyticsdata.googleapis.com, analyticsadmin.googleapis.com and oauth2.googleapis.com. A test fails the build if a fourth host appears in the source.

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

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

Full policy, including how personal data is handled: SECURITY.md.


Looking for a managed, multi-platform version?

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

  1. Follow the GA4 connection guide.

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

  3. Connect Claude, ChatGPT or Codex.

  4. Try a read-only review: “Compare acquisition channels, landing pages and configured key events. State missing data and do not change anything.”

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


Contributing

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

Licence

Apache License 2.0. See also NOTICE.

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

MCP contracts and desktop bundle

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

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

More from getmcpads

Meta Ads · Google Ads · Google Search Console · TikTok Ads · Pinterest Ads · X Ads

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

Available Tools

27 tools
ga4_batch_run_pivot_reportsga4 batch run pivot reportsA
Read-onlyIdempotent

Run 1-5 independent read-only GA4 pivot reports for the same property in one official Data API batch request.

ParametersJSON Schema
NameRequiredDescriptionDefault
reportsYesNative GA4 report request objects to execute in one batch.
propertyIdYesNumeric GA4 property ID or properties/{id}.

Output Schema

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

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'read-only' which aligns with the annotation but doesn't provide additional behavioral details (e.g., rate limits, execution semantics). Given the strong annotation coverage, the description adds minimal extra value beyond confirming the read-only nature.

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, well-structured sentence that front-loads the core action and scope. Every word contributes to the meaning—there is no redundancy or filler.

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

Completeness5/5

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

The tool has an output schema (as indicated), so the description does not need to explain return values. The description fully covers the tool's purpose and usage context—batch pivot reports for a single property—with no missing information that would hinder an agent from invoking it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with detailed property descriptions for propertyId and reports. The description only restates the '1-5' limit and the 'native GA4' aspect, which are already present in the schema. It adds no new parameter-level semantics, so a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (run), the resource (GA4 pivot reports), and the specific scope (1-5 independent reports in one batch for the same property). It distinguishes itself from siblings like ga4_run_pivot_report (single) and ga4_batch_run_reports (non-pivot batch) by explicitly mentioning pivot and batch.

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

Usage Guidelines4/5

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

The description specifies when to use it: when you need multiple pivot reports for the same property in one request. It implies alternatives (single pivot report, general batch) but does not explicitly state when not to use it or name alternatives. Still, the context is clear enough for an agent to infer the appropriate use case.

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

ga4_batch_run_reportsga4 batch run reportsA
Read-onlyIdempotent

Run 1-5 independent read-only GA4 Core reports for the same property in one official Data API batch request.

ParametersJSON Schema
NameRequiredDescriptionDefault
reportsYesNative GA4 report request objects to execute in one batch.
propertyIdYesNumeric GA4 property ID or properties/{id}.

Output Schema

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

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds useful scope context—same property, independence, and one official batch request—but otherwise depends on annotations for the safety profile. It does not disclose details like batch failure semantics or quota behavior.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. Every element—count, read-only nature, report type, property scope, and batch mechanism—earns its place and supports agent decision-making.

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

Completeness4/5

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

Given the strong annotations, 100% parameter schema coverage, and presence of an output schema, the description is largely complete for invocation. It could be marginally stronger by naming ga4_run_report as the single-report alternative, but nothing essential for calling the tool 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%, and the schema already documents propertyId and the reports array in detail. The description's phrases 'independent' and 'same property' add modest context but do not meaningfully expand on the parameter semantics beyond what the schema provides.

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

Purpose5/5

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

The description states a specific action ('Run'), resource ('GA4 Core reports'), scope ('same property'), and batching behavior (1-5 reports in one request). This clearly differentiates it from single-report tools like ga4_run_report and from pivot-based batch tools like ga4_batch_run_pivot_reports.

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

Usage Guidelines4/5

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

The description conveys clear usage context: use this when running 1-5 independent read-only Core reports together for one GA4 property. It does not explicitly name alternatives or state when not to use it, but the context is specific enough to guide selection.

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

ga4_check_compatibilityga4 check compatibilityA
Read-onlyIdempotent

Ask the official GA4 Data API which dimensions and metrics are compatible with a proposed Core report selection.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsNoNative or documented calculated metric names to request. Check compatibility with the selected dimensions.
dimensionsNoNative reporting dimensions. Validate compatibility with the selected metrics.
propertyIdYesNumeric GA4 property ID or properties/{id}.
metricFilterNoNative GA4 FilterExpression JSON.
dimensionFilterNoNative GA4 FilterExpression JSON.
compatibilityFilterNoLimit compatibility results to the requested GA4 compatibility category.

Output Schema

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

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and this description does not contradict them. The description adds that the check targets the official GA4 Data API, but it does not reveal additional behavioral details such as rate-limit implications or the nature of the compatibility response beyond what the output schema and annotations would provide.

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

Conciseness5/5

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

The description is a single clear sentence that states the tool's purpose with no filler or repetition of schema fields. It is front-loaded with the core behavior and outcome.

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

Completeness4/5

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

Given the strong annotations, complete parameter schema, and the existence of an output schema, the description is largely complete for the tool's complexity. It could be slightly richer by naming the related validation sibling, but nothing essential for calling it 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 all six parameters, including dimensions, metrics, propertyId, filters, and compatibilityFilter. The description adds no extra semantic meaning beyond what the parameter descriptions already provide, placing this at the baseline score.

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

Purpose5/5

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

The description names a specific action ('ask the official GA4 Data API') plus a precise outcome: checking which dimensions and metrics are compatible for a proposed Core report selection. It clearly differentiates this from siblings like ga4_run_report or ga4_validate_query by focusing on compatibility, not execution or validation.

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 intended use is implied: use this tool to check whether dimensions and metrics are compatible before running a report. However, it never explicitly states when to prefer this over the closely related ga4_validate_query or other GA4 report validation tools, so usage guidance is adequate but not explicit.

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

ga4_get_audience_diagnosticsga4 get audience diagnosticsB
Read-onlyIdempotent

Read-only audience diagnostics from Admin API audiences, Data API recurring audience lists, and observed audienceName report fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
endDateNoEnd date YYYY-MM-DD or relative (today, yesterday)
startDateNoStart date YYYY-MM-DD or relative (7daysAgo, yesterday)
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
propertyIdYesGA4 property ID (numeric, e.g., 123456789)
includeDefinitionsNoInclude full Admin API audience definitions when available
recurringAudienceListNameNoOptional resource name, e.g. properties/123456789/recurringAudienceLists/abc123

Output Schema

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

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already provide readOnly/idempotent/non-destructive hints; the description adds the multi-source behavior and a fallback, which is useful. It does not clarify what 'observed audienceName report fallback' means or how the sources are combined, so disclosure remains partial.

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

Conciseness4/5

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

The description is a single compact sentence with no filler and the read-only constraint is front-loaded. The dense 'observed audienceName report fallback' phrase slightly hurts readability but not length.

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 read-only tool with a full input schema, an output schema, and strong annotations, the description is minimally viable. It is thin on how sources are combined and when to select it, but structured context fills most operational gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so params like propertyId, dates, limit, and includeDefinitions are already well documented. The prose description adds no parameter semantics beyond what the schema provides, keeping it at the baseline.

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

Purpose4/5

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

The description identifies a specific resource ('audience') and an action ('read-only diagnostics'), and names the data sources it draws from, which is more informative than just the title. However, it doesn't explicitly contrast with the sibling ga4_get_audience_export_diagnostics, and the phrase 'observed audienceName report fallback' is cryptic.

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

Usage Guidelines2/5

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

No when-to-use guidance is given. There is no mention of which sibling tools are alternatives, no conditions for choosing this over the other diagnostics tools, and no exclusions. An agent must infer the intended use from the name alone.

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

ga4_get_audience_export_diagnosticsga4 get audience export diagnosticsB
Read-onlyIdempotent

Read-only Audience Export diagnostics. Lists existing audience exports, state counts, and optionally samples rows from an existing export.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoMaximum items requested per page. Follow the returned pagination information for remaining results.
propertyIdYesGA4 property ID (numeric, e.g., 123456789)
sampleLimitNoMaximum records included in the diagnostic sample.
includeRowSampleNoIf true, query a small row sample from audienceExportName. Can include user-level export dimensions.
audienceExportNameNoOptional resource name, e.g. properties/123456789/audienceExports/abc123
includePersonalIdentifiersNoExplicitly include user/device identifiers in the optional sample. False redacts them by default.

Output Schema

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

TDQS

B3.4/5.0
Behavior3/5

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

The description reiterates the readOnlyHint and adds modest behavioral specifics: it lists state counts and optionally samples rows from an existing export. It doesn't explain side effects, but the annotations already cover read-only, idempotent, and non-destructive behavior, so the description adds context without contradicting them.

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

Conciseness5/5

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

Two concise sentences are front-loaded with the read-only diagnostics nature and then the capabilities. There is no filler, no restating of the obvious name, and no redundant detail.

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 a full input schema and an output schema present, the description needs only to orient the agent, which it does. The only real gap is the lack of guidance on when to use this diagnostic versus the similarly named list/query siblings.

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

Parameters3/5

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

The input schema already documents all six parameters with descriptions (100% coverage), so the description is not responsible for parameter semantics. It mentions 'optionally samples rows' and 'existing export', reinforcing sampleLimit and audienceExportName, but adds no new parameter-level meaning.

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

Purpose4/5

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

The description uses a specific verb ('Lists') and identifies a clear resource ('existing audience exports, state counts') with an optional sampling behavior. It distinguishes itself from a generic reporting/query tool through the 'diagnostics' framing, though it doesn't explicitly name sibling tools that overlap.

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

Usage Guidelines2/5

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

No guidance is provided on when to choose this diagnostic over ga4_list_audience_exports or ga4_query_audience_export. The description simply lists capabilities; the agent must infer that diagnostics are for troubleshooting. There are no explicit exclusions or fallback instructions.

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

ga4_get_bigquery_export_diagnosticsga4 get bigquery export diagnosticsA
Read-onlyIdempotent

Detect GA4 BigQuery export links and diagnose export modes, stream coverage, excluded events, and dataset location.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdYesGA4 property ID (numeric, e.g., 123456789)
includeDataStreamsNoInclude data stream summaries to compare against BigQuery exportStreams

Output Schema

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

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already signal readOnly, idempotent, and non-destructive behavior. The description adds context beyond annotations by specifying exactly what is examined: export modes, stream coverage, excluded events, and dataset location. It does not disclose potential edge cases like empty results, but the output schema likely covers return specifics.

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

Conciseness5/5

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

A single dense sentence conveys the tool's purpose and diagnostic scope with no filler. Each listed item adds useful information, and the primary verb 'Detect' is front-loaded.

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

Completeness4/5

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

With an output schema present, read-only annotations, and a required propertyId documented in the input schema, the description is largely sufficient. It could be slightly more complete by mentioning when to prefer this tool over related diagnostics, but that gap is minor given the tool name and sibling context.

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

Parameters3/5

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

Both parameters are fully described in the schema (propertyId and includeDataStreams), so the schema carries the semantic burden. The description does not add parameter-specific guidance, only implicitly connects 'stream coverage' to includeDataStreams. Baseline 3 is appropriate given 100% schema description coverage.

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

Purpose5/5

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

The description uses a specific verb ('Detect'/'diagnose') with a concrete resource (GA4 BigQuery export links) and enumerates diagnostic dimensions: export modes, stream coverage, excluded events, and dataset location. This clearly distinguishes it from sibling diagnostic tools like ga4_get_audience_export_diagnostics or ga4_get_ecommerce_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?

The description makes the tool's domain clear: BigQuery export diagnostics. An agent can infer when to choose this over related diagnostic tools, though it does not explicitly name alternatives or state when not to use it. This is clear context but lacks explicit exclusions.

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

ga4_get_channel_groupsga4 get channel groupsB
Read-onlyIdempotent

List custom channel groups defined for a GA4 property.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdYesGA4 property ID (numeric, e.g., 123456789)

Output Schema

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

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, and the description's 'List' aligns with these. The description adds no extra behavioral detail such as pagination, authorization requirements, or scope limitations, but because the annotations already cover the safety profile, this is acceptable.

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

Conciseness5/5

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

The description is one clean, front-loaded sentence with no filler. It states the verb and object immediately and earns every word.

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

Completeness4/5

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

For a simple read-only tool with one parameter, full output schema, and strong annotations, the definition is largely sufficient to call it correctly. A brief pointer to related lookup tools would improve it, but that gap is already captured under usage_guidelines.

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 propertyId is already fully documented in the input schema. The description's 'for a GA4 property' adds no information beyond the schema, so it does not exceed the baseline for a fully described single-parameter tool.

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 ('custom channel groups'), a clear verb ('List'), and a scope ('defined for a GA4 property'). It does not explicitly differentiate from siblings like ga4_get_custom_definitions or ga4_get_metadata, so the agent must infer the boundary.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as ga4_get_custom_definitions or ga4_get_property_configuration. The only implicit usage context is the phrase 'defined for a GA4 property,' which is not enough to route an agent deciding between similar lookup tools.

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

ga4_get_custom_definitionsga4 get custom definitionsA
Read-onlyIdempotent

List custom dimensions and custom metrics exposed by GA4 Data API metadata. Read-only fallback for custom definition inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdYesGA4 property ID (numeric, e.g., 123456789)

Output Schema

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

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is established. The description adds mild context by clarifying that results come from GA4 Data API metadata and that the tool serves as a fallback, but it does not disclose limitations, pagination, or error behavior beyond what annotations and output schema likely cover.

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

Conciseness5/5

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

Two short sentences with no redundant wording. The core listing behavior is front-loaded, and the fallback qualifier is placed second without detracting from clarity.

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?

This is a low-complexity, one-parameter read-only tool with a rich annotation set and an output schema. The description adequately covers what the tool does and its fallback role; no critical calling information 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% and the sole parameter propertyId is already fully documented in the schema. The description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('List') and a concrete resource ('custom dimensions and custom metrics exposed by GA4 Data API metadata'). This clearly distinguishes it from broader metadata tools like ga4_get_metadata and from analytics/diagnostic siblings.

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 'Read-only fallback for custom definition inventory' phrase implies a use case but does not explicitly state when to prefer this tool over alternatives such as ga4_get_metadata, nor does it describe when not to use it. Some context is present, but it is not actionable guidance.

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

ga4_get_ecommerce_diagnosticsga4 get ecommerce diagnosticsA
Read-onlyIdempotent

Read-only ecommerce coverage diagnostics for core ecommerce events, revenue metrics, and item-level reporting over a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
endDateNoEnd date YYYY-MM-DD or relative (today, yesterday)
startDateNoStart date YYYY-MM-DD or relative (7daysAgo, yesterday)
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
propertyIdYesGA4 property ID (numeric, e.g., 123456789)

Output Schema

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

TDQS

A3.8/5.0
Behavior3/5

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

The description labels the tool 'Read-only', which matches the annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false), but this adds no new behavioral information beyond the annotations. It provides useful context about the diagnostic scope (events, revenue, item-level reporting) but does not disclose additional behavioral traits such as rate limits or data freshness.

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

Conciseness5/5

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

The description is a single sentence that front-loads the read-only nature and clearly specifies the diagnostic subject and time scope. It contains no filler or redundant phrasing and is highly scannable.

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

Completeness4/5

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

Given the presence of an output schema and rich annotations, the description sufficiently conveys the purpose and scope for an agent to decide to invoke it. It could be more explicit about what 'coverage diagnostics' means in terms of output, but the output schema likely covers return structure. Minor gap: no guidance on how this relates to other reporting tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents all five parameters including defaults and date formats. The description adds only the general notion of 'over a date range', which is already captured by startDate, endDate, and datePreset. No additional parameter-level meaning is provided.

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

Purpose5/5

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

The description clearly identifies the tool as 'Read-only ecommerce coverage diagnostics' and specifies the covered areas: core ecommerce events, revenue metrics, and item-level reporting over a date range. This distinguishes it from sibling diagnostics like audience, BigQuery, or server-side tagging diagnostics.

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

Usage Guidelines3/5

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

The description implies usage for ecommerce coverage diagnostics but provides no explicit guidance on when to prefer this over ga4_run_report, ga4_run_pivot_report, or other diagnostics tools. No alternatives or exclusion conditions are mentioned, so the agent must infer from the name and description.

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

ga4_get_event_parametersga4 get event parametersA
Read-onlyIdempotent

Best-effort event parameter inventory from GA4 metadata plus event reports. Documents Data API limitations for raw parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
endDateNoEnd date YYYY-MM-DD or relative (today, yesterday)
startDateNoStart date YYYY-MM-DD or relative (7daysAgo, yesterday)
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
eventNamesNoOptional event names to sample, e.g. purchase, add_to_cart
propertyIdYesGA4 property ID (numeric, e.g., 123456789)

Output Schema

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

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds meaningful context beyond those annotations by noting the result is best-effort, combines metadata with event reports, and acknowledges Data API limitations for raw parameters. This gives the agent important expectations about completeness and reliability.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the core function ('best-effort event parameter inventory'), then adds the key caveat about Data API limitations. Every phrase 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?

With a 100%-covered input schema, an output schema, and annotations that fully describe safety, the description adds the missing caveat about effort and limitations. It is sufficient for an agent to decide whether to invoke this tool. It could name sibling tools for clearer routing, but the current context is adequate given the rich structured data.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents all six parameters, their types, defaults, and constraints. The description itself adds no parameter-level semantics. Baseline 3 is appropriate because the schema carries the burden and the description need not repeat it.

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 clearly communicates that the tool produces an inventory of event parameters from GA4 metadata and event reports, and that it documents limitations of the Data API for raw parameters. It is distinct from sibling tools that handle audits, reporting, or custom definitions, though it relies on the phrase 'best-effort inventory' rather than an explicit verb like 'retrieves' or 'lists.' Overall the resource and scope are specific enough to be useful.

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: when an agent needs a best-effort inventory of event parameters, this is the tool. However, it does not name alternatives or explicitly state when not to use it, such as when needing custom definitions (ga4_get_custom_definitions) or a standard report (ga4_run_report). The usage context is clear but not fully articulated.

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

ga4_get_key_eventsga4 get key eventsA
Read-onlyIdempotent

Inventory GA4 key events/conversions using metadata-aware Data API reports. Returns best-effort event names and counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
endDateNoEnd date YYYY-MM-DD or relative (today, yesterday)
startDateNoStart date YYYY-MM-DD or relative (7daysAgo, yesterday)
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
propertyIdYesGA4 property ID (numeric, e.g., 123456789)

Output Schema

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

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already cover the read-only, idempotent, and non-destructive profile. The description adds 'metadata-aware Data API reports' and 'best-effort' as behavioral context, which hints at approximate results and a metadata-based approach, but it doesn't explain exactly why results are best-effort or what 'metadata-aware' means operationally.

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

Conciseness5/5

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

Two short sentences front-load the action and resource, then add the key return-value detail. There is no filler or redundant restatement of the tool name, and the description earns its length.

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 read-only inventory tool with thorough parameter documentation, an output schema, and safety annotations, the description covers the core purpose and return type. The only notable gap is the vague 'metadata-aware' phrasing, but it doesn't block correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented with defaults, bounds, formats, and enum choices. The description adds no new parameter-level detail beyond the schema, so the baseline score of 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 states a specific action ('Inventory') on a specific resource ('GA4 key events/conversions') and notes the return content ('best-effort event names and counts'). It is clear and distinguishable from siblings like ga4_get_event_parameters or ga4_run_report, though it doesn't explicitly name those alternatives.

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

Usage Guidelines4/5

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

The description clearly implies when to use it: when you need an inventory of GA4 key events/conversions with counts. It does not provide explicit 'do not use when' guidance or name alternatives, but the intended context is unmissable and the 'best-effort' qualifier signals a limitation.

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

ga4_get_metadataga4 get metadataA
Read-onlyIdempotent

Get the complete list of dimensions and metrics available for a specific GA4 property. Useful for discovering custom dimensions/metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdYesGA4 property ID (numeric, e.g., 123456789)

Output Schema

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

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description does not need to cover side effects. It adds only moderate context beyond that, such as the 'complete list' scope, but does not mention response limits, pagination, or property prerequisites.

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

Conciseness5/5

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

Two short sentences with the main action and scope front-loaded, followed by a concrete use case. There is no redundant or filler language.

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

Completeness4/5

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

For a simple metadata-listing tool with one fully documented parameter, an output schema, and complete safety annotations, the description is largely sufficient. It loses a point because the boundary with ga4_get_custom_definitions is unclear, which could lead an agent to select the wrong sibling 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?

The input schema fully describes propertyId with type and an example, so the description need not repeat parameter details. It adds no significant semantic nuance beyond 'specific GA4 property', so the baseline of 3 is appropriate.

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

Purpose4/5

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

States a specific verb ('Get'), resource ('complete list of dimensions and metrics'), and target ('specific GA4 property'). It is clear and actionable, but it does not explicitly contrast with ga4_get_custom_definitions or the report tools, which also deal with dimensions/metrics, so sibling differentiation is only partial.

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?

Provides a practical use case ('Useful for discovering custom dimensions/metrics'), which implies a discovery context. However, it gives no explicit when-to-use vs. alternatives, especially ga4_get_custom_definitions, and no exclusions or conditions for choosing another tool.

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

ga4_get_property_configurationga4 get property configurationB
Read-onlyIdempotent

Read GA4 property details plus selected singleton Admin settings (attribution, retention, Google Signals, reporting identity, or user-provided-data settings).

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsNoProperty configuration surfaces to inspect.
propertyIdYesNumeric GA4 property ID or properties/{id}.

Output Schema

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

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is clear without description help. The description's 'Read' verb reinforces non-mutation and the phrase 'selected singleton Admin settings' adds some context about the data source, but no additional behavioral traits such as auth needs, rate limits, or empty-result behavior are disclosed. Given strong annotation coverage, this is adequate but not additive.

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

Conciseness4/5

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

The description is a single sentence with no filler; the action ('Read') and subject ('GA4 property details plus...') are front-loaded. It earns its place, though the phrase 'selected' is somewhat vague without the parameter context.

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

Completeness4/5

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

The tool is simple with one required string parameter and one optional array with enum, has a full input schema, rich annotations, and an output schema, so the description does not need to detail outputs. The one-line description plus structured data is sufficient for an agent to invoke it. A minor gap is not explaining what happens when 'settings' is omitted, but the schema default [] covers this.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented. The description lists the same five settings values that appear in the schema enum, adding little new information; the term 'singleton Admin settings' is the only added semantic. This falls at the baseline 3 because the schema carries the parameter semantics.

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

Purpose4/5

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

The description uses the verb 'Read' and identifies a specific resource: GA4 property details plus selected singleton Admin settings (attribution, retention, Google Signals, reporting identity, or user-provided-data settings). The explicit enumeration of settings distinguishes this from broader tools like ga4_list_properties or ga4_list_admin_resources, though it does not name a sibling directly.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, state when not to use it, or point to related tools for listing properties or admin resources. The intended use is only implied by the tool name and read-only nature.

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

ga4_get_property_quotas_snapshotga4 get property quotas snapshotA
Read-onlyIdempotent

Read the current GA4 Data API property quota snapshot from the official v1alpha endpoint. This does not run a report, but Google still charges one property-quota token to the category with the most remaining quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdYesNumeric GA4 property ID or properties/{id}.

Output Schema

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

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, and the description adds meaningful behavior beyond that: it targets the v1alpha endpoint, does not execute a report, and still consumes one property-quota token. The quota-charging detail is exactly the non-obvious behavior a caller needs to know.

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 focused sentences front-load the core action and then add the one cost caveat that matters. No redundant phrases.

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

Completeness5/5

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

For a one-parameter read tool with a full output schema and safe annotations, the description covers action, endpoint, and the only non-obvious call consequence. Nothing essential 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 coverage is 100%, so the single required propertyId is already documented, and the description adds no additional parameter meaning beyond confirming the endpoint context. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb ('Read'), a precise resource ('current GA4 Data API property quota snapshot'), and the endpoint ('official v1alpha endpoint'). It also distinguishes itself from report-generation siblings by stating it does not run a report.

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 a monitoring use case and warns against treating it as a report, but it never explicitly states when to choose this tool over siblings or what conditions should trigger its use. The cost note is useful context but not direct routing guidance.

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

ga4_get_server_side_tagging_diagnosticsga4 get server side tagging diagnosticsA
Read-onlyIdempotent

Best-effort read-only server-side tagging diagnostics from data streams, Measurement Protocol secrets, event rules, and stream settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdYesGA4 property ID (numeric, e.g., 123456789)
includeRulesNoFetch event create/edit rules for web streams
includeSettingsNoFetch enhanced measurement and data redaction settings for web streams

Output Schema

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

TDQS

A3.6/5.0
Behavior4/5

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

The annotations already declare readOnlyHint and idempotentHint, and the description adds useful behavioral context with 'best-effort' and 'read-only,' signaling that results may be partial or non-authoritative. It also names the exact sources checked, which goes beyond the structured annotations. No contradiction with annotations exists.

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

Conciseness5/5

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

A single, front-loaded sentence that conveys scope, read-only behavior, and data sources with no filler. Every element contributes to understanding what the tool does.

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

Completeness4/5

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

The description covers the tool's purpose and data sources, and with an output schema and strong annotations, it does not need to explain return values. The main gap is the lack of usage differentiation from siblings, but as a standalone diagnostic description it is reasonably complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well-documented. The description adds marginal value by mapping 'event rules' and 'stream settings' to includeRules and includeSettings, but it does not reveal beyond the schema. 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 clearly identifies the resource (server-side tagging diagnostics) and names the specific data sources it draws from, which distinguishes it from sibling diagnostic tools like ga4_get_ecommerce_diagnostics. However, it uses a noun phrase rather than an explicit verb like 'Gets' or 'Returns,' so the action is only implied.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as other diagnostic tools or reporting tools. There are no exclusions, prerequisites, or context hints to help an agent select among siblings.

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

ga4_health_checkga4 health checkA
Read-onlyIdempotent

Read-only GA4 health check. Verifies configured credentials, accessible properties, and metadata/property access without exposing OAuth tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdNoOptional property ID to check metadata and property details for

Output Schema

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

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already establish readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is well covered. The description adds valuable context by explicitly stating that it verifies credentials, accessible properties, and metadata access without exposing OAuth tokens, which is not present in the annotations.

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

Conciseness5/5

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

The description is a single dense sentence that front-loads the read-only nature and core checks. The OAuth token note is a valuable addition, and every phrase earns its place with no wasted words.

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 tool with one optional string parameter, rich annotations, and an output schema, the description provides the essential behavioral scope. It does not explain when to run the health check relative to sibling tools, but that gap is accounted for in usage guidelines, and the schema is sufficient for invoking 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?

The input schema fully documents the single optional propertyId parameter with 100% description coverage. The description only indirectly references metadata/property access, which may relate to propertyId, but it adds no new parameter-level semantics beyond the schema, so a baseline score of 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 clearly identifies the tool's purpose: it is a read-only GA4 health check that verifies configured credentials, accessible properties, and metadata/property access while avoiding exposure of OAuth tokens. This is more specific than the title alone, though it does not explicitly differentiate itself from sibling diagnostic tools.

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

Usage Guidelines2/5

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

The description states what the tool does but gives no guidance on when to use it versus the many sibling diagnostic or reporting tools. There is no mention of prerequisites, sequencing, or exclusions, so an agent must infer usage from the name and context.

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

ga4_list_accountsga4 list accountsA
Read-onlyIdempotent

List raw GA4 Analytics Admin accounts accessible to the authenticated user (read-only, auto-paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoMaximum items requested per page. Follow the returned pagination information for remaining results.

Output Schema

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

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false). The description adds genuine behavioral context beyond annotations: auto-pagination behavior ('auto-paginated') and the raw/unprocessed nature of the data returned, plus the user-scoping constraint. No contradiction with annotations.

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

Conciseness5/5

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

A single sentence packs the verb, resource, scope, safety posture, and pagination behavior into one front-loaded clause with parenthetical extras. There is zero filler and every element earns its place.

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

Completeness5/5

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

For a low-complexity tool with one optional, fully documented parameteraint — and an output schema that relieves the description of explaining return values — the description is complete. An agent knows what it returns, for whom, and how pagination behaves.

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% — the pageSize parameter is fully documented with default, bounds, and pagination guidance, so the description needs to add little. 'Auto-paginated' weakly reinforces the schema's pagination note but adds no new parameter-level meaning; 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?

The description names a specific verb ('List'), a precise resource ('raw GA4 Analytics Admin accounts'), and a scope ('accessible to the authenticated user'). It clearly differentiates from siblings like ga4_list_properties and ga4_list_admin_resources by specifying the account level, and 'raw' further disambiguates from processed/report-style tools.

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

Usage Guidelines3/5

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

The description implies when to use the tool — as a read-only listing of accounts for the current user — and names no prerequisites beyond authentication. However, it never explicitly contrasts with any sibling list tool (e.g., ga4_list_properties, ga4_list_admin_resources) or states when not to use it, so routing among the many list-style siblings is left to inference.

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

ga4_list_admin_resourcesga4 list admin resourcesA
Read-onlyIdempotent

List an allowlisted GA4 Admin collection in read-only mode: streams, custom definitions, key events, audiences, product links, annotations, channel groups, expanded datasets, subproperty/rollup configuration, and access bindings.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoMaximum items requested per page. Follow the returned pagination information for remaining results.
collectionYesAllowlisted administrative resource collection to read.
propertyIdYesNumeric GA4 property ID or properties/{id}.
includePersonalIdentifiersNoAccess bindings only. Explicitly include user/email identifiers; false redacts them by default.

Output Schema

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

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description repeats 'read-only mode' but adds a useful nuance: only 'allowlisted' collections are supported. It does not disclose pagination, but the pageSize schema description covers that, so this is acceptable given the strong annotation coverage.

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

Conciseness4/5

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

The description is a single sentence with a front-loaded action ('List...') followed by a colon-led list of collections. It is efficient and structured, though the list overlaps heavily with the schema enum, making it slightly redundant. Still, it earns its place by giving an at-a-glance scope.

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 a complete schema, a present output schema, and safety annotations, the description gives enough for an agent to invoke the tool correctly. The only notable gap is the lack of differentiation from specialized sibling getters, which is more of a usage-guidance issue than an invocation-correctness issue.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters, including the enum for 'collection' and the access-bindings-only note for includePersonalIdentifiers. The description's enumeration of resource types maps to enum values but adds only a human-readable summary, not new semantic detail. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('List') and a specific resource ('allowlisted GA4 Admin collection'), and then enumerates the exact collection types it covers. This clearly differentiates it from the reporting/diagnostic sibling tools and tells an agent what it operates on.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus specialized siblings such as ga4_get_custom_definitions, ga4_get_key_events, or ga4_get_channel_groups. The description implies a general admin-listing role but leaves the agent to infer the relationship between this generic list and the more targeted getters.

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

ga4_list_audience_exportsga4 list audience exportsA
Read-onlyIdempotent

List existing GA4 Audience Export snapshots and Recurring Audience Lists without creating new exports.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoMaximum items requested per page. Follow the returned pagination information for remaining results.
propertyIdYesNumeric GA4 property ID or properties/{id}.
includeRecurringNoInclude recurring audience-export configurations.

Output Schema

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

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description carries a lower burden. It adds a small amount of context by emphasizing 'existing' snapshots and recurring lists, but it doesn't cover pagination behavior or which export states are returned.

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

Conciseness5/5

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

One sentence that leads with the action and resource and ends with a clear non-creation caveat. Every clause earns its place; no repeated or redundant content.

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

Completeness4/5

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

For a simple read-only list endpoint with a full output schema and fully documented parameters, the description is largely complete. The only notable gap is the absence of guidance on pagination or the relationship to querying an export, though the schema already explains pagination follow-up.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents propertyId, pageSize, and includeRecurring. The description's phrase 'Recurring Audience Lists' faintly echoes includeRecurring but adds no parameter-level detail beyond the schema, matching the baseline.

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

Purpose5/5

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

Description has a specific verb ('List'), a specific resource ('GA4 Audience Export snapshots and Recurring Audience Lists'), and explicitly excludes creation ('without creating new exports'). This makes the tool's role obvious and separates it from mutation or diagnostic siblings.

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

Usage Guidelines3/5

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

The description implies usage for retrieving existing exports/lists, but it doesn't name a sibling alternative (e.g., querying or creating exports) or state when to prefer this tool over ga4_query_audience_export. 'Without creating new exports' is a useful non-mutation cue but not explicit routing guidance.

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

ga4_list_propertiesga4 list propertiesA
Read-onlyIdempotent

List all GA4 properties accessible with the current credentials. Returns property ID, display name, timezone, and currency.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

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

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already cover readOnlyHint, idempotentHint, and non-destructive behavior, so the bar is lower. The description adds useful auth-scope context ('accessible with the current credentials') and specifies the returned fields, but it does not mention pagination, ordering, or any rate-limit behavior. It does not contradict 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?

Two short sentences, front-loaded with the core action and scope, followed by a useful summary of returned fields. There is no redundant or filler language.

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

Completeness5/5

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

For a parameterless, read-only list tool with rich annotations and an output schema, the description is complete. An agent knows what it lists, under what credential scope, and what the primary returned fields are. No additional context is needed to select or invoke it correctly.

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

Parameters4/5

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

The input schema has zero parameters, so the baseline is 4. The description correctly implies no arguments are needed and does not introduce any misleading parameter expectations.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('GA4 properties') and adds a scoping qualifier ('accessible with the current credentials'), clearly distinguishing it from tools like ga4_list_accounts and ga4_list_admin_resources. It tells the agent exactly what object is being returned without ambiguity.

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

Usage Guidelines4/5

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

The description makes the use case clear: call this when you need the set of GA4 properties available to the current credentials. It does not explicitly name sibling tools to exclude, but the resource types are distinct enough that an agent can infer when to use this tool.

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

ga4_query_audience_exportga4 query audience exportA
Read-onlyIdempotent

Query rows from an existing GA4 Audience Export. User/device identifiers are redacted by default; include them only through explicit opt-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
offsetNoZero-based number of rows to skip before returning results.
audienceExportNameYesFull GA4 audience-export resource name returned by list_audience_exports.
includePersonalIdentifiersNoExplicitly return user/device identifiers. False redacts identifier columns by default.

Output Schema

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

TDQS

A4.2/5.0
Behavior4/5

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

With readOnlyHint and idempotentHint already declared in annotations, the description adds valuable behavioral context: user/device identifiers are redacted by default and require explicit opt-in. This is meaningful beyond what annotations alone convey and does not contradict them.

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

Conciseness5/5

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

Two sentences with no filler: the first states the core operation, and the second captures an important caveat. Every sentence earns its place and the critical opt-in detail is front-loaded.

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

Completeness5/5

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

For a simple read-only query tool with fully documented parameters, an output schema, and safety annotations, the description plus schema covers everything an agent needs to call it correctly. Pagination and resource-name guidance are already provided in the schema.

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 adds extra meaning by clarifying the default redaction behavior and explicit opt-in requirement, which directly informs how includePersonalIdentifiers should be interpreted.

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

Purpose4/5

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

The description uses a specific verb and resource ('Query rows from an existing GA4 Audience Export'), clearly indicating what the tool operates on. It is distinct enough from siblings like list_audience_exports because it targets export rows rather than the export list, though it does not explicitly compare itself to alternatives.

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

Usage Guidelines4/5

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

The description establishes a clear usage context: use this when needing to query rows from an already-created GA4 Audience Export. It lacks explicit exclusions or named alternatives, so it stops short of a 5, but the context is unambiguous.

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

ga4_run_advanced_funnel_reportga4 run advanced funnel reportA
Read-onlyIdempotent

Run the GA4 Data API v1alpha runFunnelReport endpoint with optional breakdown/next-action, falling back to read-only step counts if unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
stepsYesOrdered funnel steps using eventName, pagePath, or fieldName+fieldValue
endDateNoEnd date YYYY-MM-DD or relative (today, yesterday)
startDateNoStart date YYYY-MM-DD or relative (7daysAgo, yesterday)
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
propertyIdYesGA4 property ID (numeric, e.g., 123456789)
isOpenFunnelNoAllow users to enter at any funnel step instead of requiring the first step.
breakdownLimitNoMaximum breakdown values to include in the funnel response.
nextActionLimitNoMaximum next actions returned for each funnel step.
visualizationTypeNoSupported funnel visualization mode.STANDARD_FUNNEL
breakdownDimensionNoOptional breakdown dimension, e.g. deviceCategory or sessionDefaultChannelGroup
nextActionDimensionNoOptional next action dimension, commonly eventName
fallbackToStepCountsNoIf the advanced funnel is unavailable, return independent step counts with the limitation made explicit.

Output Schema

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

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, and non-destructive behaviorikuha. The description adds meaningful behavioral context: it calls out the v1alpha endpoint (implying experimental status) and discloses the fallback to read-only step counts when the advanced funnel is unavailable. This goes beyond what annotations state without contradicting them.

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

Conciseness5/5

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

A single sentence packs the endpoint, key optional features, and the fallback behavior. It is front-loaded and contains no filler. Every clause earns its place.

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

Completeness3/5

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

With 13 parameters and an output schema, the description plus the schema cover most operational detail. However, the description lacks any usage-context guidance (e.g., when to choose this over the simpler funnel recipe) and doesn't hint at pagination or rate-limit handling beyond the schema's limit parameter. It is adequate but not fully complete for a complex 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?

Parameter descriptions in the schema are complete (100% coverage) and already explain each field. The description only highlights 'optional breakdown/next-action', which maps to breakdownDimension and nextActionDimension, adding minimal interpretive value. This matches the baseline for full schema 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 a specific endpoint ('GA4 Data API v1alpha runFunnelReport') and action ('Run'), plus distinctive features (breakdown/next-action, fallback to step counts). It is clear about what the tool does, though it does not explicitly contrast with the sibling ga4_run_funnel_recipe, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description gives no guidance on when to prefer this tool over alternatives like ga4_run_report or ga4_run_funnel_recipe, nor any exclusions based on property capabilities or date-range constraints. The only hint is the fallback behavior, which is about runtime behavior rather than selection criteria.

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

ga4_run_funnel_recipega4 run funnel recipeB
Read-onlyIdempotent

Run a read-only configurable funnel recipe using one GA4 report per eventName/pagePath step and return simple step counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYesOrdered funnel steps. Each step needs eventName or pagePath.
metricNoMetric used for the analysis; use a name from the platform metric catalogue.activeUsers
endDateNoEnd date YYYY-MM-DD or relative (today, yesterday)
startDateNoStart date YYYY-MM-DD or relative (7daysAgo, yesterday)
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.last28days
propertyIdYesGA4 property ID (numeric, e.g., 123456789)

Output Schema

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

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces safety with 'read-only' and adds useful behavioral context: one report per step and simple step counts. It does not go further into rate limits, ordering semantics, or failure behavior, but the annotation coverage lowers the burden.

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

Conciseness4/5

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

The description is one sentence and front-loads the core purpose ('Run a read-only configurable funnel recipe'). It is economical, though 'read-only' is partially redundant with the annotations.

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

Completeness3/5

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

The description plus a fully documented schema covers the essential call semantics for a moderate-complexity tool, and an output schema exists for return-value structure. However, it does not clarify what 'funnel recipe' means beyond sequential steps, nor does it warn about potential limitations relative to advanced funnel analysis.

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 parameters like propertyId, steps, matchType, metric, startDate, endDate, and datePreset are already documented in the input schema. The description does not add meaningful parameter-level detail beyond echoing 'eventName/pagePath step', so the schema carries the weight, which aligns with the baseline.

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

Purpose4/5

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

The description states a specific verb ('Run') and a specific resource ('configurable funnel recipe'), and adds a meaningful implementation detail: it uses one GA4 report per eventName/pagePath step and returns simple step counts. This makes its purpose reasonably distinct from generic ga4_run_report and hints at a lighter-weight alternative to ga4_run_advanced_funnel_report, though it does not explicitly name a sibling.

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 explicit guidance on when to choose this tool over alternatives such as ga4_run_advanced_funnel_report, ga4_run_report, or ga4_validate_query. The phrase 'simple step counts' implies a basic funnel use case, but no when-to-use or when-not-to-use conditions are stated.

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

ga4_run_pivot_reportga4 run pivot reportA
Read-onlyIdempotent

Run a read-only GA4 Data API pivot report with native filters, ordering, quota state, multiple date ranges, and up to 250,000 pivot cells. Every pivot requires an explicit limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
reportYesNative GA4 report request object for this endpoint.
propertyIdYesNumeric GA4 property ID or properties/{id}.

Output Schema

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

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the lower bar applies. The description adds real behavioral detail: native filters/ordering, quota state, support for multiple date ranges, the 250,000-cell ceiling, and the required limit. There is no contradiction with annotations.

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

Conciseness5/5

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

One dense sentence front-loads the verb and resource, then lists the most important capabilities and constraints in order. Every clause adds information; there is no filler or repetition of annotation values.

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

Completeness4/5

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

The nested report schema is complex, but it is fully described and an output schema exists, so the description does not need to enumerate every field. It covers the key behavioral constraints an agent needs to invoke the tool correctly. A small gap is the lack of an explicit pointer to alternatives such as batch pivot reporting or cohort behavior, though those are discoverable from the schema and sibling list.

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 reported at 100%, so the baseline is 3. The description reinforces the 250,000-cell maximum and the explicit-limit requirement, but these are already encoded in the schema's max/min constraints. It does not add meaningfully new parameter-level guidance beyond the schema.

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

Purpose5/5

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

States an explicit verb and resource: 'Run a read-only GA4 Data API pivot report.' The mention of 'pivot report' clearly distinguishes it from siblings like ga4_run_report and ga4_run_realtime_report, while 'native filters, ordering, quota state, multiple date ranges' sharpens the scope. No ambiguity.

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

Usage Guidelines4/5

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

Provides clear context for when to use the tool: any pivot-reporting need against GA4 Data API, with native filters and multiple date ranges. It also gives a crucial usage rule—'Every pivot requires an explicit limit'—which directly guides invocation. It stops short of naming alternatives or exclusions, such as when to prefer ga4_batch_run_pivot_reports.

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

ga4_run_realtime_reportga4 run realtime reportB
Read-onlyIdempotent

Run a read-only GA4 Data API realtime report. Realtime supports only a limited subset of dimensions and metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
metricsNoRealtime metric API names, e.g. activeUsers, eventCount
orderBysNoNative GA4 OrderBy JSON.
dimensionsNoRealtime dimension API names, e.g. eventName, city, deviceCategory
propertyIdYesGA4 property ID (numeric, e.g., 123456789)
metricFilterNoNative realtime-compatible GA4 FilterExpression JSON.
minuteRangesNoOptional named realtime minute ranges; zero is the current minute.
keepEmptyRowsNoKeep provider rows whose selected metrics are all zero, where supported.
dimensionFilterNoNative realtime-compatible GA4 FilterExpression JSON.

Output Schema

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

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to restate safety. It adds one useful behavioral constraint: realtime supports only a limited subset of dimensions and metrics. Beyond that, it does not describe timeout windows, validation behavior, or quota implications, but the annotation coverage lowers the burden.

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

Conciseness4/5

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

The description is short and front-loaded: the first sentence states the action, and the second adds a relevant limitation. There is minimal waste, though 'read-only' is somewhat redundant with the readOnlyHint annotation. It is concise and scannable, but a bit more actionable guidance would make it stronger.

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

Completeness3/5

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

Given the rich input schema, output schema, and safety annotations, the description is minimally viable but not complete. It lacks explicit information about when realtime reporting is appropriate, how far back the data extends, and how this tool relates to ga4_run_report. The schema fills in parameter details, but the usage context remains thin.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter descriptions already document propertyId, metrics, dimensions, filters, minuteRanges, and other fields. The description adds general context that realtime dimensions and metrics are limited, but it does not add specific parameter-level meaning. Baseline 3 is appropriate because the schema carries the semantic load.

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

Purpose4/5

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

The description states a specific verb and resource: 'Run a read-only GA4 Data API realtime report.' It is clear that this tool executes realtime reports and is not a historical report tool. However, it does not explicitly contrast itself with sibling tools like ga4_run_report or ga4_run_pivot_report beyond the word 'realtime,' so differentiation is present but not fully spelled out.

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

Usage Guidelines2/5

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

The description says realtime supports only a limited subset of dimensions and metrics, which is a caution but not a usage guideline. It does not state when to choose this tool over ga4_run_report or when to avoid it, nor does it mention the realtime data timeframe. An agent must infer the intended use from the tool name alone.

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

ga4_run_reportga4 run reportA
Read-onlyIdempotent

Run a GA4 analytics report with intelligent query planning. Supports 52 metrics, 63 dimensions, auto-pagination. Use ga4://metrics and ga4://dimensions resources for available fields. Max 9 dimensions + 10 metrics per request.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results.
offsetNoOptional 0-based row offset for explicit pagination.
endDateNoEnd date YYYY-MM-DD or relative (today, yesterday)
metricsYesMetric keys (e.g., sessions, activeUsers, totalRevenue)
orderByNoMetric or dimension key to sort by
startDateNoStart date YYYY-MM-DD or relative (7daysAgo, yesterday)
datePresetNoNamed reporting period. Use the custom date range when you need exact start and end dates.
dimensionsNoDimension keys (e.g., date, sessionSource, country)
propertyIdYesGA4 property ID (numeric, e.g., 123456789)
autoPaginateNoWhen true, omit the limit so the GA4 client paginates through all rows using offset.
orderDirectionNoSort direction for the selected ordering field.DESC

Output Schema

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

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds auto-pagination behavior and dimension/metric maxima, but does not discuss quota handling, invalid-field errors, or what 'intelligent query planning' does in practice.

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 with no fluff: purpose, resource source, and constraints. The most important information is front-loaded, and every sentence 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?

With an output schema and 100% parameter coverage, the description doesn't need to explain return values or each parameter. It adds the key limits and resource links needed to invoke the tool correctly, though it lacks usage routing guidance.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds cross-parameter constraints ('Max 9 dimensions + 10 metrics per request') and directs agents to ga4:// resources for valid metric/dimension keys, which goes beyond the individual parameter descriptions.

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

Purpose4/5

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

The description states a specific verb+resource: 'Run a GA4 analytics report' with 'intelligent query planning'. It also mentions unique capabilities (52 metrics, 63 dimensions, auto-pagination) that distinguish it from realtime or pivot siblings, though it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus ga4_run_realtime_report, ga4_run_pivot_report, or ga4_validate_query. It gives resource-lookup advice (ga4://metrics, ga4://dimensions) and request limits, but no exclusions or alternative routing.

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

ga4_validate_queryga4 validate queryA
Read-onlyIdempotent

Validate a metric/dimension combination BEFORE executing. Checks max limits (9 dims, 10 metrics), ecommerce rules, and dimension compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsYesMetric keys to validate
dimensionsNoDimension keys to validate

Output Schema

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

TDQS

A4.2/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 meaningful behavioral detail about the specific validation rules enforced (9 dims, 10 metrics, ecommerce rules, dimension compatibility), going beyond what annotations alone provide.

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

Conciseness5/5

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

A single dense sentence front-loads the purpose ('Validate BEFORE executing') and lists the specific checks without any filler or redundant restatement of the title. 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 straightforward two-parameter validation tool with a full output schema and strong annotations, the description covers what the tool checks and when to run it. Minor gaps remain, such as clarifying the result/response shape, but the output schema can carry that burden.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented ('Metric keys to validate' and 'Dimension keys to validate'). The description adds the validation context and limits but does not add parameter-level meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb, 'Validate', names the resource ('a metric/dimension combination'), and states the functional scope: max limits, ecommerce rules, and dimension compatibility. This clearly distinguishes it from execution tools like ga4_run_report and from diagnostic sibling tools.

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

Usage Guidelines4/5

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

The description explicitly positions the tool as a pre-execution gate ('BEFORE executing'), which is clear usage context. However, it does not mention exclusions or explicitly differentiate from the closely named sibling ga4_check_compatibility, so it stops short of full guidance.

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. 27 tool updatesv2.0.1
    • First observedga4_batch_run_pivot_reports
    • First observedga4_batch_run_reports
    • First observedga4_check_compatibility
    • First observedga4_get_audience_diagnostics
    • First observedga4_get_audience_export_diagnostics
    • First observedga4_get_bigquery_export_diagnostics
    • First observedga4_get_channel_groups
    • First observedga4_get_custom_definitions
    • First observedga4_get_ecommerce_diagnostics
    • First observedga4_get_event_parameters
    • First observedga4_get_key_events
    • First observedga4_get_metadata
    • First observedga4_get_property_configuration
    • First observedga4_get_property_quotas_snapshot
    • First observedga4_get_server_side_tagging_diagnostics
    • First observedga4_health_check
    • First observedga4_list_accounts
    • First observedga4_list_admin_resources
    • First observedga4_list_audience_exports
    • First observedga4_list_properties
    • First observedga4_query_audience_export
    • First observedga4_run_advanced_funnel_report
    • First observedga4_run_funnel_recipe
    • First observedga4_run_pivot_report
    • First observedga4_run_realtime_report
    • First observedga4_run_report
    • First observedga4_validate_query

TDQS

A3.7/5.0

Scored across 27 tools

Disambiguation4/5

Most tools are distinct resource/action pairs with clear report, admin, and diagnostic categories. A few clusters—audience export diagnostics vs listing vs querying audiences, and validate_query vs check_compatibility—could cause misselection, though descriptions mostly disambiguate them.

Naming Consistency5/5

Every tool uses the ga4_ prefix and snake_case, with a predictable verb_noun or run_<reporttype> pattern. Batch, diagnostic, and admin tools all follow the same naming style, with no camelCase or arbitrary verbs.

Tool Count2/5

27 tools is beyond the 16–25 'heavy' range and starts to tax agent selection, even though the GA4 domain is broad. Several diagnostic/listing variants (audience diagnostics, audience exports, compatibility checks) could be consolidated without losing capability.

Completeness5/5

For a read-only analytics/diagnostics MCP, the surface is comprehensive: core, realtime, pivot, funnel and batch reporting, metadata discovery, compatibility/validation, property and admin listing, audience exports, and specialized diagnostics are all covered. There are no obvious dead ends for the stated read-only purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    A read-only MCP server exposing Google Analytics 4 and AdSense APIs (reports, metadata, admin reads) via Cloudflare Workers with OAuth authentication.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Self-hosted Google Ads MCP server: 35 read tools and 10 opt-in, preview-first write tools. Maintained source relocated from getmcpads-com/google-ads-mcp-server; npm package remains @getmcpads/google-ads-mcp-server.
    35
    248 npm
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Self-hosted Meta Ads MCP server with 41 read tools and 23 opt-in, preview-first write tools. Maintained source relocated from getmcpads-com/meta-ads-mcp-server; npm package remains @getmcpads/meta-ads-mcp-server.
    41
    255 npm
    Apache 2.0