Skip to main content
Glama
jabeer4148-ops

google-measurement-mcp

Run a GA4 report

ga4_run_report
Read-onlyIdempotent

Runs a Google Analytics 4 report and returns up to 25 rows as flat objects. Provide the numeric property ID, metrics, and date range to query GA4 data.

Instructions

Runs a Google Analytics 4 report and returns rows as flat objects. Requires the NUMERIC GA4 propertyId (e.g. 123456789), not the G-XXXXXXX measurement ID. If the user does not know it, it appears in any GA4 URL as the digits after 'p' (analytics.google.com/analytics/web/#/ap/...), or under GA4 Admin -> Property details -> PROPERTY ID. Returns at most 25 rows unless limit is raised; prefer narrowing the date range or dimensions over raising it. Read-only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return. Defaults to 25 to protect the context window. Prefer narrowing the query over raising this.
offsetNoZero-based row offset, for paging through a large report.
endDateYesEnd of the range, inclusive. Same formats as startDate.
metricsYesGA4 metric API names, e.g. ['activeUsers','sessions','conversions']. At least one is required.
orderBysNoGoogle Data API OrderBy objects (metric or dimension).
startDateYesStart of the range. Accepts YYYY-MM-DD, 'today', 'yesterday', or 'NdaysAgo' (e.g. '28daysAgo').
dimensionsNoGA4 dimension API names, e.g. ['date','sessionSource','country']. Omit for totals only.
propertyIdYesGA4 numeric property ID, with or without the 'properties/' prefix. Call ga4_list_account_summaries to discover it. This is NOT the G-XXXXXXX measurement ID.
metricFilterNoGoogle Data API FilterExpression for metrics.
keepEmptyRowsNoWhen true, returns rows whose metrics are all zero. Defaults to false.
dimensionFilterNoGoogle Data API FilterExpression for dimensions.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description confirms this with 'Read-only'. It adds meaningful behavior beyond annotations: the default 25-row cap to protect the context window, the flat-object return shape, and the preference for narrowing queries. This is a good level of disclosure for a read-only reporting tool.

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 compact and front-loaded: it states the action and output, then the most important requirement, then the limit behavior. Every sentence earns its place, and the 'Read-only' tag is a useful closing confirmation. No filler or redundant boilerplate.

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 complex 11-parameter tool with no output schema, the description covers the critical pitfalls: numeric propertyId, default row limit, output shape, and query-narrowing guidance. The schema covers the remaining parameter details. It is not a 5 because it leaves the boundary with ga4_run_realtime_report implicit, which could matter in tool selection.

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?

Input schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by giving a concrete method to find the numeric propertyId (digits after 'p' in the GA4 URL and the Admin path), which is the most error-prone parameter. It slightly repeats the limit guidance already present in the schema, but this is harmless reinforcement.

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 states the verb and resource: it runs a Google Analytics 4 report and returns rows as flat objects. It stops short of a 5 because it does not explicitly differentiate itself from the sibling ga4_run_realtime_report, and 'GA4 report' is broad enough to overlap with the realtime variant.

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

Usage Guidelines3/5

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

There is useful practical guidance: it emphasizes the numeric propertyId requirement, shows where to find it, and advises narrowing the query instead of raising the 25-row limit. However, it does not explicitly state when to choose this tool over ga4_run_realtime_report or other siblings; the selection context is only implied by the emphasis on date ranges.

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