Tools

Google Analytics tools

Your own sites' sessions, users, conversions and revenue by channel, page, campaign or date, from Google Analytics 4. Free.

Read your own sites' Google Analytics 4 data: sessions, users, engagement, key events, conversions and revenue, by any dimension your property reports. The data comes from your own account, so these tools cost no credits. They share the console tools' rate limit per workspace instead.

Connect your account. The analytics tools use the Google account you connect for Search Console. Open Connections in the app and connect Google. Google asks for permission to view your Search Console data and your Google Analytics data; leave both ticked.

If you connected Google before Analytics was added, or unticked Analytics, the tools return NotConnected and ask you to reconnect. The Connections page marks those accounts No Analytics. Choose Reconnect, and your Search Console access carries on as before.

Properties. A property is one GA4 property, as properties/123456789. Every analytics tool except analytics_list_properties takes a property, so start there. The bare number works too.

Reports. analytics_get_report takes GA4's own names for metrics and dimensions, such as sessions, keyEvents and sessionDefaultChannelGroup. Its description lists the common ones. analytics_get_fields lists every name a property reports, custom dimensions and metrics included. Pass compare_start_date and compare_end_date to set a period against the one before; each row then carries dateRange, current or previous.

A good first report takes two steps. Run analytics_list_properties, then analytics_get_report with sessions and keyEvents by sessionDefaultChannelGroup. For organic traffic, set it next to console_get_search_analytics for the same dates.

To connect these tools to your agent, see the Google Analytics MCP page.

ToolWhat it doesCost
analytics_list_propertiesList your Analytics propertiesFree
analytics_get_fieldsGet a property's dimensions and metricsFree
analytics_get_reportGet an Analytics reportFree

List your Analytics properties

Toolanalytics_list_properties

The Google Analytics 4 properties the workspace's connected Google account can read, with the account each sits under. The first analytics call; the other analytics tools take a property from here.

Good for

"what's in my Google Analytics", "which GA4 property is example.com", before any analytics_get_* call.

Not the tool for
What you get

A list. Each row has property (the id to pass on: properties/123456789), property_name, property_type (PROPERTY_TYPE_ORDINARY, SUBPROPERTY or ROLLUP), account (accounts/123), account_name. NotConnected when no Google account is connected, or when the connected one has not granted Analytics; its connect_url is where the user connects or reconnects.

Cost

0 credits. The user's own data is free; it shares the console's 60 calls per minute per workspace. Cached 1 hour.

Parameters

It also takes the common parameters max_credits and dry_run.

Example input
{}

Get a property's dimensions and metrics

Toolanalytics_get_fields

Every dimension and metric one Google Analytics 4 property reports, with the api_name analytics_get_report takes, custom dimensions and metrics included.

Good for

A report needs a field outside the common ones, "what custom dimensions do we track", checking a conversion or event-scoped field's name before asking for it, or after analytics_get_report rejected a field name.

Not the tool for
What you get

A list, dimensions then metrics, in Google's order. Each row has kind (dimension | metric), api_name, ui_name, description, category, custom (defined on this property: customEvent:x, customUser:x), metric_type (metrics only: TYPE_INTEGER, TYPE_FLOAT, TYPE_SECONDS, TYPE_CURRENCY and so on). Several hundred rows; filter with custom or category.

Cost

0 credits. Cached 1 day.

Parameters

ParameterDefault and notes
propertyRequired, from analytics_list_properties
limit100, cap 1000

It also takes the common parameters cursor, max_credits and dry_run.

Example input
{
  "property": "properties/123456789",
  "limit": 1000
}

Get an Analytics report

Toolanalytics_get_report

A Google Analytics 4 report from the user's own property: any metrics by any dimensions over a date range, optionally against a second range.

Good for

"how much traffic did we get last month", sessions or conversions by channel, landing page or campaign, "which pages convert", revenue by source, a traffic drop by channel against the period before, organic sessions next to Search Console clicks.

Not the tool for
What you get

A list. Each row has one object per row keyed by api_name, dimensions as strings and metrics as numbers; with a comparison each row also carries dateRange (current | previous). metric_types (TYPE_SECONDS is seconds, TYPE_CURRENCY is in currency_code), currency_code, time_zone, subject_to_thresholding (Google withheld small rows for privacy), data_loss_from_other_row (rows folded into (other)). meta.rows_available is Google's row count. Rates such as engagementRate are 0 to 1. Data settles within about a day.

Cost

0 credits. Cached 1 hour.

Parameters

ParameterDefault and notes
propertyRequired
metrics[]["sessions"], up to 10: sessions, totalUsers, newUsers, engagedSessions, engagementRate, averageSessionDuration, screenPageViews, keyEvents, conversions, eventCount, totalRevenue, purchaseRevenue, transactions
dimensions[][], up to 9: date, sessionDefaultChannelGroup, sessionSource, sessionMedium, sessionSourceMedium, sessionCampaignName, landingPage, landingPagePlusQueryString, pagePath, pageTitle, eventName, country, deviceCategory; analytics_get_fields lists the rest
start_dateDefault 28 days before end_date
end_dateDefault yesterday
filters[]Dimension, operator equals | not_equals | contains | not_contains | begins_with | ends_with | regex | not_regex, value; case-insensitive, all must match
order_byField, desc true; default the first metric, highest first
limit100, cap 1000

compare_start_date and compare_end_date (both or neither).

It also takes the common parameters cursor, max_credits and dry_run.

Example input
{
  "property": "properties/123456789",
  "metrics": [
    "sessions",
    "keyEvents"
  ],
  "dimensions": [
    "sessionDefaultChannelGroup"
  ],
  "start_date": "2026-09-01",
  "end_date": "2026-09-30",
  "compare_start_date": "2026-08-01",
  "compare_end_date": "2026-08-31"
}