| list_accessible_accountsB | List all Google Ads accounts accessible via current credentials. Returns accounts accessible through the authenticated MCC or direct account. |
| get_account_infoB | Get details for a Google Ads account (name, currency, timezone, etc.). Args:
customer_id: Google Ads customer ID (e.g., '123-456-7890' or '1234567890').
|
| get_account_hierarchyB | Get the MCC account hierarchy tree. Lists all child accounts under the given MCC account.
Args:
customer_id: MCC customer ID. Uses default if not provided.
|
| list_ad_groupsA | List ad groups in a campaign. Args:
customer_id: Google Ads customer ID.
campaign_id: Campaign ID to list ad groups for.
status_filter: Optional -- 'ENABLED', 'PAUSED', or 'REMOVED'.
limit: Max ad groups to return (default 100).
|
| get_ad_groupC | Get details for a single ad group. Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID.
|
| create_ad_groupA | Create a new ad group in a campaign. Safety: creating an ENABLED ad group or setting a bid returns a preview
first; call again with confirm=True. A PAUSED ad group with no bid is
created immediately. Refused if cpc_bid is above GOOGLE_ADS_MAX_CPC_BID.
Args:
customer_id: Google Ads customer ID.
campaign_id: Campaign ID to create the ad group in.
name: Ad group name.
cpc_bid: Max CPC bid in currency (e.g., 2.50 for $2.50).
target_cpa: Target CPA in currency (overrides campaign-level if set).
ad_group_type: Ad group type -- 'SEARCH_STANDARD', 'DISPLAY_STANDARD',
'VIDEO_TRUE_VIEW_IN_STREAM', 'VIDEO_BUMPER', etc.
status: Initial status -- 'ENABLED' (default) or 'PAUSED'.
confirm: Must be True to create an ENABLED ad group or one with bids.
|
| update_ad_groupA | Update an existing ad group. Only provided fields will be updated.
Safety: bid changes, enabling and removing return a preview first; call
again with confirm=True. Renaming and pausing apply immediately. Refused if
cpc_bid is above GOOGLE_ADS_MAX_CPC_BID.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID to update.
name: New ad group name.
cpc_bid: New max CPC bid in currency.
target_cpa: New target CPA in currency.
status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'.
confirm: Must be True to apply a gated change.
|
| set_ad_group_statusA | Set an ad group's status (enable, pause, or remove). Safety: PAUSED applies immediately; ENABLED and REMOVED return a preview
first and need confirm=True.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID.
status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'.
confirm: Must be True to enable or remove.
|
| list_adsA | List ads in an ad group with approval status. Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID.
status_filter: Optional -- 'ENABLED', 'PAUSED', or 'REMOVED'.
limit: Max ads to return (default 50).
|
| create_responsive_search_adA | Create a Responsive Search Ad (RSA) for Search campaigns. Google will automatically test combinations of headlines and descriptions.
Safety: an ENABLED ad returns a preview first; call again with confirm=True.
A PAUSED ad is created immediately.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID (must be in a Search campaign).
headlines: 3-15 headline strings (max 30 chars each).
descriptions: 2-4 description strings (max 90 chars each).
final_urls: List of landing page URLs (at least one required).
path1: Optional display URL path 1 (max 15 chars).
path2: Optional display URL path 2 (max 15 chars, requires path1).
status: Ad status -- 'ENABLED' (default) or 'PAUSED'.
|
| create_responsive_display_adA | Create a Responsive Display Ad for Display campaigns. Safety: an ENABLED ad returns a preview first; call again with confirm=True.
A PAUSED ad is created immediately.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID (must be in a Display campaign).
headlines: 1-5 short headlines (max 30 chars each).
long_headline: Long headline (max 90 chars).
descriptions: 1-5 descriptions (max 90 chars each).
marketing_images: List of landscape image asset resource names (1200x628).
square_marketing_images: List of square image asset resource names (1200x1200).
logo_images: List of logo asset resource names.
business_name: Business name (max 25 chars).
final_urls: Landing page URLs.
call_to_action_text: Optional CTA text.
status: Ad status -- 'ENABLED' (default) or 'PAUSED'.
|
| create_video_adA | Create a Video ad for Video campaigns (YouTube). Safety: an ENABLED ad returns a preview first; call again with confirm=True.
A PAUSED ad is created immediately.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID (must be in a Video campaign).
youtube_video_id: YouTube video ID (e.g., 'dQw4w9WgXcQ').
final_urls: Landing page URLs.
headline: Optional headline for the ad.
description: Optional description.
call_to_action_text: CTA button text (e.g., 'Learn More', 'Shop Now').
ad_format: Video ad format -- 'IN_STREAM' (skippable), 'BUMPER' (6-sec non-skip),
'IN_FEED' (discovery/in-feed).
companion_banner_asset: Optional companion banner image asset resource name.
status: Ad status -- 'ENABLED' (default) or 'PAUSED'.
|
| create_demand_gen_adA | Create a Demand Gen ad (serves on YouTube, Gmail, Discover). Safety: an ENABLED ad returns a preview first; call again with confirm=True.
A PAUSED ad is created immediately.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID (must be in a Demand Gen campaign).
headlines: 1-5 headlines (max 40 chars each).
descriptions: 1-5 descriptions (max 90 chars each).
marketing_images: Landscape image asset resource names.
logo_images: Logo asset resource names.
final_urls: Landing page URLs.
business_name: Business name.
call_to_action_text: Optional CTA text.
status: Ad status -- 'ENABLED' (default) or 'PAUSED'.
|
| set_ad_statusA | Set an ad's status (enable, pause, or remove). Safety: PAUSED applies immediately; ENABLED and REMOVED return a preview
first and need confirm=True.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID containing the ad.
ad_id: Ad ID.
status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'.
|
| get_ad_detailsB | Get full details of an ad (headlines, descriptions, URLs, assets). Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID containing the ad.
ad_id: Ad ID.
|
| list_budgetsC | List campaign budgets in the account. Args:
customer_id: Google Ads customer ID.
limit: Max budgets to return (default 100).
|
| create_budgetA | Create a new campaign budget. Safety: returns a preview first. Call again with confirm=True to create it.
Refused if the amount is above GOOGLE_ADS_MAX_DAILY_BUDGET.
Args:
customer_id: Google Ads customer ID.
name: Budget name.
amount: Daily budget amount in currency (e.g., 50.00 for $50/day).
delivery_method: 'STANDARD' (spread evenly) or 'ACCELERATED'.
explicitly_shared: If True, budget can be shared across multiple campaigns.
confirm: Must be True to actually create the budget (after reviewing the preview).
|
| update_budgetA | Update an existing campaign budget. Safety: changing the amount or delivery method returns a preview first
(current vs new amount); call again with confirm=True to apply. Renaming
only is applied immediately. Refused if the new amount breaks
GOOGLE_ADS_MAX_DAILY_BUDGET or GOOGLE_ADS_MAX_BUDGET_INCREASE_PCT.
Args:
customer_id: Google Ads customer ID.
budget_id: Budget ID to update.
amount: New daily budget amount in currency.
name: New budget name.
delivery_method: New delivery method -- 'STANDARD' or 'ACCELERATED'.
confirm: Must be True to apply an amount or delivery change.
|
| get_budget_utilizationB | Get budget vs actual spend for campaigns. Shows how much of each campaign's budget has been utilized.
Args:
customer_id: Google Ads customer ID.
date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD').
campaign_id: Optional -- filter to a single campaign.
|
| list_campaignsA | List campaigns in a Google Ads account. Args:
customer_id: Google Ads customer ID.
status_filter: Optional filter -- 'ENABLED', 'PAUSED', or 'REMOVED'.
limit: Max campaigns to return (default 100).
|
| get_campaignC | Get details for a single campaign. Args:
customer_id: Google Ads customer ID.
campaign_id: The campaign ID.
|
| create_campaignA | Create a new campaign with a budget. Creates both the campaign budget and campaign in a single atomic operation.
Campaign is created as PAUSED by default for safety.
Safety: returns a preview first; call again with confirm=True to create it.
Refused if budget_amount is above GOOGLE_ADS_MAX_DAILY_BUDGET.
Args:
customer_id: Google Ads customer ID.
name: Campaign name.
budget_amount: Daily budget in currency (e.g., 50.00 for $50/day).
channel_type: Campaign type -- 'SEARCH', 'DISPLAY', 'VIDEO', 'DEMAND_GEN', 'SHOPPING'.
bidding_strategy: Bidding strategy -- 'MAXIMIZE_CONVERSIONS', 'MAXIMIZE_CONVERSION_VALUE',
'MAXIMIZE_CLICKS', 'TARGET_SPEND', 'MANUAL_CPC', 'TARGET_CPA', 'TARGET_ROAS'.
target_cpa: Target CPA in currency (required if bidding_strategy is TARGET_CPA).
target_roas: Target ROAS as a decimal (e.g., 3.0 for 300% ROAS).
network_settings: Optional dict with keys: target_google_search, target_search_network,
target_content_network (all bool).
start_date: Campaign start date (YYYY-MM-DD). Defaults to today.
end_date: Optional campaign end date (YYYY-MM-DD).
status: Initial status -- 'PAUSED' (default, recommended) or 'ENABLED'.
confirm: Must be True to actually create the campaign (after reviewing the preview).
|
| update_campaignA | Update an existing campaign's properties. Only provided fields will be updated.
Safety: enabling or removing the campaign, or changing bidding targets or
dates, returns a preview first; call again with confirm=True to apply.
Renaming and pausing are applied immediately.
Args:
customer_id: Google Ads customer ID.
campaign_id: Campaign ID to update.
name: New campaign name.
status: New status -- 'ENABLED', 'PAUSED'.
target_cpa: New target CPA (for maximize_conversions with target).
target_roas: New target ROAS (for maximize_conversion_value with target).
start_date: New start date (YYYY-MM-DD).
end_date: New end date (YYYY-MM-DD).
confirm: Must be True to apply a gated change.
|
| set_campaign_statusA | Set a campaign's status (enable, pause, or remove). Safety: PAUSED is applied immediately (it stops spend). ENABLED and REMOVED
return a preview first; call again with confirm=True to apply.
Args:
customer_id: Google Ads customer ID.
campaign_id: Campaign ID.
status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'.
confirm: Must be True to enable or remove.
|
| remove_campaignA | Soft-delete (remove) a campaign. This is a destructive operation. The campaign will be set to REMOVED status.
Safety: returns a preview first; call again with confirm=True to remove.
Args:
customer_id: Google Ads customer ID.
campaign_id: Campaign ID to remove.
confirm_removal: Older name for confirm; either one set to True proceeds.
confirm: Must be True to proceed (after reviewing the preview).
|
| list_keywordsA | List keywords in an ad group. Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID.
status_filter: Optional -- 'ENABLED', 'PAUSED', or 'REMOVED'.
limit: Max keywords to return (default 200).
|
| add_keywordsA | Add keywords to an ad group (batch operation). Safety: new keywords are live immediately in an enabled ad group, so this
returns a preview first; call again with confirm=True. Refused if any
cpc_bid is above GOOGLE_ADS_MAX_CPC_BID.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID to add keywords to.
keywords: List of keyword dicts, each with:
- text (str): The keyword text.
- match_type (str): 'EXACT', 'PHRASE', or 'BROAD'.
- cpc_bid (float, optional): Max CPC bid in currency.
Example:
keywords=[
{"text": "buy shoes online", "match_type": "PHRASE", "cpc_bid": 1.50},
{"text": "running shoes", "match_type": "BROAD"},
{"text": "[red running shoes]", "match_type": "EXACT", "cpc_bid": 2.00},
]
|
| remove_keywordA | Remove a keyword from an ad group. Safety: returns a preview first; call again with confirm=True to remove.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID containing the keyword.
criterion_id: Keyword criterion ID to remove.
confirm_removal: Older name for confirm; either one set to True proceeds.
confirm: Must be True to proceed (after reviewing the preview).
|
| update_keyword_bidA | Update the CPC bid for a keyword. Safety: returns a preview first; call again with confirm=True. Refused if
cpc_bid is above GOOGLE_ADS_MAX_CPC_BID.
Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID containing the keyword.
criterion_id: Keyword criterion ID to update.
cpc_bid: New max CPC bid in currency (e.g., 2.50 for $2.50).
confirm: Must be True to apply the new bid.
|
| get_keyword_performanceB | Get keyword performance metrics for an ad group. Args:
customer_id: Google Ads customer ID.
ad_group_id: Ad group ID.
date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD').
limit: Max rows (default 100).
|
| create_performance_max_campaignA | Create a complete Performance Max campaign with budget, campaign, and asset group. Creates everything in a single atomic batch operation using temporary IDs.
Campaign is created as PAUSED by default for safety.
Safety: returns a preview first; call again with confirm=True to create it.
Refused if budget_amount is above GOOGLE_ADS_MAX_DAILY_BUDGET.
PMax minimum requirements:
- 3+ headlines (max 30 chars each)
- 1+ long headlines (max 90 chars)
- 2+ descriptions (max 90 chars each)
- 1 business name
- Final URLs
- Image assets should be pre-uploaded (use asset resource names)
Args:
customer_id: Google Ads customer ID.
campaign_name: Campaign name.
budget_amount: Daily budget in currency.
asset_group_name: Name for the asset group.
final_urls: Landing page URLs.
headlines: 3-15 headlines (max 30 chars each).
long_headlines: 1-5 long headlines (max 90 chars each).
descriptions: 2-5 descriptions (max 90 chars each).
business_name: Business name for the asset group.
marketing_image_assets: Landscape image asset resource names (1200x628).
square_image_assets: Square image asset resource names (1200x1200).
logo_assets: Logo image asset resource names.
youtube_video_assets: YouTube video asset resource names.
bidding_strategy: 'MAXIMIZE_CONVERSIONS' or 'MAXIMIZE_CONVERSION_VALUE'.
target_cpa: Target CPA (for maximize_conversions with target).
target_roas: Target ROAS (for maximize_conversion_value with target).
status: Initial status -- 'PAUSED' (default) or 'ENABLED'.
confirm: Must be True to actually create the campaign (after reviewing the preview).
|
| list_asset_groupsC | List asset groups in a Performance Max campaign. Args:
customer_id: Google Ads customer ID.
campaign_id: PMax campaign ID.
|
| get_asset_group_detailsB | Get full details of an asset group including linked assets and signals. Args:
customer_id: Google Ads customer ID.
asset_group_id: Asset group ID.
|
| add_assets_to_groupA | Add assets to an existing asset group (batch link operation). Args:
customer_id: Google Ads customer ID.
asset_group_id: Asset group ID.
assets: List of asset dicts, each with:
- asset_resource_name (str): Full asset resource name.
- field_type (str): Asset field type -- 'HEADLINE', 'LONG_HEADLINE',
'DESCRIPTION', 'BUSINESS_NAME', 'MARKETING_IMAGE',
'SQUARE_MARKETING_IMAGE', 'LOGO', 'YOUTUBE_VIDEO', 'CALL_TO_ACTION_SELECTION'.
Example:
assets=[
{"asset_resource_name": "customers/123/assets/456", "field_type": "HEADLINE"},
{"asset_resource_name": "customers/123/assets/789", "field_type": "MARKETING_IMAGE"},
]
|
| remove_asset_from_groupA | Remove an asset from an asset group. Safety: returns a preview first; call again with confirm=True to remove.
Args:
customer_id: Google Ads customer ID.
asset_group_id: Asset group ID.
asset_resource_name: Full resource name of the asset to unlink.
field_type: The field type of the asset link (e.g., 'HEADLINE', 'MARKETING_IMAGE').
confirm_removal: Older name for confirm; either one set to True proceeds.
confirm: Must be True to proceed (after reviewing the preview).
|
| add_audience_signalA | Add audience or search theme signals to a PMax asset group. Audience signals help Google's AI find the right customers. They're suggestions,
not hard targeting constraints.
Args:
customer_id: Google Ads customer ID.
asset_group_id: Asset group ID.
audience_resource_name: Audience resource name (from audience manager).
search_themes: List of search theme strings (keywords that describe your ideal customer).
|
| get_asset_performanceB | Get asset-level performance labels (BEST, GOOD, LOW, etc.) for PMax. Args:
customer_id: Google Ads customer ID.
campaign_id: Optional -- filter to a specific campaign.
asset_group_id: Optional -- filter to a specific asset group.
|
| get_pmax_placement_performanceA | Get PMax placement performance breakdown (Search, YouTube, Display, Discover, Gmail). Args:
customer_id: Google Ads customer ID.
campaign_id: PMax campaign ID.
date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD').
|
| execute_gaqlA | Execute an arbitrary GAQL (Google Ads Query Language) query. This is the most flexible tool -- use it for any read query not covered by other tools.
GAQL reference: https://developers.google.com/google-ads/api/docs/query/overview
Args:
customer_id: Google Ads customer ID.
query: Full GAQL query string (SELECT ... FROM ... WHERE ...).
|
| get_campaign_performanceA | Get campaign performance metrics over a date range. Args:
customer_id: Google Ads customer ID.
date_range: Date range -- use predefined (LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH,
LAST_MONTH, etc.) or custom 'YYYY-MM-DD,YYYY-MM-DD'.
campaign_id: Optional -- filter to a single campaign.
status_filter: Optional -- filter by status (ENABLED, PAUSED, REMOVED).
limit: Max rows to return (default 50).
|
| get_ad_group_performanceC | Get ad group performance metrics. Args:
customer_id: Google Ads customer ID.
campaign_id: Optional -- filter to ad groups in this campaign.
date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD').
limit: Max rows (default 50).
|
| get_search_terms_reportC | Get search terms that triggered your ads. Args:
customer_id: Google Ads customer ID.
campaign_id: Optional campaign filter.
ad_group_id: Optional ad group filter.
date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD').
limit: Max rows (default 100).
|
| get_keyword_performance_reportB | Get keyword-level performance metrics. Args:
customer_id: Google Ads customer ID.
campaign_id: Optional campaign filter.
ad_group_id: Optional ad group filter.
date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD').
limit: Max rows (default 100).
|
| get_account_performance_summaryC | Get account-level daily performance summary. Args:
customer_id: Google Ads customer ID.
date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD').
|
| list_gaql_resourcesA | List available GAQL FROM-clause resources for use with execute_gaql. Returns commonly used resource names that can be queried via GAQL.
|
| get_field_metadataA | Get selectable, filterable, and sortable fields for a GAQL resource. Args:
resource_type: Resource name (e.g., 'campaign', 'ad_group', 'ad_group_ad').
customer_id: Customer ID (uses default if not provided).
|
| convert_microsA | Convert between micros and currency amounts. Google Ads uses micros for monetary values: $1.00 = 1,000,000 micros.
Args:
value: The value to convert.
direction: 'to_micros' (currency to micros) or 'from_micros' (micros to currency).
|