Google Ads: accounts, campaigns and budgets
Listing accounts, the first reports, and creating a Search campaign, switching one on or off and changing its budget. 9 tools. This page is generated from the server's own tool list, version 0.1.0, and is not edited by hand. The descriptions are the ones your AI client reads, so they are written for it. All tools lists every page.
gads_list_accounts
Kind: read. It is marked as changing nothing.
List the Google Ads accounts your connected Google login can access (with names, currency and time zone). Call this first to find the customer_id the other gads_* tools need.
It takes no arguments.
gads_campaign_performance
Kind: read. It is marked as changing nothing.
Campaign list with status, daily budget, bidding strategy and performance metrics, sorted by cost.
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
customer_id | text | yes | 10-digit Google Ads account id (dashes allowed). | |
date_range | text | no | "LAST_30_DAYS" | Named range such as LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH. |
start_date | text | no | none | Optional custom range start, YYYY-MM-DD (use together with end_date). |
end_date | text | no | none | Optional custom range end, YYYY-MM-DD. |
include_paused | true or false | no | true | Include paused campaigns (removed campaigns are always excluded). |
label_id | text | no | none | Only campaigns that carry this label (gads_list_labels). |
gads_list_ad_groups
Kind: read. It is marked as changing nothing.
List ad groups (id, name, status, campaign, default CPC bid). Optionally filter by campaign, or by a label the ad group carries (label_id, from gads_list_labels).
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
customer_id | text | yes | ||
campaign_id | text | no | none | |
label_id | text | no | none |
gads_keyword_performance
Kind: read. It is marked as changing nothing.
Keywords with match type, status, bid, quality score and metrics, sorted by cost. ENABLED keywords only unless include_paused=true. The answer is {rows, total_rows, more, ...}: when more is true, call again with offset = offset + returned. The returned ad_group_id + criterion_id identify a keyword for gads_update_keyword.
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
customer_id | text | yes | 10-digit Google Ads account id. | |
campaign_id | text | no | none | Optional campaign to report on. |
ad_group_id | text | no | none | Optional ad group to report on. |
date_range | text | no | "LAST_30_DAYS" | Named range such as LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH. |
start_date | text | no | none | Optional custom range start, YYYY-MM-DD (with end_date). |
end_date | text | no | none | Optional custom range end, YYYY-MM-DD. |
limit | whole number | no | 200 | Rows per call (1-1000). |
offset | whole number | no | 0 | Rows to skip, for the next page. |
include_paused | true or false | no | false | Also include paused keywords. |
min_impressions | whole number | no | none | Only keywords with at least this many impressions. |
min_cost | number | no | none | Only keywords that cost at least this much, in account currency. |
fields | list of text | no | none | Optional columns to return, to keep the answer small; ids and the keyword always come. |
label_id | text | no | none | Only keywords that carry this label (gads_list_labels). |
gads_search_terms
Kind: read. It is marked as changing nothing.
Actual search queries that triggered ads, each with the keyword that matched it, sorted by cost. Use it to find wasted spend (candidates for gads_add_negative_keywords) and new keyword ideas. The answer is {rows, total_rows, more, ...}: when more is true, call again with offset = offset + returned.
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
customer_id | text | yes | 10-digit Google Ads account id. | |
campaign_id | text | no | none | Optional campaign to report on. |
ad_group_id | text | no | none | Optional ad group to report on. |
date_range | text | no | "LAST_30_DAYS" | Named range such as LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH. |
start_date | text | no | none | Optional custom range start, YYYY-MM-DD (with end_date). |
end_date | text | no | none | Optional custom range end, YYYY-MM-DD. |
limit | whole number | no | 200 | Rows per call (1-1000). |
offset | whole number | no | 0 | Rows to skip, for the next page. |
only_not_added | true or false | no | false | Only terms that are neither a keyword nor a negative yet. |
zero_conversions | true or false | no | false | Only terms with no conversions. |
min_impressions | whole number | no | none | Only terms with at least this many impressions. |
min_cost | number | no | none | Only terms that cost at least this much, in account currency. |
fields | list of text | no | none | Optional columns to return, to keep the answer small; the term always comes. |
gads_query
Kind: read. It is marked as changing nothing.
Run any read-only GAQL (Google Ads Query Language) query for reporting not covered by other tools. Money fields are returned in micros (divide by 1,000,000). Example: SELECT ad_group_ad.ad.id, ad_group_ad.ad.final_urls, metrics.clicks FROM ad_group_ad WHERE segments.date DURING LAST_7_DAYS
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
customer_id | text | yes | 10-digit Google Ads account id. | |
query | text | yes | A GAQL SELECT statement. | |
max_rows | whole number | no | 500 | Maximum rows to return (1-5000). |
gads_update_campaign_budget
Kind: write. It only previews the change unless dry_run is false. Not offered while the server is in read-only mode.
Change a campaign's budget (in account currency, e.g. 150.00): its average daily budget with new_daily_budget or, for a campaign whose budget is a total for its whole run (a Demand Gen campaign may have one; gads_list_budgets says which), that total with new_total_budget. A budget stays the kind it is, so the wrong one of the two is refused. Subject to server-side caps on the maximum budget and the maximum % change per call: a total is held to the highest daily budget times the days of the campaign's run. A reduction always goes through.
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
customer_id | text | yes | 10-digit Google Ads account id. | |
campaign_id | text | yes | Campaign id from gads_campaign_performance. | |
new_daily_budget | number | no | none | New daily budget in account currency units (not micros). |
dry_run | true or false | no | true | true = validate only (default). false = apply for real, only after the user confirms. |
allow_shared_budget | true or false | no | false | Must be true to change a budget shared by several campaigns (affects all of them). |
new_total_budget | number | no | none | Instead of new_daily_budget, for a campaign with a total budget: the new whole amount for the campaign's run, in account currency units. |
gads_set_campaign_status
Kind: write. It only previews the change unless dry_run is false. Not offered while the server is in read-only mode.
Pause or enable a campaign. (Removing campaigns is intentionally not supported; pause instead.)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
customer_id | text | yes | 10-digit Google Ads account id. | |
campaign_id | text | yes | Campaign id. | |
status | one of ENABLED, PAUSED | yes | ENABLED or PAUSED. | |
dry_run | true or false | no | true | true = validate only (default). false = apply, only after the user confirms. |
gads_create_search_campaign
Kind: write. It only previews the change unless dry_run is false. Not offered while the server is in read-only mode.
Create a new Search campaign with its own budget. The campaign is always created PAUSED so a human can review ad groups, ads and targeting before enabling it with gads_set_campaign_status.
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
customer_id | text | yes | 10-digit Google Ads account id. | |
name | text | yes | Campaign name (must be unique in the account). | |
daily_budget | number | yes | Daily budget in account currency units. | |
bidding_strategy | one of MAXIMIZE_CLICKS, MAXIMIZE_CONVERSIONS, MANUAL_CPC | no | "MAXIMIZE_CLICKS" | MAXIMIZE_CLICKS, MAXIMIZE_CONVERSIONS or MANUAL_CPC. |
include_search_partners | true or false | no | false | Also show on Google search partner sites. |
dry_run | true or false | no | true | true = validate only (default). false = apply, only after the user confirms. |