Google Ads MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| google_ads_initializeA | Initialize the Google Ads API connection with OAuth credentials. This must be called before using any other Google Ads tools. Provide your developer token, OAuth2 credentials, and optionally an MCC login customer ID if you're accessing client accounts. Args: developer_token: API developer token client_id: OAuth2 client ID client_secret: OAuth2 client secret refresh_token: OAuth2 refresh token login_customer_id: Optional MCC account ID (without hyphens) Returns: Confirmation message with initialization status |
| google_ads_list_accountsA | List all Google Ads accounts accessible with current credentials. Returns details about all accounts you have access to, including customer IDs, names, currency codes, and whether they are manager accounts. Args: response_format: Output format: 'markdown' for readable or 'json' for structured data Returns: List of accessible accounts with their details |
| google_ads_custom_queryA | Execute a custom Google Ads Query Language (GAQL) query. For advanced users who want to write their own GAQL queries. Use the Google Ads Query Builder to construct queries: https://developers.google.com/google-ads/api/fields/latest/overview_query_builder Args: customer_id: Customer ID (without hyphens) query: GAQL query string response_format: Output format ('json' or 'markdown') Returns: Query results in specified format |
| google_ads_campaign_performanceA | Get comprehensive performance metrics for campaigns. Retrieves key performance indicators including cost, clicks, impressions, CTR, conversions, and more for campaigns in the specified date range. Supports filtering by status and cost thresholds. Args: customer_id: Customer ID without hyphens (e.g., '1234567890') date_range: Predefined date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH, LAST_90_DAYS) campaign_status: Filter by status list e.g. ['ENABLED', 'PAUSED'] min_cost: Minimum cost filter in currency units limit: Maximum number of campaigns to return (1-100) response_format: Output format: 'markdown' or 'json' Returns: Campaign performance data with metrics and analysis |
| google_ads_search_termsB | View actual search queries that triggered your ads. Shows the search terms report with performance metrics to identify new keyword opportunities and negative keyword candidates. Args: customer_id: Customer ID without hyphens campaign_id: Optional campaign ID to filter date_range: Date range for the report limit: Maximum number of search terms to return response_format: Output format: 'markdown' or 'json' Returns: Search terms with performance metrics |
| google_ads_recommendationsB | Get AI-powered optimization recommendations from Google. Retrieve Google's automated recommendations for improving campaign performance, including keyword suggestions, bid adjustments, and budget recommendations. Args: customer_id: Customer ID without hyphens recommendation_types: Filter by recommendation types (e.g., ['KEYWORD', 'TARGET_CPA_OPT']) limit: Maximum number of recommendations (1-100) response_format: Output format: 'markdown' or 'json' Returns: List of actionable optimization recommendations |
| google_ads_create_campaignB | Create a new Google Ads campaign. Args: customer_id: Customer ID (without hyphens) campaign_name: Name for the campaign campaign_type: Type of campaign (SEARCH, DISPLAY, SHOPPING, VIDEO, PERFORMANCE_MAX, APP, LOCAL) daily_budget: Daily budget in currency units (e.g., 50.00 for $50/day) bidding_strategy: Bidding strategy (MANUAL_CPC, MAXIMIZE_CONVERSIONS, TARGET_CPA, TARGET_ROAS, etc.) status: Initial status (ENABLED or PAUSED, default: PAUSED for safety) enable_search_network: Target Google search network (default: True) enable_search_partners: Target search partner sites (default: False) enable_display_network: Target display network (default: False) start_date: Campaign start date in YYYY-MM-DD format (optional) end_date: Campaign end date in YYYY-MM-DD format (optional) target_cpa: Target CPA in currency units (required for TARGET_CPA strategy) target_roas: Target ROAS as decimal (required for TARGET_ROAS strategy) Returns: Success message with campaign details |
| google_ads_update_campaignB | Update campaign settings. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to update campaign_name: New campaign name (optional) status: New status (ENABLED, PAUSED, or REMOVED) (optional) start_date: New start date in YYYY-MM-DD format (optional) end_date: New end date in YYYY-MM-DD format (optional) Returns: Success message with updated fields |
| google_ads_update_campaign_status_v2B | Update campaign status (enable, pause, or remove). Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID status: New status (ENABLED, PAUSED, or REMOVED) Returns: Success message |
| google_ads_update_campaign_budget_v2A | Update campaign daily budget. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID daily_budget: New daily budget in currency units (e.g., 100.00 for $100/day) Returns: Success message with budget details |
| google_ads_set_campaign_locationsA | Set location targeting for a campaign. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID location_ids: List of geo target constant IDs to target negative_location_ids: List of geo target constant IDs to exclude (optional) Returns: Success message Note: Common location IDs:
|
| google_ads_set_campaign_languagesA | Set language targeting for a campaign. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID language_codes: List of language constant IDs Returns: Success message Note: Common language IDs:
|
| google_ads_get_campaign_detailsC | Get detailed information about a campaign. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID Returns: Detailed campaign information |
| google_ads_set_campaign_scheduleA | Set ad scheduling (dayparting) for a campaign. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID schedules: List of schedule dictionaries with: - day_of_week: Day name (MONDAY, TUESDAY, etc.) or numeric (0=Sunday, 6=Saturday) - start_hour: Hour to start (0-23) - start_minute: Minute to start (0, 15, 30, 45) - end_hour: Hour to end (0-24) - end_minute: Minute to end (0, 15, 30, 45) - bid_modifier: Optional bid adjustment (1.2 = +20%, 0.8 = -20%) Returns: Success message with schedule summary Example: schedules = [ { "day_of_week": "MONDAY", "start_hour": 9, "start_minute": 0, "end_hour": 17, "end_minute": 0, "bid_modifier": 1.2 } ] |
| google_ads_duplicate_campaignA | Duplicate an existing campaign with all settings. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to duplicate new_name: Name for the new campaign include_ad_groups: Whether to copy ad groups and their content (default: False) Returns: Success message with new campaign details Note: The new campaign will be created in PAUSED status for safety. |
| google_ads_create_shared_budgetA | Create a shared budget that can be used across multiple campaigns. Args: customer_id: Customer ID (without hyphens) budget_name: Name for the shared budget daily_amount: Daily budget amount in currency units (e.g., 100.00 for $100/day) delivery_method: Budget delivery method (STANDARD or ACCELERATED, default: STANDARD) Returns: Success message with budget resource name Note: After creating a shared budget, use google_ads_assign_shared_budget to assign it to campaigns. |
| google_ads_assign_shared_budgetA | Assign a shared budget to a campaign. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to update budget_resource_name: Resource name of the shared budget (from google_ads_create_shared_budget) Returns: Success message Note: The campaign will switch from its individual budget to the shared budget. |
| google_ads_add_campaign_exclusionsA | Add placement and IP exclusions to a campaign. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID placement_exclusions: List of URLs/apps to exclude (e.g., ["example.com", "youtube.com/channel/ABC"]) ip_exclusions: List of IP addresses to exclude (e.g., ["192.168.1.1", "10.0.0.0/24"]) Returns: Success message with exclusion summary Note:
|
| google_ads_set_campaign_url_suffixA | Set the Final URL suffix for a campaign. The suffix is appended to all ad landing page URLs in this campaign. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to update url_suffix: URL parameters to append (e.g., 'utm_source=google&utm_medium=cpc&sm_kw=bollards'). Pass empty string to clear. Returns: Success message with the applied suffix |
| google_ads_get_url_suffixesA | Get current Final URL suffixes and tracking URL templates for campaigns and their ad groups. Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter to a specific campaign. If omitted, returns all enabled campaigns. Returns: Formatted table of URL suffixes and tracking templates |
| google_ads_create_ad_groupA | Create a new ad group within a campaign. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to create ad group in ad_group_name: Name for the ad group cpc_bid: Cost-per-click bid in currency units (e.g., 1.50 for $1.50) status: Initial status (ENABLED or PAUSED, default: PAUSED) ad_group_type: Optional ad group type (SEARCH_STANDARD, DISPLAY_STANDARD, etc.) Returns: Success message with ad group details Note: Ad groups are created PAUSED by default for safety. |
| google_ads_update_ad_groupB | Update ad group settings. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID to update ad_group_name: New ad group name (optional) status: New status (ENABLED, PAUSED, or REMOVED) (optional) cpc_bid: New CPC bid in currency units (optional) Returns: Success message with updated fields |
| google_ads_update_ad_group_statusC | Update ad group status (enable, pause, or remove). Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID status: New status (ENABLED, PAUSED, or REMOVED) Returns: Success message |
| google_ads_update_ad_group_bidB | Update ad group CPC bid. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID cpc_bid: New CPC bid in currency units (e.g., 1.50 for $1.50) Returns: Success message with bid details |
| google_ads_get_ad_group_detailsC | Get detailed information about an ad group. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID Returns: Detailed ad group information |
| google_ads_list_ad_groupsA | List ad groups with optional filters. Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter by status: Optional status to filter by (ENABLED, PAUSED) Returns: List of ad groups with key metrics |
| google_ads_get_ad_group_performanceB | Get performance metrics for an ad group over a date range. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.) Returns: Performance metrics |
| google_ads_bulk_update_ad_group_statusA | Update status for multiple ad groups at once. Args: customer_id: Customer ID (without hyphens) ad_group_ids: List of ad group IDs to update status: New status for all ad groups (ENABLED, PAUSED, or REMOVED) Returns: Success message with count of updated ad groups Example: ad_group_ids = ["123456789", "987654321", "456789123"] |
| google_ads_set_ad_group_url_suffixA | Set the Final URL suffix for an ad group. This overrides the campaign-level suffix for ads in this ad group. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID to update url_suffix: URL parameters to append (e.g., 'utm_source=google&utm_medium=cpc&sm_kw=removable-bollards'). Pass empty string to clear and inherit campaign suffix. Returns: Success message with the applied suffix |
| google_ads_batch_set_ad_group_url_suffixesA | Bulk set Final URL suffixes for multiple ad groups in one API call. Args: customer_id: Customer ID (without hyphens) ad_group_suffixes: JSON string containing array of objects with 'ad_group_id' and 'url_suffix'. Example: [{"ad_group_id": "123", "url_suffix": "sm_kw=bollards"}, {"ad_group_id": "456", "url_suffix": "sm_kw=wheel-stops"}] Returns: Success message with count of updated ad groups |
| google_ads_add_keywordsA | Add keywords to an ad group. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID keywords: List of keyword dicts with 'text' and 'match_type' (EXACT, PHRASE, BROAD) cpc_bid: Optional default CPC bid for all keywords in currency units Returns: Success message with keyword count Example: keywords = [ {"text": "running shoes", "match_type": "PHRASE"}, {"text": "nike shoes", "match_type": "EXACT"}, {"text": "athletic footwear", "match_type": "BROAD"} ] |
| google_ads_add_negative_keywordsA | Add negative keywords to an ad group. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID keywords: List of keyword dicts with 'text' and 'match_type' Returns: Success message Example: keywords = [ {"text": "cheap", "match_type": "BROAD"}, {"text": "free", "match_type": "BROAD"} ] |
| google_ads_add_shared_negative_keywordsA | Add negative keywords to a shared negative keyword list (account-level). This adds keywords to an existing shared negative keyword list that can be applied across multiple campaigns for account-level negative keyword management. Args: customer_id: Customer ID (without hyphens) shared_set_id: The ID of the shared negative keyword list keywords: List of keyword dicts with 'text' and 'match_type' Returns: Success message with count of keywords added Example: keywords = [ {"text": "cheap", "match_type": "BROAD"}, {"text": "free", "match_type": "BROAD"}, {"text": "jobs", "match_type": "BROAD"} ] |
| google_ads_update_keyword_bidA | Update keyword CPC bid. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Keyword criterion ID cpc_bid: New CPC bid in currency units (e.g., 1.50 for $1.50) Returns: Success message |
| google_ads_update_keyword_statusB | Update keyword status (enable, pause, or remove). Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Keyword criterion ID status: New status (ENABLED, PAUSED, or REMOVED) Returns: Success message |
| google_ads_get_keyword_performanceC | Get keyword performance metrics. Args: customer_id: Customer ID (without hyphens) ad_group_id: Optional ad group ID to filter by date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.) Returns: Keyword performance report |
| google_ads_list_keywordsC | List all keywords in an ad group. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID Returns: List of keywords |
| google_ads_get_keyword_quality_scoreB | Get detailed quality score information for a keyword. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Keyword criterion ID Returns: Quality score details |
| google_ads_get_search_terms_for_keywordC | Get search terms that triggered ads for keywords in an ad group. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Optional specific keyword criterion ID date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.) Returns: Search terms report with performance data |
| google_ads_bulk_add_keywordsC | Bulk add multiple keywords with the same match type. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID keyword_texts: List of keyword text strings match_type: Match type for all keywords (EXACT, PHRASE, or BROAD, default: PHRASE) cpc_bid: Optional CPC bid for all keywords in currency units Returns: Success message Example: keyword_texts = ["running shoes", "athletic shoes", "sport shoes"] |
| google_ads_bulk_update_keyword_bidsA | Update bids for multiple keywords at once. Args: customer_id: Customer ID (without hyphens) bid_updates: List of dicts with 'ad_group_id', 'criterion_id', 'cpc_bid' Returns: Success message Example: bid_updates = [ {"ad_group_id": "123", "criterion_id": "456", "cpc_bid": 2.50}, {"ad_group_id": "123", "criterion_id": "789", "cpc_bid": 3.00} ] |
| google_ads_estimate_keyword_trafficB | Get traffic estimates for keywords. Args: customer_id: Customer ID (without hyphens) keywords: List of keyword texts to estimate location_ids: Optional location IDs for targeting (e.g., ["2840"] for United States) Returns: Traffic estimates Note: This is a placeholder. Full implementation requires Keyword Plan API setup. |
| google_ads_keyword_ideasA | Get keyword ideas from Google Ads Keyword Planner. Generate keyword suggestions based on seed keywords or a webpage URL. Includes search volume, competition level, and bid estimates. Args: customer_id: Google Ads customer ID (10 digits, no hyphens) seed_keywords: Comma-separated seed keywords (e.g., "running shoes,nike") page_url: Optional URL to extract keywords from location_ids: Comma-separated location criterion IDs (default: 2840 = US) language_id: Language criterion ID (default: 1000 = English) keyword_plan_network: Network - GOOGLE_SEARCH, GOOGLE_SEARCH_AND_PARTNERS, or YOUTUBE response_format: Output format (markdown or json) Returns: Keyword ideas with metrics (search volume, competition, bids) Example: google_ads_keyword_ideas( customer_id="1234567890", seed_keywords="running shoes,athletic footwear", location_ids="2840", # US language_id="1000" # English ) Common Location IDs: - 2840: United States - 2826: United Kingdom - 2124: Canada - 2036: Australia Competition Levels: - LOW: Easy to rank for - MEDIUM: Moderate competition - HIGH: Very competitive |
| google_ads_keyword_forecastA | Forecast traffic metrics for specific keywords. Get projected impressions, clicks, and costs for keywords over a future time period. Args: customer_id: Google Ads customer ID (10 digits, no hyphens) keywords_json: JSON array of keywords with text and match_type Example: [{"text": "running shoes", "match_type": "BROAD"}] location_ids: Comma-separated location criterion IDs (default: 2840 = US) language_id: Language criterion ID (default: 1000 = English) cpc_bid: CPC bid amount for forecast (default: 1.0) date_interval: Forecast period - NEXT_WEEK, NEXT_MONTH, or NEXT_QUARTER response_format: Output format (markdown or json) Returns: Traffic forecast with projected metrics Example: google_ads_keyword_forecast( customer_id="1234567890", keywords_json='[{"text": "running shoes", "match_type": "BROAD"}, {"text": "nike shoes", "match_type": "PHRASE"}]', cpc_bid=2.5, date_interval="NEXT_MONTH" ) Match Types: - BROAD: Matches variations and related searches - PHRASE: Matches phrase and close variants - EXACT: Matches exact keyword only Date Intervals: - NEXT_WEEK: 7-day forecast - NEXT_MONTH: 30-day forecast - NEXT_QUARTER: 90-day forecast |
| google_ads_create_responsive_search_adA | Create a Responsive Search Ad (RSA). Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID headlines: List of 3-15 headline texts (max 30 chars each) descriptions: List of 2-4 description texts (max 90 chars each) final_urls: List of final URLs (landing pages) path1: Optional display path 1 (max 15 chars) path2: Optional display path 2 (max 15 chars) status: Initial status (ENABLED or PAUSED, default: PAUSED) Returns: Success message with ad details Example: headlines = [ "Premium Running Shoes", "Free Shipping Today", "Shop Nike & Adidas" ] descriptions = [ "Browse our selection of top running shoes", "30-day money back guarantee" ] final_urls = ["https://example.com/shoes"] |
| google_ads_update_ad_statusB | Update ad status (enable, pause, or remove). Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID ad_id: Ad ID status: New status (ENABLED, PAUSED, or REMOVED) Returns: Success message |
| google_ads_list_adsB | List all ads in an ad group. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID Returns: List of ads with details |
| google_ads_get_ad_detailsC | Get detailed information about an ad. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID ad_id: Ad ID Returns: Detailed ad information |
| google_ads_get_ad_performanceB | Get ad performance metrics. Args: customer_id: Customer ID (without hyphens) ad_group_id: Optional ad group ID to filter date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.) Returns: Ad performance report |
| google_ads_check_ad_approval_statusB | Check ad approval and policy status. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID ad_id: Ad ID Returns: Approval status details |
| google_ads_bulk_update_ad_statusA | Update status for multiple ads at once. Args: customer_id: Customer ID (without hyphens) status_updates: List of dicts with 'ad_group_id' and 'ad_id' status: New status for all ads (ENABLED, PAUSED, or REMOVED) Returns: Success message Example: status_updates = [ {"ad_group_id": "123", "ad_id": "456"}, {"ad_group_id": "123", "ad_id": "789"} ] |
| google_ads_compare_ad_performanceC | Compare performance between two ads (A/B testing). Args: customer_id: Customer ID (without hyphens) ad_id_1: First ad ID ad_id_2: Second ad ID date_range: Date range for comparison Returns: Comparison report |
| google_ads_create_bidding_strategyA | Create a portfolio bidding strategy for shared use across campaigns. Portfolio bidding strategies allow you to apply the same automated bidding strategy across multiple campaigns, enabling Google's AI to optimize bids based on a larger pool of data. Strategy Types:
Args: customer_id: Customer ID (without hyphens) strategy_name: Name for the bidding strategy (e.g., "High Value Customers") strategy_type: Strategy type (TARGET_CPA, TARGET_ROAS, MAXIMIZE_CONVERSIONS, etc.) target_cpa: Target cost per acquisition in currency units (required for TARGET_CPA) target_roas: Target return on ad spend as decimal (e.g., 4.0 = 400% ROAS) (for TARGET_ROAS) target_impression_share: Target impression share 0.0-1.0 (e.g., 0.75 = 75%) (for TARGET_IMPRESSION_SHARE) impression_share_location: Where to target impressions (ANYWHERE_ON_PAGE, TOP_OF_PAGE, ABSOLUTE_TOP_OF_PAGE) max_cpc_bid: Maximum CPC bid limit in currency units (optional for TARGET_IMPRESSION_SHARE) enhanced_cpc: Enable enhanced CPC for MANUAL_CPC strategy Returns: Success message with strategy ID and configuration details Example: google_ads_create_bidding_strategy( customer_id="1234567890", strategy_name="Target CPA - $25", strategy_type="TARGET_CPA", target_cpa=25.00 ) |
| google_ads_update_bidding_strategyB | Update an existing portfolio bidding strategy's settings. Args: customer_id: Customer ID (without hyphens) bidding_strategy_id: Bidding strategy ID to update strategy_name: New name for the strategy (optional) target_cpa: New target CPA in currency units (for TARGET_CPA strategies) target_roas: New target ROAS as decimal (for TARGET_ROAS strategies) target_impression_share: New target impression share 0.0-1.0 (for TARGET_IMPRESSION_SHARE) max_cpc_bid: New maximum CPC bid limit (for TARGET_IMPRESSION_SHARE) Returns: Success message with updated configuration Example: google_ads_update_bidding_strategy( customer_id="1234567890", bidding_strategy_id="12345", target_cpa=30.00 ) |
| google_ads_assign_bidding_strategyA | Assign a portfolio bidding strategy to a campaign. This replaces the campaign's current bidding strategy with the specified portfolio strategy, allowing Google's AI to optimize bids across all campaigns using this strategy. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to update bidding_strategy_id: Portfolio bidding strategy ID to assign Returns: Success message confirming assignment Example: google_ads_assign_bidding_strategy( customer_id="1234567890", campaign_id="111111111", bidding_strategy_id="12345" ) |
| google_ads_get_bidding_strategy_performanceA | Get performance metrics for a portfolio bidding strategy. Shows aggregate performance across all campaigns using this strategy, including impressions, clicks, conversions, and cost metrics. Args: customer_id: Customer ID (without hyphens) bidding_strategy_id: Bidding strategy ID date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.) Returns: Performance metrics in markdown format Example: google_ads_get_bidding_strategy_performance( customer_id="1234567890", bidding_strategy_id="12345", date_range="LAST_30_DAYS" ) |
| google_ads_set_device_bid_adjustmentsA | Set bid adjustments for different device types. Bid modifiers allow you to increase or decrease bids based on the device used by the searcher. Values range from 0.1 (90% decrease) to 10.0 (900% increase). Common adjustments:
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID mobile_modifier: Bid modifier for mobile devices (0.1 to 10.0) desktop_modifier: Bid modifier for desktop devices (0.1 to 10.0) tablet_modifier: Bid modifier for tablet devices (0.1 to 10.0) Returns: Success message with applied adjustments Example: google_ads_set_device_bid_adjustments( customer_id="1234567890", campaign_id="111111111", mobile_modifier=1.3, # Increase mobile bids by 30% desktop_modifier=1.0, # No change for desktop tablet_modifier=0.8 # Decrease tablet bids by 20% ) |
| google_ads_set_ad_schedule_bid_adjustmentsA | Set bid adjustments for ad scheduling (dayparting). Control when your ads show and adjust bids based on time of day and day of week. This is useful for targeting business hours, weekends, or other high-converting periods. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID schedules: List of schedule configurations, each containing: - day_of_week: Day (MONDAY, TUESDAY, etc.) - start_hour: Start hour (0-23) - start_minute: Start minute (0, 15, 30, 45) - end_hour: End hour (0-24) - end_minute: End minute (0, 15, 30, 45) - bid_modifier: Bid adjustment (0.1 to 10.0) Returns: Success message with created schedules Example: google_ads_set_ad_schedule_bid_adjustments( customer_id="1234567890", campaign_id="111111111", schedules=[ { "day_of_week": "MONDAY", "start_hour": 9, "start_minute": 0, "end_hour": 17, "end_minute": 0, "bid_modifier": 1.5 # Increase bids 50% during business hours }, { "day_of_week": "SATURDAY", "start_hour": 0, "start_minute": 0, "end_hour": 24, "end_minute": 0, "bid_modifier": 0.7 # Decrease bids 30% on weekends } ] ) |
| google_ads_list_bid_adjustmentsB | List all bid adjustments for a campaign (devices, locations, demographics, ad schedule). Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID Returns: All bid adjustments in markdown format Example: google_ads_list_bid_adjustments( customer_id="1234567890", campaign_id="111111111" ) |
| google_ads_get_bid_simulatorA | Get bid simulation data showing potential performance at different bid levels. Bid simulators use historical data to project how different bid amounts would have affected impressions, clicks, cost, and conversions. This helps you find the optimal bid level for your goals. Note: Simulations require at least 7 days of historical data. Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID for campaign-level simulation criterion_id: Optional keyword criterion ID for keyword-level simulation Returns: Bid simulation data with projected performance at different bid levels Example: google_ads_get_bid_simulator( customer_id="1234567890", campaign_id="111111111" ) |
| google_ads_get_bid_recommendationsA | Get AI-powered bid recommendations from Google Ads. Google's recommendation engine analyzes your account performance and suggests specific bid changes to improve results. Recommendations may include:
Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter recommendations Returns: List of bid recommendations with projected impact Example: google_ads_get_bid_recommendations( customer_id="1234567890", campaign_id="111111111" ) |
| google_ads_list_bidding_strategiesA | List all portfolio bidding strategies in the account. Args: customer_id: Customer ID (without hyphens) Returns: List of all portfolio bidding strategies with basic info Example: google_ads_list_bidding_strategies( customer_id="1234567890" ) |
| google_ads_get_bidding_strategy_detailsA | Get full configuration details for a portfolio bidding strategy. Args: customer_id: Customer ID (without hyphens) bidding_strategy_id: Bidding strategy ID Returns: Complete strategy configuration and settings Example: google_ads_get_bidding_strategy_details( customer_id="1234567890", bidding_strategy_id="12345" ) |
| google_ads_get_recommendationsA | Get optimization recommendations from Google Ads. Google's AI analyzes your account and suggests specific optimizations to improve performance. Recommendations can include keyword additions, budget increases, bidding strategy changes, and more. Args: customer_id: Customer ID (without hyphens) recommendation_types: Optional list of recommendation types to filter (e.g., ["KEYWORD", "CAMPAIGN_BUDGET", "TARGET_CPA_OPT_IN"]) campaign_id: Optional campaign ID to filter recommendations response_format: Output format (markdown or json) Returns: List of recommendations with projected impact Example: google_ads_get_recommendations( customer_id="1234567890", recommendation_types=["KEYWORD", "CAMPAIGN_BUDGET"] ) Common Recommendation Types:
|
| google_ads_apply_recommendationA | Apply a single optimization recommendation. This will automatically implement the suggested optimization. For example:
Args: customer_id: Customer ID (without hyphens) recommendation_resource_name: Resource name of the recommendation to apply (obtained from google_ads_get_recommendations) Returns: Success message confirming application Example: google_ads_apply_recommendation( customer_id="1234567890", recommendation_resource_name="customers/1234567890/recommendations/12345" ) Warning: This will make changes to your account. Review the recommendation details carefully before applying. |
| google_ads_dismiss_recommendationA | Dismiss a recommendation without applying it. Use this when you don't want to apply a recommendation and want to remove it from your recommendations list. Args: customer_id: Customer ID (without hyphens) recommendation_resource_name: Resource name of the recommendation to dismiss Returns: Success message confirming dismissal Example: google_ads_dismiss_recommendation( customer_id="1234567890", recommendation_resource_name="customers/1234567890/recommendations/12345" ) |
| google_ads_bulk_apply_recommendationsA | Apply multiple recommendations at once. This is useful for applying several recommendations efficiently in a single operation. Args: customer_id: Customer ID (without hyphens) recommendation_resource_names: List of recommendation resource names to apply Returns: Success message with count of applied recommendations Example: google_ads_bulk_apply_recommendations( customer_id="1234567890", recommendation_resource_names=[ "customers/1234567890/recommendations/12345", "customers/1234567890/recommendations/12346", "customers/1234567890/recommendations/12347" ] ) Warning: This will make changes to your account. Review all recommendations carefully before applying in bulk. |
| google_ads_bulk_dismiss_recommendationsA | Dismiss multiple recommendations at once. Args: customer_id: Customer ID (without hyphens) recommendation_resource_names: List of recommendation resource names to dismiss Returns: Success message with count of dismissed recommendations Example: google_ads_bulk_dismiss_recommendations( customer_id="1234567890", recommendation_resource_names=[ "customers/1234567890/recommendations/12345", "customers/1234567890/recommendations/12346" ] ) |
| google_ads_get_optimization_scoreA | Get the account's optimization score (0-100%). The optimization score represents how well your account is set up to perform. A score of 100% means your account is fully optimized based on Google's recommendations. Lower scores indicate room for improvement. The score is calculated based on:
Args: customer_id: Customer ID (without hyphens) Returns: Optimization score with breakdown by recommendation type Example: google_ads_get_optimization_score( customer_id="1234567890" ) |
| google_ads_get_recommendation_insightsB | Get aggregate insights about recommendations and their potential impact. This provides a high-level summary of all recommendations, grouped by type, with total projected impact across all recommendations. Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter Returns: Aggregate recommendation insights with total potential impact Example: google_ads_get_recommendation_insights( customer_id="1234567890" ) |
| google_ads_apply_recommendations_by_typeA | Apply all recommendations of a specific type. This is useful for bulk-applying all recommendations of a certain category, such as all KEYWORD recommendations or all CAMPAIGN_BUDGET recommendations. Args: customer_id: Customer ID (without hyphens) recommendation_type: Type of recommendations to apply (KEYWORD, CAMPAIGN_BUDGET, TARGET_CPA_OPT_IN, etc.) max_to_apply: Optional maximum number of recommendations to apply Returns: Success message with count of applied recommendations Example: google_ads_apply_recommendations_by_type( customer_id="1234567890", recommendation_type="KEYWORD", max_to_apply=10 ) Common Types:
Warning: This will make changes to your account. Review recommendations of this type carefully before bulk applying. |
| google_ads_get_recommendation_historyA | Get history of applied and dismissed recommendations. This shows what recommendations were applied or dismissed in a given time period, along with who made the changes. Args: customer_id: Customer ID (without hyphens) start_date: Start date (YYYY-MM-DD) end_date: End date (YYYY-MM-DD) Returns: Recommendation change history Example: google_ads_get_recommendation_history( customer_id="1234567890", start_date="2025-11-01", end_date="2025-12-16" ) |
| google_ads_auto_apply_safe_recommendationsA | Auto-apply low-risk, high-impact recommendations. This tool identifies "safe" recommendations that are unlikely to negatively impact performance and applies them automatically. Safe recommendations include:
Higher risk recommendations (budget increases, bidding strategy changes) are excluded and should be reviewed manually. Args: customer_id: Customer ID (without hyphens) dry_run: If True, shows what would be applied without actually applying (default: True) Returns: List of recommendations that were (or would be) applied Example: # Preview what would be applied google_ads_auto_apply_safe_recommendations( customer_id="1234567890", dry_run=True ) Warning: Even "safe" recommendations can impact performance. Use dry_run=True first to review what would be applied. |
| google_ads_create_user_listA | Create a remarketing user list (audience). User lists allow you to target specific groups of users based on their interactions with your business. Types include:
Args: customer_id: Customer ID (without hyphens) list_name: Name for the user list (e.g., "Newsletter Subscribers") description: Optional description membership_days: How long users stay in the list (1-540 days, default: 540) list_type: Type of list (CRMBASED or RULE_BASED) url_contains: For RULE_BASED lists, URL patterns to match (OR logic). e.g. ["arcadium.com.au"] or ["/escape-rooms", "/pricing"] Returns: Success message with user list ID Example: google_ads_create_user_list( customer_id="1234567890", list_name="All Site Visitors", description="All visitors to our website", membership_days=90, list_type="RULE_BASED", url_contains=["example.com"] ) Note: RULE_BASED lists require remarketing tags on your website/app. |
| google_ads_upload_customer_matchA | Upload Customer Match data (emails, phones, addresses). Customer Match allows you to use your customer data to reach them on Google Search, YouTube, Gmail, and Display Network. Data is hashed before upload for privacy. You can either upload to an existing list (provide user_list_id) or create a new list (provide list_name). Args: customer_id: Customer ID (without hyphens) user_list_id: Existing user list ID to upload to (optional) list_name: Name for new list (required if user_list_id not provided) emails: List of email addresses phones: List of phone numbers (E.164 format recommended: +12345678900) first_names: List of first names (must match emails/phones index) last_names: List of last names (must match emails/phones index) countries: List of country codes (e.g., "US", "UK") zip_codes: List of postal codes Returns: Success message with upload job details Example: google_ads_upload_customer_match( customer_id="1234567890", list_name="Email Newsletter Subscribers", emails=[ "customer1@example.com", "customer2@example.com", "customer3@example.com" ] ) Privacy Note: All data is automatically hashed with SHA256 before upload. Google cannot see the original data. Match Rate: Typically 30-70% of uploaded records will match to Google users. |
| google_ads_get_customer_match_statusA | Get Customer Match upload status, match rate, and list size. Check this 24-48 hours after uploading to see how many records matched and if the list is large enough for targeting (minimum 1,000). Args: customer_id: Customer ID (without hyphens) user_list_id: User list ID to check Returns: Upload status, match rate, and list sizes Example: google_ads_get_customer_match_status( customer_id="1234567890", user_list_id="12345" ) |
| google_ads_add_audience_to_campaignA | Add audience targeting to a campaign. Two modes available:
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID user_list_id: User list ID to target targeting_mode: OBSERVATION (monitor) or TARGETING (restrict reach) Returns: Success message Example (Observation): google_ads_add_audience_to_campaign( customer_id="1234567890", campaign_id="111111111", user_list_id="12345", targeting_mode="OBSERVATION" ) Example (Targeting): google_ads_add_audience_to_campaign( customer_id="1234567890", campaign_id="222222222", user_list_id="12345", targeting_mode="TARGETING" ) Recommendation: Start with OBSERVATION mode to gather performance data before switching to TARGETING mode. |
| google_ads_add_audience_to_ad_groupA | Add audience targeting to an ad group. Similar to campaign-level audience targeting, but applied at the ad group level for more granular control. Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID user_list_id: User list ID to target targeting_mode: OBSERVATION or TARGETING Returns: Success message Example: google_ads_add_audience_to_ad_group( customer_id="1234567890", ad_group_id="222222222", user_list_id="12345", targeting_mode="OBSERVATION" ) |
| google_ads_set_audience_exclusionsA | Exclude audiences from a campaign. Prevent your ads from showing to specific audiences. Common use cases:
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID user_list_ids: List of user list IDs to exclude Returns: Success message Example: google_ads_set_audience_exclusions( customer_id="1234567890", campaign_id="111111111", user_list_ids=["12345", "12346", "12347"] ) Use Case: Exclude "Past Purchasers" list from new customer acquisition campaign |
| google_ads_get_audience_performanceA | Get performance metrics by audience. See which audiences are driving the best results in terms of clicks, conversions, and ROI. Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter date_range: Date range (TODAY, LAST_7_DAYS, LAST_30_DAYS, etc.) Returns: Performance breakdown by audience Example: google_ads_get_audience_performance( customer_id="1234567890", campaign_id="111111111", date_range="LAST_30_DAYS" ) |
| google_ads_list_user_listsA | List all user lists (audiences) in the account. Args: customer_id: Customer ID (without hyphens) list_type: Optional filter by type (CRMBASED, RULE_BASED, SIMILAR, LOGICAL) Returns: List of all user lists with details Example: google_ads_list_user_lists( customer_id="1234567890", list_type="CRMBASED" ) |
| google_ads_search_google_audiencesA | Search for Google's predefined audiences (In-Market, Affinity). Google provides hundreds of pre-built audience segments based on user interests and purchase intent. Search to find relevant audiences for your business. Args: customer_id: Customer ID (without hyphens) search_term: Search term (e.g., "coffee", "fitness", "travel") Returns: List of matching Google audiences Example: google_ads_search_google_audiences( customer_id="1234567890", search_term="coffee" ) Common Categories:
|
| google_ads_get_user_list_detailsA | Get detailed information about a specific user list. Args: customer_id: Customer ID (without hyphens) user_list_id: User list ID Returns: Detailed user list information Example: google_ads_get_user_list_details( customer_id="1234567890", user_list_id="12345" ) |
| google_ads_create_conversion_actionA | Create a conversion action for tracking. Args: customer_id: Customer ID (without hyphens) conversion_name: Name for the conversion (e.g., "Purchase", "Lead Form") category: Conversion category (PURCHASE, SIGNUP, LEAD, etc.) origin: Where conversions occur (WEBSITE, APP, CALL_FROM_ADS, IMPORT) value: Optional default conversion value always_use_default_value: If True, always use default value (ignore transaction-specific values) count_type: ONE (count once per click) or MANY (count every conversion) click_lookback_days: Attribution window for clicks (1-90 days) view_lookback_days: Attribution window for views (1-30 days) Returns: Success message with conversion action ID and tag snippet Example: google_ads_create_conversion_action( customer_id="1234567890", conversion_name="Purchase", category="PURCHASE", origin="WEBSITE", value=50.00, count_type="ONE" ) Categories: PURCHASE, SIGNUP, LEAD, DOWNLOAD, ADD_TO_CART, BEGIN_CHECKOUT, PHONE_CALL_LEAD, SUBMIT_LEAD_FORM, BOOK_APPOINTMENT, etc. |
| google_ads_list_conversion_actionsC | List all conversion actions in the account. Args: customer_id: Customer ID (without hyphens) include_removed: Include removed conversions response_format: Output format (markdown or json) Returns: List of all conversion actions Example: google_ads_list_conversion_actions( customer_id="1234567890" ) |
| google_ads_get_conversion_tagA | Get the tracking tag/snippet for a website conversion action. Returns the Global Site Tag and Event Snippet that must be installed on your website to track conversions. Args: customer_id: Customer ID (without hyphens) conversion_action_id: Conversion action ID Returns: Tracking tag code snippets Example: google_ads_get_conversion_tag( customer_id="1234567890", conversion_action_id="12345" ) |
| google_ads_upload_offline_conversionsA | Upload offline conversion data (CRM conversions, phone orders, store visits). Use this to import conversions that happen offline but originated from Google Ads clicks. You must have the GCLID (Google Click ID) for each conversion. Args: customer_id: Customer ID (without hyphens) conversion_action_id: Conversion action ID (must be IMPORT origin) conversions: List of conversion dictionaries with: - gclid: Google Click ID (required) - conversion_date_time: When conversion occurred (required) Format: "YYYY-MM-DD HH:MM:SS+TZ" (e.g., "2025-12-16 14:30:00-08:00") - conversion_value: Conversion value (optional) - currency_code: Currency code (optional, e.g., "USD") Returns: Upload success message with count Example: google_ads_upload_offline_conversions( customer_id="1234567890", conversion_action_id="12345", conversions=[ { "gclid": "Cj0KCQiA...", "conversion_date_time": "2025-12-15 10:30:00-08:00", "conversion_value": 150.00, "currency_code": "USD" }, { "gclid": "Cj0KCQiB...", "conversion_date_time": "2025-12-15 14:20:00-08:00", "conversion_value": 200.00, "currency_code": "USD" } ] ) GCLID Capture: Add {lpurl}?gclid={gclid} to landing page URLs to capture GCLID. |
| google_ads_upload_call_conversionsB | Upload call conversion data for phone calls that converted. Args: customer_id: Customer ID (without hyphens) conversion_action_id: Call conversion action ID call_conversions: List with: - caller_id: Phone number that called (E.164 format: +12345678900) - call_start_date_time: When call started - conversion_date_time: When call qualified as conversion - conversion_value: Optional conversion value - currency_code: Optional currency Returns: Upload success message Example: google_ads_upload_call_conversions( customer_id="1234567890", conversion_action_id="12345", call_conversions=[ { "caller_id": "+12025551234", "call_start_date_time": "2025-12-15 10:30:00-08:00", "conversion_date_time": "2025-12-15 10:35:00-08:00", "conversion_value": 500.00, "currency_code": "USD" } ] ) |
| google_ads_get_conversion_performanceC | Get conversion performance metrics. Args: customer_id: Customer ID (without hyphens) conversion_action_id: Optional specific conversion date_range: Date range Returns: Conversion performance data Example: google_ads_get_conversion_performance( customer_id="1234567890", date_range="LAST_30_DAYS" ) |
| google_ads_set_attribution_modelA | Set attribution model for a conversion action. Attribution models determine how credit for conversions is assigned to touchpoints in the customer journey. Args: customer_id: Customer ID (without hyphens) conversion_action_id: Conversion action ID attribution_model: Attribution model to use Returns: Success message Example: google_ads_set_attribution_model( customer_id="1234567890", conversion_action_id="12345", attribution_model="DATA_DRIVEN" ) Attribution Models:
Recommendation: Use DATA_DRIVEN for accounts with 300+ conversions/month. |
| google_ads_upload_store_salesA | Upload store sales data (in-store purchases from online clicks). This is a specialized form of offline conversion upload for retail businesses tracking in-store purchases that originated from online ads. Args: customer_id: Customer ID (without hyphens) conversion_action_id: Store sales conversion action ID store_sales: List of sales with gclid, timestamp, value Returns: Upload success message Example: google_ads_upload_store_sales( customer_id="1234567890", conversion_action_id="12345", store_sales=[ { "gclid": "Cj0KCQiA...", "conversion_date_time": "2025-12-15 15:45:00-08:00", "conversion_value": 85.50, "currency_code": "USD" } ] ) Note: This uses the same upload mechanism as offline conversions. |
| google_ads_conversion_summary_reportC | Get account-wide conversion summary. Args: customer_id: Customer ID (without hyphens) date_range: Date range Returns: Summary of all conversions Example: google_ads_conversion_summary_report( customer_id="1234567890", date_range="LAST_30_DAYS" ) |
| google_ads_update_conversion_actionB | Update conversion action settings. Args: customer_id: Customer ID (without hyphens) conversion_action_id: Conversion action ID to update conversion_value: New default value status: New status (ENABLED, PAUSED, REMOVED) Returns: Success message Example: google_ads_update_conversion_action( customer_id="1234567890", conversion_action_id="12345", conversion_value=75.00, status="ENABLED" ) |
| google_ads_account_performanceB | Get account-level performance overview. Provides high-level metrics for the entire Google Ads account including impressions, clicks, cost, conversions, and impression share. Args: customer_id: Customer ID (without hyphens) date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.) Returns: Account performance metrics Example: google_ads_account_performance( customer_id="1234567890", date_range="LAST_30_DAYS" ) |
| google_ads_geographic_performanceB | Get performance by geographic location. Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID filter date_range: Date range Returns: Performance breakdown by location Example: google_ads_geographic_performance( customer_id="1234567890", date_range="LAST_30_DAYS" ) |
| google_ads_device_performanceB | Get performance by device type (mobile, desktop, tablet). Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID filter date_range: Date range Returns: Performance breakdown by device Example: google_ads_device_performance( customer_id="1234567890", date_range="LAST_30_DAYS" ) |
| google_ads_time_performanceB | Get performance by hour of day and day of week. Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID filter date_range: Date range Returns: Performance breakdown by time Example: google_ads_time_performance( customer_id="1234567890", date_range="LAST_30_DAYS" ) |
| google_ads_compare_periodsC | Compare performance between two time periods. Args: customer_id: Customer ID (without hyphens) current_start: Current period start (YYYY-MM-DD) current_end: Current period end (YYYY-MM-DD) previous_start: Previous period start (YYYY-MM-DD) previous_end: Previous period end (YYYY-MM-DD) Returns: Period-over-period comparison with changes Example: google_ads_compare_periods( customer_id="1234567890", current_start="2025-12-01", current_end="2025-12-15", previous_start="2025-11-01", previous_end="2025-11-15" ) |
| google_ads_search_impression_shareA | Get search impression share metrics showing visibility in auctions. Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID filter date_range: Date range Returns: Impression share data Example: google_ads_search_impression_share( customer_id="1234567890", date_range="LAST_30_DAYS" ) |
| google_ads_campaign_comparisonA | Compare performance across multiple campaigns side-by-side. Analyze and compare metrics across 2-10 campaigns to identify best performers, optimize budget allocation, and find underperforming campaigns. Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_ids: Comma-separated campaign IDs (e.g., "123,456,789") date_range: Date range - LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS, etc. response_format: Output format (markdown or json) Returns: Comparative analysis with rankings and insights Example: google_ads_campaign_comparison( customer_id="1234567890", campaign_ids="111111,222222,333333", date_range="LAST_30_DAYS" ) Comparison Metrics: - Impressions, clicks, CTR - Cost and average CPC - Conversions and cost per conversion - Conversion value and ROAS - Share of total (% of overall performance) Use Cases: - Identify top performers for budget increases - Find underperformers to optimize or pause - Compare A/B test campaigns - Analyze campaign strategy effectiveness - Guide budget reallocation decisions |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/johnoconnor0/google-ads-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server