Google Ads
Google Ads campaign management with GAQL query support
30 tools available
Installation
Claude Desktop
{
"mcpServers": {
"hopkin-google-ads": {
"url": "https://google.mcp.hopkin.ai",
"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
Standardized account-level performance summary for cross-platform comparison. Returns normalized metrics identical to meta_ads_get_account_summary plus the supported Demand Gen Platform Comparable conversion family, with per-conversion-action breakdown. Preferred over insights or performance report for quick account overviews. Always fetches fresh data.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
3 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
date_preset | string | Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH |
date_range | object | Custom date range {start_date, end_date} in YYYY-MM-DD |
activities
google_ads_get_activities Get Google Ads Activities
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.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
7 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
start_date | string | Start date in YYYY-MM-DD format. Defaults to 7 days ago. Must be within the past 30 days. |
end_date | string | End date in YYYY-MM-DD format. Defaults to today. |
resource_type | string | Filter to a specific resource type: AD, AD_GROUP, AD_GROUP_AD, AD_GROUP_CRITERION, CAMPAIGN, CAMPAIGN_BUDGET, CAMPAIGN_CRITERION, ASSET, ASSET_SET |
asset_ids | array | Filter to specific asset IDs (numeric). Automatically sets resource_type to ASSET. |
limit | integer | Maximum number of activities to return (1-1000, default 50) |
cursor | string | Opaque pagination cursor from a previous response |
accounts
google_ads_list_accounts List Google Ads Accounts
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.
| Parameter | Type | Description |
|---|---|---|
reason required | string | Why this tool call is needed |
7 optional parameters
| Parameter | Type | Description |
|---|---|---|
customer_id | string | Get a specific account by Customer ID. When provided, returns only that account and ignores other filters/pagination. |
customer_ids | array | Get multiple accounts by Customer ID. Mutually exclusive with customer_id. When provided, ignores other filters/pagination. |
refresh | boolean | Force 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. |
cursor | string | Pagination cursor from previous response |
search | string | Search accounts by name (case-insensitive partial match) |
limit | integer | Number of accounts per page (default: 20, max: 100) |
label_filter | array | Filter by labels. Accepts an array whose entries are any of: label name (e.g. "Big Boom"), bare label ID (e.g. "9876543210"), or full label resource name (e.g. "customers/1234567890/labels/9876543210"). Names are resolved against cached labels for the relevant customer scope. Unknown names return an empty result with a warning rather than an error. |
mcc-child-accounts
google_ads_list_mcc_child_accounts List MCC Child Accounts
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.
| Parameter | Type | Description |
|---|---|---|
mcc_id required | string | The MCC (Manager) Customer ID whose child accounts to list (10 digits, dashes accepted) |
reason required | string | Why this tool call is needed |
5 optional parameters
| Parameter | Type | Description |
|---|---|---|
search | string | Search child accounts by name or customer ID (case-insensitive partial match) |
limit | integer | Number of accounts per page (default: 20, max: 100) |
cursor | string | Pagination cursor from previous response |
refresh | boolean | Force a fresh fetch of labels for this MCC scope. Defaults to false (cache-first). |
label_filter | array | Filter by labels. Accepts an array whose entries are any of: label name (e.g. "Big Boom"), bare label ID (e.g. "9876543210"), or full label resource name (e.g. "customers/1234567890/labels/9876543210"). Names are resolved against cached labels for the relevant customer scope. Unknown names return an empty result with a warning rather than an error. |
ad-groups
google_ads_list_ad_groups List Google Ads Ad Groups
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. Set include_audience_criteria=true to include ad-group-level audience targeting (USER_LIST, USER_INTEREST) with bid modifiers.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
11 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
campaign_id | string | Filter by campaign ID (optional) |
ad_group_id | string | Get a specific ad group by ID. When provided, returns only that ad group and ignores other filters/pagination. |
ad_group_ids | array | Get multiple ad groups by ID. Mutually exclusive with ad_group_id. When provided, ignores other filters/pagination. |
search | string | Search ad groups by name (case-insensitive partial match) |
status | array | Filter by ad group status: ENABLED, PAUSED, REMOVED |
limit | integer | Number of ad groups per page (default: 20, max: 100) |
cursor | string | Pagination cursor from previous response |
refresh | boolean | Force 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. |
include_audience_criteria | boolean | Include ad-group-level audience criteria (USER_LIST, USER_INTEREST) with bid modifiers. Useful for auditing RLSA audiences and observation/targeting mode. |
label_filter | array | Filter by labels. Accepts an array whose entries are any of: label name (e.g. "Big Boom"), bare label ID (e.g. "9876543210"), or full label resource name (e.g. "customers/1234567890/labels/9876543210"). Names are resolved against cached labels for the relevant customer scope. Unknown names return an empty result with a warning rather than an error. |
ads
google_ads_preview_ads Preview Google AdsMCP App
Interactive UI for displaying Google ad previews with creative content and metrics
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads customer ID |
ads required | array | Ads to preview (1-20) |
reason required | string | Why this tool call is needed |
2 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC manager account ID if needed |
metric_labels | object | Display labels for metric keys |
google_ads_list_ads List Google Ads
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.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
9 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
ad_group_id | string | Filter by ad group ID (optional) |
ad_id | string | Get a specific ad by ID. When provided, returns only that ad and ignores other filters/pagination. |
ad_ids | array | Get multiple ads by ID. Mutually exclusive with ad_id. When provided, ignores other filters/pagination. |
search | string | Search ads by name (case-insensitive partial match) |
status | array | Filter by ad status: ENABLED, PAUSED, REMOVED |
limit | integer | Number of ads per page (default: 20, max: 100) |
cursor | string | Pagination cursor from previous response |
refresh | boolean | Force 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. |
audiences
google_ads_list_audiences List Google Ads Audiences
List audience lists (user lists) for a Google Ads account. Returns Customer Match lists, remarketing audiences, rule-based audiences, similar audiences, and lookalike segments. Shows list names, types, sizes (for Search and Display), membership status, and match rates. Supports filtering by type and membership status, plus name search.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
6 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
type | array | Filter by audience type(s). Examples: CRM_BASED, REMARKETING, RULE_BASED, LOOKALIKE |
membership_status | string | Filter by membership status: OPEN (accepting new members) or CLOSED |
search | string | Case-insensitive search filter applied to audience list names |
limit | integer | Number of lists per page (default: 20, max: 100) |
cursor | string | Pagination cursor from previous response |
auth
google_ads_check_auth_status Check Google Ads Auth Status
Troubleshoot authentication issues and get user profile info. Only use when another tool fails with a permission or authentication error — do NOT call proactively.
| Parameter | Type | Description |
|---|---|---|
reason required | string | Why this tool call is needed |
google_ads_ping Ping Google Ads MCP Server
Health check for the Google Ads MCP server.
| Parameter | Type | Description |
|---|---|---|
reason required | string | Why this tool call is needed |
1 optional parameter
| Parameter | Type | Description |
|---|---|---|
message | string | Optional message to echo back |
auto-applied-recommendations
google_ads_get_auto_applied_recommendations Check Google Ads Auto-Applied Recommendations
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.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
1 optional parameter
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
campaigns
google_ads_list_campaigns List Google Ads Campaigns
List campaigns for a Google Ads account. Supports status filtering, search, and pagination. Results are cached; pass refresh=true for latest data. Use include_criteria to control audience/schedule detail: "none" (fastest), "summary" (default, capped), or "full" (uncapped, requires campaign_id/campaign_ids).
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
10 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
campaign_id | string | Get a specific campaign by ID. When provided, returns only that campaign and ignores other filters/pagination. |
campaign_ids | array | Get multiple campaigns by ID. Mutually exclusive with campaign_id. When provided, ignores other filters/pagination. |
search | string | Search campaigns by name (case-insensitive partial match) |
status | array | Filter by campaign status: ENABLED, PAUSED, REMOVED |
limit | integer | Number of campaigns per page (default: 20, max: 100) |
cursor | string | Pagination cursor from previous response |
refresh | boolean | Force 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. |
include_criteria | string | Controls campaign criteria detail level. "none" omits criteria (fastest). "summary" (default) returns capped criteria with total counts. "full" returns all criteria uncapped — requires campaign_id or campaign_ids (max 10). |
label_filter | array | Filter by labels. Accepts an array whose entries are any of: label name (e.g. "Big Boom"), bare label ID (e.g. "9876543210"), or full label resource name (e.g. "customers/1234567890/labels/9876543210"). Names are resolved against cached labels for the relevant customer scope. Unknown names return an empty result with a warning rather than an error. |
chart
google_ads_render_chart Render ChartMCP App
Interactive UI for rendering data visualization charts
bar scatter timeseries funnel waterfall choropleth| Parameter | Type | Description |
|---|---|---|
reason required | string | Brief explanation of why you are rendering this chart |
chart required | object | Chart configuration. Supported types: bar, scatter, timeseries, funnel, waterfall, choropleth. |
conversion-actions
google_ads_get_conversion_actions List Google Ads Conversion Actions
List conversion actions for a Google Ads account, including (a) the account-default goal flag, (b) **effective** inclusion across active campaigns (factoring in custom conversion goals and selective optimization), and (c) measured \
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
5 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
status | string | Filter by status (default: returns all non-REMOVED). ENABLED, REMOVED, HIDDEN |
limit | number | Maximum number of conversion actions to return (default: 100, max: 500) |
lookback_days | integer | Lookback window (days) for recent conversion counts. Default 30. |
include | array | Which optional blocks to compute. 'effective' = goal-hierarchy walk (3 extra GAQL queries). 'recent' = metrics.conversions over the lookback window (1 extra query). 'campaign_overrides' = list the contributing campaign IDs per action, grouped by source (HEAVY — full list, no cap; only request when the user explicitly asks 'which campaigns?'). Implies 'effective'. 'tag_snippets' = include tag snippet HTML per row. 'attribution' = include attribution-model + value settings. Default: ['effective','recent']. Pass [] for the lightest possible response. |
feedback
google_ads_developer_feedback Submit Developer Feedback
Submit feedback about missing tools, needed improvements, bugs, or workflow gaps in the MCP toolset. Not for user-facing issues (auth errors, API errors).
| Parameter | Type | Description |
|---|---|---|
feedback_type required | string | Feedback category: new_tool (request new capability), improvement (enhance existing tool), bug (report issue), workflow_gap (missing workflow) |
title required | string | Concise title summarizing the feedback |
description required | string | What is needed and why |
reason required | string | Why this tool call is needed |
3 optional parameters
| Parameter | Type | Description |
|---|---|---|
current_workaround | string | Current workaround, if any |
priority | string | Impact level: low (nice-to-have), medium (improves workflow), high (blocking issue) |
interface | string | Interface the feedback originated from: MCP (default) or CLI |
geo-performance
google_ads_get_geo_performance Get Google Ads Geographic Performance
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.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
10 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
date_preset | string | Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH |
date_range | object | Custom date range {start_date, end_date} in YYYY-MM-DD |
geo_level | string | Geographic granularity. "country" uses geographic_view.country_criterion_id; others add a segments.geo_target_* drill-down. Only one geo level per query. |
level | string | Entity breakdown level |
segments | array | Additional non-geo segments: date, device, ad_network_type |
campaign_id | string | Filter to a specific campaign ID |
ad_group_id | string | Filter to a specific ad group ID |
limit | number | Max rows returned (default 50, max 200) |
include_all_conversions | boolean | When 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". |
insights
google_ads_get_insights Get Google Ads Insights
Retrieve performance metrics using GAQL with full control over metrics, segments, levels, and date ranges. Always fetches fresh data. Default metrics include the supported Demand Gen Platform Comparable conversion family. Custom metrics accept Platform Comparable columns with or without the metrics. prefix (for example platform_comparable_conversions or metrics.platform_comparable_conversions). Supports device breakdowns, ad_network_type channel analysis, and search impression share diagnostics. 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.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
8 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
date_preset | string | Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH |
date_range | object | Custom date range {start_date, end_date} in YYYY-MM-DD |
level | string | Report level (default: ACCOUNT): ACCOUNT, CAMPAIGN, AD_GROUP, AD |
metrics | array | Metrics to retrieve (defaults to standard set). Demand Gen Platform Comparable columns are accepted with or without the metrics. prefix, e.g. platform_comparable_conversions or metrics.platform_comparable_conversions. These Demand Gen-only columns include view-through conversions; see https://support.google.com/google-ads/answer/15299024. |
segments | array | Segments 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_id | string | Filter to a specific campaign ID |
ad_group_id | string | Filter to a specific ad group ID |
generate-keyword-ideas
google_ads_generate_keyword_ideas Generate Google Ads Keyword Ideas
Generate keyword suggestions from seed keywords and/or a URL. Returns keyword ideas with average monthly searches, competition level, and estimated bid ranges. Supports pagination for large result sets. Examples: seed with ["running shoes", "athletic footwear"] for shoe campaigns, or provide a competitor URL to discover relevant keywords. Use include_monthly_volumes=true for seasonal trend data.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
10 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
keywords | array | Seed keywords to generate ideas from (max 20). At least one of keywords or url must be provided. |
url | string | Seed URL to generate keyword ideas from. At least one of keywords or url must be provided. |
language | string | ISO 639-1 language code (e.g., "en", "es"). Default: "en". |
geo_targets | array | ISO 3166-1 alpha-2 country codes (e.g., ["US", "GB"]). Default: ["US"]. |
network | string | Keyword plan network: GOOGLE_SEARCH (default) or GOOGLE_SEARCH_AND_PARTNERS |
include_adult_keywords | boolean | Whether to include adult keyword ideas. Default: false. |
include_monthly_volumes | boolean | When true, includes per-month search volume history for each keyword. Default: false. |
limit | integer | Maximum keyword ideas to return per page (1-1000, default 50) |
cursor | string | Opaque pagination cursor from a previous response. Do not construct manually. |
keyword-historical-metrics
google_ads_get_keyword_historical_metrics Get Google Ads Keyword Historical Metrics
Get historical search metrics for specific keywords — average monthly searches, competition level, and bid estimates. Unlike keyword ideas, this takes exact keywords you already have and returns their metrics. Use include_monthly_volumes=true for month-by-month search volume trends. Examples: check volume for ["running shoes", "trail running shoes"] before adding to campaigns, or validate keywords from external research.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
keywords required | array | Keywords to get historical metrics for (1-200 keywords) |
reason required | string | Why this tool call is needed |
5 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
language | string | ISO 639-1 language code (e.g. "en", "es"). Maps internally to languageConstants resource name. |
geo_targets | array | ISO 3166-1 alpha-2 country codes (e.g. ["US", "GB"]). Maps internally to geoTargetConstants. |
network | string | Network: GOOGLE_SEARCH (default) or GOOGLE_SEARCH_AND_PARTNERS |
include_monthly_volumes | boolean | When true, includes month-by-month search volume data. Default: false. |
generate-keyword-forecast-metrics
google_ads_generate_keyword_forecast_metrics Generate Google Ads Keyword Forecast Metrics
Forecast campaign performance for a set of keywords with budget and bidding config. Returns projected impressions, clicks, cost, CTR, conversions, and CPA. Supports MANUAL_CPC (requires default_max_cpc_bid_micros), MAXIMIZE_CLICKS, and MAXIMIZE_CONVERSIONS strategies. Budget is in micros (10000000 = $10). Examples: forecast a $50/day campaign with exact-match keywords, or compare BROAD vs EXACT match performance.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
keywords required | array | Keywords to forecast (1-200). Each has text, optional match_type, optional max_cpc_bid_micros. |
daily_budget_micros required | integer | Daily budget in micros (e.g., 10000000 = $10.00) |
reason required | string | Why this tool call is needed |
12 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
default_max_cpc_bid_micros | integer | Default max CPC bid in micros. Required for MANUAL_CPC strategy. Per-keyword bids override this. |
bidding_strategy | string | Bidding strategy: MANUAL_CPC (default), MAXIMIZE_CLICKS, or MAXIMIZE_CONVERSIONS |
max_cpc_bid_ceiling_micros | integer | Max CPC bid ceiling for MAXIMIZE_CLICKS strategy (micros). Ignored for other strategies. |
geo_targets | array | ISO 3166-1 alpha-2 country codes (e.g., ["US", "GB"]). Default: ["US"]. |
language | string | ISO 639-1 language code (e.g., "en", "es"). Default: "en". |
network | string | Ad network: GOOGLE_SEARCH (default) or GOOGLE_SEARCH_AND_PARTNERS |
forecast_start_date | string | Forecast period start date (YYYY-MM-DD). Defaults to tomorrow. |
forecast_end_date | string | Forecast period end date (YYYY-MM-DD). Defaults to 30 days from start. |
negative_keywords | array | Negative keyword texts to exclude from the forecast |
conversion_rate | number | Expected conversion rate (0-1, e.g., 0.05 for 5%) |
currency_code | string | ISO 4217 currency code (e.g., "USD", "EUR"). Defaults to account currency. |
generate-ad-group-themes
google_ads_generate_ad_group_themes Generate Google Ads Ad Group Themes
Suggest which ad group each keyword belongs to. Takes a list of keywords and existing ad group resource names, returns keyword-to-ad-group assignment suggestions with recommended match types. Also identifies unusable ad groups. Example: organize ["running shoes", "trail shoes", "yoga mat", "yoga block"] across your existing ad groups.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
keywords required | array | Keywords to find ad group assignments for (1-2000 keywords) |
ad_groups required | array | Ad group resource names (e.g., "customers/1234567890/adGroups/111222333") to consider as placement targets |
reason required | string | Why this tool call is needed |
1 optional parameter
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
keyword-performance
google_ads_get_keyword_performance Get Google Ads Keyword Performance
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.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
11 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
date_preset | string | Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH |
date_range | object | Custom date range {start_date, end_date} in YYYY-MM-DD |
campaign_id | string | Filter to a specific campaign ID |
ad_group_id | string | Filter to a specific ad group ID |
keyword_match_type | string | Filter by match type: EXACT, PHRASE, BROAD |
status | array | Filter by keyword status: ENABLED, PAUSED, REMOVED |
limit | integer | Maximum number of rows to return (1-1000, default 100) |
order_by | string | Sort by metric (descending): impressions, clicks, cost, conversions, ctr |
include_all_conversions | boolean | When 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". |
segments | array | Segments to break down by (e.g., ad_network_type, device). Use ad_network_type to split keyword metrics by channel (SEARCH vs SEARCH_PARTNERS). |
search-terms-report
google_ads_get_search_terms_report Get Google Ads Search Terms Report
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 (keyed by search term) and landing page lookups are opt-in to control response size. Passing conversion_action_name in segments auto-enables conversion breakdown. For Performance Max campaigns, set pmax_search_categories=true to get search category insights (grouped themes) instead of individual search terms.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
13 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
date_preset | string | Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH |
date_range | object | Custom date range {start_date, end_date} in YYYY-MM-DD |
campaign_id | string | Filter to a specific campaign ID |
ad_group_id | string | Filter to a specific ad group ID |
search_term_status | array | Filter by search term status: ADDED, EXCLUDED, ADDED_EXCLUDED, NONE |
limit | integer | Maximum number of rows to return (1-1000, default 100) |
order_by | string | Sort by metric (descending): impressions, clicks, cost, conversions, ctr |
include_all_conversions | boolean | When 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_breakdown | boolean | When true, runs a parallel query to include conversion breakdown by search term and conversion action (keyed by search term text). Adds significant response size — omit when response size is a concern. Default: false. |
include_landing_pages | boolean | When 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_categories | boolean | When 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. |
segments | array | Segments 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). If conversion_action or conversion_action_name is included, it is automatically stripped from the main query and a parallel conversion breakdown query runs instead. Ignored when pmax_search_categories is true. |
landing-page-report
google_ads_get_landing_page_report Get Landing Page Performance Report
Landing page performance report from the landing_page_view resource. Preferred tool for all landing page analysis — do not use google_ads_get_insights or google_ads_list_ads for landing page data. Returns clicks, impressions, cost, conversions, speed_score, and mobile_friendly_clicks_percentage grouped by landing page URL, with per-conversion-action breakdowns included automatically. Use url_contains to filter by URL pattern. Note: Performance Max campaigns do not appear in landing_page_view data.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
10 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
date_preset | string | Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH |
date_range | object | Custom date range {start_date, end_date} in YYYY-MM-DD |
segments | array | Additional segments: date, device, ad_network_type. Conversion breakdowns are always included automatically via a separate query. |
campaign_id | string | Filter to a specific campaign ID |
ad_group_id | string | Filter to a specific ad group ID |
url_contains | string | Filter landing pages where URL contains this string (case-sensitive) |
limit | integer | Maximum number of landing pages to return (default: 100, max: 1000) |
order_by | string | Sort results by this metric (default: clicks, descending) |
include_all_conversions | boolean | When true, includes an additional all-conversions breakdown (all_conversions, all_conversions_value) segmented by conversion_action_name. |
negative-keyword-lists
google_ads_list_negative_keyword_lists List Google Ads Negative Keyword Lists
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.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
6 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
list_id | string | Filter to a specific shared set ID to see its keywords and campaign associations |
include_keywords | boolean | Include the keywords in each list. Defaults to false for overview. |
include_campaign_associations | boolean | Include which campaigns each list is attached to. Defaults to false. |
limit | integer | Number of lists per page (default: 20, max: 100) |
cursor | string | Pagination cursor from previous response |
negative-keywords
google_ads_list_negative_keywords List Google Ads Negative Keywords
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.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
7 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
campaign_id | string | Filter to a specific campaign ID |
ad_group_id | string | Filter to a specific ad group ID |
level | string | Which level of negative keywords to return. Defaults to ALL. |
match_type | array | Filter by match type: EXACT, PHRASE, BROAD |
limit | integer | Number of negative keywords per page (default: 20, max: 100) |
cursor | string | Pagination cursor from previous response |
reporting
google_ads_get_performance_report Get Google Ads Performance Report
Comprehensive performance report with funnel metrics and per-conversion-action breakdowns. Supports segments for device breakdown (DESKTOP, MOBILE, TABLET), daily trends, and network type analysis. Preferred over google_ads_get_insights for standard analysis. Runs parallel queries for top-level funnel and conversion action breakdown. Supported levels automatically include the Demand Gen Platform Comparable conversion family (platform_comparable_conversions, cost/value/rate variants); row-level reports return null for non-Demand Gen rows. 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.
| Parameter | Type | Description |
|---|---|---|
customer_id required | string | The Google Ads Customer ID (10 digits, with or without dashes) |
reason required | string | Why this tool call is needed |
8 optional parameters
| Parameter | Type | Description |
|---|---|---|
login_customer_id | string | MCC (Manager) Customer ID; required for managed accounts |
date_preset | string | Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH |
date_range | object | Custom date range {start_date, end_date} in YYYY-MM-DD |
level | string | Report level (default: CAMPAIGN): ACCOUNT, CAMPAIGN, AD_GROUP, AD. CAMPAIGN, AD_GROUP, and AD reports automatically include platform_comparable_conversions for Demand Gen rows (null for non-Demand Gen). |
segments | array | Additional segments for the main metrics: date, device, ad_network_type. Conversion action breakdowns are always included automatically via a separate query. |
campaign_id | string | Filter to a specific campaign ID |
ad_group_id | string | Filter to a specific ad group ID |
include_all_conversions | boolean | When 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). |
preferences
google_ads_store_preference Store Google Ads Preference
Store a persistent preference for a Google Ads entity. Use when you infer a recurring preference about analysis, reporting, or management. Updates existing keys.
| Parameter | Type | Description |
|---|---|---|
entity_type required | string | Type of ad entity: ad_account, campaign, ad_set (Meta ad sets / Google ad groups), or ad |
entity_id required | string | The platform entity ID (e.g. act_123456, 23842453456789) |
key required | string | Preference key (e.g. preferred_conversion_metric, budget_alert_threshold) |
reason required | string | Why this tool call is needed |
3 optional parameters
| Parameter | Type | Description |
|---|---|---|
value | unknown | Preference value — string, number, boolean, or JSON object |
source | string | Who set this preference: agent (default), user, or system |
note | string | Optional context about why this preference was set |
google_ads_get_preferences Get Google Ads Preferences
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.
| Parameter | Type | Description |
|---|---|---|
entity_type required | string | Type of ad entity: ad_account, campaign, ad_set, or ad |
entity_id required | string | The platform entity ID |
reason required | string | Why this tool call is needed |
google_ads_delete_preference Delete Google Ads Preference
Delete a stored preference for a Google Ads entity by key. No-op if the preference doesn't exist.
| Parameter | Type | Description |
|---|---|---|
entity_type required | string | Type of ad entity: ad_account, campaign, ad_set, or ad |
entity_id required | string | The platform entity ID |
key required | string | The preference key to delete |
reason required | string | Why this tool call is needed |