Skip to main content
Glama

Run a Google Analytics report

analytics_report
Read-only

Retrieve read-only GA4 reports by dimensions and metrics to analyze traffic, campaigns, events, and revenue over a selected date range.

Instructions

Any GA4 report: dimensions and metrics by their GA4 API names, highest first. Common dimensions: date, landingPage, pagePath, sessionDefaultChannelGroup, sessionSourceMedium, sessionCampaignName, sessionGoogleAdsCampaignName, deviceCategory, country, eventName. Common metrics: sessions, totalUsers, engagedSessions, engagementRate, keyEvents, sessionKeyEventRate, screenPageViews, purchaseRevenue. Changes nothing.

Input Schema

NameRequiredDescriptionDefault
daysNoLook-back window in days, ending yesterday
limitNoMost rows to return
filterNoOnly rows whose dimension contains this text (case-insensitive)
metricsYesGA4 metric names
end_dateNoExact last day, YYYY-MM-DD
order_byNoA requested metric (highest first) or dimension (A to Z, dates oldest first); defaults to the first metric
dimensionsNoGA4 dimension names; none gives totals
start_dateNoExact first day, YYYY-MM-DD. Pass with end_date to use exact dates instead of days
property_idYesGA4 property id, digits only (from analytics_properties)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.19.0
    • changedInput schema / properties / order_by / description
      Previous value: -"Metric to sort by, highest first; defaults to the first metric"New value: +"A requested metric (highest first) or dimension (A to Z, dates oldest first); defaults to the first metric"
  2. Addedv0.15.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, openWorldHint=true and destructiveHint=false, and the description reinforces this with 'Changes nothing'. It adds useful behavioral detail beyond the annotations: results are returned highest-first and accept raw GA4 API names. It does not mention pagination or rate limits, but with annotations carrying the safety profile a 4 is fair.

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?

Purpose and sort behavior are front-loaded in one sentence, followed by two compact lists of valid values and a closing safety note. Nothing is redundant with the schema and every clause carries information.

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

Completeness4/5

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

For a 9-parameter tool with a nested filter object and no output schema, the description covers intent, valid field vocabulary, and default ordering. Date-window and limit semantics are left entirely to the schema, and the shape of returned rows is only implied by 'highest first', which is a minor remaining gap.

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%, which sets a baseline of 3, but the description goes further by enumerating common dimension and metric names — valuable because the schema provides no enums (0) and says only 'GA4 metric names'. This materially reduces the risk of an agent inventing invalid field names.

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

Purpose4/5

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

The description gives a clear verb and resource ('Any GA4 report') and specifies the payload (dimensions and metrics by GA4 API names, sorted highest first). It implicitly separates itself from sibling preset reports like analytics_landing_pages by claiming 'any' report, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

'Any GA4 report' hints at the use case — arbitrary dimension/metric combinations — and 'Changes nothing' rules it out as a mutation. But there is no explicit statement of when to prefer this over analytics_landing_pages or run_gaql, so the routing decision 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.