Skip to main content
Glama

ADM Google Ads

List ad groups

get_ad_groups
Read-onlyIdempotent

Lists ad groups (including PAUSED, never REMOVED): id, name, status, campaign name and status, max_cpc, the campaign's bidding_strategy_type, keyword_count and ad_count. Optionally limit to one campaign, or to status ENABLED or PAUSED. Sorted by campaign then ad group. Paginated via cursor. Pass days (1 to 30) to add performance for the last N complete days to each ad group (impressions, clicks, cost, conversions, conversions_value, ctr, average_cpc) and sort by cost descending. Use this instead of get_campaign_setup when you only need ad group status across many campaigns.

Input Schema

NameRequiredDescriptionDefault
daysNoOptional reporting window in whole days in the account's time zone, excluding today: 1 to 30. Pass it to include performance per ad group.
limitNoPage size, 1-200. Default 50.
cursorNoOpaque next_cursor from the previous page. Keep the other arguments identical.
statusNoENABLED or PAUSED. Omit to list both.
campaign_idNoOptional campaign id (from get_campaigns) to limit results to one campaign.
customer_idYesGoogle Ads customer ID from get_accounts, e.g. 123-456-7890.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / days
      Added value: +{
      +  "default": null,
      +  "description": "Optional reporting window in whole days in the account's time zone, excluding today: 1 to 30. Pass it to include performance per ad group.",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/closed-world, but the description adds real behavior beyond them: PAUSED groups are included and REMOVED are never returned, results are sorted by campaign then ad group, and supplying days changes the sort to cost descending. It does not mention rate limits or quota behavior, so it stops short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with purpose and returned fields, then filters, then pagination/sorting, then the sibling routing. It is packed but every clause carries information; the long parenthetical field list is the only slight density cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by enumerating returned fields and the extra performance metrics added by days, plus ordering and cursor pagination. For a 6-parameter list tool this is complete enough to call correctly without further guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not: that days (1-30) appends performance metrics per ad group and re-sorts by cost, and that restricting status to ENABLED/PAUSED still keeps everything else intact. It does not restate limit/cursor beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists ad groups') and then enumerates the returned fields (id, name, status, campaign name/status, max_cpc, bidding_strategy_type, keyword_count, ad_count), which no sibling tool claims. It also explicitly distinguishes itself from get_campaign_setup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit alternative and the condition that selects it: 'Use this instead of get_campaign_setup when you only need ad group status across many campaigns.' Optional filters (single campaign, ENABLED/PAUSED, days for performance) are framed with their use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources