Skip to main content
Glama

GSCPAP - Google Search Console, GA4, PageSpeed Insights & live SERPs MCP

GA4 conversions by source

ga4_conversions_by_source
Read-only

Conversions and conversion-attributable revenue by traffic source.

Returns currency, time_zone, the date range, and rows with sessionSource + sessionMedium + sessions + conversions + sessionKeyEventRate + totalRevenue + purchaseRevenue (where applicable). Sorted by conversions desc.

Read the rate from sessionKeyEventRate, never by dividing conversions by sessions. A key event is counted every time it fires, so that division exceeds 100% on any property where sessions trigger more than one.

key_events is the same total broken out by event name, and it is the field that keeps an answer honest. A property marks whatever it likes as a key event: on a real shop measured here, 11,611 of them over a month were 6,066 add_to_cart, 2,797 login and 535 logout, against 203 purchases. sessionKeyEventRate for that month was 38.9%, which is true and means "38.9% of sessions did one of ten things, including logging out". The number a merchant means by "conversion rate" was 203/6,625, or 3.1%. Quote the overall rate only with the breakdown beside it, and for a shop prefer transactions and purchaseRevenue.

This used to return the bare row list. Google reports the property's currency and time zone in every response, and taking ["rows"] threw both away, so revenue came back as a bare number: 70114.77 of nothing. It was AUD. The dates had the same problem, since "the last 28 days" is cut in the property's own zone, which for that property is Australia/Melbourne, ten hours off UTC.

Input Schema

NameRequiredDescriptionDefault
daysNolookback window, default 28
limitNomax rows, default 20
property_idYesGA4 property id

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, openWorld, non-destructive), and the description goes well beyond them: it discloses the sort order (conversions desc), the currency/time-zone envelope, and the fact that the day window is cut in the property's own zone rather than UTC. The explanation of why the bare-row format was abandoned is exactly the kind of trap an agent would otherwise fall into.

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

Conciseness3/5

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

It is front-loaded — purpose, then return shape, then the gotcha — which is the right ordering. But the 11,611 key-event anecdote and the paragraph about the old bare-row format are long relative to the decision they support, and some of the return-field enumeration is redundant with the output schema.

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 analytics tool with a full output schema, this covers everything an agent needs to call it and to interpret the result honestly. The only excess is that it re-explains return fields the output schema already declares, rather than spending that space on sibling routing.

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, but the description adds real meaning to `days` by explaining that the lookback is computed in the property's time zone — a semantic an agent cannot get from 'lookback window, default 28'. `limit` gets no such treatment, which is why this is not a 5.

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 opening sentence names a specific resource pair (conversions and conversion-attributable revenue) and a specific dimension (traffic source), which is enough to distinguish it from the session-oriented ga4_traffic_sources. It stops short of naming that sibling explicitly, so the differentiation is inferred rather than stated.

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?

Strong in-tool guidance: read the rate from `sessionKeyEventRate` and never divide conversions by sessions, and never quote the overall rate without the `key_events` breakdown beside it. It also directs shops toward `transactions`/`purchaseRevenue`. What it lacks is routing guidance — nothing says when to pick this over ga4_traffic_sources or ga4_events_by_name.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.