MCP App Store
by KeenEthics

Overview

LoomaScale connects Claude to Google Ads and Meta Ads so you can analyze performance and manage campaigns in plain language. Review spend, pacing and conversions, find wasted search terms, manage budgets and bids, add negative keywords, and create new campaigns. New campaigns are created paused, and changes that can affect spend are proposed for your approval. Connect your advertising account through LoomaScale, then work directly from Claude without switching back and forth to an ads dashboard.

Tools

ga4_get_account_summaries

ChatGPT
List the Google Analytics accounts and GA4 properties the user's connected Google Analytics login can read, with each property's id (properties/<number>), display name and type. Call this first: every other ga4_* tool takes one of these property ids. Read-only; reads only the user's own Analytics access.

ga4_get_custom_dimensions_and_metrics

ChatGPT
List the custom dimensions and custom metrics defined on one GA4 property of the user's connected Google Analytics login, with the apiName to use in ga4_run_report (customEvent:…, customUser:…, customItem:…) and each one's display name and description. Standard dimensions and metrics are not listed — they are the same for every property and documented at https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema. Read-only.

ga4_get_property_details

ChatGPT
Read one GA4 property's settings from the user's connected Google Analytics login: display name, type, parent account, reporting time zone, currency, industry category, service level and timestamps. Use it before comparing Analytics figures with ad spend, since reports are dated in the property's zone and priced in its currency. Read-only; only properties the connected login can reach.

ga4_list_property_annotations

ChatGPT
List the reporting data annotations on one GA4 property of the user's connected Google Analytics login: the dated notes a team leaves for releases, campaign launches or changes, and traffic spikes or drops with an outside cause, plus Google's own system-generated ones. Read these before explaining a change in a report. Read-only; uses the Admin API alpha surface.

ga4_run_conversions_report

ChatGPT
Run a Google Analytics conversions report on one GA4 property of the user's connected Google Analytics login: ad clicks, ad cost, conversions, revenue and return on ad spend by channel, source/medium, campaign, country, device or platform, under a chosen attribution model (DATA_DRIVEN or LAST_CLICK) and for chosen conversion actions or all of them. Use this instead of ga4_run_report when the question is about conversions, ROAS, ad cost or attribution; it accepts only the dimensions and metrics the conversions surface defines. Same paging as ga4_run_report. Read-only; uses the Data API alpha surface.

ga4_run_funnel_report

ChatGPT
Run a Google Analytics funnel report on one GA4 property of the user's connected Google Analytics login: an ordered list of steps (events, page conditions or parameter conditions) and how many users completed each one and dropped off between them, optionally broken down by a dimension (device, country) and with the next action users take after a step. Returns the funnel table and, when present, the visualization table, each as one object per row keyed by Google's dimension and metric names. Read-only; uses the Data API alpha surface.

ga4_run_realtime_report

ChatGPT
Run a Google Analytics realtime report on one GA4 property of the user's connected Google Analytics login: who is on the site right now (the last 30 minutes) by realtime dimensions such as country, city, deviceCategory, eventName, unifiedScreenName or minutesAgo, with realtime metrics such as activeUsers, eventCount, keyEvents or screenPageViews. No date range: realtime data is always now. Custom metrics are not available in realtime reports. Rows come back one object per row keyed by the dimension and metric names. Read-only.

ga4_run_report

ChatGPT
Run a Google Analytics Data API report on one GA4 property of the user's connected Google Analytics login: sessions, users, engagement, key events and revenue by any dimensions (date, source/medium, campaign, landing page, country, device, event name, Google Ads campaign id, custom dimensions) over one or more date ranges, with optional dimension and metric filters and ordering. Typical uses: traffic by sessionSourceMedium, conversions by sessionCampaignName, landing-page engagement, revenue by day. Rows come back one object per row keyed by the dimension and metric names; one page per call, up to 1000 rows (default 100), pass offset for the next page. GA4 attributes conversions differently from Google Ads and Meta, so never present its conversion counts as interchangeable with theirs. Read-only.

gads_activate_campaign

ChatGPT
Activate a PAUSED Google Ads campaign so it starts spending. Only works on campaigns created through this server, and re-checks the budget against your daily cap first. If you also run Meta ads, that server exposes meta_activate_campaign.

gads_add_keywords

ChatGPT
Add keywords to an existing Google Ads ad group, each with its own match type and optional CPC bid. Set negative=true to exclude a search term instead of targeting it. Google cannot move a keyword between ad groups: remove it with gads_remove_keywords and add it here instead, which resets its quality score and history. Up to 50 keywords per call.

gads_audit_portfolio

ChatGPT
Audit several of your Google Ads accounts at once and get the biggest problems across all of them, ranked by what they cost: campaigns spending without converting, search terms worth adding as negatives, missing or broken conversion tracking, campaigns held back by their budget, and disapproved ads. Defaults to every account this connection reaches. Use this rather than checking each account in turn — one call covers the portfolio, handles accounts in different currencies, and reports which accounts could not be read. Reads only; changes nothing.

gads_check_billing

ChatGPT
Check whether a Google Ads account is able to spend at all: its account status, whether a billing setup is approved and which payments account and profile it points at, and whether an account budget is pending, cancelled or exhausted. Use this when campaigns look enabled and ads look approved but nothing serves. The Google Ads API exposes no card balance, no billing hold and none of the payment-failure banners the Google Ads UI shows, so an empty blocker list means only that nothing billing-shaped is visible to the API — the result says where to look next. For today's spend and delivery use gads_check_pacing; for per-campaign eligibility use gads_list_campaigns.

gads_check_pacing

ChatGPT
Check today's spend and delivery health for a Google Ads account: pacing against daily budgets and enabled campaigns with zero delivery. If you also run Meta ads, that server exposes meta_check_pacing.

gads_compare_accounts

ChatGPT
Compare spend and performance across several of your Google Ads accounts over the same dates — impressions, clicks, cost, conversions and conversion value per account, each in its own currency plus a US dollar conversion so the accounts can be ranked. Defaults to every account this connection reaches. Use this instead of calling gads_get_insights once per account: it is one call, it handles accounts in different currencies and time zones correctly, and it reports which accounts could not be read rather than failing. Reads only.

gads_create_ad

ChatGPT
Create a new responsive search ad in an ad group that already exists, without touching the ads already running there. This is how you test new copy against current copy: the existing ad keeps serving and its history, and the new one competes alongside it. The ad is always created PAUSED, so it does not serve or spend until you enable it with gads_set_status, and Google reviews it before it can serve. To change the copy of an existing ad instead of adding one, use gads_update_ad; to build a whole new campaign, use gads_create_campaign; to turn this ad on afterwards, use gads_set_status.

gads_create_ad_group

ChatGPT
Create an ad group inside an existing Google Ads Search campaign, optionally with keywords and a default CPC bid. The ad group is created PAUSED and without ads, so it cannot spend until an ad exists: add a responsive search ad with gads_create_ad, then enable the ad group with gads_set_status. Use this to split a bloated ad group into tighter themes; Google cannot move keywords, so the ones that belong here are re-created with gads_add_keywords and dropped from the old ad group with gads_remove_keywords, losing their history.

gads_create_campaign

ChatGPT
Create a Google Ads Search campaign with a responsive search ad and keywords. The campaign is created PAUSED — nothing spends until you run gads_activate_campaign. Headlines are limited to 30 characters each (3-15 of them) and descriptions to 90 characters each (2-4). Pass locations to scope it geographically — without them the campaign targets every location on earth, which is Google's default; use gads_find_locations to turn place names into ids. Pass languages the same way, or the ads show to people browsing Google in any language. If you also run Meta ads, that server exposes meta_create_campaign.

gads_create_conversion_action

ChatGPT
Create a conversion action in a Google Ads account: UPLOAD_CLICKS to import offline sales or leads tied to ad clicks, UPLOAD_CALLS to import calls from ads that later converted (send both with gads_upload_conversions), or WEBPAGE for a website tag, whose code snippets are returned to put on the site. Sets category, counting type, default value and currency, lookback windows and whether it is primary. Google makes a new action primary by default, which means Smart Bidding starts optimizing toward it; pass primary_for_goal false to only report it. An action with the same name is reused, not duplicated. To change an existing action use gads_update_conversion_action.

gads_create_customer_list

ChatGPT
Create a Customer Match list in a Google Ads account — an audience built from your own customers' emails and phone numbers — or call it with no name to list the account's customer lists with their ids and matched sizes. Fill a list with gads_update_customer_list_contacts and target or observe it on a campaign with gads_update_campaign_criteria (add_audiences, user_list_id). The account must have accepted Google's Customer Match terms in Google Ads. A list with the same name is reused, not duplicated.

gads_create_pmax_campaign

ChatGPT
Create a Google Ads Performance Max campaign complete enough to serve: a budget, the campaign, one asset group with headlines, descriptions and images, optional YouTube videos and search themes. The campaign is created PAUSED — nothing spends until you run gads_activate_campaign. Performance Max needs more copy than a Search ad: 3-15 headlines of 30 characters, 1-5 long headlines of 90, 2-5 descriptions of 90 with at least one under 60, a business name, and images in three required slots — Google will not run an asset group without them. It bids to maximize conversions; pass target_roas to bid on conversion value instead. Pass locations to scope it geographically — without them the campaign targets every location on earth, which is Google's default; use gads_find_locations to turn place names into ids. For a Search campaign use gads_create_campaign, and to change this campaign afterwards use gads_update_asset_group_assets, gads_update_asset_group_media, gads_update_brand_assets and gads_update_search_themes.

gads_create_shopping_campaign

ChatGPT
Create a Google Ads Standard Shopping campaign that sells the products of a linked Merchant Center account: a budget, the campaign, one ad group with a shopping product ad, and a root product group that admits every product in the feed. The campaign is created PAUSED — nothing spends until you run gads_activate_campaign. It bids a manual CPC you set; pass target_roas to bid on conversion value instead, which only works once the account has conversion history. The Merchant Center must already be linked to the Google Ads account: when exactly one is linked it is used, otherwise pass merchant_id. Pass locations to scope it geographically — without them the campaign targets every location on earth, which is Google's default; use gads_find_locations to turn place names into ids. Product groups cannot be subdivided by brand or product type through these tools yet; use feed_label to narrow the campaign to part of the feed. For a Search campaign use gads_create_campaign, for Performance Max use gads_create_pmax_campaign.

gads_declare_eu_political_ads

ChatGPT
Record whether a Google Ads campaign contains political advertising in the European Union. Google requires this declaration on every campaign and refuses every change to a campaign that has none — targeting, budget, bidding and ads alike — with "This operation is only allowed after you confirm if this campaign has European Union political ads". Campaigns created outside this server, or before the rule, are the ones missing it. The declaration is a legal statement the advertiser makes about their own ads: ask the person whose account it is and pass their answer. Never assume it, and never call this tool to clear an error without asking first. Declaring political advertising also obliges the advertiser to complete Google's EU political advertising verification before those ads may run.

gads_find_locations

ChatGPT
Look up Google Ads locations by name and get the geo target constant id of each, with its canonical name and target type (Country, Region, City). Use this before changing location targeting with gads_update_campaign_targeting, or before creating a campaign with gads_create_campaign, whenever you have a place name rather than an id. Pass country_code when a name is ambiguous.

gads_get_audience_insights

ChatGPT
Get Google Ads performance broken down by audience: impressions, clicks, cost, CTR, conversions and conversion value per audience criterion attached to an ad group (remarketing lists, interest categories, audience segments), ordered by spend. Note that Google returns the audience as a resource name, which is not always readable. For breakdowns by device, day of week, hour or network use gads_get_insights with its segments argument; for locations use gads_get_geo_insights.

gads_get_geo_insights

ChatGPT
Get Google Ads performance broken down by location: impressions, clicks, cost, CTR, conversions and conversion value per geographic area, ordered by spend, with the location named rather than left as an id. Use this to find regions that spend without converting. For breakdowns by device, day of week, hour or network use gads_get_insights with its segments argument; for audiences use gads_get_audience_insights.

gads_get_insights

ChatGPT
Get Google Ads performance metrics — impressions, clicks, cost, CTR, average CPC, conversions, and conversion value — for the whole account, per campaign, per ad group, per individual ad, or per keyword, over a preset or custom date range. Split rows by device, day of week, hour, or network with segments, and add search impression share and the share lost to budget or rank with include_impression_share — that is how to tell whether a campaign has room to spend more. Use level ad to find the ads wasting money and to compare the responsive search ads in an ad group against each other; rows carry each ad's status so an already-paused ad is not mistaken for one worth pausing, and the row name is the ad's name or, as most responsive search ads have none, its first headline. The ad_group, ad and keyword levels, and any segmented query, are capped at the highest-impression rows. For an ad's full copy — every headline, description and landing page — use gads_list_ads. For the keyword list and why keywords do or do not serve, use gads_list_keywords; for the queries users actually typed, use gads_list_search_terms; for performance by location use gads_get_geo_insights and by audience gads_get_audience_insights. If you also run Meta ads, that server exposes meta_get_insights.

gads_get_resource_metadata

ChatGPT
List the fields a Google Ads resource exposes to GAQL, with each field's data type, its enum values, and whether it can be selected, filtered or sorted on. Use it before gads_query when unsure what a resource is called or which fields it has — a guessed field name costs a rejected query. Pass a resource name in snake_case: campaign, ad_group, ad_group_criterion, ad_group_ad, customer, keyword_view, search_term_view, geographic_view, campaign_budget, conversion_action, asset, asset_group. Pass contains to narrow a wide resource, e.g. resource=campaign contains=bidding. Segments and metrics are their own resources: use resource=segments or resource=metrics to list those.

gads_keyword_ideas

ChatGPT
Research new Google Ads keywords: average monthly search volume, competition level, and low/high top-of-page bid estimates for terms seeded from keyword phrases, a landing page url, or both. Use this to find terms worth adding and to check whether an existing keyword has any search volume at all. Returns the first page of results only. For keywords already in the account use gads_list_keywords; for queries that already triggered ads use gads_list_search_terms.

gads_list_ad_accounts

ChatGPT
List the Google Ads accounts you can manage, including accounts reached through a manager (MCC) account, and which manager each is reached through. Says which accounts are managers (they hold no campaigns themselves), which cannot serve ads right now, and which is the stored default. To work in an account, pass its id or name as customer_id to any other tool — no dashboard change needed. Filter by name with name_contains when the list is long. If you also run Meta ads, that server exposes meta_list_ad_accounts.

gads_list_ads

ChatGPT
List individual ads in a Google Ads account with their status, policy approval verdict, landing pages (the final URLs a click goes to) and, for responsive search ads, their headlines, descriptions and display paths. Use this to answer where an ad sends people and what it says. Optionally filtered by campaign or ad group. This is ad copy only, with no metrics: for impressions, clicks, cost and conversions per ad — which ad is wasting money, which responsive search ad is winning — use gads_get_insights with level ad. For campaigns and ad groups, use gads_list_campaigns. If you also run Meta ads, that server exposes meta_list_ads.

gads_list_asset_groups

ChatGPT
Audit Performance Max campaigns by asset group — the level PMax actually spends at. Returns each asset group's status, ad strength, why it is or is not serving, and its impressions, clicks, cost, conversions and conversion value for the range, ordered by spend. Set include_assets to also list the assets in each group with the slot they fill and whether they are serving, and include_search_themes to list the search themes and audience signals the campaign has been told to chase. For campaign-level numbers use gads_get_insights, and for the list of campaigns and their channel types use gads_list_campaigns.

gads_list_campaigns

ChatGPT
List campaigns in a Google Ads account, including each campaign's status, channel type, daily budget in the account's own currency (reported in the currency field), bidding strategy, the Max CPC limit of Maximize clicks campaigns, the target CPA or target ROAS an automated strategy bids to, the dates the campaign runs between, the locations and languages each campaign targets, and Google's own eligibility verdict per campaign (primaryStatus) with the reasons it is not serving. Optionally includes ad groups. For individual ads, use gads_list_ads. If you also run Meta ads, that server exposes meta_list_campaigns.

gads_list_conversion_actions

ChatGPT
Audit how a Google Ads account counts conversions: every conversion action with its category, type, status, whether it is primary (so it feeds bidding and the conversions column), its counting type, attribution model, value settings and lookback windows, plus how many conversions each one actually recorded over the date range. Use this to find duplicated actions, actions marked primary that should not be, missing conversion values, and primary actions that have stopped firing. Also returns the account's conversion goals — the (category, origin) groups bidding optimizes towards — and, when campaign_id is given, that campaign's own goals and whether it uses campaign-specific goal settings; change those with gads_update_campaign_conversion_goals. For the performance numbers those conversions roll up into, use gads_get_insights.

gads_list_keywords

ChatGPT
List the keywords of a Google Ads account, campaign, or ad group with their match type, status, serving status, eligibility reasons, quality score with its three components (ad relevance, landing page experience, expected CTR), and effective CPC bid. Use this to explain why a campaign gets no impressions: a keyword can be enabled and still never serve. Negative keywords are included and flagged. For per-keyword performance numbers use gads_get_insights with level=keyword; for the queries users actually typed use gads_list_search_terms; for new keyword suggestions use gads_keyword_ideas.

gads_list_search_terms

ChatGPT
List the actual search queries that triggered Google Ads ads, with impressions, clicks, cost, CTR, conversions, the keyword each query matched, and whether the query is already added as a keyword or excluded as a negative. Ordered by impressions and capped. Use this to find wasted spend and missing keywords. For the keyword list itself use gads_list_keywords; for suggestions not yet in the account use gads_keyword_ideas. Meta has no search term equivalent.

gads_query

ChatGPT
Run a read-only Google Ads Query Language (GAQL) SELECT against the account and return the raw rows. Use this for reporting questions the typed tools do not cover — a breakdown by device and day of week, impression share lost to rank, month-over-month by network, ad approval status. Prefer the typed tools where one fits: gads_get_insights for standard performance, gads_list_campaigns, gads_list_ads, gads_list_keywords, gads_list_search_terms. This tool cannot change anything; every write has its own tool. Call gads_get_resource_metadata first when unsure which fields a resource has. Note the case difference: the query is written in snake_case (campaign.name, metrics.cost_micros) and the rows come back in camelCase (campaign.name, metrics.costMicros), because that is what the API returns. Money arrives in micros — divide by 1,000,000. A query with no LIMIT gets LIMIT 100, and LIMIT above 1000 is lowered to it. GAQL has no OR and no parentheses: use IN, REGEXP_MATCH, or separate queries. Campaign dates are campaign.start_date_time and campaign.end_date_time. change_event only reaches back 30 days and needs a LIMIT. Not every resource accepts segments.date — check gads_get_resource_metadata first.

gads_remove_ad

ChatGPT
Permanently remove ads from a Google Ads account. Removal cannot be undone: Google keeps no way back through the API, and the ad takes its performance history with it out of the account's default views. Pause with gads_set_status when the ad may come back — a paused ad costs nothing and keeps its history. Two safeguards apply to every entry: the ad must already be PAUSED, and confirm_headline must match one of that ad's own headlines. Ids that are already gone are reported as skipped instead of failing the call, but a wrong headline or a still-serving ad refuses the whole call and removes nothing. Find ids and headlines with gads_list_ads. Up to 20 ads per call.

gads_remove_campaign

ChatGPT
Permanently remove a Google Ads campaign. Removal cannot be undone: Google keeps no way back through the API, and the campaign and its history leave the account's default views. Pause with gads_set_status when the campaign may come back — a paused campaign costs nothing and keeps its history. Two safeguards apply: the campaign must already be PAUSED, and confirm_campaign_name must match its exact name. Find ids and names with gads_list_campaigns.

gads_remove_keywords

ChatGPT
Permanently remove keywords from a Google Ads ad group. Removal cannot be undone: re-adding the same text later creates a fresh criterion with no quality score or history, so pause with gads_update_keyword when the keyword may come back. Ids that are already gone are reported as skipped instead of failing the call. Find criterion ids with gads_list_keywords. Up to 50 per call.

gads_select_account

ChatGPT
Set the optional default Google Ads account that reads use when they pass no customer_id, by customer id or by account name. Rarely needed: every tool takes customer_id (id or name), so switching accounts in a conversation is just passing the other one. The default belongs to the connection and is shared by every chat you have open, and changes never fall back to it when you have several accounts. Changes nothing in Google Ads itself.

gads_set_status

ChatGPT
Pause or resume a Google Ads object: an individual ad, an ad group, or a whole campaign. Pausing stops its spend; resuming re-checks the governing campaign budget against your cap first (a campaign whose budget cannot be read is refused; an ad or ad group under it is enabled within that campaign's existing budget). Use gads_list_campaigns or gads_list_ads to find ids. If you also run Meta ads, that server exposes meta_set_status.

gads_update_account_budget

ChatGPT
Raise the account-level spending limit of an invoiced Google Ads account, the total cap above every campaign budget. Use when gads_check_billing reports the account budget is exhausted and nothing is serving. Cannot exceed your configured total account-budget cap and never sets an unlimited budget. Accounts that pay by card have no account budget, so this does not apply to them. For a campaign's daily budget, use gads_update_budget.

gads_update_ad

ChatGPT
Rewrite the copy of an existing responsive search ad: its headlines, descriptions, landing page and display paths. The ad keeps its id and performance history, and Google puts it back into policy review after the edit. Each list you pass REPLACES the whole list — send every headline you want the ad to have, not just the new ones — and a field you omit is left untouched. Read the current copy first with gads_list_ads. Only responsive search ads can be edited this way; for other ad types create a new one with gads_create_ad.

gads_update_ad_group

ChatGPT
Rename a Google Ads ad group and/or set its default max CPC bid, which applies to every keyword in it that has no bid of its own. A bid only affects delivery when the campaign uses Manual CPC; the result says so when it does not. To pause or resume the ad group use gads_set_status, and to change its keywords use gads_add_keywords, gads_update_keyword, or gads_remove_keywords.

gads_update_asset_group

ChatGPT
Change the settings of a Performance Max asset group: its name, whether it is enabled or paused, the landing pages it sends clicks to and the display paths shown after the domain. This is how one asset group of a campaign is stopped or restarted without touching the others. final_urls REPLACES the whole list, and a field you omit is left untouched. An asset group cannot be moved to a different campaign. For the headlines and descriptions inside the group use gads_update_asset_group_assets, and for its search themes gads_update_search_themes.

gads_update_asset_group_assets

ChatGPT
Rewrite the text of a Performance Max asset group: its headlines, long headlines and descriptions. Each list you pass REPLACES the whole list for that slot — send every headline you want the asset group to have, not just the new ones — and a slot you omit is left untouched. Text that is already there keeps its existing asset and its performance history, so repeating a headline you want to keep costs nothing. Read the current copy first with gads_list_asset_groups and include_assets. Google's minimums apply and cannot be crossed: 3 headlines, 1 long headline, 2 descriptions, with at least one description of 60 characters or fewer. For images, logos and video use gads_update_asset_group_media; for search themes gads_update_search_themes; for a responsive search ad gads_update_ad.

gads_update_asset_group_media

ChatGPT
Replace the images, logos, YouTube video or call-to-action of a Performance Max asset group. Images are given as public https URLs, which this server downloads and uploads to Google; videos are given as YouTube video ids, not URLs. Each list REPLACES the whole slot — send every image you want the slot to have — and a slot you omit is left untouched. An image whose bytes Google already holds keeps its existing asset and its performance history, so passing the same URLs again changes nothing; note that the match is on exact bytes, so a re-encoded copy of the same picture counts as a new image. Google's shapes are enforced before anything is uploaded: marketing images 1.91:1, square 1:1, portrait 4:5, logos 1:1, landscape logos 4:1. For headlines and descriptions use gads_update_asset_group_assets.

gads_update_bidding_strategy

ChatGPT
Manage portfolio bidding strategies in a Google Ads account: one automated strategy that several campaigns share. Call it with no arguments to list them with their targets and campaign counts. Creates a strategy (name plus type: Maximize conversions, Maximize conversion value, Target CPA, Target ROAS or Target impression share), changes its name, targets and CPC bid limits, assigns campaigns to it, takes campaigns off it, and removes a strategy no campaign uses. A campaign taken off a portfolio keeps bidding on the closest standard strategy with the same target (Target CPA becomes Maximize conversions with that target CPA). target_roas is a ratio: 3.5 means 350%. A CPC bid limit above your daily spend cap is refused. For a single campaign's own strategy use gads_update_campaign_bidding.

gads_update_brand_assets

ChatGPT
Change the business name and logos of a Google Ads campaign. On a Performance Max campaign with brand guidelines enabled — Google's default for campaigns created recently — these three assets live on the campaign rather than on each asset group, which is why gads_update_asset_group_assets and gads_update_asset_group_media refuse them and send you here. Logos are given as public https URLs, which this server downloads and uploads to Google: square logos must be 1:1 and at least 128x128, landscape logos 4:1 and at least 512x128. Each list REPLACES the whole slot and a slot you omit is left untouched. Brand guidelines make a business name and at least one logo mandatory, so neither can be emptied.

gads_update_budget

ChatGPT
Change the daily budget of a Google Ads campaign. Cannot exceed your configured daily spend cap, and refuses budgets shared across several campaigns and campaigns that run on a total budget for a date range (Google allows no daily amount on those); shared budgets are managed with gads_update_shared_budget. If you also run Meta ads, that server exposes meta_update_budget.

gads_update_campaign_bidding

ChatGPT
Change the bidding settings of a Google Ads campaign: set or clear the Max CPC limit of a Maximize clicks campaign, and/or switch the campaign between Maximize clicks and Manual CPC. Use this when a campaign gets few or no impressions because its Max CPC limit is below the market bid, or before setting manual bids with gads_update_ad_group or gads_update_keyword, which Google only honours under Manual CPC. Also switches a campaign to Maximize conversions, optionally with a target CPA — the strategy that optimizes towards the campaign's conversion goals, which gads_update_campaign_conversion_goals selects. Also switches a campaign to Maximize conversion value, optionally with a target ROAS given as a RATIO (pass 4 to mean 400%) — the strategy Performance Max and value-based search campaigns use to bid on revenue rather than on conversion count. Refuses campaigns governed by a portfolio bidding strategy. For daily budgets use gads_update_budget.

gads_update_campaign_conversion_goals

ChatGPT
Choose which conversion goals a Google Ads campaign optimizes for, which is what the Google Ads UI calls campaign-specific goal settings. Goals are groups of conversion actions by category and origin — pass the categories the campaign should bid towards (for example SIGNUP) and every other goal is switched off for that campaign alone. Use this before switching a campaign to MAXIMIZE_CONVERSIONS with gads_update_campaign_bidding, or when a campaign optimizes for the wrong events. Read the current goals and the categories available with gads_list_conversion_actions. Pass use_account_goals to hand the campaign back to the account-level goals.

gads_update_campaign_criteria

ChatGPT
Change a Google Ads campaign's device bid adjustments, ad schedule and audiences. Set a device adjustment from -100% (stop showing on that device) to +900%; add ad schedule windows (a day with start and end time on the quarter hour, optional bid adjustment) so ads only run at those times; add audiences by user list id (remarketing, customer lists) or user interest id (affinity, in-market), optionally with a bid adjustment; switch audiences between OBSERVATION (adjust bids, keep reach) and TARGETING (reach only those audiences); change or remove existing criteria by criterion id. Call it with only campaign_id to read the current settings. Customer lists and their ids come from gads_create_customer_list; other audience ids from gads_query on user_list or user_interest. Automated bidding ignores bid adjustments other than a -100% device exclusion. Not for Performance Max. For locations and languages use gads_update_campaign_targeting.

gads_update_campaign_negatives

ChatGPT
Stop a Google Ads campaign from serving on queries and brands you do not want it on. Adds campaign-level negative keywords with EXACT, PHRASE or BROAD match, and for Performance Max and search campaigns adds brand exclusions — a brand list Google matches against every variation and misspelling of a brand, which plain negative keywords cannot do. Together these are the fix for a Performance Max campaign cannibalizing your own brand search: exclude your brand to push branded traffic back to the search campaign that was already winning it, or exclude a competitor's brand to stop paying for their name. Also removes negative keywords, detaches a brand list from a campaign, and takes individual brands out of a list. Attaches and detaches the account's shared negative keyword and placement exclusion lists (create and edit those with gads_update_shared_list). Call it with no changes to read what a campaign already excludes. A search campaign needs AI Max turned on (gads_update_campaign_settings with ai_max) before a brand list can be attached to it; a Performance Max campaign needs nothing. Refuses to edit a brand list that is shared with other campaigns. For ad-group-level negatives use gads_add_keywords and gads_remove_keywords; for locations and languages use gads_update_campaign_targeting.

gads_update_campaign_settings

ChatGPT
Rename a Google Ads campaign, change the dates it runs between, and turn AI Max for Search on or off (search campaigns only; AI Max widens matching beyond your keywords and lets Google rewrite headlines and landing pages, and is required before a search campaign can take a brand list). Removing an end date is the fix for a campaign that looks ENABLED but spends nothing because its end date has passed — pass end_date as null to let it run until it is paused. An end date in the past is refused, because it would stop a campaign retroactively; use gads_set_status with PAUSED for that, which is reversible. The start date of a campaign that has already started cannot be moved. For daily budgets use gads_update_budget, for pausing and enabling gads_set_status, for bidding gads_update_campaign_bidding, and for locations and languages gads_update_campaign_targeting.

gads_update_campaign_targeting

ChatGPT
Change where and in which languages a Google Ads campaign may show: add targeted locations, add excluded locations, add languages, remove existing location or language criteria, and set whether location targeting applies to people present in an area or also to people interested in it. Location entries may be geo target constant ids or place names — use gads_find_locations when you only have a name; language entries may be language constant ids, ISO codes (en, uk) or names (English). Read the current targeting with gads_list_campaigns and include_targeting. This tool only adds what you name and removes what you name, with one exception: excluding a location the campaign currently targets replaces that criterion, and targeting one it currently excludes does the same, because Google cannot flip a criterion in place. It never replaces the whole list. add_radius targets a circle (1-500 miles or 1-800 km) around a city, postcode, street address or latitude/longitude point, for 'within 25 miles of Austin' targeting; Google places the centre itself from the address. A campaign with no targeted locations reaches every location on earth, and one with no languages shows to every language.

gads_update_conversion_action

ChatGPT
Change how a Google Ads conversion action counts and values conversions: its counting type (ONE_PER_CLICK counts one conversion per click, MANY_PER_CLICK counts every occurrence), its category, whether it is primary and therefore feeds Smart Bidding and the conversions column, its default value and currency, and its click-through and view-through lookback windows. Use it to fix what gads_list_conversion_actions reports — a purchase action counting every occurrence, a lead action inflating the number, a flat default value on an action that should send real order values. Read the action first with gads_list_conversion_actions. Only the settings you pass change; the rest are left alone. Note that Google Ads only imports an action whose type starts with GOOGLE_ANALYTICS_4_, UNIVERSAL_ANALYTICS_, FIREBASE_ or THIRD_PARTY_APP_ANALYTICS_, and refuses to change its counting type or its lookback windows through the API — those live in the system that produces the conversion, so for a Google Analytics key event the counting method is set in Analytics. A UNIVERSAL_ANALYTICS_ import and an action owned by a different account (cross-account conversion tracking) cannot be edited here at all. This changes counting from now on and does not restate past conversions, and Smart Bidding takes a week or two to settle afterwards. To choose which conversions a single campaign optimizes for, use gads_update_campaign_conversion_goals instead. Deleting a conversion action is not offered here because it cannot be undone.

gads_update_customer_list_contacts

ChatGPT
Add or remove customers in a Google Ads Customer Match list by email address or phone number (E.164, e.g. +14155550123). Values are normalized the way Google requires and SHA-256 hashed by this server before upload; raw contacts are never sent or stored. Requires consent_confirmed true: the people must have agreed to their data being used for advertising. At most 10000 contacts per call. Google processes the upload in the background, usually within 6-12 hours; check the list size with gads_create_customer_list (no name). The account must have accepted Google's Customer Match terms. Create the list with gads_create_customer_list.

gads_update_keyword

ChatGPT
Pause or resume a single Google Ads keyword and/or change its max CPC bid. Pausing a keyword stops it serving without deleting its history — prefer it to gads_remove_keywords when the keyword may come back. A bid only affects delivery when the campaign uses Manual CPC; the result says so when it does not. Find criterion ids with gads_list_keywords.

gads_update_search_themes

ChatGPT
Set the search themes of a Performance Max asset group — the phrases that tell Google which demand this asset group is meant to capture, which is one of the few direct controls a Performance Max campaign has. The list you pass REPLACES the whole set: send every theme you want the asset group to have, including the ones already there. A theme that drops out of the list is deleted and this tool cannot bring it back. At most 25 themes of 80 characters each. Audience signals on the same asset group are never touched. Read the current themes first with gads_list_asset_groups and include_search_themes.

gads_update_shared_budget

ChatGPT
Manage shared budgets in a Google Ads account: one daily amount that several campaigns draw from. Call it with no arguments to list the shared budgets and the campaigns on each. Creates a shared budget (name plus daily_budget), renames one, changes its daily amount, moves campaigns onto it, moves campaigns off it onto a budget of their own (unassign_daily_budget sets that amount), and removes a shared budget no campaign uses. Every daily amount is checked against your configured daily spend cap. For a campaign's own, unshared budget use gads_update_budget.

gads_update_shared_list

ChatGPT
Manage the account's shared negative lists in Google Ads: negative keyword lists and placement exclusion lists, which one edit applies to every campaign they are attached to. Call it with no arguments to list them with their sizes and campaigns; with shared_list_id to read one list's members. Creates a list (name plus type), renames one, adds negative keywords to a keyword list or website placements to a placement list, removes members by criterion id, and removes a whole list. Adds skip members the list already holds. Attach a list to a campaign with gads_update_campaign_negatives (attach_shared_list_ids); for a single campaign's own negatives use that tool too.

gads_upload_conversions

ChatGPT
Send offline conversions to a Google Ads conversion action so bidding learns from sales and qualified leads that happen outside the website. For an UPLOAD_CLICKS action each row is the click id (gclid, gbraid or wbraid) captured when the person clicked the ad, plus when they converted; for an UPLOAD_CALLS action each row is the caller's phone number in E.164 and when the call started. Optional value, currency and order_id (which also stops a re-sent row from counting twice). At most 200 rows per call; times need a UTC offset, e.g. 2026-10-14 15:30:00+02:00. Rows Google rejects are reported one by one and the rest still count. Create the action with gads_create_conversion_action first. Uploaded conversions cannot be deleted here.

gmc_get_account_health

ChatGPT
Summarise the health of one Google Merchant Center account: how many products are active, pending, disapproved and expiring per destination (Shopping ads, free listings, …) and country, the item-level issues behind those counts ranked by how many products each affects, with Google's description and help link, and the account-level issues that stop the whole account from serving. Use it first when the user asks why products are not showing or whether the feed is healthy; follow up with gmc_query on product_view for the products behind a count. Read-only.

gmc_list_accounts

ChatGPT
List the Google Merchant Center accounts the user's connected Google login can read, with each account's numeric id, name, time zone and whether it is an advanced (multi-client) account. Call this first when the user has more than one store: gmc_query and gmc_get_account_health take one of these account ids. Reports only work on standalone accounts and sub-accounts, never on an advanced account itself. Read-only; reads only the user's own Merchant Center access.

gmc_query

ChatGPT
Run a read-only Merchant Center Query Language (MCQL) SELECT against one Google Merchant Center account and return the rows: product approval status and item issues, clicks and impressions per product, price benchmarks, best sellers, competitor visibility. This tool cannot change anything in Merchant Center. Syntax is GAQL-like: SELECT fields FROM one_view [WHERE a = 'x' AND b > 1] [ORDER BY a field in SELECT] [LIMIT n]; operators = != < <= > >= IN NOT IN LIKE REGEXP_MATCH BETWEEN DURING (date DURING LAST_30_DAYS / LAST_7_DAYS / THIS_MONTH, or date BETWEEN '2026-10-01' AND '2026-10-31'); AND only, no OR, no parentheses, no joins; a metric may be filtered only if it is also selected. Fields are written in snake_case and come back in camelCase; money is {amountMicros, currencyCode} — divide by 1,000,000. A query with no LIMIT gets LIMIT 100; LIMIT above 1000 is lowered to it. Views ( = must be in SELECT; ‡ = must be filtered in WHERE; † = WHERE only, cannot be selected; ~ = cannot be filtered on.): • product_performance_view — clicks, impressions, CTR and (free listings only) conversions per product or segment, over a date range. Fields: date‡, week, marketing_method, customer_country_code, store_type, offer_id, title, brand, category_l1..l5, product_type_l1..l5, custom_label0..4, clicks, impressions, click_through_rate, conversions, conversion_value, conversion_rate. • non_product_performance_view — clicks and impressions on non-product surfaces (store and image links) over a date range. Fields: date‡, week, clicks, impressions, click_through_rate. • product_view — the catalog as Google holds it: every product with its approval status, item issues, price, availability and click potential; no date range. Fields: id, channel, language_code, feed_label, offer_id, title, brand, category_l1..l5, product_type_l1..l5, price, condition, availability, shipping_label, item_group_id, thumbnail_link, gtin~, creation_time, expiration_date, aggregated_reporting_context_status, status_per_reporting_context~, item_issues~, click_potential, click_potential_rank, reporting_context†. • price_competitiveness_product_view — your price against Google's benchmark price per product and country (Market Insights must be enabled in Merchant Center). Fields: report_country_code, id, offer_id, title, brand, category_l1..l5, product_type_l1..l5, price, benchmark_price. • price_insights_product_view — Google's suggested price per product with the predicted change in impressions, clicks and conversions (Market Insights). Fields: id, offer_id, title, brand, category_l1..l5, product_type_l1..l5, price, suggested_price, effectiveness, predicted_impressions_change_fraction, predicted_clicks_change_fraction, predicted_conversions_change_fraction. • best_sellers_product_cluster_view — Google's best-selling product clusters per category and country, weekly or monthly, with whether your inventory carries them (Market Insights). Fields: report_date, report_granularity‡, report_country_code‡, report_category_id, title, brand, category_l1..l5, variant_gtins, inventory_status, brand_inventory_status, rank, previous_rank, relative_demand, previous_relative_demand, relative_demand_change. • best_sellers_brand_view — Google's best-selling brands per category and country, weekly or monthly (Market Insights). Fields: report_date, report_granularity‡, report_country_code‡, report_category_id, brand, rank, previous_rank, relative_demand, previous_relative_demand, relative_demand_change. • competitive_visibility_competitor_view — the merchants competing with you for the same Shopping impressions in a category and country, ranked, over a date range (Market Insights). Fields: date‡, domain~, is_your_domain~, report_country_code‡, report_category_id‡, traffic_source, rank~, ads_organic_ratio~, page_overlap_rate~, higher_position_rate~, relative_visibility~. • competitive_visibility_top_merchant_view — the top merchants by Shopping visibility in a category and country, you among them, over a date range (Market Insights). Fields: date‡†, domain~, is_your_domai…

google_activate_campaign

ChatGPT
Activate a PAUSED Google Ads campaign so it starts spending. Only works on campaigns created through this server, and re-checks the budget against your daily cap first. If you also run Meta ads, that server exposes meta_activate_campaign.

google_add_keywords

ChatGPT
Add keywords to an existing Google Ads ad group, each with its own match type and optional CPC bid. Set negative=true to exclude a search term instead of targeting it. Google cannot move a keyword between ad groups: remove it with google_remove_keywords and add it here instead, which resets its quality score and history. Up to 50 keywords per call.

google_audit_portfolio

ChatGPT
Audit several of your Google Ads accounts at once and get the biggest problems across all of them, ranked by what they cost: campaigns spending without converting, search terms worth adding as negatives, missing or broken conversion tracking, campaigns held back by their budget, and disapproved ads. Defaults to every account this connection reaches. Use this rather than checking each account in turn — one call covers the portfolio, handles accounts in different currencies, and reports which accounts could not be read. Reads only; changes nothing.

google_check_billing

ChatGPT
Check whether a Google Ads account is able to spend at all: its account status, whether a billing setup is approved and which payments account and profile it points at, and whether an account budget is pending, cancelled or exhausted. Use this when campaigns look enabled and ads look approved but nothing serves. The Google Ads API exposes no card balance, no billing hold and none of the payment-failure banners the Google Ads UI shows, so an empty blocker list means only that nothing billing-shaped is visible to the API — the result says where to look next. For today's spend and delivery use google_check_pacing; for per-campaign eligibility use google_list_campaigns.

google_check_pacing

ChatGPT
Check today's spend and delivery health for a Google Ads account: pacing against daily budgets and enabled campaigns with zero delivery. If you also run Meta ads, that server exposes meta_check_pacing.

google_compare_accounts

ChatGPT
Compare spend and performance across several of your Google Ads accounts over the same dates — impressions, clicks, cost, conversions and conversion value per account, each in its own currency plus a US dollar conversion so the accounts can be ranked. Defaults to every account this connection reaches. Use this instead of calling google_get_insights once per account: it is one call, it handles accounts in different currencies and time zones correctly, and it reports which accounts could not be read rather than failing. Reads only.

google_create_ad

ChatGPT
Create a new responsive search ad in an ad group that already exists, without touching the ads already running there. This is how you test new copy against current copy: the existing ad keeps serving and its history, and the new one competes alongside it. The ad is always created PAUSED, so it does not serve or spend until you enable it with google_set_status, and Google reviews it before it can serve. To change the copy of an existing ad instead of adding one, use google_update_ad; to build a whole new campaign, use google_create_campaign; to turn this ad on afterwards, use google_set_status.

google_create_ad_group

ChatGPT
Create an ad group inside an existing Google Ads Search campaign, optionally with keywords and a default CPC bid. The ad group is created PAUSED and without ads, so it cannot spend until an ad exists: add a responsive search ad with google_create_ad, then enable the ad group with google_set_status. Use this to split a bloated ad group into tighter themes; Google cannot move keywords, so the ones that belong here are re-created with google_add_keywords and dropped from the old ad group with google_remove_keywords, losing their history.

google_create_campaign

ChatGPT
Create a Google Ads Search campaign with a responsive search ad and keywords. The campaign is created PAUSED — nothing spends until you run google_activate_campaign. Headlines are limited to 30 characters each (3-15 of them) and descriptions to 90 characters each (2-4). Pass locations to scope it geographically — without them the campaign targets every location on earth, which is Google's default; use google_find_locations to turn place names into ids. Pass languages the same way, or the ads show to people browsing Google in any language. If you also run Meta ads, that server exposes meta_create_campaign.

google_create_conversion_action

ChatGPT
Create a conversion action in a Google Ads account: UPLOAD_CLICKS to import offline sales or leads tied to ad clicks, UPLOAD_CALLS to import calls from ads that later converted (send both with google_upload_conversions), or WEBPAGE for a website tag, whose code snippets are returned to put on the site. Sets category, counting type, default value and currency, lookback windows and whether it is primary. Google makes a new action primary by default, which means Smart Bidding starts optimizing toward it; pass primary_for_goal false to only report it. An action with the same name is reused, not duplicated. To change an existing action use google_update_conversion_action.

google_create_customer_list

ChatGPT
Create a Customer Match list in a Google Ads account — an audience built from your own customers' emails and phone numbers — or call it with no name to list the account's customer lists with their ids and matched sizes. Fill a list with google_update_customer_list_contacts and target or observe it on a campaign with google_update_campaign_criteria (add_audiences, user_list_id). The account must have accepted Google's Customer Match terms in Google Ads. A list with the same name is reused, not duplicated.

google_create_pmax_campaign

ChatGPT
Create a Google Ads Performance Max campaign complete enough to serve: a budget, the campaign, one asset group with headlines, descriptions and images, optional YouTube videos and search themes. The campaign is created PAUSED — nothing spends until you run google_activate_campaign. Performance Max needs more copy than a Search ad: 3-15 headlines of 30 characters, 1-5 long headlines of 90, 2-5 descriptions of 90 with at least one under 60, a business name, and images in three required slots — Google will not run an asset group without them. It bids to maximize conversions; pass target_roas to bid on conversion value instead. Pass locations to scope it geographically — without them the campaign targets every location on earth, which is Google's default; use google_find_locations to turn place names into ids. For a Search campaign use google_create_campaign, and to change this campaign afterwards use google_update_asset_group_assets, google_update_asset_group_media, google_update_brand_assets and google_update_search_themes.

google_declare_eu_political_ads

ChatGPT
Record whether a Google Ads campaign contains political advertising in the European Union. Google requires this declaration on every campaign and refuses every change to a campaign that has none — targeting, budget, bidding and ads alike — with "This operation is only allowed after you confirm if this campaign has European Union political ads". Campaigns created outside this server, or before the rule, are the ones missing it. The declaration is a legal statement the advertiser makes about their own ads: ask the person whose account it is and pass their answer. Never assume it, and never call this tool to clear an error without asking first. Declaring political advertising also obliges the advertiser to complete Google's EU political advertising verification before those ads may run.

google_find_locations

ChatGPT
Look up Google Ads locations by name and get the geo target constant id of each, with its canonical name and target type (Country, Region, City). Use this before changing location targeting with google_update_campaign_targeting, or before creating a campaign with google_create_campaign, whenever you have a place name rather than an id. Pass country_code when a name is ambiguous.

google_get_audience_insights

ChatGPT
Get Google Ads performance broken down by audience: impressions, clicks, cost, CTR, conversions and conversion value per audience criterion attached to an ad group (remarketing lists, interest categories, audience segments), ordered by spend. Note that Google returns the audience as a resource name, which is not always readable. For breakdowns by device, day of week, hour or network use google_get_insights with its segments argument; for locations use google_get_geo_insights.

google_get_geo_insights

ChatGPT
Get Google Ads performance broken down by location: impressions, clicks, cost, CTR, conversions and conversion value per geographic area, ordered by spend, with the location named rather than left as an id. Use this to find regions that spend without converting. For breakdowns by device, day of week, hour or network use google_get_insights with its segments argument; for audiences use google_get_audience_insights.

google_get_insights

ChatGPT
Get Google Ads performance metrics — impressions, clicks, cost, CTR, average CPC, conversions, and conversion value — for the whole account, per campaign, per ad group, per individual ad, or per keyword, over a preset or custom date range. Split rows by device, day of week, hour, or network with segments, and add search impression share and the share lost to budget or rank with include_impression_share — that is how to tell whether a campaign has room to spend more. Use level ad to find the ads wasting money and to compare the responsive search ads in an ad group against each other; rows carry each ad's status so an already-paused ad is not mistaken for one worth pausing, and the row name is the ad's name or, as most responsive search ads have none, its first headline. The ad_group, ad and keyword levels, and any segmented query, are capped at the highest-impression rows. For an ad's full copy — every headline, description and landing page — use google_list_ads. For the keyword list and why keywords do or do not serve, use google_list_keywords; for the queries users actually typed, use google_list_search_terms; for performance by location use google_get_geo_insights and by audience google_get_audience_insights. If you also run Meta ads, that server exposes meta_get_insights.

google_get_resource_metadata

ChatGPT
List the fields a Google Ads resource exposes to GAQL, with each field's data type, its enum values, and whether it can be selected, filtered or sorted on. Use it before google_query when unsure what a resource is called or which fields it has — a guessed field name costs a rejected query. Pass a resource name in snake_case: campaign, ad_group, ad_group_criterion, ad_group_ad, customer, keyword_view, search_term_view, geographic_view, campaign_budget, conversion_action, asset, asset_group. Pass contains to narrow a wide resource, e.g. resource=campaign contains=bidding. Segments and metrics are their own resources: use resource=segments or resource=metrics to list those.

google_keyword_ideas

ChatGPT
Research new Google Ads keywords: average monthly search volume, competition level, and low/high top-of-page bid estimates for terms seeded from keyword phrases, a landing page url, or both. Use this to find terms worth adding and to check whether an existing keyword has any search volume at all. Returns the first page of results only. For keywords already in the account use google_list_keywords; for queries that already triggered ads use google_list_search_terms.

google_list_ad_accounts

ChatGPT
List the Google Ads accounts you can manage, including accounts reached through a manager (MCC) account, and which manager each is reached through. Says which accounts are managers (they hold no campaigns themselves), which cannot serve ads right now, and which is the stored default. To work in an account, pass its id or name as customer_id to any other tool — no dashboard change needed. Filter by name with name_contains when the list is long. If you also run Meta ads, that server exposes meta_list_ad_accounts.

google_list_ads

ChatGPT
List individual ads in a Google Ads account with their status, policy approval verdict, landing pages (the final URLs a click goes to) and, for responsive search ads, their headlines, descriptions and display paths. Use this to answer where an ad sends people and what it says. Optionally filtered by campaign or ad group. This is ad copy only, with no metrics: for impressions, clicks, cost and conversions per ad — which ad is wasting money, which responsive search ad is winning — use google_get_insights with level ad. For campaigns and ad groups, use google_list_campaigns. If you also run Meta ads, that server exposes meta_list_ads.

google_list_asset_groups

ChatGPT
Audit Performance Max campaigns by asset group — the level PMax actually spends at. Returns each asset group's status, ad strength, why it is or is not serving, and its impressions, clicks, cost, conversions and conversion value for the range, ordered by spend. Set include_assets to also list the assets in each group with the slot they fill and whether they are serving, and include_search_themes to list the search themes and audience signals the campaign has been told to chase. For campaign-level numbers use google_get_insights, and for the list of campaigns and their channel types use google_list_campaigns.

google_list_campaigns

ChatGPT
List campaigns in a Google Ads account, including each campaign's status, channel type, daily budget in the account's own currency (reported in the currency field), bidding strategy, the Max CPC limit of Maximize clicks campaigns, the target CPA or target ROAS an automated strategy bids to, the dates the campaign runs between, the locations and languages each campaign targets, and Google's own eligibility verdict per campaign (primaryStatus) with the reasons it is not serving. Optionally includes ad groups. For individual ads, use google_list_ads. If you also run Meta ads, that server exposes meta_list_campaigns.

google_list_conversion_actions

ChatGPT
Audit how a Google Ads account counts conversions: every conversion action with its category, type, status, whether it is primary (so it feeds bidding and the conversions column), its counting type, attribution model, value settings and lookback windows, plus how many conversions each one actually recorded over the date range. Use this to find duplicated actions, actions marked primary that should not be, missing conversion values, and primary actions that have stopped firing. Also returns the account's conversion goals — the (category, origin) groups bidding optimizes towards — and, when campaign_id is given, that campaign's own goals and whether it uses campaign-specific goal settings; change those with google_update_campaign_conversion_goals. For the performance numbers those conversions roll up into, use google_get_insights.

google_list_keywords

ChatGPT
List the keywords of a Google Ads account, campaign, or ad group with their match type, status, serving status, eligibility reasons, quality score, and effective CPC bid. Use this to explain why a campaign gets no impressions: a keyword can be enabled and still never serve. Negative keywords are included and flagged. For per-keyword performance numbers use google_get_insights with level=keyword; for the queries users actually typed use google_list_search_terms; for new keyword suggestions use google_keyword_ideas.

google_list_search_terms

ChatGPT
List the actual search queries that triggered Google Ads ads, with impressions, clicks, cost, CTR, conversions, the keyword each query matched, and whether the query is already added as a keyword or excluded as a negative. Ordered by impressions and capped. Use this to find wasted spend and missing keywords. For the keyword list itself use google_list_keywords; for suggestions not yet in the account use google_keyword_ideas. Meta has no search term equivalent.

google_query

ChatGPT
Run a read-only Google Ads Query Language (GAQL) SELECT against the account and return the raw rows. Use this for reporting questions the typed tools do not cover — a breakdown by device and day of week, impression share lost to rank, month-over-month by network, ad approval status. Prefer the typed tools where one fits: google_get_insights for standard performance, google_list_campaigns, google_list_ads, google_list_keywords, google_list_search_terms. This tool cannot change anything; every write has its own tool. Call google_get_resource_metadata first when unsure which fields a resource has. Note the case difference: the query is written in snake_case (campaign.name, metrics.cost_micros) and the rows come back in camelCase (campaign.name, metrics.costMicros), because that is what the API returns. Money arrives in micros — divide by 1,000,000. A query with no LIMIT gets LIMIT 100, and LIMIT above 1000 is lowered to it.

google_remove_ad

ChatGPT
Permanently remove ads from a Google Ads account. Removal cannot be undone: Google keeps no way back through the API, and the ad takes its performance history with it out of the account's default views. Pause with google_set_status when the ad may come back — a paused ad costs nothing and keeps its history. Two safeguards apply to every entry: the ad must already be PAUSED, and confirm_headline must match one of that ad's own headlines. Ids that are already gone are reported as skipped instead of failing the call, but a wrong headline or a still-serving ad refuses the whole call and removes nothing. Find ids and headlines with google_list_ads. Up to 20 ads per call.

google_remove_campaign

ChatGPT
Permanently remove a Google Ads campaign. Removal cannot be undone: Google keeps no way back through the API, and the campaign and its history leave the account's default views. Pause with google_set_status when the campaign may come back — a paused campaign costs nothing and keeps its history. Two safeguards apply: the campaign must already be PAUSED, and confirm_campaign_name must match its exact name. Find ids and names with google_list_campaigns.

google_remove_keywords

ChatGPT
Permanently remove keywords from a Google Ads ad group. Removal cannot be undone: re-adding the same text later creates a fresh criterion with no quality score or history, so pause with google_update_keyword when the keyword may come back. Ids that are already gone are reported as skipped instead of failing the call. Find criterion ids with google_list_keywords. Up to 50 per call.

google_select_account

ChatGPT
Set the optional default Google Ads account that reads use when they pass no customer_id, by customer id or by account name. Rarely needed: every tool takes customer_id (id or name), so switching accounts in a conversation is just passing the other one. The default belongs to the connection and is shared by every chat you have open, and changes never fall back to it when you have several accounts. Changes nothing in Google Ads itself.

google_set_status

ChatGPT
Pause or resume a Google Ads object: an individual ad, an ad group, or a whole campaign. Pausing stops its spend; resuming re-checks the governing campaign budget against your cap first (a campaign whose budget cannot be read is refused; an ad or ad group under it is enabled within that campaign's existing budget). Use google_list_campaigns or google_list_ads to find ids. If you also run Meta ads, that server exposes meta_set_status.

google_update_account_budget

ChatGPT
Raise the account-level spending limit of an invoiced Google Ads account, the total cap above every campaign budget. Use when google_check_billing reports the account budget is exhausted and nothing is serving. Cannot exceed your configured total account-budget cap and never sets an unlimited budget. Accounts that pay by card have no account budget, so this does not apply to them. For a campaign's daily budget, use google_update_budget.

google_update_ad

ChatGPT
Rewrite the copy of an existing responsive search ad: its headlines, descriptions, landing page and display paths. The ad keeps its id and performance history, and Google puts it back into policy review after the edit. Each list you pass REPLACES the whole list — send every headline you want the ad to have, not just the new ones — and a field you omit is left untouched. Read the current copy first with google_list_ads. Only responsive search ads can be edited this way; for other ad types create a new one with google_create_ad.

google_update_ad_group

ChatGPT
Rename a Google Ads ad group and/or set its default max CPC bid, which applies to every keyword in it that has no bid of its own. A bid only affects delivery when the campaign uses Manual CPC; the result says so when it does not. To pause or resume the ad group use google_set_status, and to change its keywords use google_add_keywords, google_update_keyword, or google_remove_keywords.

google_update_asset_group

ChatGPT
Change the settings of a Performance Max asset group: its name, whether it is enabled or paused, the landing pages it sends clicks to and the display paths shown after the domain. This is how one asset group of a campaign is stopped or restarted without touching the others. final_urls REPLACES the whole list, and a field you omit is left untouched. An asset group cannot be moved to a different campaign. For the headlines and descriptions inside the group use google_update_asset_group_assets, and for its search themes google_update_search_themes.

google_update_asset_group_assets

ChatGPT
Rewrite the text of a Performance Max asset group: its headlines, long headlines and descriptions. Each list you pass REPLACES the whole list for that slot — send every headline you want the asset group to have, not just the new ones — and a slot you omit is left untouched. Text that is already there keeps its existing asset and its performance history, so repeating a headline you want to keep costs nothing. Read the current copy first with google_list_asset_groups and include_assets. Google's minimums apply and cannot be crossed: 3 headlines, 1 long headline, 2 descriptions, with at least one description of 60 characters or fewer. For images, logos and video use google_update_asset_group_media; for search themes google_update_search_themes; for a responsive search ad google_update_ad.

google_update_asset_group_media

ChatGPT
Replace the images, logos, YouTube video or call-to-action of a Performance Max asset group. Images are given as public https URLs, which this server downloads and uploads to Google; videos are given as YouTube video ids, not URLs. Each list REPLACES the whole slot — send every image you want the slot to have — and a slot you omit is left untouched. An image whose bytes Google already holds keeps its existing asset and its performance history, so passing the same URLs again changes nothing; note that the match is on exact bytes, so a re-encoded copy of the same picture counts as a new image. Google's shapes are enforced before anything is uploaded: marketing images 1.91:1, square 1:1, portrait 4:5, logos 1:1, landscape logos 4:1. For headlines and descriptions use google_update_asset_group_assets.

google_update_bidding_strategy

ChatGPT
Manage portfolio bidding strategies in a Google Ads account: one automated strategy that several campaigns share. Call it with no arguments to list them with their targets and campaign counts. Creates a strategy (name plus type: Maximize conversions, Maximize conversion value, Target CPA, Target ROAS or Target impression share), changes its name, targets and CPC bid limits, assigns campaigns to it, takes campaigns off it, and removes a strategy no campaign uses. A campaign taken off a portfolio keeps bidding on the closest standard strategy with the same target (Target CPA becomes Maximize conversions with that target CPA). target_roas is a ratio: 3.5 means 350%. A CPC bid limit above your daily spend cap is refused. For a single campaign's own strategy use google_update_campaign_bidding.

google_update_brand_assets

ChatGPT
Change the business name and logos of a Google Ads campaign. On a Performance Max campaign with brand guidelines enabled — Google's default for campaigns created recently — these three assets live on the campaign rather than on each asset group, which is why google_update_asset_group_assets and google_update_asset_group_media refuse them and send you here. Logos are given as public https URLs, which this server downloads and uploads to Google: square logos must be 1:1 and at least 128x128, landscape logos 4:1 and at least 512x128. Each list REPLACES the whole slot and a slot you omit is left untouched. Brand guidelines make a business name and at least one logo mandatory, so neither can be emptied.

google_update_budget

ChatGPT
Change the daily budget of a Google Ads campaign. Cannot exceed your configured daily spend cap, and refuses budgets shared across several campaigns and campaigns that run on a total budget for a date range (Google allows no daily amount on those). If you also run Meta ads, that server exposes meta_update_budget.

google_update_campaign_bidding

ChatGPT
Change the bidding settings of a Google Ads campaign: set or clear the Max CPC limit of a Maximize clicks campaign, and/or switch the campaign between Maximize clicks and Manual CPC. Use this when a campaign gets few or no impressions because its Max CPC limit is below the market bid, or before setting manual bids with google_update_ad_group or google_update_keyword, which Google only honours under Manual CPC. Also switches a campaign to Maximize conversions, optionally with a target CPA — the strategy that optimizes towards the campaign's conversion goals, which google_update_campaign_conversion_goals selects. Also switches a campaign to Maximize conversion value, optionally with a target ROAS given as a RATIO (pass 4 to mean 400%) — the strategy Performance Max and value-based search campaigns use to bid on revenue rather than on conversion count. Refuses campaigns governed by a portfolio bidding strategy. For daily budgets use google_update_budget.

google_update_campaign_conversion_goals

ChatGPT
Choose which conversion goals a Google Ads campaign optimizes for, which is what the Google Ads UI calls campaign-specific goal settings. Goals are groups of conversion actions by category and origin — pass the categories the campaign should bid towards (for example SIGNUP) and every other goal is switched off for that campaign alone. Use this before switching a campaign to MAXIMIZE_CONVERSIONS with google_update_campaign_bidding, or when a campaign optimizes for the wrong events. Read the current goals and the categories available with google_list_conversion_actions. Pass use_account_goals to hand the campaign back to the account-level goals.

google_update_campaign_criteria

ChatGPT
Change a Google Ads campaign's device bid adjustments, ad schedule and audiences. Set a device adjustment from -100% (stop showing on that device) to +900%; add ad schedule windows (a day with start and end time on the quarter hour, optional bid adjustment) so ads only run at those times; add audiences by user list id (remarketing, customer lists) or user interest id (affinity, in-market), optionally with a bid adjustment; switch audiences between OBSERVATION (adjust bids, keep reach) and TARGETING (reach only those audiences); change or remove existing criteria by criterion id. Call it with only campaign_id to read the current settings. Customer lists and their ids come from google_create_customer_list; other audience ids from google_query on user_list or user_interest. Automated bidding ignores bid adjustments other than a -100% device exclusion. Not for Performance Max. For locations and languages use google_update_campaign_targeting.

google_update_campaign_negatives

ChatGPT
Stop a Google Ads campaign from serving on queries and brands you do not want it on. Adds campaign-level negative keywords with EXACT, PHRASE or BROAD match, and for Performance Max and search campaigns adds brand exclusions — a brand list Google matches against every variation and misspelling of a brand, which plain negative keywords cannot do. Together these are the fix for a Performance Max campaign cannibalizing your own brand search: exclude your brand to push branded traffic back to the search campaign that was already winning it, or exclude a competitor's brand to stop paying for their name. Also removes negative keywords, detaches a brand list from a campaign, and takes individual brands out of a list. Call it with no changes to read what a campaign already excludes. A search campaign needs AI Max turned on in Google Ads before a brand list can be attached to it; a Performance Max campaign needs nothing. Refuses to edit a brand list that is shared with other campaigns. For ad-group-level negatives use google_add_keywords and google_remove_keywords; for locations and languages use google_update_campaign_targeting.

google_update_campaign_settings

ChatGPT
Rename a Google Ads campaign and change the dates it runs between. Removing an end date is the fix for a campaign that looks ENABLED but spends nothing because its end date has passed — pass end_date as null to let it run until it is paused. An end date in the past is refused, because it would stop a campaign retroactively; use google_set_status with PAUSED for that, which is reversible. The start date of a campaign that has already started cannot be moved. For daily budgets use google_update_budget, for pausing and enabling google_set_status, for bidding google_update_campaign_bidding, and for locations and languages google_update_campaign_targeting.

google_update_campaign_targeting

ChatGPT
Change where and in which languages a Google Ads campaign may show: add targeted locations, add excluded locations, add languages, remove existing location or language criteria, and set whether location targeting applies to people present in an area or also to people interested in it. Location entries may be geo target constant ids or place names — use google_find_locations when you only have a name; language entries may be language constant ids, ISO codes (en, uk) or names (English). Read the current targeting with google_list_campaigns and include_targeting. This tool only adds what you name and removes what you name, with one exception: excluding a location the campaign currently targets replaces that criterion, and targeting one it currently excludes does the same, because Google cannot flip a criterion in place. It never replaces the whole list. add_radius targets a circle (1-500 miles or 1-800 km) around a city, postcode, street address or latitude/longitude point, for 'within 25 miles of Austin' targeting; Google places the centre itself from the address. A campaign with no targeted locations reaches every location on earth, and one with no languages shows to every language.

google_update_conversion_action

ChatGPT
Change how a Google Ads conversion action counts and values conversions: its counting type (ONE_PER_CLICK counts one conversion per click, MANY_PER_CLICK counts every occurrence), its category, whether it is primary and therefore feeds Smart Bidding and the conversions column, its default value and currency, and its click-through and view-through lookback windows. Use it to fix what google_list_conversion_actions reports — a purchase action counting every occurrence, a lead action inflating the number, a flat default value on an action that should send real order values. Read the action first with google_list_conversion_actions. Only the settings you pass change; the rest are left alone. Note that Google Ads only imports an action whose type starts with GOOGLE_ANALYTICS_4_, UNIVERSAL_ANALYTICS_, FIREBASE_ or THIRD_PARTY_APP_ANALYTICS_, and refuses to change its counting type or its lookback windows through the API — those live in the system that produces the conversion, so for a Google Analytics key event the counting method is set in Analytics. A UNIVERSAL_ANALYTICS_ import and an action owned by a different account (cross-account conversion tracking) cannot be edited here at all. This changes counting from now on and does not restate past conversions, and Smart Bidding takes a week or two to settle afterwards. To choose which conversions a single campaign optimizes for, use google_update_campaign_conversion_goals instead. Deleting a conversion action is not offered here because it cannot be undone.

google_update_customer_list_contacts

ChatGPT
Add or remove customers in a Google Ads Customer Match list by email address or phone number (E.164, e.g. +14155550123). Values are normalized the way Google requires and SHA-256 hashed by this server before upload; raw contacts are never sent or stored. Requires consent_confirmed true: the people must have agreed to their data being used for advertising. At most 10000 contacts per call. Google processes the upload in the background, usually within 6-12 hours; check the list size with google_create_customer_list (no name). The account must have accepted Google's Customer Match terms. Create the list with google_create_customer_list.

google_update_keyword

ChatGPT
Pause or resume a single Google Ads keyword and/or change its max CPC bid. Pausing a keyword stops it serving without deleting its history — prefer it to google_remove_keywords when the keyword may come back. A bid only affects delivery when the campaign uses Manual CPC; the result says so when it does not. Find criterion ids with google_list_keywords.

google_update_search_themes

ChatGPT
Set the search themes of a Performance Max asset group — the phrases that tell Google which demand this asset group is meant to capture, which is one of the few direct controls a Performance Max campaign has. The list you pass REPLACES the whole set: send every theme you want the asset group to have, including the ones already there. A theme that drops out of the list is deleted and this tool cannot bring it back. At most 25 themes of 80 characters each. Audience signals on the same asset group are never touched. Read the current themes first with google_list_asset_groups and include_search_themes.

google_update_shared_budget

ChatGPT
Manage shared budgets in a Google Ads account: one daily amount that several campaigns draw from. Call it with no arguments to list the shared budgets and the campaigns on each. Creates a shared budget (name plus daily_budget), renames one, changes its daily amount, moves campaigns onto it, moves campaigns off it onto a budget of their own (unassign_daily_budget sets that amount), and removes a shared budget no campaign uses. Every daily amount is checked against your configured daily spend cap. For a campaign's own, unshared budget use google_update_budget.

google_update_shared_list

ChatGPT
Manage the account's shared negative lists in Google Ads: negative keyword lists and placement exclusion lists, which one edit applies to every campaign they are attached to. Call it with no arguments to list them with their sizes and campaigns; with shared_list_id to read one list's members. Creates a list (name plus type), renames one, adds negative keywords to a keyword list or website placements to a placement list, removes members by criterion id, and removes a whole list. Adds skip members the list already holds. Attach a list to a campaign with google_update_campaign_negatives (attach_shared_list_ids); for a single campaign's own negatives use that tool too.

google_upload_conversions

ChatGPT
Send offline conversions to a Google Ads conversion action so bidding learns from sales and qualified leads that happen outside the website. For an UPLOAD_CLICKS action each row is the click id (gclid, gbraid or wbraid) captured when the person clicked the ad, plus when they converted; for an UPLOAD_CALLS action each row is the caller's phone number in E.164 and when the call started. Optional value, currency and order_id (which also stops a re-sent row from counting twice). At most 200 rows per call; times need a UTC offset, e.g. 2026-10-14 15:30:00+02:00. Rows Google rejects are reported one by one and the rest still count. Create the action with google_create_conversion_action first. Uploaded conversions cannot be deleted here.

gsc_compare_periods

ChatGPT
Compare organic Google Search performance of one Search Console property between two date windows: totals (clicks, impressions, CTR, position) for both with the change, and — when dimensions are given — the rows that gained and lost the most clicks (queries that fell, pages that grew, countries that shifted), each with both windows' figures and the delta. The previous window defaults to the same length immediately before the current one; pass previous_start_date and previous_end_date for year-over-year. Rows are ordered by the size of the click change; row_limit caps how many come back. Read-only.

gsc_find_keyword_opportunities

ChatGPT
Rank the organic search queries of one Search Console property by the clicks they could add, from the user's connected Google login's own data. Two lists: striking-distance queries (average position 4-20 with real impressions — within reach of the top 3 with content or internal-link work, ranked by the clicks a top-3 position would bring) and low-CTR queries (page-one position earning well under the CTR that position usually gets — the title or snippet is the problem). Each row carries clicks, impressions, CTR, position, the expected CTR and the potential extra clicks. Pass exclude_queries_containing with the brand name, page to look at one landing page, split_by_page to see which page each query lands on. Read-only; proposes nothing to Google Ads.

gsc_find_page_opportunities

ChatGPT
Find the landing pages of one Search Console property that organic search work would move most, from the user's connected Google login's own data. Four lists: low-CTR pages (page-one average position earning well under the usual CTR — title and snippet), striking-distance pages (average position 4-20 across their queries — content and internal links), decaying pages (clicks down 30 % or more against the previous window of the same length) and cannibalised queries (one query whose impressions are split across two or more of the site's pages, each holding a real share — consolidate or differentiate). Rows carry clicks, impressions, CTR, position and, where it applies, expected CTR, potential clicks and the previous window's figures. Read-only.

gsc_inspect_url

ChatGPT
Read Google's index status for one to 10 URLs of one Search Console property of the user's connected Google login — what the URL Inspection tool shows: the verdict (PASS, NEUTRAL, FAIL), the coverage state in Google's words (e.g. "Submitted and indexed", "Crawled - currently not indexed", "Excluded by noindex tag"), whether indexing is allowed, the robots.txt state, the page fetch state, the canonical Google chose against the one the page declares, the last crawl time and the crawler used, the sitemaps and referring pages Google found the URL through, and the rich-result verdict with any issues. Typical uses: why a page is not ranking, whether a new page is indexed yet, a canonical mismatch after a redesign. Google allows 2 000 inspections per property per day. Read-only: it never requests indexing or runs a live test.

gsc_list_sitemaps

ChatGPT
List the sitemaps submitted for one Search Console property of the user's connected Google login, with each one's type, whether it is a sitemap index, when it was submitted and last downloaded by Google, whether processing is still pending, the error and warning counts Google reported, and per content type (web, image, video, news) how many URLs were submitted. Pass sitemap_url to read one sitemap alone. Typical uses: is the sitemap being fetched, did the last deploy break it, how many URLs does Google see in it. Read-only: it never submits or deletes a sitemap.

gsc_list_sites

ChatGPT
List the Google Search Console properties the user's connected Google login can read — domain properties (sc-domain:example.com) and URL-prefix properties (https://example.com/) — with the login's permission level on each and whether it is verified. Call this first: every other gsc_* tool takes one of these site URLs. Read-only; reads only the user's own Search Console access.

gsc_query_search_analytics

ChatGPT
Report organic Google Search performance for one Search Console property of the user's connected Google login: clicks, impressions, CTR and average position, grouped by query, page, country, device, search appearance and/or date over a date window, with filters (one landing page, non-brand queries, one country, a URL pattern) and the search surface (web, image, video, news, Discover). Typical uses: top queries, clicks by landing page, daily trend, mobile vs desktop, which queries send traffic to one URL. Rows come back one object per row keyed by the dimension names, ordered by clicks; one page per call, up to 5000 rows (default 100), pass start_row for the next page. Search Console counts organic results only — never present its clicks as paid traffic or compare them with ad clicks as like for like. Read-only.

gtm_audit_tracking

ChatGPT
Audit the conversion tracking in one Google Tag Manager container and rank what is wrong by what it does to measurement. Container checks: paused tags, tags with no trigger, duplicate GA4 configuration or Google tags (double counting), Universal Analytics tags still firing, marketing tags without a consent setting, custom HTML, unused triggers and variables, and unpublished workspace changes. When Google Ads is also connected, it reads the account that tracks the conversions (the manager account under cross-account tracking), compares every enabled website conversion action's conversion label with the container's Google Ads conversion tags, and reports actions with no tag here, tags for no action, tags sending to another account's id and paused conversion tags; GA4-imported, offline, call and app conversions are listed as not applicable, never as missing. Read-only; it changes nothing in Tag Manager or Google Ads.

gtm_create_tag

ChatGPT
Create one tag in a draft workspace of a Google Tag Manager container: a GA4 event tag (measurement id, event name, event parameters), a Google tag (tag id, configuration settings) or a Google Ads conversion tag (conversion id and label, optional value, currency and order id), with the triggers that fire and block it, its paused state and consent settings. The tag is saved in the workspace named LoomaScale (created if missing) or one you name, and is NOT published: the user reviews, previews and publishes it in Tag Manager. Requires editing to be enabled on the Tag Manager connection. Custom HTML and other tag kinds are not created.

gtm_create_trigger

ChatGPT
Create one trigger in a draft workspace of a Google Tag Manager container: a page view, DOM ready, window loaded, click, link click, form submit, custom event or history change trigger, with conditions such as Page URL contains /thank-you, and for a custom event its event name. The trigger fires nothing until a tag uses it (gtm_create_tag, gtm_update_tag). Saved in the LoomaScale workspace (or one you name) and NOT published: the user reviews and publishes in Tag Manager. Requires editing to be enabled on the Tag Manager connection.

gtm_create_variable

ChatGPT
Create one user-defined variable in a draft workspace of a Google Tag Manager container: a constant (e.g. a GA4 measurement id), a data layer variable (e.g. ecommerce.value), a URL part (e.g. the gclid query parameter), a first-party cookie, a global JavaScript variable, or a lookup table mapping one variable's values to outputs. Tags and triggers then reference it as {{Name}}. Saved in the LoomaScale workspace (or one you name) and NOT published: the user reviews and publishes in Tag Manager. Requires editing to be enabled on the Tag Manager connection. Custom JavaScript variables are not created.

gtm_create_workspace

ChatGPT
Create one new, empty workspace in a Google Tag Manager container, with the name the user chose. Only when the user asks for a new workspace: drafts normally go into an existing one (gtm_list_workspaces). A free container holds at most three workspaces; Google refuses a fourth, and this tool reports that so the user can reuse or delete one in Tag Manager. Creates nothing else and publishes nothing. Requires the Tag Manager connection's editing permission.

gtm_enable_built_in_variables

ChatGPT
Enable one or more of Google Tag Manager's built-in variables (Click URL, Click Text, Click Classes, Form ID, Page Path, Scroll Depth Threshold, …) in a draft workspace of a web container, so triggers and tags can reference them as {{Click URL}}. A click or form trigger whose condition uses a disabled built-in never fires. Types already enabled are skipped. Saved in the existing workspace the user names and NOT published. Requires the Tag Manager connection's editing permission.

gtm_get_container

ChatGPT
Summarise one Google Tag Manager container's published (live) version: the version id and name, the domains and platform it serves (web, server, iOS, Android, AMP), how many tags, triggers, variables, templates and clients it holds, how many tags are paused, the tags by kind (Google Ads conversion, GA4, Google tag, custom HTML, community template, …) and how many marketing tags carry a consent setting. Use it first to orient; gtm_list_tags and gtm_audit_tracking go deeper. Read-only.

gtm_get_workspace_status

ChatGPT
Show the unpublished changes in one Google Tag Manager container: for each workspace, which tags, triggers, variables and other entities were added, changed or deleted since the live version, and whether it has merge conflicts. Use it to tell whether a fix is live yet or sits unpublished, and whether someone left work half done. Reads workspaces.list plus one status per workspace (max_workspaces, default 3). Read-only.

gtm_list_containers

ChatGPT
List the Google Tag Manager containers the user's connected Google login can read, with each container's public id (GTM-XXXXXXX), name and account. Call this first when the user has more than one site: the other gtm_* tools take one of these containers. Answers from the stored list; on a login with many accounts the list may still be filling in the background and the answer says how many accounts are left to read. Pass refresh=true after the login was granted a new container. Read-only.

gtm_list_tags

ChatGPT
List the tags in one Google Tag Manager container's published version: name, type (Google Ads conversion, GA4 event, Google tag, custom HTML, community template, …), whether paused, the triggers that fire and block it by name, its consent setting and the parameters that say where it sends data — conversion id and label, measurement id, tag id, pixel id. Filter by kind (type) or paused state. Use it to answer which conversion tags exist, what fires on the thank-you page, or where a pixel is. Read-only; nothing in Tag Manager is changed.

gtm_list_triggers_variables

ChatGPT
List the triggers and user-defined variables of one Google Tag Manager container's published version. Each trigger comes with its type (page view, click, custom event, form submission, …), its conditions in words ("{{Page URL}} contains /thank-you") and the tags it fires; each variable with its type (data layer, constant, lookup table, JavaScript, …), its settings and the tags, triggers and variables that reference it. Use it to see what a tag's trigger actually tests or where a value comes from. Read-only.

gtm_list_versions

ChatGPT
List the versions of one Google Tag Manager container, newest first: version id, the name and note the publisher gave it, and how many tags, triggers and variables it held. Use it to see how often the container changes, what the recent publishes were about, and whether a version was deleted. Google gives no publish timestamp on the list; the version name is what carries the date when the team writes one. Read-only.

gtm_list_workspaces

ChatGPT
List the workspaces of one Google Tag Manager container: id, name, description and the Tag Manager link of each. Every draft change (gtm_create_tag, gtm_update_trigger, …) needs a workspace the user chose, so call this and ask the user which one before the first write; gtm_get_workspace_status shows what each workspace has changed. A free container holds at most three workspaces. Read-only.

gtm_publish_version

ChatGPT
Publish one saved Google Tag Manager container version, making it the live configuration of the user's website. The only tool of this server that changes the live site. Two steps: with confirm=false (default) it reads the named version and the version live now and reports what would change, publishing nothing; with confirm=true — set only after the user explicitly confirmed publishing that version id in chat — it publishes that exact version (with its fingerprint, so a version changed since the dry run is refused) and reads the live version again to report the verified result. Never publishes a workspace: create a version first (gtm_create_version). Requires the Tag Manager connection's publishing permission.

gtm_update_tag

ChatGPT
Change one existing tag of a Google Tag Manager container in a draft workspace: replace the triggers that fire or block it, pause or unpause it, rename it, set notes or consent settings, and — for a GA4 event, Google tag or Google Ads conversion tag — change its measurement id, event name and parameters, tag id and settings, or conversion id, label, value, currency and order id. Only the arguments passed change; pausing is how a duplicate or wrong tag is switched off, nothing is deleted. Saved in the existing workspace the user names (ask which) and NOT published: the user reviews and publishes in Tag Manager. Requires editing to be enabled on the Tag Manager connection.

gtm_update_trigger

ChatGPT
Change one existing trigger of a Google Tag Manager container in a draft workspace: replace its conditions (e.g. fix a Page URL filter that never matches the thank-you page), change a custom event trigger's event name, rename it or set notes. The trigger's kind cannot change; only the arguments passed change. Saved in the existing workspace the user names (ask which) and NOT published: the user reviews and publishes in Tag Manager. Requires editing to be enabled on the Tag Manager connection.

gtm_update_variable

ChatGPT
Change one existing user-defined variable of a Google Tag Manager container in a draft workspace: a constant's value, a data layer variable's key or default, a URL variable's component or query key, a cookie's name, a JavaScript variable's name, a lookup table's input and rows, or any variable's name and notes. The variable's kind cannot change; only the arguments passed change. Saved in the existing workspace the user names (ask which) and NOT published: the user reviews and publishes in Tag Manager. Requires editing to be enabled on the Tag Manager connection.

linkedin_analyze_demographics

ChatGPT
Break one LinkedIn ad account's results down by the professional demographics of the members reached — job title, seniority, industry, company, job function, company size or country — over a date preset or since/until range, optionally narrowed to given campaign_ids. Each value gets impressions, clicks, CTR, spend, CPC, leads, conversions, cost per lead and its share of the spend, ranked by sort_by and cut to limit; URNs are resolved to names through LinkedIn's lookups. LinkedIn reports these figures approximately, delayed and without conversion value, which the notes repeat. Pair with linkedin_get_insights for the entity view. Reads only; changes nothing.

linkedin_audit_wasted_spend

ChatGPT
Find wasted spend in your LinkedIn ad accounts over the last 30 days and rank it by money lost: campaigns spending above the waste threshold with no leads and no conversions, campaigns spending for 7 or more consecutive days with nothing to show, creatives whose CTR is under half of their campaign's median, a job title, seniority, industry or company size taking a quarter or more of the spend without a result (directional — LinkedIn's demographic figures are approximate), spend that jumped or fell more than 50% versus the previous 30 days while results per unit of spend worsened, and spend in campaigns whose group is not active. Defaults to every connected account, up to 5; pass ad_account_ids to choose. It issues several LinkedIn reporting reads per account (campaign groups, campaigns, campaign, daily, creative and demographic analytics) and reports accounts it could not read in skipped. Use linkedin_get_insights or linkedin_analyze_demographics to drill into a finding. Reads only; changes nothing.

linkedin_get_insights

ChatGPT
Read performance of one LinkedIn ad account from LinkedIn's reporting (adAnalytics) at account, campaign group, campaign or creative level over a date preset or an explicit since/until range: impressions, clicks, CTR, spend, CPC and CPM on every row, plus the metric_set asked for (core, conversions, leads, video or engagement). time_increment splits rows by day or month; campaign_ids narrows to given campaigns; compare_previous_period reads the window just before as well and adds previous values and percentage deltas per row and in total. Rows are sorted by spend. Campaign and group names come from linkedin_list_campaigns' reads; creatives are reported by id. Reads only; changes nothing.

linkedin_list_ad_accounts

ChatGPT
List the LinkedIn ad accounts connected to this account: the ones that can serve (with id, name, currency and which is the stored default) and, separately, the ones LinkedIn lists as not active or as test accounts. To work in an account, pass its numeric id or name as ad_account_id to linkedin_list_campaigns, linkedin_get_insights, linkedin_analyze_demographics or linkedin_audit_wasted_spend — no dashboard change needed. Filter with name_contains when the list is long. Reads only; changes nothing.

linkedin_list_campaigns

ChatGPT
List the campaigns of one LinkedIn ad account — status, whether each is serving right now and why not, campaign type and format, objective, cost type, optimisation target, daily and total budget, bid, schedule and audience expansion — and, unless include_groups is false, the campaign groups they sit in with their status, total budget and schedule. Defaults to ACTIVE and PAUSED campaigns; pass status to widen or narrow. Use the ids here with linkedin_get_insights and linkedin_analyze_demographics. Reads only; changes nothing.

linkedin_select_account

ChatGPT
Set the optional default LinkedIn ad account that reads use when they pass no ad_account_id, by numeric id or by account name. Rarely needed: every tool takes ad_account_id (id or name), so switching accounts in a conversation is just passing the other one. The default belongs to the connection and is shared by every chat you have open. Changes nothing in LinkedIn Ads itself.

loomascale_check_quota

ChatGPT
Report the user's remaining LoomaScale allowance for the current period. On account-based plans (business, portfolio) the metered unit is different ad accounts used per billing month — the answer then reports accounts used, the plan's account allowance and when it resets, and tasks are unlimited. The free trial is unlimited on both tasks and ad accounts until it ends. On the free plan of accounts from before the trial it reports tasks: used, limit, remaining and the reset date, where a task is one request in this chat — all the tool calls made to answer a single message count as one. Legacy plans are unlimited. Calling this is free — it never consumes allowance and keeps working after the quota runs out or the trial ends. This is the LoomaScale allowance only, not ad spend, ad account balance, or campaign budget.

loomascale_request_feature

ChatGPT
Sends a feature request for an action, report or ad platform that LoomaScale does not support yet to the LoomaScale team, as a text message. Returns whether it was sent and a link to a feedback form prefilled with the same request, where the user can add details. Changes nothing in any ad account. Free: it does not count against the LoomaScale allowance.

meta_activate_campaign

ChatGPT
Activate a PAUSED Meta campaign so it starts spending. Only works on campaigns created through this server, and re-checks the budget against your daily cap first. If you also run Google Ads, that server exposes google_activate_campaign.

meta_boost_instagram_post

ChatGPT
Run an existing Instagram post as an ad in an ad set that already exists in your Meta ad account. Call first with confirmed=false to check the ad set, Instagram account and Page and see what will be created; call again with confirmed=true to create it. The ad is created PAUSED and spends nothing until meta_set_status turns it on. The ad set must deliver on Instagram placements. Find account ids with meta_list_instagram_accounts.

meta_cancel_ab_test

ChatGPT
Cancel a Meta A/B test or lift study of the business that owns your ad account. This deletes the study and its results; to stop it and keep the results use meta_end_ab_test. The campaigns and ad sets in it keep running; pause them with meta_set_status.

meta_check_pacing

ChatGPT
Check today's ad spend and delivery health for a Meta ad account: pacing against daily budgets, zero-delivery active campaigns, and delivery problems.

meta_compare_accounts

ChatGPT
Compare spend and results across several of your Meta ad accounts over the same date range — spend, impressions, clicks, reach, purchases and purchase value per account, each in its own currency plus a US dollar conversion so the accounts can be ranked. Defaults to every ad account this connection reaches. Use this instead of calling meta_get_insights once per account; it reports which accounts could not be read rather than failing. Reads only.

meta_create_ab_test

ChatGPT
Start a Meta A/B (split) test between 2 to 5 existing campaigns or ad sets in your ad account: Meta splits the audience evenly so each one reaches different people for duration_days, then names a winner on cost per result. To test creatives, put each in its own ad set. The tested objects keep their own budgets and status; active ones keep spending. Manage it with meta_update_ab_test.

meta_create_ad

ChatGPT
Add a new ad, with a new creative, to an ad set that already exists — use this instead of meta_create_campaign when the campaign and ad set are already set up. The ad is created PAUSED even if the ad set is active, so it does not spend until you run meta_set_status on the returned adId. Any image is uploaded to the ad account rather than hotlinked. Use meta_list_campaigns to find the ad set id.

meta_create_adset

ChatGPT
Add a PAUSED ad set to a Meta campaign that already exists in your ad account, with its countries, age range, daily budget and bidding. The optimization goal follows the campaign objective; a sales campaign's ad set optimizes for a pixel event, locked at creation. If the campaign has its own budget (CBO) leave daily_budget and bidding out. The budget is checked against your daily cap. Add ads with meta_create_ad.

meta_create_audience

ChatGPT
Create a custom audience in your Meta ad account: CUSTOMER_LIST (empty, then add people with meta_update_audience_users), WEBSITE (visitors your pixel saw in the last retention_days, optionally only URLs containing url_contains or one pixel event), ENGAGEMENT (people who engaged with your Facebook Page or Instagram account), or LOOKALIKE (people similar to an audience you already have, in one country). It reaches no one and spends nothing until an ad set targets it. See meta_list_audiences.

meta_create_campaign

ChatGPT
Create a Meta (Facebook/Instagram) ad campaign for traffic, awareness, engagement, or sales. The campaign, ad set, and ad are all created PAUSED — nothing spends until you run meta_activate_campaign. A sales campaign optimizes for website conversions and needs a Meta Pixel on the ad account; its conversion event is locked in at creation. Bidding defaults to lowest cost with no cap; bid_strategy sets a cost cap, a bid cap, or a minimum ROAS (sales campaigns optimizing for PURCHASE only). Change it later with meta_update_adset_bidding.

meta_create_campaign_only

ChatGPT
Create just a Meta campaign, PAUSED, with no ad sets or ads yet — use it to build a campaign step by step, then add ad sets with meta_create_adset. With daily_budget it is a campaign-budget campaign (Advantage campaign budget, CBO) and its ad sets carry no budget; without it each ad set gets its own budget. The budget is checked against your daily cap. For a complete campaign in one call use meta_create_campaign.

meta_create_creative

ChatGPT
Create a single-image or single-video ad creative in your Meta ad account's creative library, to use later with meta_create_ad's creative_id. A creative does not run or spend on its own. Images and video thumbnails are uploaded to the ad account; a video_url is uploaded and must finish processing (retry with the returned video id if it is still processing). Optionally shows an Instagram account as the identity on Instagram placements (see meta_list_instagram_accounts).

meta_create_lift_study

ChatGPT
Start a Meta Conversion Lift study on campaigns in your ad account: a holdout share of their audience (default 10%) does not see the ads, and Meta compares pixel conversions against the people who did, to measure the conversions the ads caused. It starts now and runs duration_days. The holdout means those campaigns reach fewer people while it runs. Meta refuses campaigns without enough spend or conversions. Stop it with meta_update_ab_test.

meta_delete_audience

ChatGPT
Permanently delete a custom audience from your Meta ad account. This cannot be undone, and Meta pauses any active ad set that targets it. Refused while a lookalike audience is built from it (delete those first). Repeat the audience's current name in confirm_name.

meta_delete_object

ChatGPT
Permanently delete a paused Meta campaign, ad set or ad, or an unused creative, in your ad account. This cannot be undone: deleting a campaign also deletes its ad sets and ads. Pause it first with meta_set_status, and repeat its current name in confirm_name. Past performance stays in reports.

meta_end_ab_test

ChatGPT
End a Meta A/B test or lift study of the business that owns your ad account now. The results gathered so far are kept and stay readable in Ads Manager's Experiments; the study cannot be restarted. The campaigns and ad sets in it keep running; pause them with meta_set_status.

meta_find_locations

ChatGPT
Look up Meta Ads locations by name and get the key each one is targeted by, with its type and the country it sits in. Use this before changing where an ad set delivers with meta_update_adset_targeting whenever you have a place name rather than a key. Countries are targeted by two-letter ISO code and need no lookup; regions, cities and zips are opaque keys that only this tool can resolve.

meta_get_activity_log

ChatGPT
Read the change history of the user's connected Meta ad account: which campaign, ad set, ad, budget, bid, status, targeting or audience changed, when, what the old and new values were, and who or which app made the change. Use it to explain a sudden change in delivery or spend. Filter by date range, category or one object id. Newest first, one page per call; pass after to continue.

meta_get_ad_preview

ChatGPT
Get a preview link showing how an existing ad or ad creative in the user's connected Meta ad account renders in one placement (mobile feed, Instagram feed, Stories, Reels, …). Pass ad_id or creative_id. Returns a short-lived preview URL the user can open in a browser and, for an ad, Meta's shareable preview link. Read-only.

meta_get_adset

ChatGPT
Read one ad set of the user's connected Meta ad account in full: its complete targeting (locations, ages, genders, interests, custom and lookalike audiences, exclusions, placements), promoted_object (pixel and conversion event, page or app), optimization goal, billing event, bid strategy and bid, budgets, schedule and attribution window. Use meta_list_campaigns to find the ad set id. Read-only. Budgets and bids come back as Meta sends them: integer strings in the currency's minor units (cents).

meta_get_dataset_quality

ChatGPT
Event Match Quality (EMQ) and Conversions API health for one dataset (Meta pixel) the user's connected ad account uses, from Meta's Dataset Quality API. Per web event: EMQ score (0–10), coverage of each match key (email, phone, IP, fbp, fbc, …), Meta's diagnostics with affected event counts and suggested fixes, how many browser events have a matching server (CAPI) event, deduplication key coverage, upload frequency and delay, and value/currency issues. Values are Meta's own; events without server data omit those blocks. Use for "why is my EMQ low?" or "is my CAPI working?". Get dataset_id from meta_list_datasets. Read-only.

meta_get_delivery_issues

ChatGPT
Find what is stopping delivery in the user's connected Meta ad account: the account's own status (disabled, unsettled, under risk review), and every campaign, ad set and ad that Meta marks WITH_ISSUES or DISAPPROVED, with Meta's issue messages and, for ads, the policy review feedback. Optionally only one campaign. Covers hard stops only, not weak performance — use meta_get_insights for that.

meta_get_insights

ChatGPT
Get performance metrics for a Meta ad account at account, campaign, ad set, or individual ad level: impressions, clicks, spend, reach, CTR, CPC, CPM, frequency, plus conversions (purchases, purchase value, cost per purchase, ROAS) when the account reports them. Supports breakdowns by placement, device, age, gender, and country. Each row carries the id of the campaign, ad set, or ad it covers, usable directly with meta_set_status.

meta_list_ad_accounts

ChatGPT
List the Meta (Facebook/Instagram) ad accounts connected to this account, including which of them this user can actually change (as opposed to only read) and, when the connection allows it, which Business owns each one. To work in an account, pass its id or name as ad_account_id to any other tool — no dashboard change needed. Filter with name_contains when the list is long.

meta_list_ads

ChatGPT
List individual ads in a Meta ad account with their id, name, and delivery status. Filter by campaign, ad set, or a name fragment. Use this to find the ad id for meta_set_status or for meta_get_insights at ad level.

meta_list_audiences

ChatGPT
List the custom and lookalike audiences in the user's connected Meta ad account with their type, approximate size range, delivery status and retention. Pass audience_id to get one audience's details plus the ad sets that target or exclude it — check this before deleting or replacing an audience. Read-only.

meta_list_campaigns

ChatGPT
List campaigns for a Meta ad account, including each campaign's status and daily budget. Optionally includes ad sets, and with include_targeting each ad set's locations, age range and gender — read that before changing anything with meta_update_adset_targeting. For individual ads, use meta_list_ads.

meta_list_creatives

ChatGPT
List the creative library of the user's connected Meta ad account: ad creatives (headline, primary text, call to action, image or video, link), uploaded ad images (hash, URL, size) or uploaded ad videos (id, title, length). Pass creative_id to get one creative's details plus the ads that use it. Read-only; one page per call.

meta_list_datasets

ChatGPT
Check conversion tracking on the user's connected Meta ad account. Without dataset_id: lists the datasets (Meta pixels) the account can use, with when each last received an event, and the account's custom conversions with their rules. With dataset_id: counts of each event (PageView, Lead, Purchase, …) that dataset received over the last days days (1–28). Read-only.

meta_list_drafts

ChatGPT
List unpublished Meta Ads Manager drafts (the Review & Publish queue) for one ad set or ad, one campaign, or across the ad account. Meta exposes drafts on ad sets and ads only, so a campaign or account-wide listing is collected ad set by ad set. Read-only — drafts cannot be created, edited, or published through this API. Existing paused or inactive ads are not drafts; use meta_list_ads for those.

meta_list_instagram_accounts

ChatGPT
List the Instagram accounts the user's connected Meta ad account can run ads as, with their id and username. An empty list means ads on Instagram placements show under the Facebook Page instead. Read-only.

meta_list_page_posts

ChatGPT
List the published posts of a Facebook Page the user manages, newest first: text, date, link and picture. Get the page_id from meta_list_pages. One page per call; pass after to continue. Read-only.

meta_list_pages

ChatGPT
List the Facebook Pages this Meta connection can advertise from — both the Pages the user has a role on and the Pages linked to the ad account. Every ad creative is published by a Page, so pass one of these ids as page_id to meta_create_campaign. The Page marked default is the one meta_create_campaign uses when page_id is omitted. If a Page is missing, it is an access problem in Meta, not a limit of this tool.

meta_search_ad_library

ChatGPT
Search the public Meta Ad Library for ads other advertisers are running, by keyword or by Facebook Page id, in the countries given. Returns each ad's Page, text, headlines, delivery dates, platforms and a link to it in the Ad Library. Use it for competitor research. Meta returns non-political ads only for ads delivered in the EU; elsewhere only political and issue ads are listed. Requires the Facebook user to have confirmed their identity for the Ad Library API. Read-only.

meta_select_account

ChatGPT
Set the optional default Meta ad account that reads use when they pass no ad_account_id, by act_ id or by account name. Rarely needed: every tool takes ad_account_id (id or name), so switching accounts in a conversation is just passing the other one. The default belongs to the connection and is shared by every chat you have open, and changes never fall back to it when you have several ad accounts. Changes nothing in Meta Ads itself.

meta_set_status

ChatGPT
Pause or resume any Meta ad object: an individual ad, an ad set, or a whole campaign. Pausing stops its spend immediately; resuming re-checks the governing daily budget against your cap first. Use meta_list_ads or meta_list_campaigns to find the object id.

meta_update_ab_test

ChatGPT
Change the name, description or end date of a Meta A/B test or lift study of the business that owns your ad account. The new end date must be in the future; an earlier end date shortens the study, and measurement it skips cannot be resumed. To stop a study use meta_end_ab_test; to delete it use meta_cancel_ab_test.

meta_update_adset_bidding

ChatGPT
Change how a Meta ad set bids in your ad account: lowest cost with no cap, a cost cap or bid cap per result (bid_amount), or a minimum ROAS target given as a RATIO (pass 2.5 to mean 250%). A minimum ROAS needs an ad set that optimizes for PURCHASE; the ad set is switched to optimize for purchase value in the same change. Under Advantage campaign budget Meta keeps the bid strategy on the campaign, so the change applies to every ad set in that campaign and the result says so. Does not change budgets — use meta_update_budget for that.

meta_update_adset_targeting

ChatGPT
Change where a Meta ad set delivers and who it reaches: target or drop countries, regions and cities, set the radius around a city, and set the age range and gender. Read the current targeting first with meta_list_campaigns and include_targeting, and resolve region and city keys with meta_find_locations — countries are plain two-letter ISO codes. Each geography can be given either as an exact list (countries) or as changes to the current one (add_countries, remove_countries), not both. Everything the call does not name is left exactly as it is, including interests, custom audiences, placements and excluded locations. An edit that would leave the ad set with no location at all is refused. Giving an exact country, region or city list also clears any pinned map locations, which Meta will not accept alongside an overlapping city. For ad sets that target cities or regions, expand_to_interested_in_location turns Meta's "Reach more people likely to respond" on or off: on, ads may also reach people elsewhere who are interested in those places. Targeting changes restart the ad set's learning phase, so delivery and cost per result are unstable for a day or two afterwards.

meta_update_audience

ChatGPT
Rename a custom audience in your Meta ad account or change its description. It does not add or remove people; use meta_update_audience_users for a customer list.

meta_update_audience_users

ChatGPT
Add people to, or remove them from, a customer-list custom audience in your Meta ad account, by email, phone number (with country code) or mobile advertiser id. Emails and phones are normalized and SHA-256 hashed on the server before they are sent to Meta; already-hashed values are accepted. Up to 10,000 values per call. Meta matches them to its users over the next hours. Use only data you are allowed to use for advertising.

meta_update_budget

ChatGPT
Change the daily budget of a Meta campaign or ad set. Cannot exceed your configured daily spend cap.

meta_update_object

ChatGPT
Rename a Meta campaign, ad set, ad or creative in your ad account, change a campaign's or ad set's start and end dates, or swap the creative an ad shows (creative_id). Budget, status, targeting and bidding have their own tools (meta_update_budget, meta_set_status, meta_update_adset_targeting, meta_update_adset_bidding). An ad whose creative changes goes back through Meta's ad review.

google_activate_campaign

Claude

google_add_keywords

Claude

google_check_billing

Claude

google_check_pacing

Claude

google_create_ad

Claude

google_create_ad_group

Claude

google_create_campaign

Claude

google_create_pmax_campaign

Claude

google_find_locations

Claude

google_get_audience_insights

Claude

google_get_geo_insights

Claude

google_get_insights

Claude

google_keyword_ideas

Claude

google_list_ad_accounts

Claude

google_list_ads

Claude

google_list_asset_groups

Claude

google_list_campaigns

Claude

google_list_conversion_actions

Claude

google_list_keywords

Claude

google_list_search_terms

Claude

google_remove_campaign

Claude

google_remove_keywords

Claude

google_set_status

Claude

google_update_account_budget

Claude

google_update_ad

Claude

google_update_ad_group

Claude

google_update_asset_group

Claude

google_update_asset_group_assets

Claude

google_update_asset_group_media

Claude

google_update_brand_assets

Claude

google_update_budget

Claude

google_update_campaign_bidding

Claude

google_update_campaign_conversion_goals

Claude

google_update_campaign_negatives

Claude

google_update_campaign_settings

Claude

google_update_campaign_targeting

Claude

google_update_conversion_action

Claude

google_update_keyword

Claude

google_update_search_themes

Claude

loomascale_check_quota

Claude

meta_activate_campaign

Claude

meta_check_pacing

Claude

meta_create_ad

Claude

meta_create_campaign

Claude

meta_find_locations

Claude

meta_get_insights

Claude

meta_list_ad_accounts

Claude

meta_list_ads

Claude

meta_list_campaigns

Claude

meta_list_drafts

Claude

meta_list_pages

Claude

meta_set_status

Claude

meta_update_adset_targeting

Claude

meta_update_budget

Claude

Similar Apps