Skip to main content
Glama

Get Google Ads Insights

adsap_google_get_insights

Get Google Ads performance insights for an account, at campaign, ad-group, or keyword level (cache-first with auto-refresh from Google). Returns an account summary with previous-period comparison, a sortable per-entity table, and an optional daily timeseries. Metrics on both the summary and every row: cost, impressions, clicks, conversions, conversions_value + derived roas/ctr/cpc/cpm/cost_per_conversion/cvr; all_conversions, all_conversions_value, cost_per_all_conversion, view_through_conversions, cross_device_conversions (all_* counts EVERY conversion action, conversions counts only the ones included in bidding); engagements, engagement_rate, interactions, interaction_rate; video_views (TrueView/YouTube), video_view_rate, avg_cpv, video_p25/p50/p75/p100_rate; youtube_comments, youtube_likes, youtube_shares (v25 social engagement on Shorts ads on YouTube — 0 outside YouTube/Shorts delivery); and the competitive set search_impression_share, search_lost_is_budget, search_lost_is_rank, top_impression_pct, abs_top_impression_pct. The competitive metrics are Search-network only and read 0 for Display/PMax/Video delivery. search_lost_is_budget is CAMPAIGN LEVEL ONLY (the Google API does not report it for ad groups or keywords) so the key is ABSENT at the other levels rather than 0; at campaign level impression share plus the two lost shares add up to 100%. quality_score (1-10, null when Google reports none) appears only at keyword level. When Google capped most days in range, meta.share_metrics_note is set and rows carry search_share_is_approximate: report those three share figures as estimates. ad_account_id is the bare 10-digit customer ID from adsap_google_list_ad_accounts. Keyword-level row ids are ":" — pass them as-is to adsap_google_set_entity_status / adsap_google_update_entity (entity_type keyword). Only entities with impressions in range appear (PMax has no ad groups/keywords by design). Note: Google reports plain Clicks/CTR/CPC (no Meta-style link-click split). For Meta insights use adsap_get_insights.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
levelNoAggregation level of the table rows (default campaign). ad_group and keyword ride the same cached sync — no extra API budget.campaign
limitNoEntity-table page size.
cursorNo
date_toNoCustom range end, YYYY-MM-DD. Use with date_from.
refreshNoForce a refresh from the Google Ads API even if the cache is fresh. Spends Google API budget.
sort_dirNodesc
date_fromNoCustom range start, YYYY-MM-DD. Use with date_to.
date_presetNoDate range preset (default last_7d). Ignored when date_from/date_to are set.
sort_columnNoEntity-table sort column.cost
ad_account_idYesBare 10-digit Google Ads customer ID (from adsap_google_list_ad_accounts).
include_timeseriesNoAlso return a per-day timeseries for the current range (for trend questions / charts).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so thoroughly: cache-first with auto-refresh, previous-period comparison, only entities with impressions appearing, PMax lacking ad groups/keywords, Search-network-only competitive metrics reading 0 elsewhere, search_lost_is_budget being campaign-level-only with the key ABSENT elsewhere, quality_score being keyword-only with nulls, and the approximate-share note when Google caps days.

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

Conciseness4/5

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

The description is long, but nearly every sentence earns its place by adding metric semantics, level-specific caveats, or routing guidance. It is front-loaded with the core purpose and return shape; however, the dense wall-of-text format with semicolon-heavy metric lists reduces scannability and could benefit from bullets or structured sections.

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

Completeness5/5

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

There is no output schema and no annotations, yet the description covers the return structure, the metrics on summary and rows, per-level availability, id formats and downstream usage, and the Meta alternative. The only minor omission is explicit cursor/pagination semantics, but limit/cursor are already in the schema and the tool is otherwise fully specified for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (82%), but the description meaningfully exceeds the schema: it explains that ad_group/keyword levels share the cached sync with no extra API budget, that refresh spends Google API budget, the exact source of ad_account_id, the distinction between conversions and all_conversions, and the level-specific availability of quality_score and competitive metrics. This is far beyond what the schema provides.

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

Purpose5/5

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

The description opens with a precise verb-resource pair: "Get Google Ads performance insights for an account, at campaign, ad-group, or keyword level." It names concrete return components (account summary, previous-period comparison, sortable per-entity table, optional timeseries) and explicitly distinguishes the closest sibling by saying "For Meta insights use adsap_get_insights."

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

Usage Guidelines5/5

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

It explicitly tells when to use the alternative (Meta insights via adsap_get_insights), explains the cache-first behavior and that refresh="Spends Google API budget", notes that ad_group/keyword levels "ride the same cached sync — no extra API budget," and tells where the ad_account_id comes from and how keyword ids should be passed onward. This is explicit when/when-not/alternative guidance.

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.

Resources