Google Ads

Google Ads campaign management with GAQL query support

22 tools available

Installation

Claude Desktop

{
  "mcpServers": {
    "hopkin-google-ads": {
      "url": "https://mcp.hopkin.ai/google-ads/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

CLI

npm install -g @hopkin/cli
hopkin auth set-key hpk_live_...
hopkin google ping

Platform Overview

The Google Ads MCP server enables Claude to manage and analyze Google Ads campaigns using the Google Ads API with full GAQL (Google Ads Query Language) support. It provides access to campaign management, keyword and search term analysis, performance reporting, geographic insights, conversion tracking, and asset-level performance breakdowns — allowing you to retrieve comprehensive advertising data and insights across multiple reporting levels.

Your prompt → Claude + Hopkin → Google Ads API
                                    ↓
                              Campaign Data
                              Keyword Performance
                              Search Terms & Categories
                              Geographic Performance
                              Asset Reports
                              Conversion Actions

Common Workflows

Performance Reporting

"Show me the performance of all my campaigns over the last 30 days, broken down by device type."

Uses google_ads_get_performance_report with segments=['device'] to retrieve funnel metrics (impressions, clicks, cost, conversions) and per-conversion-action breakdown. Returns complete performance data with search impression share metrics.

"What's my account-level summary for the last 7 days? I need impressions, clicks, cost, and conversions."

Calls google_ads_get_account_summary with date_preset='LAST_7_DAYS' for a standardized cross-platform comparison view. Always fetches fresh data with normalized metrics identical to Meta Ads summaries.

"Break down my campaign performance by daily trends for the last week."

Uses google_ads_get_performance_report with segments=['date'] and date_preset='LAST_7_DAYS' at campaign level to show day-by-day performance variation.

Campaign & Ad Group Management

"List all my active campaigns."

Calls google_ads_list_campaigns with status=['ENABLED'] to get enabled campaigns with caching and background refresh. Pass refresh=true for real-time data.

"Show me all ad groups in campaign ABC123."

Uses google_ads_list_ad_groups with campaign_id='ABC123' to retrieve all ad groups and their status information with pagination support.

"What ads are in ad group XYZ789?"

Calls google_ads_list_ads with ad_group_id='XYZ789' to list all ads in that ad group, including status and creative details.

Keyword & Search Term Analysis

"Which keywords are driving the most conversions this month?"

Uses google_ads_get_keyword_performance with date_preset='LAST_30_DAYS' and order_by='conversions' to rank keywords by conversion volume. Includes quality score, match type, and ad network breakdown.

"Show me the search terms that aren't covered by my current keywords."

Calls google_ads_get_search_terms_report with date_preset='LAST_7_DAYS' and search_term_status=['NONE'] (unmapped) to identify gaps. Optionally include landing page data with include_landing_pages=true.

"What search terms are driving clicks on Search Partners?"

Uses google_ads_get_search_terms_report with segments=['ad_network_type'] to see which channels (SEARCH vs SEARCH_PARTNERS) drove each term.

Geographic & Audience Insights

"Which countries are my top performers by spend?"

Calls google_ads_get_geo_performance with geo_level='country' and date_preset='LAST_30_DAYS' to compare performance across countries with automatic location name resolution.

"What's the city-level performance breakdown for my campaigns in the last 7 days?"

Uses google_ads_get_geo_performance with geo_level='geo_target_city' and level='CAMPAIGN' to segment by city with both AREA_OF_INTEREST and LOCATION_OF_PRESENCE data.

Recipes

"Analyze my Performance Max campaign's channel breakdown for the last 30 days. Which channel (SEARCH, YOUTUBE_WATCH, DISPLAY, DISCOVER) is driving the most conversions?"

Calls google_ads_get_insights with campaign_id='your_pmax_id', segments=['ad_network_type'], and default metrics to see channel-level performance. This reveals which ad networks within PMax are performing best and helps inform budget allocation.

"Generate a search impression share diagnostic for my brand campaigns this week. I need top impression share, budget lost share, and rank lost share at the campaign level."

Uses google_ads_get_insights with level='CAMPAIGN', date_preset='LAST_7_DAYS', metrics=['search_impression_share', 'search_top_impression_share', 'search_budget_lost_impression_share', 'search_rank_lost_impression_share'] to diagnose competitive gaps and budget constraints.

"Show me all my assets (headlines, descriptions, images) and how each is performing. Which assets get the most impressions and conversions?"

Calls google_ads_get_asset_report with date_preset='LAST_30_DAYS' to break down performance by creative asset at all hierarchy levels. Optionally request include_change_history=true to see asset creation/edit events.

"Find search terms that are converting well but aren't yet mapped to any keyword. What landing pages are they going to?"

Uses google_ads_get_search_terms_report with search_term_status=['NONE'], include_landing_pages=true, and order_by='conversions' to identify high-value unmapped terms and their landing page destinations.

"Compare conversion action performance across my account. Which conversion actions contribute the most value this month?"

Calls google_ads_get_insights with segments=['conversion_action_name'], metrics=['all_conversions', 'all_conversions_value', 'value_per_all_conversions'], and date_preset='LAST_30_DAYS'. The tool auto-filters incompatible cost-based metrics and returns a warning.

"Audit my negative keywords. Are there any aggressive broad match negatives at the campaign level that might be blocking good searches?"

Uses google_ads_list_negative_keywords with level='CAMPAIGN' and match_type=['BROAD'] to identify potentially over-broad negative keyword exclusions that could suppress valuable traffic.

"I'm managing multiple child accounts under my MCC. Show me the performance summary for each child account."

Calls google_ads_get_account_summary for each child account using login_customer_id='your_mcc_id' and the child customer_id to aggregate normalized metrics across the managed portfolio.

Tips

GAQL queries and segments: When using google_ads_get_insights, specify custom metrics and segments to unlock flexibility the performance report doesn't offer. Use ad_network_type segment to break down Performance Max by channel. Segments must be compatible with your metrics — the tool auto-removes conflicting cost-based metrics when conversion_action segments are used and returns warnings about what was filtered.

MCC (Manager Account) hierarchy: If you're querying child accounts under an MCC, always pass login_customer_id with the parent MCC's Customer ID. Without it, API calls to managed accounts fail with permission errors. Use google_ads_list_mcc_child_accounts to discover children of a specific MCC.

Geographic performance constraints: The geographic_view resource requires exactly one geo level per query (country, city, region, state, metro, etc.). Combining multiple geo levels silently loses data. Criterion IDs are auto-resolved to human-readable location names, and both AREA_OF_INTEREST and LOCATION_OF_PRESENCE location types are always returned.

Caching and freshness: List tools (accounts, campaigns, ad groups, ads) use cache-first fetching with background refresh (data is fresh within minutes). Pass refresh=true when you need real-time data. Reporting tools (insights, performance report, keyword/search term metrics, geo performance) always fetch live data from the API — no caching.

Tools

account-summary

google_ads_get_account_summary Get Google Ads Account Summary

Read-onlyIdempotentOpen-world

Standardized account-level performance summary for cross-platform comparison. Returns normalized metrics identical to meta_ads_get_account_summary, with per-conversion-action breakdown. Preferred over insights or performance report for quick account overviews. Always fetches fresh data.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
3 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
date_presetstringPredefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH
date_rangeobjectCustom date range {start_date, end_date} in YYYY-MM-DD
View full documentation →

activities

google_ads_get_activities Get Google Ads Activities

Read-onlyIdempotentOpen-world

Retrieve change history for a Google Ads account. Always fetches fresh data. Only changes within the past 30 days are available (API limit), and changes may take up to 3 minutes to appear. For CAMPAIGN_CRITERION events, use the description field as the definitive interpretation when present.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
7 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
start_datestringStart date in YYYY-MM-DD format. Defaults to 7 days ago. Must be within the past 30 days.
end_datestringEnd date in YYYY-MM-DD format. Defaults to today.
resource_typestringFilter to a specific resource type: AD, AD_GROUP, AD_GROUP_AD, AD_GROUP_CRITERION, CAMPAIGN, CAMPAIGN_BUDGET, CAMPAIGN_CRITERION, ASSET, ASSET_SET
asset_idsarrayFilter to specific asset IDs (numeric). Automatically sets resource_type to ASSET.
limitintegerMaximum number of activities to return (1-1000, default 50)
cursorstringOpaque pagination cursor from a previous response
View full documentation →

accounts

google_ads_list_accounts List Google Ads Accounts

Read-onlyOpen-world

List Google Ads accounts accessible by the user, including MCC child accounts. When calling other tools for MCC child accounts, you MUST pass login_customer_id with the parent MCC Customer ID. Results are cached; pass refresh=true for latest data. To list only children of a specific MCC, use google_ads_list_mcc_child_accounts instead.

ParameterTypeDescription
reason requiredstringWhy this tool call is needed
6 optional parameters
ParameterTypeDescription
customer_idstringGet a specific account by Customer ID. When provided, returns only that account and ignores other filters/pagination.
customer_idsarrayGet multiple accounts by Customer ID. Mutually exclusive with customer_id. When provided, ignores other filters/pagination.
refreshbooleanForce fresh data from Google Ads API instead of using cache. Defaults to false (cache-first). Only set to true when you need real-time data.
cursorstringPagination cursor from previous response
searchstringSearch accounts by name (case-insensitive partial match)
limitintegerNumber of accounts per page (default: 20, max: 100)
View full documentation →

mcc-child-accounts

google_ads_list_mcc_child_accounts List MCC Child Accounts

Read-onlyIdempotentOpen-world

List child accounts under a specific MCC (Manager) account. When calling other tools for these child accounts, you MUST pass login_customer_id with the MCC Customer ID. For all accessible accounts regardless of hierarchy, use google_ads_list_accounts instead.

ParameterTypeDescription
mcc_id requiredstringThe MCC (Manager) Customer ID whose child accounts to list (10 digits, dashes accepted)
reason requiredstringWhy this tool call is needed
3 optional parameters
ParameterTypeDescription
searchstringSearch child accounts by name or customer ID (case-insensitive partial match)
limitintegerNumber of accounts per page (default: 20, max: 100)
cursorstringPagination cursor from previous response
View full documentation →

ad-groups

google_ads_list_ad_groups List Google Ads Ad Groups

Read-onlyOpen-world

List ad groups for a Google Ads account. Supports filtering by campaign, status, search, and pagination. Results are cached; pass refresh=true for latest data.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
9 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
campaign_idstringFilter by campaign ID (optional)
ad_group_idstringGet a specific ad group by ID. When provided, returns only that ad group and ignores other filters/pagination.
ad_group_idsarrayGet multiple ad groups by ID. Mutually exclusive with ad_group_id. When provided, ignores other filters/pagination.
searchstringSearch ad groups by name (case-insensitive partial match)
statusarrayFilter by ad group status: ENABLED, PAUSED, REMOVED
limitintegerNumber of ad groups per page (default: 20, max: 100)
cursorstringPagination cursor from previous response
refreshbooleanForce fresh data from Google Ads API instead of using cache. Defaults to false (cache-first). Only set to true when you need real-time data.
View full documentation →

ads

google_ads_list_ads List Google Ads

Read-onlyOpen-world

List ads for a Google Ads account. Supports filtering by ad group, status, search, and pagination. Results are cached; pass refresh=true for latest data.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
9 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
ad_group_idstringFilter by ad group ID (optional)
ad_idstringGet a specific ad by ID. When provided, returns only that ad and ignores other filters/pagination.
ad_idsarrayGet multiple ads by ID. Mutually exclusive with ad_id. When provided, ignores other filters/pagination.
searchstringSearch ads by name (case-insensitive partial match)
statusarrayFilter by ad status: ENABLED, PAUSED, REMOVED
limitintegerNumber of ads per page (default: 20, max: 100)
cursorstringPagination cursor from previous response
refreshbooleanForce fresh data from Google Ads API instead of using cache. Defaults to false (cache-first). Only set to true when you need real-time data.
View full documentation →

auth

google_ads_check_auth_status Check Google Ads Auth Status

Read-onlyIdempotent

Troubleshoot authentication issues and get user profile info. Only use when another tool fails with a permission or authentication error — do NOT call proactively.

ParameterTypeDescription
reason requiredstringWhy this tool call is needed
View full documentation →

google_ads_ping Ping Google Ads MCP Server

Read-onlyIdempotent

Health check for the Google Ads MCP server.

ParameterTypeDescription
reason requiredstringWhy this tool call is needed
1 optional parameter
ParameterTypeDescription
messagestringOptional message to echo back
View full documentation →

auto-applied-recommendations

google_ads_get_auto_applied_recommendations Check Google Ads Auto-Applied Recommendations

Read-onlyIdempotentOpen-world

Check which Google Ads recommendation types are set to auto-apply for an account. Auto-applied recommendations can automatically change bids, budgets, keywords, and campaign structure without manual review. Essential for account audits.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
1 optional parameter
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
View full documentation →

campaigns

google_ads_list_campaigns List Google Ads Campaigns

Read-onlyOpen-world

List campaigns for a Google Ads account. Supports status filtering, search, and pagination. Results are cached; pass refresh=true for latest data.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
8 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
campaign_idstringGet a specific campaign by ID. When provided, returns only that campaign and ignores other filters/pagination.
campaign_idsarrayGet multiple campaigns by ID. Mutually exclusive with campaign_id. When provided, ignores other filters/pagination.
searchstringSearch campaigns by name (case-insensitive partial match)
statusarrayFilter by campaign status: ENABLED, PAUSED, REMOVED
limitintegerNumber of campaigns per page (default: 20, max: 100)
cursorstringPagination cursor from previous response
refreshbooleanForce fresh data from Google Ads API instead of using cache. Defaults to false (cache-first). Only set to true when you need real-time data.
View full documentation →

conversion-actions

google_ads_get_conversion_actions List Google Ads Conversion Actions

Read-onlyIdempotentOpen-world

List conversion actions configured for a Google Ads account. Use this to understand which conversions are tracked before querying performance reports or insights with conversion segments.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
3 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
statusstringFilter by status (default: returns all non-REMOVED). ENABLED, REMOVED, HIDDEN
limitnumberMaximum number of conversion actions to return (default: 100, max: 500)
View full documentation →

feedback

google_ads_developer_feedback Submit Developer Feedback

IdempotentOpen-world

Submit feedback about missing tools, needed improvements, bugs, or workflow gaps in the MCP toolset. Not for user-facing issues (auth errors, API errors).

ParameterTypeDescription
feedback_type requiredstringFeedback category: new_tool (request new capability), improvement (enhance existing tool), bug (report issue), workflow_gap (missing workflow)
title requiredstringConcise title summarizing the feedback
description requiredstringWhat is needed and why
reason requiredstringWhy this tool call is needed
3 optional parameters
ParameterTypeDescription
current_workaroundstringCurrent workaround, if any
prioritystringImpact level: low (nice-to-have), medium (improves workflow), high (blocking issue)
interfacestringInterface the feedback originated from: MCP (default) or CLI
View full documentation →

geo-performance

google_ads_get_geo_performance Get Google Ads Geographic Performance

Read-onlyIdempotentOpen-world

Get geographic performance data from the geographic_view resource. Only ONE geo level per query. Returns both AREA_OF_INTEREST and LOCATION_OF_PRESENCE location types with auto-resolved location names. Includes a parallel conversion action breakdown. Location names are resolved automatically from criterion IDs.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
10 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
date_presetstringPredefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH
date_rangeobjectCustom date range {start_date, end_date} in YYYY-MM-DD
geo_levelstringGeographic granularity. "country" uses geographic_view.country_criterion_id; others add a segments.geo_target_* drill-down. Only one geo level per query.
levelstringEntity breakdown level
segmentsarrayAdditional non-geo segments: date, device, ad_network_type
campaign_idstringFilter to a specific campaign ID
ad_group_idstringFilter to a specific ad group ID
limitnumberMax rows returned (default 50, max 200)
include_all_conversionsbooleanWhen true, includes an additional all-conversions breakdown (metrics.all_conversions, all_conversions_value, value_per_all_conversions) segmented by conversion_action_name. This captures ALL conversion actions including those not marked "Include in Conversions".
View full documentation →

insights

google_ads_get_insights Get Google Ads Insights

Read-onlyIdempotentOpen-world

Retrieve performance metrics using GAQL with full control over metrics, segments, levels, and date ranges. Always fetches fresh data. Use segments=['ad_network_type'] to break down Performance Max campaigns by channel (SEARCH, YOUTUBE_WATCH, DISPLAY, DISCOVER, etc.). For standard analysis, prefer google_ads_get_performance_report; use this only for custom metric selection, search impression share diagnostics, ad_network_type channel breakdowns, or segment combinations not available in the performance report. For geographic data, use google_ads_get_geo_performance instead. Conversion action segments automatically remove incompatible cost-based metrics. Budget-lost impression share variants are campaign-level only.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
8 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
date_presetstringPredefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH
date_rangeobjectCustom date range {start_date, end_date} in YYYY-MM-DD
levelstringReport level (default: ACCOUNT): ACCOUNT, CAMPAIGN, AD_GROUP, AD
metricsarrayMetrics to retrieve (defaults to standard set)
segmentsarraySegments to break down by (e.g., date, device, ad_network_type). Use ad_network_type to see which channel delivered traffic (SEARCH, YOUTUBE_WATCH, DISPLAY, DISCOVER, etc.) — essential for Performance Max analysis.
campaign_idstringFilter to a specific campaign ID
ad_group_idstringFilter to a specific ad group ID
View full documentation →

keyword-performance

google_ads_get_keyword_performance Get Google Ads Keyword Performance

Read-onlyIdempotentOpen-world

Get keyword-level performance metrics including quality score, match type, status, and search impression share. Supports segments parameter (e.g., ad_network_type) for channel-level breakdown — use to compare Search vs Search Partners per keyword. Includes a parallel conversion breakdown by ad group. Always fetches fresh data.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
11 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
date_presetstringPredefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH
date_rangeobjectCustom date range {start_date, end_date} in YYYY-MM-DD
campaign_idstringFilter to a specific campaign ID
ad_group_idstringFilter to a specific ad group ID
keyword_match_typestringFilter by match type: EXACT, PHRASE, BROAD
statusarrayFilter by keyword status: ENABLED, PAUSED, REMOVED
limitintegerMaximum number of rows to return (1-1000, default 100)
order_bystringSort by metric (descending): impressions, clicks, cost, conversions, ctr
include_all_conversionsbooleanWhen true, includes an additional all-conversions breakdown (metrics.all_conversions, all_conversions_value, value_per_all_conversions) segmented by conversion_action_name. This captures ALL conversion actions including those not marked "Include in Conversions".
segmentsarraySegments to break down by (e.g., ad_network_type, device). Use ad_network_type to split keyword metrics by channel (SEARCH vs SEARCH_PARTNERS).
View full documentation →

search-terms-report

google_ads_get_search_terms_report Get Google Ads Search Terms Report

Read-onlyIdempotentOpen-world

Get actual search queries that triggered ads, with performance metrics and keyword match status. Google may not disclose all terms for privacy. Supports segments parameter (e.g., ad_network_type) for channel-level breakdown — use to compare Search vs Search Partners per search term. Always fetches fresh data. Conversion breakdown and landing page lookups are opt-in to control response size. For Performance Max campaigns, set pmax_search_categories=true to get search category insights (grouped themes) instead of individual search terms.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
13 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
date_presetstringPredefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH
date_rangeobjectCustom date range {start_date, end_date} in YYYY-MM-DD
campaign_idstringFilter to a specific campaign ID
ad_group_idstringFilter to a specific ad group ID
search_term_statusarrayFilter by search term status: ADDED, EXCLUDED, ADDED_EXCLUDED, NONE
limitintegerMaximum number of rows to return (1-1000, default 100)
order_bystringSort by metric (descending): impressions, clicks, cost, conversions, ctr
include_all_conversionsbooleanWhen true, includes an additional all-conversions breakdown (metrics.all_conversions, all_conversions_value, value_per_all_conversions) segmented by conversion_action_name. This captures ALL conversion actions including those not marked "Include in Conversions".
include_conversion_breakdownbooleanWhen true, runs a parallel query to include conversion breakdown by ad group and conversion action. Adds significant response size — omit when response size is a concern. Default: false.
include_landing_pagesbooleanWhen true, runs a parallel query against ad_group_ad to fetch final_urls for each ad group in the results. Returns landing_pages_by_ad_group map keyed by ad_group_id. Default: false.
pmax_search_categoriesbooleanWhen true, queries campaign_search_term_insight for PMax search category data (grouped themes, not individual queries). ad_group_id and search_term_status are ignored in this mode. Default: false.
segmentsarraySegments to break down by (e.g., ad_network_type, device). Use ad_network_type to split search term metrics by channel (SEARCH vs SEARCH_PARTNERS). Ignored when pmax_search_categories is true.
View full documentation →

negative-keyword-lists

google_ads_list_negative_keyword_lists List Google Ads Negative Keyword Lists

Read-onlyIdempotentOpen-world

List shared negative keyword lists at the account level. Optionally includes the keywords within each list and which campaigns each list is attached to. Use for auditing shared exclusion lists and finding coverage gaps.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
6 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
list_idstringFilter to a specific shared set ID to see its keywords and campaign associations
include_keywordsbooleanInclude the keywords in each list. Defaults to false for overview.
include_campaign_associationsbooleanInclude which campaigns each list is attached to. Defaults to false.
limitintegerNumber of lists per page (default: 20, max: 100)
cursorstringPagination cursor from previous response
View full documentation →

negative-keywords

google_ads_list_negative_keywords List Google Ads Negative Keywords

Read-onlyIdempotentOpen-world

List negative keywords at the campaign and/or ad-group level. Supports filtering by campaign, ad group, match type, and level. Always fetches fresh data. Use this during search term audits to cross-check recommended negatives against existing ones.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
7 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
campaign_idstringFilter to a specific campaign ID
ad_group_idstringFilter to a specific ad group ID
levelstringWhich level of negative keywords to return. Defaults to ALL.
match_typearrayFilter by match type: EXACT, PHRASE, BROAD
limitintegerNumber of negative keywords per page (default: 20, max: 100)
cursorstringPagination cursor from previous response
View full documentation →

reporting

google_ads_get_performance_report Get Google Ads Performance Report

Read-onlyIdempotentOpen-world

Comprehensive performance report with funnel metrics and per-conversion-action breakdowns. Preferred over google_ads_get_insights for standard analysis. Runs parallel queries for top-level funnel and conversion action breakdown. Search impression share is included at CAMPAIGN and AD_GROUP levels (budget-lost variants campaign-level only). Use google_ads_get_insights for custom metric selection. For geographic data, use google_ads_get_geo_performance instead.

ParameterTypeDescription
customer_id requiredstringThe Google Ads Customer ID (10 digits, with or without dashes)
reason requiredstringWhy this tool call is needed
8 optional parameters
ParameterTypeDescription
login_customer_idstringMCC (Manager) Customer ID; required for managed accounts
date_presetstringPredefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH
date_rangeobjectCustom date range {start_date, end_date} in YYYY-MM-DD
levelstringReport level (default: CAMPAIGN): ACCOUNT, CAMPAIGN, AD_GROUP, AD
segmentsarrayAdditional segments for the main metrics: date, device, ad_network_type. Conversion action breakdowns are always included automatically via a separate query.
campaign_idstringFilter to a specific campaign ID
ad_group_idstringFilter to a specific ad group ID
include_all_conversionsbooleanWhen true, includes an additional all-conversions breakdown (metrics.all_conversions, all_conversions_value, value_per_all_conversions) segmented by conversion_action_name. This captures ALL conversion actions including those not marked "Include in Conversions" (e.g., view-through, cross-device, store visits).
View full documentation →

preferences

google_ads_store_preference Store Google Ads Preference

Idempotent

Store a persistent preference for a Google Ads entity. Use when you infer a recurring preference about analysis, reporting, or management. Updates existing keys.

ParameterTypeDescription
entity_type requiredstringType of ad entity: ad_account, campaign, ad_set (Meta ad sets / Google ad groups), or ad
entity_id requiredstringThe platform entity ID (e.g. act_123456, 23842453456789)
key requiredstringPreference key (e.g. preferred_conversion_metric, budget_alert_threshold)
reason requiredstringWhy this tool call is needed
3 optional parameters
ParameterTypeDescription
valueunknownPreference value — string, number, boolean, or JSON object
sourcestringWho set this preference: agent (default), user, or system
notestringOptional context about why this preference was set
View full documentation →

google_ads_get_preferences Get Google Ads Preferences

Read-onlyIdempotent

Get all stored preferences for a Google Ads entity. Preferences are also automatically attached to entity-listing tool responses as _stored_preferences, so you often don't need to call this explicitly.

ParameterTypeDescription
entity_type requiredstringType of ad entity: ad_account, campaign, ad_set, or ad
entity_id requiredstringThe platform entity ID
reason requiredstringWhy this tool call is needed
View full documentation →

google_ads_delete_preference Delete Google Ads Preference

DestructiveIdempotent

Delete a stored preference for a Google Ads entity by key. No-op if the preference doesn't exist.

ParameterTypeDescription
entity_type requiredstringType of ad entity: ad_account, campaign, ad_set, or ad
entity_id requiredstringThe platform entity ID
key requiredstringThe preference key to delete
reason requiredstringWhy this tool call is needed
View full documentation →