Skip to main content
Glama

AdsAgent — Google Ads MCP

Server Details

Hosted Google Ads MCP with OAuth, bounded reads, and prepare/confirm writes.

Ownership verified
Status
Healthy
Uptime
40.0% over 42 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

C2.4/5.0

Scored across 82 tools

Disambiguation3/5

Most tools are distinct resource/action pairs with clear prepare/confirm roles, but several clusters overlap: three task retrieval tools (google_ads_task_get, tasks_get_status, google_ads_tasks_list), four insights query tools (insights_query_consistent, google_ads_insights_overview_query/batch, google_ads_insights_query_daily), and multiple mutation lifecycle tools. The detailed descriptions help, but an agent could easily pick the wrong tool in these overlapping families.

Naming Consistency4/5

The dominant pattern is google_ads_<object>_<action> with consistent prepare/confirm suffixes, which is readable and predictable. It is marred by three unprefixed tools (setup_get_status, tasks_get_status, insights_query_consistent) and a few noun/verb order quirks like google_ads_analysis_families_list and google_ads_asset_requirements_get, but these are minor.

Tool Count2/5

82 tools is far beyond the well-scoped range; even accounting for the deliberate prepare/confirm doubling, this is a very large surface for an agent to navigate. The count may reflect the breadth of Google Ads, but it creates significant selection overhead and should be split into focused servers or consolidated.

Completeness2/5

The surface covers create/update/remove for many entities plus assets, videos, recommendations, templates, insights, and tasks, but there is no way to list or get core entities like campaigns, ad groups, keywords, or ads. An agent cannot discover existing resources and must rely on user-supplied IDs, which is a major gap for a management server.

Available Tools

82 tools
insights_query_consistentAInspect

Canonical compact ledger-only Insights read. Pass query_contract_version=1, group_by, explicit date_from/date_to, and exactly one of scope or scopes. Use scopes for server-side batch, trust coverage and pagination separately, and continue the same ordered batch only with meta.next_continuation; single-scope responses also mirror it in result.data. The cursor binds the exact Google ledger generation and page size; do not send Meta min_as_of.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
scopeNo
fieldsNo
scopesNo
date_toYes
wait_msNo
group_byYes
date_fromYes
page_sizeNo
consistencyNocached
continuationNoUse the opaque signed cursor returned by the previous response. It remains bound to the original customer and login-customer route, dates, grouping, supported filters/order, ordered scopes, fields, page size, and ledger snapshot. Never add Meta min_as_of. For scopes batches, use the single meta.next_continuation to continue the same ordered scopes together.
response_modeNocompact
date_range_modeNoexplicit
query_contract_versionYes
require_complete_rangeNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description discloses substantial behavior: the tool is a ledger-only read, scopes give server-side batching with separate pagination, continuation is bound to ledger generation and page size, and Meta min_as_of must not be sent. It does not discuss auth, rate limits, or detailed errors, but the main pagination and consistency contract is exposed.

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?

The description is front-loaded with the tool's identity and then gives a compact call contract without filler. It is dense and uses terms like 'trust coverage' and 'meta.next_continuation' without unpacking them, which slightly reduces readability.

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

Completeness3/5

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

For a 15-parameter read tool with no output schema and no annotations, the description explains the required arguments and pagination behavior but omits response shape details and several optional parameter interactions. It is sufficient for a basic correct call but incomplete for advanced or edge-case usage.

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

Parameters3/5

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

Schema description coverage is only 7%, and the description compensates for the most important call contract (required params, scope/scopes exclusivity, continuation usage). However, page, fields, wait_ms, require_complete_range, consistency, response_mode, and date_range_mode are left to schema defaults and enums, leaving several optional parameters under-explained.

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

Purpose4/5

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

The description opens with 'Canonical compact ledger-only Insights read', naming a clear operation and resource and signaling it is the standard read path. It does not explicitly contrast with sibling insight tools like google_ads_insights_query_daily or google_ads_insights_overview_query, so differentiation is implied rather than stated.

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

Usage Guidelines4/5

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

It directly instructs the caller to pass query_contract_version=1, group_by, explicit date_from/date_to, and exactly one of scope or scopes, and it explains when to use scopes versus a single scope. It does not state when not to use this tool in favor of an alternative sibling, so exclusions are absent.

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

setup_get_statusAInspect

Start here. Returns redacted OAuth readiness, capability truth, guide version, and notify-only client skill-pack policy; never token values.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does well: it discloses that returned values are redacted, that it never returns token values (a security-relevant guarantee), and names exactly what data it exposes. For a read/status tool this is solid disclosure beyond what structured fields would offer.

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

Conciseness5/5

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

A single tight sentence that front-loads the routing signal ('Start here') and packs the full return inventory plus a safety guarantee into minimal words. Every element earns its place; no filler, no redundancy.

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

Completeness4/5

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

For a zero-parameter status tool with no output schema, the description is near-complete: it names every category of data returned and the redaction behavior. The only gap is the structure/format of the returned payload, but for a status read with no inputs that is a minor omission.

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?

The tool has zero parameters, so per the rubric the baseline is 4. There is nothing for the description to add beyond the empty schema, and it correctly makes no parameter claims. The return-content list effectively substitutes for parameter documentation here.

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

Purpose4/5

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

States a clear purpose: returns redacted OAuth readiness, capability truth, guide version, and notify-only client skill-pack policy. The verb 'returns' plus explicit content list makes the function distinct from the 80+ operational siblings. The opening 'Start here' marks it as the entry/status tool, which helps differentiate it from mutation and query tools, though it doesn't name a sibling it contrasts with.

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

Usage Guidelines3/5

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

'Start here' implies this is the entry point before other operations, providing some context for when to call it. However, it never states when NOT to use it or names any alternative. Given the huge sibling list, explicit exclusion guidance would strengthen this dimension, but the entry-point signal is a legitimate usage cue.

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

tasks_get_statusAInspect

Poll one opaque task reference. A terminal response includes the bounded result and source_anchor for direct consumption; never rerun the original query page 1.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_refYes
response_modeNocompact

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the polling nature, the terminal response content (bounded result and source_anchor), and a specific behavioral warning (never rerun the original query). It lacks details on non-terminal responses or error behavior, but the key traits are covered.

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

Conciseness5/5

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

Two sentences with no filler. The primary action is front-loaded, and the critical warning is included without redundancy.

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

Completeness3/5

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

For a simple polling tool, it explains the terminal response and a key constraint, but omits details like what 'bounded result' means, how to interpret non-terminal responses, and the purpose of response_mode. Given the lack of an output schema, these gaps leave some ambiguity for an agent.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It clarifies that task_ref is an 'opaque task reference', adding meaning. However, response_mode is not mentioned at all; the schema shows an enum with a default, but the description provides no guidance on when or why to set it. Only half the parameters are addressed.

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

Purpose4/5

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

The description clearly states the action (poll) and resource (opaque task reference). It distinguishes itself from listing tools by focusing on a single reference, though it doesn't explicitly name sibling alternatives like google_ads_task_get or setup_get_status.

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

Usage Guidelines3/5

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

It provides one exclusion ('never rerun the original query page 1') and implies the tool is for polling after an async operation. However, it doesn't explicitly state when to use this over alternative status tools or mention the prerequisite of having a task_ref from a prior call.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 82 tool updates
    • First observedgoogle_ads_accounts_list
    • First observedgoogle_ads_ad_group_create_confirm
    • First observedgoogle_ads_ad_group_create_prepare
    • First observedgoogle_ads_analysis_families_list
    • First observedgoogle_ads_asset_link_confirm
    • First observedgoogle_ads_asset_link_prepare
    • First observedgoogle_ads_asset_requirements_get
    • First observedgoogle_ads_asset_unlink_confirm
    • First observedgoogle_ads_asset_unlink_prepare
    • First observedgoogle_ads_asset_upload_confirm
    • First observedgoogle_ads_asset_upload_prepare
    • First observedgoogle_ads_assets_list
    • First observedgoogle_ads_bidding_update_confirm
    • First observedgoogle_ads_bidding_update_prepare
    • First observedgoogle_ads_billing_get_setup
    • First observedgoogle_ads_budget_update_confirm
    • First observedgoogle_ads_budget_update_prepare
    • First observedgoogle_ads_campaign_create_confirm
    • First observedgoogle_ads_campaign_create_prepare
    • First observedgoogle_ads_connection_permissions_set
    • First observedgoogle_ads_connections_list
    • First observedgoogle_ads_conversion_action_create_confirm
    • First observedgoogle_ads_conversion_action_create_prepare
    • First observedgoogle_ads_conversion_action_remove_confirm
    • First observedgoogle_ads_conversion_action_remove_prepare
    • First observedgoogle_ads_conversion_action_update_confirm
    • First observedgoogle_ads_conversion_action_update_prepare
    • First observedgoogle_ads_conversion_actions_list
    • First observedgoogle_ads_copy_ad_confirm
    • First observedgoogle_ads_copy_ad_prepare
    • First observedgoogle_ads_customer_route_permissions_set
    • First observedgoogle_ads_deep_analysis_export
    • First observedgoogle_ads_deep_analysis_query
    • First observedgoogle_ads_entity_remove_confirm
    • First observedgoogle_ads_entity_remove_prepare
    • First observedgoogle_ads_entity_update_confirm
    • First observedgoogle_ads_entity_update_prepare
    • First observedgoogle_ads_insights_overview_batch
    • First observedgoogle_ads_insights_overview_query
    • First observedgoogle_ads_insights_query_daily
    • First observedgoogle_ads_keyword_create_confirm
    • First observedgoogle_ads_keyword_create_prepare
    • First observedgoogle_ads_keyword_ideas_generate
    • First observedgoogle_ads_mutation_receipt_get
    • First observedgoogle_ads_mutation_reconcile
    • First observedgoogle_ads_pmax_create_confirm
    • First observedgoogle_ads_pmax_create_prepare
    • First observedgoogle_ads_product_card_delete
    • First observedgoogle_ads_product_card_save
    • First observedgoogle_ads_product_card_update
    • First observedgoogle_ads_product_cards_list
    • First observedgoogle_ads_quick_create_confirm
    • First observedgoogle_ads_quick_create_prepare
    • First observedgoogle_ads_recommendation_apply_confirm
    • First observedgoogle_ads_recommendation_apply_prepare
    • First observedgoogle_ads_recommendation_dismiss_confirm
    • First observedgoogle_ads_recommendation_dismiss_prepare
    • First observedgoogle_ads_recommendations_list
    • First observedgoogle_ads_responsive_search_ad_create_confirm
    • First observedgoogle_ads_responsive_search_ad_create_prepare
    • First observedgoogle_ads_status_enable_confirm
    • First observedgoogle_ads_status_enable_prepare
    • First observedgoogle_ads_status_pause_confirm
    • First observedgoogle_ads_status_pause_prepare
    • First observedgoogle_ads_task_get
    • First observedgoogle_ads_tasks_list
    • First observedgoogle_ads_template_delete
    • First observedgoogle_ads_template_reverse_engineer
    • First observedgoogle_ads_template_save
    • First observedgoogle_ads_template_update
    • First observedgoogle_ads_templates_list
    • First observedgoogle_ads_video_upload_confirm
    • First observedgoogle_ads_video_upload_prepare
    • First observedgoogle_ads_video_upload_remove_confirm
    • First observedgoogle_ads_video_upload_remove_prepare
    • First observedgoogle_ads_video_upload_status
    • First observedgoogle_ads_video_uploads_list
    • First observedgoogle_ads_youtube_asset_confirm
    • First observedgoogle_ads_youtube_asset_prepare
    • First observedinsights_query_consistent
    • First observedsetup_get_status
    • First observedtasks_get_status

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server to read and manage Google Ads accounts via GAQL queries, campaign/ad group/keyword operations, and safe write support with draft-confirm flow.
    16
    27 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that enables safe, audited mutation of Google Ads campaigns—creating ads, ad groups, keywords, and assets or adjusting budgets and statuses—with a dry-run default and an optional guarded remove operation, plus read-only Keyword Planner ideas.
    22
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables authorized users to securely connect to and manage their Google Ads accounts through MCP clients, with support for campaigns, ad groups, ads, keywords, reporting, and billing. Runs as a remote multi-user server on Cloudflare Workers with per-user authentication and safety controls.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that exposes write operations on Google Ads, enabling management of campaigns, ad groups, keywords, RSA ads, sitelinks, images, Customer Match audiences, and recommendations.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources