A comprehensive Google Ads MCP server with ~47 tools for full read/write access to Google Ads campaigns, ads, keywords, Performance Max, reporting, and more.
Server has 20 tools with complete input schemas and descriptions. Naming follows verb_noun convention (list_, get_, create_, update_, set_). Descriptions are present and actionable (avg ~120 chars), exceeding the 10-char minimum. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are correctly applied. However, output schemas are not documented in the source, LLMs cannot see what fields to expect from responses. Parameter descriptions lack format constraints (e.g., date format YYYY-MM-DD is mentioned in create_campaign but not consistently). Error handling is minimal, no recovery guidance or actionable error messages visible. No batch operations despite many tools that agents would call in loops (e.g., create_ad_group, create_responsive_search_ad). Missing dependency hints (e.g., 'Call list_campaigns first to get campaign_id'). Enum constraints are present for status/type fields but not exhaustively documented in descriptions.
Create a new ad group in a campaign.
Create a new campaign budget.
Create a new campaign with a budget. Creates both the campaign budget and campaign in a single atomic operation. Campaign is created as PAUSED by default for safety.
Create a Responsive Display Ad for Display campaigns.
Create a Responsive Search Ad (RSA) for Search campaigns. Google will automatically test combinations of headlines and descriptions.
Create a Video ad for Video campaigns (YouTube).
Output schemas not documented. LLMs cannot see what fields responses contain, forcing them to guess or make follow-up calls. E.g., list_campaigns returns a list but structure is invisible.
Parameter format constraints not consistently documented. E.g., customer_id accepts '123-456-7890' or '1234567890' but only get_account_info documents this; others omit the format hint. Date parameters (start_date, end_date) lack YYYY-MM-DD format specification in descriptions.
No error recovery guidance. Tools lack descriptions of failure modes or what the LLM should do if a call fails (e.g., 'If customer_id is invalid, call list_accessible_accounts first'). No actionable error messages visible in code.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Get the MCC account hierarchy tree. Lists all child accounts under the given MCC account.
Get details for a Google Ads account (name, currency, timezone, etc.).
Get details for a single ad group.
Get budget vs actual spend for campaigns. Shows how much of each campaign's budget has been utilized.
Get details for a single campaign.
List all Google Ads accounts accessible via current credentials. Returns accounts accessible through the authenticated MCC or direct account.
List ad groups in a campaign.
List ads in an ad group with approval status.
List campaign budgets in the account.
List campaigns in a Google Ads account.
Set an ad group's status (enable, pause, or remove).
Update an existing ad group. Only provided fields will be updated.
Update an existing campaign budget.
Update an existing campaign's properties. Only provided fields will be updated.
Missing dependency hints. Tools like create_ad_group require campaign_id but do not hint that list_campaigns should be called first. Agents must infer the discovery sequence.
No pagination guidance in list tool descriptions. list_campaigns, list_ad_groups, list_ads accept 'limit' but descriptions do not state max results, default behavior, or how to fetch next page (offset, cursor, etc.).