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.
| Tool | What it does | Cost |
|---|---|---|
analytics_list_properties | List your Analytics properties | Free |
analytics_get_fields | Get a property's dimensions and metrics | Free |
analytics_get_report | Get an Analytics report | Free |
List your Analytics properties
analytics_list_propertiesThe 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.
"what's in my Google Analytics", "which GA4 property is example.com", before any analytics_get_* call.
- Search Console sites, use
console_list_properties. - Traffic to a site the user does not own, use
seo_get_traffic_estimates.
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.
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.
{}Get a property's dimensions and metrics
analytics_get_fieldsEvery dimension and metric one Google Analytics 4 property reports, with the api_name analytics_get_report takes, custom dimensions and metrics included.
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.
- The numbers themselves, use
analytics_get_report.
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.
0 credits. Cached 1 day.
Parameters
| Parameter | Default and notes |
|---|---|
property | Required, from analytics_list_properties |
limit | 100, cap 1000 |
It also takes the common parameters cursor, max_credits and dry_run.
{
"property": "properties/123456789",
"limit": 1000
}Get an Analytics report
analytics_get_reportA Google Analytics 4 report from the user's own property: any metrics by any dimensions over a date range, optionally against a second range.
"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.
- Google search queries, use
console_get_search_analytics. - A site the user does not own, use
seo_get_traffic_estimates.
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.
0 credits. Cached 1 hour.
Parameters
| Parameter | Default and notes |
|---|---|
property | Required |
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_date | Default 28 days before end_date |
end_date | Default yesterday |
filters[] | Dimension, operator equals | not_equals | contains | not_contains | begins_with | ends_with | regex | not_regex, value; case-insensitive, all must match |
order_by | Field, desc true; default the first metric, highest first |
limit | 100, cap 1000 |
compare_start_date and compare_end_date (both or neither).
It also takes the common parameters cursor, max_credits and dry_run.
{
"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"
}