Tool catalog
AdvisorPPC Google Suite tools
This endpoint currently advertises 179 tools: 140 read-only and 39 write-capable. This list matches what the AI client can call on this endpoint.
Search and filter are optional. Every tool stays listed below.
Google Ads
132 tools · 108 read · 24 write
-
Google Ads · Account lifetime statsRead
ga_account_lifetime_stats_toolGoogle Ads: lifetime rollup (total spend, conversions, revenue, ROAS, age). Visualization: 6-KPI card grid.
Free read allowance or an eligible paid plan.
-
Google Ads · Account performanceRead
ga_account_performance_toolReports Google Ads account performance for customer_id and date_range, with optional login_customer_id. Returns a summary and Markdown containing impressions, clicks, CTR, cost, average CPC, conversions, conversion value, and cost per conversion in account-currency units.
Free read allowance or an eligible paid plan.
-
Google Ads · Ad copy auditRead
ga_ad_copy_audit_toolGoogle Ads: audit responsive search ad (RSA) quality. Checks RSAs for low ad strength, missing asset slots, excessive pinning, and dangerous characters. Returns fix_rsa actions. Visualization: table of ads with copy quality issues.
Free read allowance or an eligible paid plan.
-
Google Ads · Ad diagnosis - approval / review / policy per ad + assetRead
ga_ad_diagnosis_tool(read-only) Native Ad Diagnosis - per-ad (and per-asset) approval status, review status, and the exact policy topics behind a disapproval/limitation. When to use: "why is my ad disapproved / limited", "which ads are under review", "what policy is blocking this ad". For ad STRENGTH (weak/excellent) use `ga_ad_strength_report_tool`; to SEE the ad creative use `ga_ad_showcase_tool`. IMPORTANT: the Google Ads UI "Ad Preview & Diagnosis" tool (rendered preview, "why not showing for query X") is NOT in the API. This returns the native POLICY data - the actionable half - not a rendered preview. Preconditions: a connected Google Ads account. only_issues=True (default) returns only ads that are not fully APPROVED; set False to list all. include_assets adds per-asset (headline/description/image) policy + LOW-performance findings. Returns: dict with `ads` (campaign, ad_group, ad_id, ad_type, status, ad_strength, approval_status, review_status, policy_topics[{topic,type}]), optional `asset_issues`, and a `markdown` field grouped by approval status. Gotchas: - approval_status ∈ APPROVED / APPROVED_LIMITED / AREA_OF_INTEREST_ONLY / DISAPPROVED. review_status shows REVIEW_IN_PROGRESS etc. - Policy topic `type` ∈ PROHIBITED / LIMITED / FULLY_LIMITED / DESCRIPTIVE … Example: ga_ad_diagnosis_tool(customer_id="5411520149") ga_ad_diagnosis_tool(customer_id="123", only_issues=False, include_assets=True) Visualization: ads grouped by approval status with policy topics.
Free read allowance or an eligible paid plan.
-
Show Google ads visually (SERP cards + creative assets)Read
ga_ad_showcase_toolBuild AdvisorPPC ad review cards from the connected Google Ads account. Use render=cards. Returns the selected ads, asset references and a review layout without saving screenshots or changing advertising.
Free read allowance or an eligible paid plan.
-
Google Ads · Ad strength reportRead
ga_ad_strength_report_toolGoogle Ads: per-ad strength + approval/review status. Use to find POOR / AVERAGE RSAs or DISAPPROVED ads that need attention. Visualization: sortable table with status pills.
Free read allowance or an eligible paid plan.
-
Google Ads · Ads galleryRead
ga_ads_gallery_toolGoogle Ads: full creative content of every ad - headlines, descriptions, paths, final URLs - for copy audits. Visualization: ad gallery cards.
Free read allowance or an eligible paid plan.
-
Google Ads · Ai max combination reportRead
ga_ai_max_combination_report_tool(read-only) AI Max per-(search_term, headline, landing_page) report. When to use: see the exact pairings AI Max chose - user search term, the headline it used, the landing page it sent the click to - with spend and conversions per combo. Use to promote winning combos into pinned headlines or diagnose unexpected AI Max spend. Only returns AI Max-attributed rows; for a general search-term report use ga_search_terms_report_tool. Sorted by cost descending. date_range supports last_7/14/30/90_days, this_month, last_month. campaign_id optional. Visualization: table.
Free read allowance or an eligible paid plan.
-
Google Ads · Ai max search term breakdownRead
ga_ai_max_search_term_breakdown_tool(read-only) Split search-term performance by AI Max match source. When to use: right after confirming AI Max is on, to answer "is AI Max bringing usable traffic or noise?". Buckets spend/clicks/conv/CPA/ROAS across AI_MAX_KEYWORDLESS, AI_MAX_BROAD_MATCH, ADVERTISER_PROVIDED_KEYWORD. For individual terms use ga_search_terms_report_tool instead. date_range supports last_7/14/30/90_days, this_month, last_month (90-day windows are handled via a BETWEEN range). campaign_id optional. Visualization: table.
Free read allowance or an eligible paid plan.
-
Google Ads · Budget-overspend alertRead
ga_alert_budget_overspend_tool(read-only) Flag campaigns whose daily spend is running over budget. Read-only anomaly scan - changes nothing. When to use: "which campaigns are burning over their daily budget?" - a budget-pressure check. Preconditions: customer_id is the 10-digit account id (dashes OK). MCC accounts need login_customer_id. threshold_pct (default 115) is the % of the daily budget the 7-day average daily spend must reach to fire. Returns: dict with [alerts, total_count, by_severity] plus a `markdown` summary. Each alert carries kind, severity (high >130% / medium ≥ threshold), campaign_id, current_value (avg daily spend) and baseline_value (daily budget) in account-currency units, change_pct (% of budget), and evidence. Gotchas: - Read-only: reports pressure; never changes budgets. - Daily spend is the last-7-day average, not a single day - a one-day spike may not cross the threshold. - Campaigns with no daily budget set are skipped. Example: ga_alert_budget_overspend_tool(customer_id="1234567890") Visualization: severity-ranked alert list.
Free read allowance or an eligible paid plan.
-
Google Ads · Conversion-drift alertRead
ga_alert_conversion_drift_tool(read-only) Flag an account whose total conversion count drifted vs baseline. Read-only scan - changes nothing. When to use: "did conversion tracking break?" - an account-level volume check that catches tag/tracking regressions. For a per-campaign CVR decline use `ga_alert_cvr_drop_tool`; for a deeper tag/tracking audit use `ga_conversion_tracking_health_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK). MCC accounts need login_customer_id. days (default 14) is the recent window, compared against the immediately-prior window of equal length. threshold_pct is the minimum absolute % drift that fires an alert. Returns: dict with [alerts, total_count, by_severity] plus a `markdown` summary. An alert (account-level) carries the drift direction, current_value and baseline_value (conversion counts), change_pct, and evidence. Empty alerts list means conversions held within threshold. Gotchas: - Read-only: reports drift; it does not fix tracking or edit anything. - A large drop often means broken conversion tags, not lost demand - investigate tracking before pausing spend. - A brand-new account with no prior window shows no drift, not "stable". Example: ga_alert_conversion_drift_tool(customer_id="1234567890", days=14) Visualization: account-level alert card.
Free read allowance or an eligible paid plan.
-
Google Ads · CPA-spike alertRead
ga_alert_cpa_spike_tool(read-only) Flag campaigns whose recent CPA spiked above baseline. Read-only anomaly scan - changes nothing. When to use: "did any campaign's cost-per-acquisition jump?" - a targeted CPA anomaly check. For a conversion-rate drop use `ga_alert_cvr_drop_tool`; for budget pressure use `ga_alert_budget_overspend_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK). MCC accounts need login_customer_id. days (default 7) is the recent window; it is compared against the ~28-day rolling baseline. threshold_pct is the minimum % increase (recent vs baseline) that fires an alert. Returns: dict with [alerts, total_count, by_severity] plus a `markdown` summary. Each alert carries kind, severity (high >50% / medium 30-50% / low 20-30%), campaign_id, current_value and baseline_value (CPA in account-currency units), change_pct, and evidence. Empty alerts list means no spikes crossed the threshold. Gotchas: - Read-only: detects and reports; never pauses or edits anything. - Campaigns with fewer than `days` rows of data are skipped. - Zero-baseline campaigns (no prior CPA) are skipped, not flagged. Example: ga_alert_cpa_spike_tool(customer_id="1234567890", threshold_pct=30) Visualization: severity-ranked alert list.
Free read allowance or an eligible paid plan.
-
Google Ads · CVR-drop alertRead
ga_alert_cvr_drop_tool(read-only) Flag campaigns whose conversion rate fell below baseline. Read-only anomaly scan - changes nothing. When to use: "is any campaign converting worse than usual?" - a targeted CVR-decline check. For a cost spike use `ga_alert_cpa_spike_tool`; for account-wide conversion tracking issues use `ga_alert_conversion_drift_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK). MCC accounts need login_customer_id. days (default 7) is the recent window, compared against the ~28-day rolling baseline. threshold_pct is the minimum % decline (recent vs baseline) that fires an alert. Returns: dict with [alerts, total_count, by_severity] plus a `markdown` summary. Each alert carries kind, severity, campaign_id, current_value and baseline_value (CVR as a rate), change_pct (negative), and evidence. Empty alerts list means no drops crossed the threshold. Gotchas: - Read-only: reports declines; never edits campaigns. - Campaigns with fewer than `days` rows of data are skipped. - Zero-baseline campaigns (no prior conversions) are skipped. Example: ga_alert_cvr_drop_tool(customer_id="1234567890", threshold_pct=25) Visualization: severity-ranked alert list.
Free read allowance or an eligible paid plan.
-
Google Ads · Disapproved-ads alertRead
ga_alert_disapproved_ads_tool(read-only) Surface every disapproved ad with its policy reason. Read-only scan - changes nothing. When to use: "are any ads disapproved / not serving on policy?" - the fastest way to catch ads Google has blocked. To review or rewrite RSA copy afterwards use `ga_ad_copy_audit_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK). MCC accounts need login_customer_id. Scans ads across enabled campaigns. Returns: dict with [alerts, total_count, by_severity] plus a `markdown` summary. Each alert (high severity by design) carries the ad id, its campaign/ad-group context, and the policy reason/topic for the disapproval. Empty alerts list means no disapproved ads were found. Gotchas: - Read-only: reports disapprovals; it does not appeal or edit ads. - Reflects Google's current review state - an ad appealed moments ago may still show here until Google re-reviews. Example: ga_alert_disapproved_ads_tool(customer_id="1234567890") Visualization: high-severity alert list.
Free read allowance or an eligible paid plan.
-
Google Ads · Asset group strengthRead
ga_asset_group_strength_toolGoogle Ads: PMax asset-group strength + primary status reasons. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · Auction insights - your impression share + where it leaksRead
ga_auction_insights_tool(read-only) Your account's auction competitiveness - impression share, abs-top, and whether you lose impressions to rank vs budget. When to use: "how competitive am I in the auction", "why am I not showing", "am I capped by budget or by rank/quality". This is the API-available slice of auction data. (Competitor ads / rival-domain auction insights are NOT in the Google Ads API.) For spend/clicks/ROAS use `ga_campaign_performance_tool`. IMPORTANT - what the API does NOT have: true Auction Insights (rival DOMAINS, overlap rate, position-above rate, outranking share) is UI/report- only, NOT in the Google Ads API. No tool can pull a competitor's domain- level auction data; this tool reports YOUR OWN side of the same auctions. Preconditions: a connected Google Ads account. `level` ∈ campaign / ad_group. `network` ∈ search / display (impression share only populates for Search/Shopping or Display serving). `date_range` is last_7_days / last_30_days / … or any GAQL DURING value. Returns: dict with `rows` (name, impression_share, abs_top_share, top_share, lost_rank, lost_budget - all fractions 0-1) and a `markdown` table that leads with the biggest budget-leak and rank-leak. Campaigns that didn't serve on the chosen network are dropped. Gotchas: - Lost-to-rank = ad quality × bid; lost-to-budget = capped spend. They tell you which lever to pull. They sum with impression share toward 100%. - Display network has no absolute-top / top variant (search-only fields). Example: ga_auction_insights_tool(customer_id="5411520149") ga_auction_insights_tool(customer_id="123", level="ad_group", network="search") Visualization: ranked impression-share table (IS% · abs-top · lost→rank · lost→budget).
Free read allowance or an eligible paid plan.
-
Google Ads · Bid Simulations bundle (v24, all 4 simulator resources)Read
ga_bid_simulations_tool(read-only) **Bid Simulations bundle** - one tool covering all 4 v24 simulator resources, action-dispatched. Mirrors Google's Bid Simulations docs section. When to use: any "what if I changed the bid" question. Bid simulator is HISTORICAL REPLAY - answers "if I had set my bid to X over the last ~7 days, what would have happened?" - NOT a forecast. For genuine forward forecasts use `ga_reach_planning_tool` (video/display only). Actions (pass as `action`): - `"explain"` - returns the full how-to + best practices. **Start here** if unsure of params. - `"list"` - discover available simulations. Params: `resource_type`, optional `campaign_id`/`ad_group_id` to filter. - `"get_curve"` - pull the bid → outcomes table. Params: `resource_type`, `resource_id`, `simulation_type`. - `"recommend"` - `get_curve` + auto-pick the best row for a goal. Params: same as get_curve plus `optimization_goal` ("min_cpc" | "max_conversions" | "target_roas" | "best_cpa"). - `"check_freshness"` - scans all 4 resources for the latest sim end_date, flags stale (>30d) simulations. Preconditions: `resource_type` ∈ {campaign, ad_group, ad_group_criterion, bidding_strategy}. `simulation_type` ∈ {CPC_BID, CPV_BID, CPM_BID, TARGET_CPA, TARGET_ROAS, TARGET_IMPRESSION_SHARE, BUDGET}. BUDGET only valid for `resource_type=campaign`. For ad_group_criterion, `resource_id` is the criterion (keyword) ID - pass `ad_group_id` separately for the "list" action. Returns: action-dependent. `list` → `simulations` array + counts. `get_curve` → `points` array (each: bid value + impressions + clicks + cost in account currency + biddable_conversions + projected_cpa + projected_roas). `recommend` → same plus `recommendation` (the chosen point) and `optimization_goal`. `check_freshness` → `latest_by_resource` dict. All include `markdown` field. Gotchas: - **Test accounts have NO simulations.** `is_test_account=true` → empty. - **Low-traffic resources have NO simulations.** New campaigns / paused keywords return zero points. - **Don't re-query within 6h** of changing bids/budgets - Google needs ~24h to regenerate sims. Use `action="check_freshness"` to verify. - These are HISTORICAL REPLAY estimates, not forecasts. Real performance depends on competition, seasonality, and creative. Example: ga_bid_simulations_tool(action="recommend", customer_id="1234567890", resource_type="campaign", resource_id="555111", simulation_type="TARGET_CPA", optimization_goal="max_conversions") Visualization: action-dependent - explain card / sim-list table / bid-curve table / recommendation card / freshness traffic-light table.
Free read allowance or an eligible paid plan.
-
Google Ads · Brand voice audit briefRead
ga_brand_voice_audit_brief_toolGoogle Ads: Extract brand voice from ad copy samples. Analyzes existing ads for tone, structure, distinctive phrases. Returns voice card Claude can reuse for future ad generation. Visualization: brief card.
Free read allowance or an eligible paid plan.
-
Google Ads · Budget rebalanceRead
ga_budget_rebalance_toolGoogle Ads: find over/under-pacing campaigns. Detects campaigns that are burning budget faster or slower than expected and proposes budget reallocation. Returns increase_budget and decrease_budget actions. Visualization: table of campaigns with pacing analysis.
Free read allowance or an eligible paid plan.
-
Google Ads · Campaign dashboardRead
ga_campaign_dashboard_toolGoogle Ads: return a LIVE HTML DASHBOARD for campaign performance. Returns {"data": <raw metrics>, "html": <fully inline HTML>}. Claude Desktop and Cowork will render the html string as a live artifact - KPI cards at the top (spend, impressions, CTR, CPC, conversions, CPA) plus a sorted campaign table with colored status pills. No external scripts, no localStorage. Use this when the user asks for a "dashboard", "overview", "summary view", or any visual breakdown of campaign performance.
Free read allowance or an eligible paid plan.
-
Google Ads · Campaign performanceRead
ga_campaign_performance_toolReports Google Ads campaign performance for customer_id and date_range (a preset or YYYY-MM-DD,YYYY-MM-DD), with optional limit and login_customer_id. Set segment_by_day to include each date and account currency. Returns cost-sorted campaign rows and bounded Markdown with impressions, clicks, CTR, cost, CPC, conversions, conversion value, and CPA in account-currency units, with a truncated flag when the row limit is reached.
Free read allowance or an eligible paid plan.
-
Google Ads · Check conversion source integrityRead
ga_check_conversion_source_integrity_toolGoogle Ads: flag duplicate-named conversion actions that quietly double-count. Returns grouped duplicates + all actions. Visualization: grouped table with duplicate badges.
Free read allowance or an eligible paid plan.
-
Google Ads · Competitor intelligence briefRead
ga_competitor_intelligence_brief_toolGoogle Ads: Analyze competitors for ad differentiation angles. Fetches your site + competitor pages, returns brief asking Claude to extract value props, ad hooks, gaps, and unique angles you can own. Optional: client_id auto-injects stored competitors if URLs not provided. Visualization: brief card.
Free read allowance or an eligible paid plan.
-
Google Ads · Conversion tracking healthRead
ga_conversion_tracking_health_toolGoogle Ads: audit conversion tracking health. Detects orphaned conversion actions (enabled but zero conversions), conversion-volume drift vs baseline, and no-conversion campaigns. Returns investigate_conv_drop actions. Visualization: table of conversion tracking issues.
Free read allowance or an eligible paid plan.
-
Google Ads · Conversion trendRead
ga_conversion_trend_toolGoogle Ads: daily conversion count + value per action over `days`, with zero-day anomaly flags where avg ≥ 1. Visualization: multi-series line chart.
Free read allowance or an eligible paid plan.
-
Google Ads · Conversion upload diagnostics - offline import healthRead
ga_conversion_upload_diagnostics_tool(read-only) Native offline-conversion import health per upload client - total/successful/pending counts + success rate, last ~7 days. When to use: "are my offline conversions actually landing", catching silent tracking decay BEFORE it shows up as a CPA spike. For website tag firing use `ga_conversion_tracking_health_tool`; for enhanced-conversions config use `ga_enhanced_conversions_status_tool`. Preconditions: a connected Google Ads account that uploads OFFLINE conversions (click / call / store-sales / enhanced uploads). Website tag conversions are not in this report. Returns: dict with `summaries` (client, status, total, successful, pending, success_rate, last_upload) and a `markdown` table that flags any client below 95% success. Gotchas: - Empty result = no offline uploads recorded (not an error). - Covers a rolling ~7-day window, per Google. Example: ga_conversion_upload_diagnostics_tool(customer_id="5411520149") Visualization: per-client import-health table.
Free read allowance or an eligible paid plan.
-
Google Ads · Critique campaign setup briefRead
ga_critique_campaign_setup_brief_toolGoogle Ads: Generate a brief for campaign setup review. Pulls campaign config, returns audit prompt covering budget, strategy, ad group structure, ad strength, negatives, geo/lang, conversion tracking. Visualization: brief card.
Free read allowance or an eligible paid plan.
-
Google Ads · Detect performance anomaliesRead
ga_detect_performance_anomalies_toolGoogle Ads: statistical anomalies in daily performance. Visualization: highlighted table.
Free read allowance or an eligible paid plan.
-
Google Ads · Disapproved adsRead
ga_disapproved_ads_toolGoogle Ads: list disapproved or limited ads with policy topics. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · Enhanced conversions statusRead
ga_enhanced_conversions_status_toolGoogle Ads: per-action enhanced-conversion state + approximate match-rate (counted / all_conversions over last 30d). Visualization: sortable table with match-rate bar.
Free read allowance or an eligible paid plan.
-
Google Ads · Find wasted spendRead
ga_find_wasted_spend_toolAnalyzes enabled Google Ads keywords for wasted spend without changing the account. Accepts customer_id, a bounded day window, waste thresholds, and optional login_customer_id. Returns evidence-backed findings and recommendations for human review; it never applies the recommendations.
Free read allowance or an eligible paid plan.
-
Google Ads · Frequency report (v24 unique_users_N_plus metrics)Read
ga_frequency_report_tool(read-only) Frequency report - how many unique users saw ads N+ times (1+, 2+, 3+, 4+, 5+, 10+). Uses Google Ads API v24 metrics released April 2026. When to use: brand campaigns and any video / display / Demand Gen / Performance Max where frequency matters. Auto-flags over-frequency (>5% of users at 10+ impressions = wasted spend) and shallow reach (<20% of users at 3+ impressions = poor recall). For per-asset perf, use `ga_rsa_asset_performance_tool`. For bid impact, pair with `ga_bid_simulations_tool`. Preconditions: customer_id 10-digit. Optional `campaign_id` to filter to one campaign (otherwise account-level). date_range can be a Google preset (LAST_7_DAYS / LAST_30_DAYS / LAST_90_DAYS) or literal range. Returns: dict with `customer_id`, `campaign_id`, `date_range`, `totals` (unique_users, users_2_plus through users_10_plus, impressions, avg_frequency). `markdown` field renders a frequency-decay table with a heuristic warning callout when over- or under-frequency thresholds are hit. Gotchas: - Reach metrics are only populated for **Display, Video, Demand Gen, Performance Max** - Search campaigns return empty. - Requires sufficient impressions (Google suppresses on tiny samples). - Metrics are part of v24 (released April 2026); requires google-ads SDK ≥30.1.0. Example: ga_frequency_report_tool(customer_id="1234567890", campaign_id="555111", date_range="LAST_30_DAYS") Visualization: frequency-decay table + warning callout.
Free read allowance or an eligible paid plan.
-
Google Ads · Generate ad copy briefRead
ga_generate_ad_copy_brief_toolGoogle Ads: Generate a structured brief for AI-assisted ad copy creation. Pulls ad group context, keywords, existing ads, landing pages. Returns prompt Claude can act on to write responsive search ads. Optional: client_id auto-injects brand voice into brief. Visualization: brief card.
Free read allowance or an eligible paid plan.
-
Google Ads · Generate keyword forecastRead
ga_generate_keyword_forecast_toolGoogle Ads (v24): forecast metrics for inline keywords without a plan. bidding_strategy ∈ MANUAL_CPC (needs max_cpc_bid_micros) / MAXIMIZE_CLICKS / MAXIMIZE_CONVERSIONS (need daily_budget_micros). currency_code defaults to the Google Ads account currency; set it only to request conversion into a different ISO currency. v24 aligns the forecast to the strategy and returns only its primary metrics - clicks, cost, avg CPC, conversions, avg CPA. Impressions, CTR and conversion value are NO LONGER returned, and `network`/`negative_keywords` are ignored (dropped from the v24 request). Visualization: KPI cards {clicks, cost, avg CPC, conversions, CPA}.
Free read allowance or an eligible paid plan.
-
Google Ads · Generate keyword historical metricsRead
ga_generate_keyword_historical_metrics_toolGoogle Ads: historical search volume + competition for explicit keywords. Visualization: table of {keyword, avg_searches, monthly_trend sparkline, competition}.
Free read allowance or an eligible paid plan.
-
Google Ads · Generate keyword ideasRead
ga_generate_keyword_ideas_toolGoogle Ads: generate keyword ideas from seeds (keywords and/or a URL). Visualization: table of {text, avg_monthly_searches, competition, bid_range} sortable by search volume or competition.
Free read allowance or an eligible paid plan.
-
Google Ads · Generate negatives briefRead
ga_generate_negatives_brief_toolGoogle Ads: Generate a brief for negative keyword classification. Pulls search terms, returns prompt asking Claude to classify each as BAD (add to negatives), OK (keep/refine), or GOLD (add as keywords). Visualization: brief card.
Free read allowance or an eligible paid plan.
-
Google Ads · Generate plan forecastRead
ga_generate_plan_forecast_toolGoogle Ads: forecast a saved keyword plan. Visualization: KPI cards.
Free read allowance or an eligible paid plan.
-
Google Ads · Get conversion tracking snippetRead
ga_get_conversion_tracking_snippet_toolGoogle Ads: return the global site tag + event snippet for a conversion action (paste into GTM / the site). Visualization: code block.
Free read allowance or an eligible paid plan.
-
Google Ads · Historical device performanceRead
ga_historical_device_performance_toolGoogle Ads: mobile/desktop/tablet split over a date range. Visualization: stacked bar or 3-line chart.
Free read allowance or an eligible paid plan.
-
Google Ads · Historical geographic performanceRead
ga_historical_geographic_performance_toolGoogle Ads: top regions by spend. Visualization: horizontal bar chart of top-N regions by cost.
Free read allowance or an eligible paid plan.
-
Google Ads · Historical network performanceRead
ga_historical_network_performance_toolGoogle Ads: search vs search-partners vs display. Visualization: stacked bar.
Free read allowance or an eligible paid plan.
-
Google Ads · Historical performanceRead
ga_historical_performance_toolGoogle Ads: long-range rollups by day/week/month/quarter/year with optional segmentation. Visualization: line chart for single metric, stacked bar if segment_by is set.
Free read allowance or an eligible paid plan.
-
Google Ads · Keyword performanceRead
ga_keyword_performance_toolReports Google Ads keyword performance for customer_id and date_range, with optional min_impressions, limit, and login_customer_id. Returns cost-sorted keyword rows and bounded Markdown with traffic, cost, conversion, and CPA metrics in account-currency units.
Free read allowance or an eligible paid plan.
-
Google Ads · Keyword researchRead
ga_keyword_research_tool(read-only) Keyword research via Google Ads Keyword Planner (v24). When to use: the one tool for keyword discovery + validation. Call with action="explain" first for the workflow. Bundles: - action="ideas": discover keywords from seed_keywords and/or seed_page_url, or seed_site_url to crawl a whole domain. Returns search volume, competition, top-of-page bid range, and - new vs the older ga_generate_keyword_ideas_tool - Brand/Non-Brand concept grouping (KEYWORD_CONCEPT annotations), so you can split brand defence from prospecting in one pass. - action="historical": GenerateKeywordHistoricalMetrics for an explicit `keywords` list - volume, competition, close variants, 12-mo trend. Every argument is validated before any Google call, and a bad one returns {"error": "…"} naming the accepted values - this tool never raises. Returns: dict with `ideas`/`keywords`, `markdown`. Bid values in micros. Gotchas: - Forecasting is NOT here - v24 simplified GenerateKeywordForecastMetrics (aligned to bidding strategy, secondary metrics dropped); use ga_generate_keyword_forecast_tool. - For AI Max keywordless/broad-match expansion, see ga_ai_max_search_term_breakdown_tool. Example: ga_keyword_research_tool(customer_id="8704499358", action="ideas", seed_keywords=["escape room redmond"], seed_page_url="https://conundroom.com", location_ids=[2840]) Visualization: sortable keyword table grouped by Brand/Non-Brand concept.
Free read allowance or an eligible paid plan.
-
Google Ads · Landing-page performance - spend & conversions by URLRead
ga_landing_page_performance_tool(read-only) Native landing-page performance - spend, conversions, and mobile-friendliness by the final URL actually served. When to use: "which landing page wastes spend", "is a page killing mobile conversions". A high-spend / low-conversion URL is a landing-page problem, not an ad problem. Preconditions: a connected Google Ads account. `expanded=True` uses the tracking-template-expanded URL (`expanded_landing_page_view`); default uses the unexpanded final URL. `date_range` is last_7_days / last_30_days / … or a GAQL DURING value. Returns: dict with `pages` (url, impressions, clicks, ctr, cost, conversions, conversions_value, mobile_friendly_pct) and a `markdown` table ranked by spend. Gotchas: - Rows are keyed by the served final URL, aggregated across ads/keywords. - mobile_friendly_pct is the share of clicks to a mobile-friendly page. Example: ga_landing_page_performance_tool(customer_id="5411520149") Visualization: ranked landing-page table.
Free read allowance or an eligible paid plan.
-
Google Ads · List accessible customersRead
ga_list_accessible_customers_toolLists every Google Ads account accessible to the signed-in user, including direct accounts, manager accounts, and client accounts reached through an MCC. Takes no inputs. Returns an MCC-aware account tree with account IDs, names, manager flags, and via_manager relationships.
Free read allowance or an eligible paid plan.
-
Google Ads · List account negative keywordsRead
ga_list_account_negative_keywords_toolGoogle Ads: list every account-level negative criterion (keyword + placement). Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
List managed Google Ads accountsRead
ga_list_account_settings_toolOptimization settings: list every reachable Google Ads account plus its saved orchestration preferences (enabled / frequency / auto_apply_mode). The production connector stores these preferences but does not run an optimization scheduler or auto-apply changes. Advisor orchestration owns optimization cadence and approved write execution. The response also reports the caller's managed-account limit, enabled count, remaining slots, and which persisted billing entitlement supplied the limit. Connected Google login identities do not consume these slots. Combine with ga_update_account_settings_tool to change per-account knobs from chat. Same data as the dashboard's "Optimization settings" table. Visualization: editable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List ad group audiencesRead
ga_list_ad_group_audiences_toolGoogle Ads: list audience + user-list criteria - per ad group or account-wide. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List ad-group negative keywordsRead
ga_list_ad_group_negative_keywords_tool(read-only) List every negative keyword on an ad group with criterion ids and match types. When to use: auditing what's blocked at the ad-group level before adding or removing negatives. For campaign-level negatives, use the campaign criteria tool; for shared lists, use `ga_list_shared_set_keywords_tool`. Preconditions: customer_id 10-digit, ad_group_id numeric. Returns: dict with `count`, `negatives` (list of {criterion_id, keyword.text, keyword.match_type, ad_group.id, ad_group.name}). `markdown` field renders a sortable table. Gotchas: - Default `limit=1000` is usually plenty; raise it for very large groups. Example: ga_list_ad_group_negative_keywords_tool(customer_id="1234567890", ad_group_id="888222") Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List ad groupsRead
ga_list_ad_groups_toolLists Google Ads ad groups for customer_id, optionally limited by campaign_id, limit, and login_customer_id. Returns the matching ad-group records with their campaign context and status.
Free read allowance or an eligible paid plan.
-
Google Ads · List adsRead
ga_list_ads_toolLists Google Ads ads for customer_id, with optional ad_group_id, status, limit, and login_customer_id filters. Returns ad IDs, types, statuses, final URLs, and campaign and ad-group context; creative text is not included.
Free read allowance or an eligible paid plan.
-
Google Ads · List ai max campaignsRead
ga_list_ai_max_campaigns_tool(read-only) List Search campaigns with AI Max enabled. When to use: the canonical "does this account use AI Max?" check during onboarding, client-verify, or audits. AI Max runs INSIDE Search (not a separate campaign type like Performance Max) and opts the campaign into broader term matching + asset-level text generation + expanded landing pages. For attribution use ga_ai_max_search_term_breakdown_tool. Returns: dict with count, campaigns[], hint, markdown. If the API errors on unknown fields, the account isn't enrolled in the AI Max API beta yet. Visualization: table.
Free read allowance or an eligible paid plan.
-
Google Ads · List alert subscriptionsRead
ga_list_alert_subscriptions_toolGoogle Ads: List all alert subscriptions for current user. Returns subscriptions with alert kinds, frequency, and delivery method. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List asset groupsRead
ga_list_asset_groups_toolGoogle Ads: list PMax asset groups - id, name, status, ad_strength, final_urls. Optionally filter to one campaign. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List assetsRead
ga_list_assets_toolGoogle Ads: list assets in an account, optionally filtered by type (SITELINK_ASSET / CALLOUT_ASSET / IMAGE / PROMOTION_ASSET / etc.). Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List audiencesRead
ga_list_audiences_toolGoogle Ads: list combined audiences in the account. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List automation rulesRead
ga_list_automation_rules_toolList active automation rules for the current user. Optionally filter by customer_id. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List bidding strategiesRead
ga_list_bidding_strategies_toolGoogle Ads: list portfolio bid strategies (Target CPA/ROAS/etc.) with performance. date_range accepts the usual presets (last_7_days, last_30_days, this_month, last_month) or an explicit YYYY-MM-DD,YYYY-MM-DD pair. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List campaign assetsRead
ga_list_campaign_assets_toolGoogle Ads: list CampaignAsset links. Optionally filter by campaign_id and/or field_type (SITELINK/CALLOUT/etc.). Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List campaign locationsRead
ga_list_campaign_locations_toolGoogle Ads: list location criteria on one or all campaigns, labelled. Visualization: sortable table with bid_modifier + negative column.
Free read allowance or an eligible paid plan.
-
Google Ads · List campaignsRead
ga_list_campaigns_toolLists Google Ads campaigns for customer_id, with optional status, limit, and login_customer_id filters. Returns campaign IDs, names, statuses, channel types, bidding strategies, and daily budgets in account-currency units.
Free read allowance or an eligible paid plan.
-
Google Ads · List change eventsRead
ga_list_change_events_toolLists recent Google Ads change events for customer_id. Accepts days, limit, and optional login_customer_id. Returns bounded records describing when a change occurred, what changed, and the responsible actor when Google provides it.
Free read allowance or an eligible paid plan.
-
Google Ads · List conversion actionsRead
ga_list_conversion_actions_toolGoogle Ads: list every conversion action with category, status, value. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List conversion custom variablesRead
ga_list_conversion_custom_variables_toolGoogle Ads: list conversion custom variables (named dimensions attached to events). Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List customer clientsRead
ga_list_customer_clients_toolLists client accounts beneath a Google Ads manager account, traversing up to three hierarchy levels. Accepts manager_id. Returns each client's ID, name, currency, time zone, status, manager flag, and hierarchy level.
Free read allowance or an eligible paid plan.
-
Google Ads · List customer conversion goalsRead
ga_list_customer_conversion_goals_toolGoogle Ads: list account-level conversion goals (defaults every campaign inherits). Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List email deliveriesRead
ga_list_email_deliveries_toolList recent email deliveries for the current user. Shows status (sent/failed), recipient, subject, timestamp. Visualization: sortable email log table.
Free read allowance or an eligible paid plan.
-
Google Ads · List experimentsRead
ga_list_experiments_toolGoogle Ads: list campaign experiments (A/B tests). Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List geo target constantsRead
ga_list_geo_target_constants_toolGoogle Ads: browse geo_target_constant with filters (country, type, name_contains). Use when ga_search_geo_targets can't resolve a name. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List keyword plansRead
ga_list_keyword_plans_toolGoogle Ads: list keyword plans. Visualization: table with forecast intervals.
Free read allowance or an eligible paid plan.
-
Google Ads · List keywordsRead
ga_list_keywords_toolLists Google Ads keyword criteria for customer_id, with optional ad_group_id, limit, and login_customer_id filters. Returns keyword text, match type, status, and related campaign and ad-group data.
Free read allowance or an eligible paid plan.
-
Google Ads · List labelsRead
ga_list_labels_toolGoogle Ads: list labels in an account. Visualization: table.
Free read allowance or an eligible paid plan.
-
Google Ads · List languagesRead
ga_list_languages_toolGoogle Ads: list targetable LanguageConstants (ID, code, name). Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List operating systemsRead
ga_list_operating_systems_toolGoogle Ads: list operating_system_version_constants (mobile + desktop). Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · List placementsRead
ga_list_placements_toolList all placements (YouTube, website, app, topic) in an ad group. Visualization: data table.
Free read allowance or an eligible paid plan.
-
Google Ads · List recommendationsRead
ga_list_recommendations_toolLists active Google Ads recommendations for customer_id, with optional limit and login_customer_id. Returns bounded recommendation records with recommendation types and available estimated-impact data.
Free read allowance or an eligible paid plan.
-
Google Ads · List shared set keywordsRead
ga_list_shared_set_keywords_toolGoogle Ads: list every negative keyword inside a shared set. Returns each keyword's text + match type + criterion_id, so you can audit what's blocked or remove specific entries via the shared criterion service. Visualization: sortable table with match-type filter.
Free read allowance or an eligible paid plan.
-
Google Ads · List shared setsRead
ga_list_shared_sets_toolGoogle Ads: list shared sets (negative keyword / placement lists).
Free read allowance or an eligible paid plan.
-
Google Ads · List user listsRead
ga_list_user_lists_toolGoogle Ads: list user lists (remarketing / customer-match / similar). Includes size_for_display / size_for_search + eligibility flags. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · Monthly trendRead
ga_monthly_trend_toolGoogle Ads: monthly time-series. Visualization: line chart.
Free read allowance or an eligible paid plan.
-
Google Ads · Optimization agent - review queueRead
ga_optimization_queue_tool(read-only) Review the optimization agent's recommendation queue. When to use: the user asks what changes the optimization agent is waiting on, or you want the recommendation ids to approve/dismiss. This is the AGENT's own queue - distinct from Google's native recommendations (ga_list_recommendations_tool). Preconditions: none. state is one of pending | escalated | approved | auto_applied | applied | dismissed | failed | all. Filter by customer_id (10 digits) to scope to one account. Returns: dict with `count` and `recommendations` (id, kind, severity, reason, state, params, evidence). Includes `markdown`. Example: ga_optimization_queue_tool(state="pending") Visualization: review table.
Free read allowance or an eligible paid plan.
-
Google Ads · Optimization reportRead
ga_optimization_report_toolGoogle Ads: render complete audit as interactive HTML dashboard. Calls ga_audit_account internally and renders findings as a self-contained HTML artifact with action items grouped by severity. Returns both raw metrics (for Claude) and full interactive dashboard. Visualization: HTML artifact dashboard.
Free read allowance or an eligible paid plan.
-
Google Ads · Optimization score - account + per-campaign healthRead
ga_optimization_score_tool(read-only) Google's native optimization score (0-100%) for the account + each enabled campaign, ranked lowest-first (most headroom). When to use: "where should I focus", "how healthy is this account". Pair the lowest-scoring campaigns with `ga_list_recommendations_tool` to act. Preconditions: a connected Google Ads account with serving campaigns (optimization score is only meaningful where campaigns can serve). Returns: dict with `account` (name, optimization_score, weight) and `campaigns` (name, status, optimization_score), plus a `markdown` table sorted by lowest score. Scores are fractions 0-1 (rendered as %). Gotchas: - Manager (MCC) accounts roll up via score × weight; a single account just returns its own score. - A campaign with no score yet (too new / not serving) shows "-". Example: ga_optimization_score_tool(customer_id="5411520149") Visualization: account score headline + campaign table (lowest first).
Free read allowance or an eligible paid plan.
-
Google Ads · Pmax galleryRead
ga_pmax_gallery_toolGoogle Ads: PMax gallery - asset groups with assets bucketed by field type (headlines, descriptions, marketing_images, logos, videos, ctas) for render-ready inspection. Visualization: PMax asset gallery cards.
Free read allowance or an eligible paid plan.
-
Google Ads · Propose account structure briefRead
ga_propose_account_structure_brief_toolGoogle Ads: Propose account structure for a business. Fetches business info, returns brief asking Claude to design: campaign breakdown, ad group structure, naming convention, geo splits, brand/non-brand split, attribution model. Optional: client_id references existing structure to evolve rather than start fresh. Visualization: brief card.
Free read allowance or an eligible paid plan.
-
Google Ads · Propose negativesRead
ga_propose_negatives_toolGoogle Ads OPTIMIZATION (recommend-only): scan the search-term report for queries burning money without converting, and propose them as ad-group negatives. A term qualifies if it has 0 conversions AND (spend ≥ min_spend OR impressions ≥ min_impressions with 0 clicks). Returns {findings, proposed_actions, confidence}. NEVER executes - Claude must show the proposed_actions as an approval list and the user ticks which ones to apply before calling ga_add_negative_keyword_tool. Visualization: approval list of proposed negatives grouped by severity.
Free read allowance or an eligible paid plan.
-
Google Ads · Quality score reviewRead
ga_quality_score_review_toolGoogle Ads: identify low-QS keywords and root cause. Finds keywords with quality score < threshold and clusters them by cause (expected CTR, landing page, ad relevance). Returns improve_qs actions with specific remediation hints. Visualization: table of low-QS keywords clustered by cause.
Free read allowance or an eligible paid plan.
-
Google Ads · Quarterly trendRead
ga_quarterly_trend_toolGoogle Ads: quarterly rollup for last N years. Visualization: grouped bar chart.
Free read allowance or an eligible paid plan.
-
Google Ads · Reach Planning bundle (ReachPlanService, v24)Read
ga_reach_planning_tool(read-only) **Reach Planning bundle** - ReachPlanService in one tool. Mirrors Google's Reach Forecasting docs section (Overview / Concepts / Authenticate / Specify Media Plan / Generate Curve). When to use: scoping a YouTube / Demand Gen / Display campaign - "if I spend $X over Y days, how many unique users will I reach, and at what frequency?". For Search-campaign bid forecasts, use `ga_bid_simulations_tool`. For per-asset performance reads, use `ga_rsa_asset_performance_tool`. **Access:** ReachPlanService is **allowlisted by Google**. Most accounts cannot call it. The tool catches PERMISSION_DENIED and returns a structured error with the access-request link (https://support.google.com/google-ads/contact/api_access_request). Actions (pass as `action`): - `"explain"` - full how-to + workflow + best practices. **Start here** if unsure. - `"list_locations"` - valid geo IDs you can target. Returns location ID array for the next step. - `"list_products"` (needs `plannable_location_id`) - formats available at that location (TrueView In-Stream, Bumpers, Demand Gen, etc.). - `"list_user_lists"` (v24) - first-party audiences usable in forecasts. - `"conversion_rates"` - historical median conversion rate per plannable product; seed `planned_products[*].conversion_rate` with these before forecasting. Params: just `customer_id`. - `"forecast"` - generate the reach curve. Params: `duration_days` (1-90, Google's documented limit), `planned_products` (list of `{product_code, budget_micros, conversion_rate?}`), `targeting` (dict: `plannable_location_ids`, `age_ranges`, `genders`, `devices`, `network`), `cookie_frequency_cap`, `min_effective_frequency`, `currency_code` (ISO, default USD). Old `planned_products[*].plannable_product_code` key still accepted. Preconditions: `customer_id` 10-digit. For "forecast", `planned_products` must include valid product codes from `list_products`; `duration_days` must be 1-90. Returns: action-dependent. `list_locations` → `locations` array. `list_products` → `products` array. `list_user_lists` → `user_lists` array. `conversion_rates` → `conversion_rates` array. `forecast` → `points` (each: spend + total_reach + on_target_reach + total_impressions + viewable_impressions + frequency_breakdown) plus `audience` (youtube/census audience sizes). All include `markdown` field with rich rendering. Gotchas: - **No bulk caching** of curve datasets - Google's terms prohibit it. - Forecasts are estimates; real performance depends on creative, competition, market conditions. - Some `user_interest_category` values aren't supported - validate targeting before calling forecast. - v24 replaced `youtube_select_lineups` with `youtube_select_lineup_targeting`. Example: ga_reach_planning_tool(action="forecast", customer_id="1234567890", duration_days=30, planned_products=[{"product_code":"TRUEVIEW_IN_STREAM", "budget_micros":50000000000}], targeting={"plannable_location_ids":["2840"], "age_ranges":["AGE_RANGE_25_34","AGE_RANGE_35_44"]}, cookie_frequency_cap=3, min_effective_frequency=2) Visualization: action-dependent - explain card / location-products table / reach curve table + frequency-distribution table.
Free read allowance or an eligible paid plan.
-
Google Ads · Resolve geo target idsRead
ga_resolve_geo_target_ids_toolGoogle Ads: reverse lookup - given geo_target_constant IDs, return name + canonical_name + country_code + target_type. Visualization: sortable table.
Free read allowance or an eligible paid plan.
-
Google Ads · RSA asset performance with PERFORMANCE_LABELRead
ga_rsa_asset_performance_tool(read-only) Per-headline / per-description performance for Responsive Search Ads with Google's PERFORMANCE_LABEL (LOW / GOOD / BEST / PENDING). When to use: deciding which assets to swap. Pair with `ga_update_rsa_headline_tool` / `ga_update_rsa_description_tool`. Preconditions: pass EITHER `ad_id` (single ad) OR `ad_group_id` (all RSAs in group). At least one is required. date_range can be a Google preset (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS) or a literal range (Google accepts BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD' too). Returns: dict with `count`, `rows` (each row: ad_group_id, ad_id, asset_id, field_type=HEADLINE|DESCRIPTION, performance_label, text, impressions, clicks, conversions, cost in account currency). `markdown` field renders a grouped table per ad with badges (BEST / GOOD / LOW). Gotchas: - Google needs ~14 days of data before assigning labels - new ads return PENDING for everything. - Empty result usually means low-traffic ad group, not an error. - Doesn't include image asset performance (different surface). Example: ga_rsa_asset_performance_tool(customer_id="1234567890", ad_group_id="888222") Visualization: grouped table per ad with performance label badges.
Free read allowance or an eligible paid plan.
-
Google Ads · Run gaqlRead
ga_run_gaql_tool(read-only) Run a caller-written Google Ads Query Language (GAQL) SELECT query against the Google Ads API. Target API: Google Ads API `GoogleAdsService.SearchStream`. The `query` argument is GAQL, Google's own query language - grammar, resources, fields and date predicates are documented at https://developers.google.com/google-ads/api/docs/query/overview (field reference: https://developers.google.com/google-ads/api/fields/v24/overview). SELECT only: the server rejects any other statement, so this cannot write. When to use: ONLY when no dedicated tool covers the need - custom segmentation, exotic metrics, or resources without a wired tool. Prefer the purpose-built tools first (`ga_campaign_performance_tool`, `ga_keyword_performance_tool`, …): they return clean typed rows and rendered markdown; this returns stringified protos. Preconditions: customer_id is the 10-digit account id (dashes OK). MCC accounts need login_customer_id. query must start with SELECT - anything else is rejected before reaching Google. Valid GAQL only: FROM one resource, metrics need a date predicate on most resources. Returns: dict with keys [customer_id, count, rows, markdown]. Each row is the raw GoogleAdsRow rendered as a string, truncated to 1500 chars. markdown previews the first 5 rows in a code block. Gotchas: - Rows are NOT structured dicts - you must parse the proto text yourself. If you need clean values, check for a dedicated tool first. - Money fields come back in raw micros here (no auto-conversion). - limit caps at 10,000 rows. Example: ga_run_gaql_tool(customer_id="1234567890", query="SELECT campaign.name, metrics.clicks FROM campaign " "WHERE segments.date DURING LAST_7_DAYS") Visualization: code block preview of raw rows.
Free read allowance or an eligible paid plan.
-
Google Ads · Score landing page briefRead
ga_score_landing_page_brief_toolGoogle Ads: Score a landing page against Quality Score factors. Fetches URL, returns brief asking Claude to evaluate relevance, CTR, page experience, speed, mobile-friendliness, trust signals. Visualization: brief card.
Free read allowance or an eligible paid plan.
-
Google Ads · Search geo targetsRead
ga_search_geo_targets_toolGoogle Ads: resolve human location names (e.g. "Dallas TX") to geo_target_constant IDs with canonical_name + reach. Visualization: sortable table by reach.
Free read allowance or an eligible paid plan.
-
Google Ads · Search-term insights - themed intent categories (incl. PMax/AI Max)Read
ga_search_term_insights_tool(read-only) Native search-term INSIGHT view - auto-categorized intent themes with metrics, the ONLY way to see Performance Max + AI Max search terms. When to use: theming what people searched, and seeing PMax / AI Max search terms (which never appear in the raw report). For term-by-term Search data to mine negatives use `ga_search_terms_report_tool`. Preconditions: a connected Google Ads account. The Google Ads API only returns this resource filtered to a SINGLE campaign/ad group, so for `level="campaign"` pass `campaign_id`, for `level="ad_group"` pass `ad_group_id` (get IDs from `ga_list_campaigns_tool` / `ga_list_ad_groups_tool`). `date_range` is last_7_days / last_30_days / … or a GAQL DURING value. Returns: dict with `categories` (category theme, impressions, clicks, conversions, conversions_value) and a `markdown` table ranked by impressions. (This resource has NO cost metric.) Gotchas: - Categories are Google's auto-generated intent themes; "(uncategorized)" collects terms with no theme. - Insight views need a minimum query volume to populate. Example: ga_search_term_insights_tool(customer_id="5411520149", campaign_id="1838645748") ga_search_term_insights_tool(customer_id="123", level="ad_group", ad_group_id="456") Visualization: ranked theme table.
Free read allowance or an eligible paid plan.
-
Google Ads · Search terms reportRead
ga_search_terms_report_toolReports the Google Ads search queries that generated traffic for customer_id and date_range, with optional limit, min_impressions, and login_customer_id. Returns cost-sorted query rows and bounded Markdown with campaign, ad-group, impression, click, cost, and conversion data.
Free read allowance or an eligible paid plan.
-
Google Ads · Seasonality by day of weekRead
ga_seasonality_by_day_of_week_toolGoogle Ads: day-of-week averages. Visualization: 7-bar chart Mon→Sun.
Free read allowance or an eligible paid plan.
-
Google Ads · Seasonality by hourRead
ga_seasonality_by_hour_toolGoogle Ads: hour-of-day (0-23) patterns. Visualization: 24-bar chart.
Free read allowance or an eligible paid plan.
-
Google Ads · Seasonality by monthRead
ga_seasonality_by_month_toolGoogle Ads: calendar-month seasonality index across N years. Visualization: 12-bar chart.
Free read allowance or an eligible paid plan.
-
Google Ads · Suggest audiences briefRead
ga_suggest_audiences_brief_toolGoogle Ads: Generate a brief for audience strategy recommendations. Returns prompt asking Claude to suggest in-market, affinity, custom, demographic, and lookalike audiences. Optional: client_id auto-injects target audience + geos into brief. Visualization: brief card.
Free read allowance or an eligible paid plan.
-
Google Ads · Suggest bid adjustmentsRead
ga_suggest_bid_adjustments_toolGoogle Ads: suggest bid adjustments for keywords. Flags underspending high-quality keywords (low impr share, high QS) and overspending low-CVR keywords. Returns proposed adjust_bid actions. Visualization: table of keywords with optimization opportunities.
Free read allowance or an eligible paid plan.
-
Google Ads · Test ruleRead
ga_test_rule_toolTest a rule definition against current data without saving it. Returns whether the rule would match now + the actual metric value. Visualization: test result card.
Free read allowance or an eligible paid plan.
-
Google Ads · Weekly digest email subjectRead
ga_weekly_digest_email_subject_toolGoogle Ads: Generate contextual email subject line for weekly digest. Produces performance-aware subject (e.g. "Acme · CPA improved 18%"). Visualization: text.
Free read allowance or an eligible paid plan.
-
Google Ads · Weekly digestRead
ga_weekly_digest_tool(read-only) Weekly client digest for one Google Ads account - KPIs, week-over-week trends, top/bottom campaigns, plus an HTML email artifact. When to use: weekly client reporting. Preconditions: customer_id is the 10-digit account id (dashes OK). MCC accounts need login_customer_id. days (default 7) is the digest window; the comparison baseline is the SAME length window immediately before it. Returns: dict with summary (spend, conversions, cpa, clicks, impressions), trends (conversions/spend vs prior week with sentiment + change_pct), top_performers (top 3 by spend), bottom_performers (up to 3 zero-conversion spenders), and an `html` artifact suitable for email, plus `markdown`. Gotchas: - Spend in account-currency units; cpa is null when conversions are zero. - change_pct is 0 when the prior window had no data - a flat 0% on a brand-new account means "no baseline", not "no change". - bottom_performers only lists campaigns with spend and ZERO conversions - a high-CPA converter won't appear there. Example: ga_weekly_digest_tool(customer_id="1234567890", days=7) Visualization: weekly summary card + HTML email artifact.
Free read allowance or an eligible paid plan.
-
Google Ads · Year over yearRead
ga_year_over_year_toolGoogle Ads: current vs prior-year comparison. Visualization: side-by-side bars or two lines.
Free read allowance or an eligible paid plan.
-
Google Ads · Yearly summaryRead
ga_yearly_summary_toolGoogle Ads: annual summary with spend, conversions, revenue, CPA, ROAS, AOV. Visualization: table of years + sparklines.
Free read allowance or an eligible paid plan.
-
Google Ads · Add ad-group-scoped negative keywordWrite
ga_add_ad_group_negative_keyword_tool(write - dry-run by default) Add a negative keyword scoped to a single ad group (not the whole campaign). When to use: a term is converting fine in OTHER ad groups in the campaign but polluting THIS one - block it here only. For campaign-wide block, use `ga_add_negative_keyword_tool`. Preconditions: match_type must be EXACT, PHRASE, or BROAD. Returns: dict with `dry_run`, `ad_group_id`, `keyword`, `match_type`, `resource_name` (on confirm). `markdown` confirmation card. Gotchas: - Not idempotent - adding the same negative twice creates a duplicate criterion. - Dry-run by default; pass `confirm=true` to apply. Example: ga_add_ad_group_negative_keyword_tool(customer_id="1234567890", ad_group_id="888222", keyword_text="cheap", match_type="PHRASE") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Add one keyword to shared negative listWrite
ga_add_neg_to_shared_list_tool(write - dry-run by default) Add ONE negative keyword to a shared negative list (single-item wrapper around the bulk shared-list tool). When to use: incremental updates to a maintained shared list. Preconditions: shared_set_id must be of type NEGATIVE_KEYWORDS. match_type EXACT / PHRASE / BROAD. Returns: dict with `dry_run`, `shared_set_id`, `keyword`, `match_type`, `resource_name` (on confirm). `markdown` confirmation card. Gotchas: - Adding the same keyword twice creates a duplicate criterion (not idempotent). - Change propagates to every campaign attached to the shared list - can be large blast radius. Verify attachments first. - Dry-run by default; pass `confirm=true` to apply. Example: ga_add_neg_to_shared_list_tool(customer_id="1234567890", shared_set_id="700100", keyword_text="competitor name", match_type="EXACT") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Add negative keywordWrite
ga_add_negative_keyword_tool(write - immediate) Add ONE campaign-level negative keyword. Applies on first call, no dry-run. When to use: blocking a wasteful query found in `ga_search_terms_report_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK); campaign_id from `ga_list_campaigns_tool`. match_type: EXACT (default) / PHRASE / BROAD. MCC accounts need login_customer_id. Returns: dict with keys [ok, resource_name, campaign_id, keyword, match_type] plus a `markdown` confirmation card. Gotchas: - Negative match types are STRICTER than positives - negatives do not block close variants, plurals, or misspellings. An EXACT negative for "free course" still lets "free courses" through; add variants explicitly. - Blocks future matching only; spend already incurred stays. - Adding the same negative twice errors rather than duplicating. - Auto-logs the action to the linked client work log (best-effort). Example: ga_add_negative_keyword_tool(customer_id="1234567890", campaign_id="555111", keyword_text="free", match_type="BROAD") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Enable ad groupWrite
ga_enable_ad_group_toolGoogle Ads: enable a paused ad group.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Enable adWrite
ga_enable_ad_toolGoogle Ads: enable a paused ad.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Enable campaignWrite
ga_enable_campaign_tool(write - immediate) Enable (resume) a previously paused campaign. Applies on first call, no dry-run. When to use: relaunching after a pause - promo restart, budget refreshed, issue fixed. Counterpart of `ga_pause_campaign_tool`. For keywords / ad groups / ads use `ga_enable_keyword_tool` / `ga_enable_ad_group_tool` / `ga_enable_ad_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK); campaign_id from `ga_list_campaigns_tool`. MCC accounts need login_customer_id. The campaign should currently be PAUSED (enabling an already-ENABLED campaign is a harmless no-op). Returns: dict with keys [ok, ...] plus a `markdown` confirmation card. On failure returns {error}. Gotchas: - Spend resumes immediately at the campaign's existing budget - check the budget with `ga_list_campaigns_tool` before enabling something that has sat paused for months. - Child entities keep their own status: paused ad groups/keywords inside stay paused. - Smart-bidding may re-enter learning after a long pause. - Auto-logs the action to the linked client work log (best-effort). Example: ga_enable_campaign_tool(customer_id="1234567890", campaign_id="555111") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Enable keywordWrite
ga_enable_keyword_toolGoogle Ads: enable a paused keyword.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Attach image asset to ad groupWrite
ga_link_image_asset_to_ad_group_tool(write - dry-run by default) Attach an image asset to a specific ad group (overrides campaign-level image). When to use: A/B testing different images per ad group inside a campaign. For account-wide attach, use `ga_link_image_asset_to_campaign_tool`. Preconditions: same as the campaign variant - image asset must exist, Google spec compliant. Returns: dict with `dry_run`, `ad_group_id`, `asset`, `field_type=IMAGE`, `resource_name` (on confirm). `markdown` confirmation card. Gotchas: - Image goes through Google review. - Not idempotent - repeated calls create duplicates. - Dry-run by default; pass `confirm=true` to apply. Example: ga_link_image_asset_to_ad_group_tool(customer_id="1234567890", ad_group_id="888222", asset_resource_name="customers/1234567890/assets/9988") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Attach image asset to campaignWrite
ga_link_image_asset_to_campaign_tool(write - dry-run by default) Attach an existing image asset to a Search campaign as an image extension. When to use: enabling image extensions on a Search campaign. For ad-group-level (overrides campaign), use `ga_link_image_asset_to_ad_group_tool`. Image must meet Google's spec (1.91:1 or 1:1 ratio, ≥600px on long side, ≤5120 KB). Returns: dict with `dry_run`, `campaign_id`, `asset`, `field_type=IMAGE`, `resource_name` (on confirm). `markdown` confirmation card. Gotchas: - Image goes through Google review (~1 day) before serving. - Not idempotent - calling twice creates two attachments. Check with a list tool first if unsure. - Dry-run by default; pass `confirm=true` to apply. Example: ga_link_image_asset_to_campaign_tool(customer_id="1234567890", campaign_id="555111", asset_resource_name="customers/1234567890/assets/9988") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Pause ad groupWrite
ga_pause_ad_group_toolGoogle Ads: pause an ad group.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Pause adWrite
ga_pause_ad_toolGoogle Ads: pause a specific ad.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Pause campaignWrite
ga_pause_campaign_tool(write - immediate) Pause a campaign by id. Delivery stops; applies on first call, no dry-run. When to use: emergency stop on overspend, end of a promo, or acting on an audit finding. To pause a single keyword instead use `ga_pause_keyword_tool`; for an ad group `ga_pause_ad_group_tool`; for one ad `ga_pause_ad_tool`. Reverse with `ga_enable_campaign_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK); campaign_id from `ga_list_campaigns_tool`. MCC accounts need login_customer_id. Returns: dict with keys [ok, ...] plus a `markdown` confirmation card with next steps. On failure returns {error}. Gotchas: - Immediate and account-wide for that campaign - there is NO dry-run on this legacy-family write. Confirm with the user before calling. - Pausing does not stop other campaigns sharing the same budget resource. - Re-enabling later can restart smart-bidding learning; expect a few days of volatility after long pauses. - Auto-logs the action to the linked client work log (best-effort). Example: ga_pause_campaign_tool(customer_id="1234567890", campaign_id="555111") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Pause keywordWrite
ga_pause_keyword_tool(write - immediate) Pause a single keyword criterion. Applies on first call, no dry-run. To stop a query rather than a keyword, prefer `ga_add_negative_keyword_tool`. Reverse with `ga_enable_keyword_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK). Needs BOTH ad_group_id and criterion_id - get them from `ga_list_keywords_tool`, `ga_keyword_performance_tool`, or the proposed_actions emitted by the optimization tools. MCC accounts need login_customer_id. Returns: dict with keys [ok, ...] plus a `markdown` confirmation card with next steps. On failure returns {error}. Gotchas: - Immediate - show the user which keyword (text, not just criterion_id) before calling; optimization tools include the text in their findings. - Pausing a keyword does not block the query from matching OTHER broad keywords in the account - add a negative if the query itself is bad. - Auto-logs the action to the linked client work log (best-effort). Example: ga_pause_keyword_tool(customer_id="1234567890", ad_group_id="777333", criterion_id="298714") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Remove ad-group-scoped negative keywordWrite
ga_remove_ad_group_negative_keyword_tool(write - dry-run by default) Remove a negative keyword from a specific ad group. When to use: opening up a previously-blocked term on one ad group. For campaign-level removal, use `ga_remove_negative_keyword_from_campaign_tool`. Preconditions: keyword_text + match_type must match an existing ad-group negative. Returns a clear error if not found. Returns: dict with `dry_run`, `ad_group_id`, `keyword`, `match_type`, `resource_name` (on confirm). `markdown` confirmation card. Gotchas: - Dry-run by default; pass `confirm=true` to apply. Example: ga_remove_ad_group_negative_keyword_tool(customer_id="1234567890", ad_group_id="888222", keyword_text="cheap", match_type="PHRASE") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Remove one keyword from shared negative listWrite
ga_remove_neg_from_shared_list_tool(write - dry-run by default) Remove ONE negative keyword from a shared list by text + match_type. When to use: opening up a previously-blocked term across all campaigns using the shared list. Preconditions: keyword_text + match_type must match exactly. Returns a clear error if not present in the list. Returns: dict with `dry_run`, `shared_set_id`, `keyword`, `match_type`, `resource_name` (on confirm). `markdown` confirmation card. Gotchas: - Removal affects every campaign attached to the shared list. - Dry-run by default; pass `confirm=true` to apply. Example: ga_remove_neg_from_shared_list_tool(customer_id="1234567890", shared_set_id="700100", keyword_text="competitor name", match_type="EXACT") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Remove campaign-level negative keywordWrite
ga_remove_negative_keyword_from_campaign_tool(write - dry-run by default) Remove a single negative keyword from a campaign by text + match_type. When to use: undoing a previously added campaign-level negative. For ad-group negatives, use `ga_remove_ad_group_negative_keyword_tool`. For shared-list negatives, use `ga_remove_neg_from_shared_list_tool`. Preconditions: keyword_text must match exactly (case-insensitive) and match_type must match (EXACT, PHRASE, or BROAD). Returns a clear error if no matching negative exists on the campaign. Returns: dict with `dry_run`, `campaign_id`, `keyword`, `match_type`, `resource_name` (on confirm). `markdown` confirmation card. Gotchas: - If the same keyword exists at multiple match types, only the matching one is removed. - Dry-run by default; pass `confirm=true` to apply. Example: ga_remove_negative_keyword_from_campaign_tool(customer_id="1234567890", campaign_id="555111", keyword_text="free", match_type="BROAD") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Rename Google Ads ad groupWrite
ga_rename_ad_group_tool(write - dry-run by default) Rename a Google Ads ad group. When to use: standardizing ad-group names to a naming convention. For keyword/ad changes inside the group, use the keyword/ad tools instead. Preconditions: customer_id 10-digit, ad_group_id numeric, new_name unique within the parent campaign. Returns: dict with `dry_run`, `ad_group_id`, `old_name`, `new_name`, `resource_name` (on confirm). Includes `markdown` confirmation card. Gotchas: - Dry-run by default; pass `confirm=true` to apply. - Does NOT cascade to campaign labels or saved filters. Example: ga_rename_ad_group_tool(customer_id="1234567890", ad_group_id="888222", new_name="Branded Exact - US") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Rename Google Ads campaignWrite
ga_rename_campaign_tool(write - dry-run by default) Rename a Google Ads campaign. When to use: the user wants to change a campaign's display name. Do NOT use for budget, status, or bid changes - those have dedicated tools (`ga_update_campaign_budget_tool`, `ga_pause_campaign_tool`, etc.). Preconditions: customer_id is the 10-digit Google Ads ID (dashes optional). campaign_id is numeric. new_name must be unique within the account. Returns: dict with `dry_run` (bool), `campaign_id`, `old_name`, `new_name`, `resource_name` (on confirm). Includes `markdown` field with a before/after confirmation card. Gotchas: - Default is dry-run - first call validates and shows what WILL happen. Pass `confirm=true` on a second call to actually apply. - Rename is immediate in the API; saved reports referencing the old name do not auto-update. Example: ga_rename_campaign_tool(customer_id="1234567890", campaign_id="555111", new_name="Brand - US - Q2") Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Update managed Google Ads accountWrite
ga_update_account_settings_toolOptimization settings: update per-account orchestration preferences. customer_id: 10-digit account ID (dashes OK). enabled: True to mark the account active for orchestration. frequency: daily | twice_daily | weekly. auto_apply_mode: saved approval preference. The connector never acts on this mode in production. Enabling a new managed account is limited by the caller's Google Ads account entitlement. Disabling, editing an already enabled account, and switching connected Google login identities do not consume a new slot. A limit denial returns billing status/upgrade actions and the pricing URL. Partial updates allowed - pass only the fields you want changed. Visualization: confirmation card.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Update ad-group default CPC bidWrite
ga_update_ad_group_cpc_bid_tool(write - dry-run by default) Update an ad group's default max-CPC bid (in account currency, NOT micros). When to use: changing the fallback bid that applies to keywords without their own bid override. For per-keyword bid changes, use `ga_update_keyword_bid_tool`. For automated bidding (Target CPA / ROAS), use the relevant bid-strategy tools - this is for manual CPC only. Preconditions: pass currency units (e.g. `1.50` for $1.50), NOT micros. new_cpc_bid > 0. ad_group's bidding strategy must support manual CPC. Returns: dict with `dry_run`, `ad_group_id`, `old_cpc_bid`, `new_cpc_bid`, `resource_name` (on confirm). `markdown` confirmation card with old → new diff and a warning if the change is >30%. Gotchas: - Only affects keywords WITHOUT their own bid override. Keyword-level bids take precedence. - Big swings (>30%) are flagged in the dry-run card - review before applying. - Changes can take ~1h to affect serving. - Dry-run by default; pass `confirm=true` to apply. Example: ga_update_ad_group_cpc_bid_tool(customer_id="1234567890", ad_group_id="888222", new_cpc_bid=2.50) Visualization: confirmation card with old → new diff.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Update campaign budgetWrite
ga_update_campaign_budget_tool(write - immediate) Set a campaign's daily budget in account-currency units (NOT micros). Applies on first call. When to use: scaling spend up/down on one campaign, acting on pacing findings from `ga_budget_rebalance_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK); campaign_id from `ga_list_campaigns_tool`. new_daily_budget is plain currency (e.g. 50.0 = $50/day). MCC accounts need login_customer_id. Returns: dict with keys [ok, campaign_id, new_daily_budget, old_daily_budget] plus a `markdown` card showing the change with a direction arrow. Gotchas: - Mutates the campaign's linked CampaignBudget resource - if several campaigns SHARE that budget, all of them change. Check before applying. - No dry-run on this legacy-family write; confirm the amount with the user first. - Google can spend up to 2x the daily budget on any single day (monthly cap = ~30.4x daily), so a raise can bite same-day. - Auto-logs to the client work log; >30% changes are flagged medium severity. Example: ga_update_campaign_budget_tool(customer_id="1234567890", campaign_id="555111", new_daily_budget=75.0) Visualization: confirmation card with old → new delta.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Update keyword bidWrite
ga_update_keyword_bid_toolGoogle Ads: change a keyword's max-CPC bid (account-currency units).
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Update one RSA descriptionWrite
ga_update_rsa_description_tool(write - dry-run by default) Replace ONE description on an existing Responsive Search Ad. When to use: swapping a single description after asset-performance review. Preconditions: position 1-indexed, within ad's existing description count. new_text max 90 chars. pinned_field options: DESCRIPTION_1 or DESCRIPTION_2. Returns: dict with `dry_run`, `ad_id`, `position`, `old_text`, `new_text`, plus `markdown` diff card. Gotchas: - Other descriptions on the ad are preserved automatically. - New asset goes through Google review. - Dry-run by default; pass `confirm=true` to apply. Example: ga_update_rsa_description_tool(customer_id="1234567890", ad_id="9001", position=1, new_text="30-day returns. No questions asked.") Visualization: confirmation card with before/after text.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
-
Google Ads · Update one RSA headlineWrite
ga_update_rsa_headline_tool(write - dry-run by default) Replace ONE headline on an existing Responsive Search Ad without rebuilding the whole ad. When to use: swapping out a single underperforming headline (often after `ga_rsa_asset_performance_tool` flags it as LOW). Preconditions: position is 1-indexed and must be within the ad's existing headline count (call `ga_list_ads_tool` first to see positions). new_text max 30 chars (Google enforces). pinned_field if set: HEADLINE_1, HEADLINE_2, or HEADLINE_3. Returns: dict with `dry_run`, `ad_id`, `position`, `old_text`, `new_text`. Includes `markdown` with before/after diff card. Gotchas: - Google API replaces the ENTIRE headlines array on update, but this tool preserves all other headlines automatically - you only need to specify the one you're changing. - New asset goes through Google review (~1 day); performance data resets for that slot. - Dry-run by default; pass `confirm=true` to apply. Example: ga_update_rsa_headline_tool(customer_id="1234567890", ad_id="9001", position=2, new_text="Free Shipping on $50+") Visualization: confirmation card with before/after text.
Requires paid Google Ads access and permission for this account. Review the tool's confirmation requirements.
Google Analytics 4
10 tools · 7 read · 3 write
-
Google Analytics 4 · List data streamsRead
ga4_list_data_streams_toolGA4: list every data stream (web / android / ios) on a property. Visualization: streams table with type + measurement id.
Requires existing paid Google Suite access.
-
Google Analytics 4 · List google ads linksRead
ga4_list_google_ads_links_toolGA4: list Google Ads accounts linked to a GA4 property. Visualization: ads-links table.
Requires existing paid Google Suite access.
-
Google Analytics 4 · List key eventsRead
ga4_list_key_events_toolLists configured Google Analytics 4 key events for property_id. Returns event names, resource IDs, counting methods, and value settings.
Requires existing paid Google Suite access.
-
Google Analytics 4 · List propertiesRead
ga4_list_properties_toolLists Google Analytics 4 properties accessible to the signed-in identity. Takes no inputs. Returns property IDs, display names, time zones, currencies, and account context.
Requires existing paid Google Suite access.
-
Google Analytics 4 · RealtimeRead
ga4_realtime_toolReports current Google Analytics 4 activity. Accepts property_id and dimensions. Returns bounded realtime rows with active-user metrics.
Requires existing paid Google Suite access.
-
Google Analytics 4 · Run reportRead
ga4_run_report_toolRuns a Google Analytics 4 report. Accepts property_id, metrics, dimensions, date_ranges, and limit. Returns dimension headers, metric headers, and bounded report rows.
Requires existing paid Google Suite access.
-
Google Analytics 4 · Traffic by sourceRead
ga4_traffic_by_source_toolReports traffic acquisition by source. Accepts property_id and days. Returns source and medium rows with users, sessions, and conversions.
Requires existing paid Google Suite access.
-
Ga4 create key eventWrite
ga4_create_key_event_toolCreate a key event in the connected GA4 property. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
-
Ga4 delete key eventWrite
ga4_delete_key_event_toolRemove a key event configuration from the connected GA4 property. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
-
Ga4 update key eventWrite
ga4_update_key_event_toolOverwrite selected counting or default value settings of a GA4 key event. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
Google Tag Manager
8 tools · 5 read · 3 write
-
Google Tag Manager · List accountsRead
gtm_list_accounts_toolLists Google Tag Manager accounts accessible to the signed-in identity. Takes no inputs. Returns account IDs, names, and resource paths.
Requires existing paid Google Suite access.
-
Google Tag Manager · List containersRead
gtm_list_containers_toolLists Google Tag Manager containers for account_id. Returns container IDs, names, usage contexts, domains, and resource paths.
Requires existing paid Google Suite access.
-
Google Tag Manager · List tagsRead
gtm_list_tags_toolLists tags for account_id, container_id, and workspace_id. Returns tag IDs, names, types, trigger references, and paused state.
Requires existing paid Google Suite access.
-
Google Tag Manager · List triggersRead
gtm_list_triggers_toolLists triggers for account_id, container_id, and workspace_id. Returns trigger IDs, names, types, filters, and resource paths.
Requires existing paid Google Suite access.
-
Google Tag Manager · List workspacesRead
gtm_list_workspaces_toolLists workspaces for account_id and container_id. Returns workspace IDs, names, descriptions, and resource paths.
Requires existing paid Google Suite access.
-
Gtm create tagWrite
gtm_create_tag_toolCreate a paused Google measurement tag in a GTM draft workspace. Does not publish. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
-
Gtm create workspaceWrite
gtm_create_workspace_toolCreate a private GTM workspace for draft measurement changes. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
-
Gtm delete tagWrite
gtm_delete_tag_toolDelete a tag from a GTM draft workspace. Does not publish. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
Google Search Console
11 tools · 9 read · 2 write
-
Search Console · Compare periodsRead
sc_compare_periods_toolCompares two Search Console periods. Accepts site_url, days, dimensions, and row_limit. Returns current, previous, and change metrics per row.
Requires existing paid Google Suite access.
-
Search Console · Get siteRead
sc_get_site_toolSearch Console: fetch a single verified site + the caller's permission level. Visualization: key-value detail card.
Requires existing paid Google Suite access.
-
Search Console · Get sitemapRead
sc_get_sitemap_toolSearch Console: details for a single sitemap. feedpath must be the full URL of the sitemap (e.g. https://example.com/sitemap.xml). Visualization: key-value detail card.
Requires existing paid Google Suite access.
-
Search Console · Inspect urlRead
sc_inspect_url_toolInspects a URL in Search Console. Accepts inspection_url, site_url, and language_code. Returns indexing, coverage, canonical, crawl, and mobile usability details supplied by Google.
Requires existing paid Google Suite access.
-
Search Console · List sitemapsRead
sc_list_sitemaps_toolSearch Console: list every sitemap registered for a site. Visualization: table with columns for path, last submitted, last downloaded, errors/warnings counts.
Requires existing paid Google Suite access.
-
Search Console · List sitesRead
sc_list_sites_toolLists Search Console sites accessible to the signed-in identity. Takes no inputs. Returns site URLs and permission levels.
Requires existing paid Google Suite access.
-
Search Console · Query performanceRead
sc_query_performance_toolQueries Search Console performance. Accepts site_url, days, dimensions, and row_limit. Returns bounded rows with clicks, impressions, CTR, and average position.
Requires existing paid Google Suite access.
-
Search Console · Top pagesRead
sc_top_pages_toolLists leading Search Console pages. Accepts site_url, days, and row_limit. Returns page rows with clicks, impressions, CTR, and position.
Requires existing paid Google Suite access.
-
Search Console · Top queriesRead
sc_top_queries_toolLists leading Search Console queries. Accepts site_url, days, and row_limit. Returns query rows with clicks, impressions, CTR, and position.
Requires existing paid Google Suite access.
-
Sc delete sitemapWrite
sc_delete_sitemap_toolRemove a sitemap registration from Search Console. Does not delete the file or remove pages from search. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
-
Sc submit sitemapWrite
sc_submit_sitemap_toolSubmit or resubmit an existing sitemap URL for a connected Search Console property. Indexing is not guaranteed. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
YouTube
12 tools · 7 read · 5 write
-
YouTube · Channel statsRead
yt_channel_stats_toolReports YouTube channel performance. Accepts channel_id and days. Returns views, watch time, subscribers, likes, comments, and shares.
Requires existing paid Google Suite access.
-
YouTube · List channel videosRead
yt_list_channel_videos_toolLists channel videos. Accepts channel_id, limit, and order. Returns video IDs, titles, publication dates, thumbnails, and visibility metadata.
Requires existing paid Google Suite access.
-
YouTube · List my channelsRead
yt_list_my_channels_toolLists YouTube channels owned by the signed-in identity. Takes no inputs. Returns channel IDs, names, descriptions, thumbnails, and statistics.
Requires existing paid Google Suite access.
-
Yt list playlist itemsRead
yt_list_playlist_items_toolInspect a YouTube playlist and discover item IDs for a reviewed removal or ordering decision.
Requires existing paid Google Suite access.
-
Yt list playlistsRead
yt_list_playlists_toolList playlists owned by the connected YouTube channel, with privacy and IDs for planning.
Requires existing paid Google Suite access.
-
YouTube · Top videosRead
yt_top_videos_toolReports leading YouTube videos. Accepts channel_id, days, and limit. Returns video rows with views, watch time, subscribers, and engagement.
Requires existing paid Google Suite access.
-
YouTube · Traffic sourcesRead
yt_traffic_sources_toolReports YouTube traffic sources. Accepts channel_id and days. Returns source rows with views and estimated watch minutes.
Requires existing paid Google Suite access.
-
Yt add to playlistWrite
yt_add_to_playlist_toolAdd a video to an editable YouTube playlist, including a public playlist. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
-
Yt create playlistWrite
yt_create_playlist_toolCreate a private or unlisted playlist on the connected YouTube channel. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
-
Yt delete playlistWrite
yt_delete_playlist_toolDelete an owned YouTube playlist, including a public playlist. Videos themselves are retained. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
-
Yt remove from playlistWrite
yt_remove_from_playlist_toolRemove a playlist item from an editable YouTube playlist, including a public playlist. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
-
Yt update video metadataWrite
yt_update_video_metadata_toolUpdate the connected channel's video metadata, preserving omitted fields. Can edit existing public metadata; cannot publish a video. Scheduled videos require review in YouTube Studio before privacy changes. Preview by default. Requires existing AdvisorPPC Google Suite access and the connected Google management grant. Apply only after explicit approval of the exact parameters with confirm=true.
Requires existing paid Google Suite access. Preview first, then confirm the exact change. The connected Google account needs the management scope.
AdvisorPPC workflows
6 tools · 4 read · 2 write
-
Advisor get google change planRead
advisor_get_google_change_plan_toolRead a change plan and its execution receipt from the signed-in user's AdvisorPPC account. Use to review exact parameters or reconcile a previously attempted change; does not execute it.
Available on every plan without using report allowance.
-
Advisor google measurement auditRead
advisor_google_measurement_audit_toolAdvisorPPC measurement audit: reconcile GA4 key events, streams, Ads links, GTM draft tags and Search Console sitemaps for explicitly selected resources. Returns evidence, configuration gaps, limitations and next steps. Does not prove live tag firing or change accounts. Discover IDs first and confirm the intended resources.
Requires existing paid Google Suite access.
-
Advisor google workspaceRead
advisor_google_workspace_toolOpen the AdvisorPPC workspace context: current account access, five Google connection states, remaining Free allowances and the audit-to-change-plan workflow. Does not verify live tokens or return credentials, prices or checkout links.
Available on every plan without using report allowance.
-
Account news and tool usage resetRead
advisor_news_toolRead published AdvisorPPC account news and the caller's tool-usage reset status. Use when the user asks for news, account updates, or whether their connector tool allowance was reset. Requires an authenticated account. Returns audience-matched published notices, unread count and a reset receipt summary when the caller was included. This read is available for every account even when tool allowance is exhausted. It does not reset usage, send email, change plans or change LLM limits.
Available on every plan without using report allowance.
-
Advisor apply google change planWrite
advisor_apply_google_change_plan_toolPreview a saved AdvisorPPC change plan, or apply it only after explicit user approval of its exact parameters. Rechecks entitlement, Google identity, scopes and safety gates. An approved plan is attempted once and records a receipt in the web app. Depending on the saved action this can overwrite/delete configuration or playlist items, or affect public YouTube metadata and sitemap crawling. Expired or previously attempted plans are never executed again.
Requires existing paid Google Suite access. Preview first. Applying a saved plan requires explicit confirmation and current Google permissions.
-
Advisor create google change planWrite
advisor_create_google_change_plan_toolSave one exact Google measurement or YouTube management change in the user's AdvisorPPC web app. operation must be one of the listed management actions; parameters use that action's schema without confirm. Validates inputs and current management access, binds the working Google identity, and returns a one-hour plan plus its AdvisorPPC review page. Saving changes only AdvisorPPC records, not Google. Do not include passwords, tokens or unrelated personal data.
Requires existing paid Google Suite access. Saves an AdvisorPPC plan. Does not apply a Google change.
Ready to try them? Start with the connection steps.