Skip to main content
Glama

google_ads_rsa_assets_audit

Audit Responsive Search Ad assets against Google's quantity and quality guidance and get prioritized replacement recommendations.

Instructions

Audit Responsive Search Ad assets against Google's quantity and quality guidance and emit replacement recommendations. Returns {campaign_id, period, headline_count, description_count, label_distribution:{:count}, best_headlines, worst_headlines, best_descriptions, worst_descriptions, recommendations:[{type ('add_headlines'|'add_descriptions'|'replace_headline'|'replace_description'|'wait_for_data'), priority ('HIGH'|'MEDIUM'|'LOW'), message, asset_text?, performance_label?}], recommendation_count}. HIGH priorities fire when headlines < 8 or descriptions < 3. LOW 'wait_for_data' fires when LEARNING+UNKNOWN > 50% of assets. Read-only; does not modify any assets. For the raw per-asset performance breakdown use google_ads_rsa_assets_analyze.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
periodNoReporting window for the metrics. Default 'LAST_30_DAYS'. Use a shorter window (LAST_7_DAYS / LAST_14_DAYS) when diagnosing recent changes; use LAST_90_DAYS for trend baselines. Also accepts an explicit range in GAQL spelling — "BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'", both endpoints inclusive, in the account's time zone — for a window no trailing constant can reach (e.g. a single past calendar month). One asymmetry to know about: every constant except LAST_90_DAYS is resolved by Google Ads in the account's reporting time zone, whereas LAST_90_DAYS has no API constant and is expanded by mureo into the 90 days ending yesterday **on the server's date**, so its edges can differ by a day when the server and the account are in different zones. Pass an explicit range when the exact boundary matters.
campaign_idYesCampaign ID as a numeric string without dashes (e.g. '23743184133'). Obtain via google_ads_campaigns_list.
customer_idNoGoogle Ads customer ID as a 10-digit string without dashes (e.g. '1234567890'). Optional — falls back to GOOGLE_ADS_CUSTOMER_ID / GOOGLE_ADS_LOGIN_CUSTOMER_ID from the configured credentials when omitted.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.17.1
    • addedInput schema / properties / period / anyOf
      Added value: +[
      +  {
      +    "enum": [
      +      "TODAY",
      +      "YESTERDAY",
      +      "THIS_WEEK_SUN_TODAY",
      +      "THIS_WEEK_MON_TODAY",
      +      "LAST_BUSINESS_WEEK",
      +      "LAST_WEEK_SUN_SAT",
      +      "LAST_WEEK_MON_SUN",
      +      "LAST_7_DAYS",
      +      "LAST_14_DAYS",
      +      "LAST_30_DAYS",
      +      "LAST_90_DAYS",
      +      "THIS_MONTH",
      +      "LAST_MONTH"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "\\ABETWEEN '([0-9]{4}-[0-9]{2}-[0-9]{2})' AND '([0-9]{4}-[0-9]{2}-[0-9]{2})'\\Z",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / period / description
      Previous value: -"Reporting window for the metrics. Default 'LAST_30_DAYS'. Use a shorter window (LAST_7_DAYS / LAST_14_DAYS) when diagnosing recent changes; use LAST_90_DAYS for trend baselines."New value: +"Reporting window for the metrics. Default 'LAST_30_DAYS'. Use a shorter window (LAST_7_DAYS / LAST_14_DAYS) when diagnosing recent changes; use LAST_90_DAYS for trend baselines. Also accepts an explicit range in GAQL spelling — \"BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'\", both endpoints inclusive, in the account's time zone — for a window no trailing constant can reach (e.g. a single past calendar month). One asymmetry to know about: every constant except LAST_90_DAYS is resolved by Google Ads in the account's reporting time zone, whereas LAST_90_DAYS has no API constant and is expanded by mureo into the 90 days ending yesterday **on the server's date**, so its edges can differ by a day when the server and the account are in different zones. Pass an explicit range when the exact boundary matters."
    • removedInput schema / properties / period / enum
      Removed value: -[
      -  "TODAY",
      -  "YESTERDAY",
      -  "LAST_7_DAYS",
      -  "LAST_14_DAYS",
      -  "LAST_30_DAYS",
      -  "LAST_90_DAYS",
      -  "THIS_MONTH",
      -  "LAST_MONTH"
      -]
  2. Changed1 schema field changedv0.10.37
    • addedInput schema / additionalProperties
      Added value: +false
  3. Addedv0.9.12
  4. Removedv0.9.6
  5. Addedv0.9.2
  6. Removedv0.9.1
  7. Addedv1.0.5

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden — and it delivers. It explicitly states 'Read-only; does not modify any assets,' which is critical for an agent deciding whether to call this safely. It also discloses the derived output structure, priority semantics, and the exact thresholds that trigger each recommendation type. The only reason it's not a 5 is that it doesn't address whether the audit is synchronous or can be slow on large accounts.

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 dense but organized: the return shape is compactly expressed as a structured list, threshold rules are stated in one sentence, read-only behavior is a single short sentence, and the sibling differentiation is one clear sentence. It's borderline long, but every clause carries signal — the only minor waste is spelling out type values ('add_headlines'|'add_descriptions'...) which are also present in the output shape itself, but that repetition is arguably useful for an agent planning follow-up actions.

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 complex audit tool with no output schema and no annotations, the description gives the agent the crucial context it needs: full return type, message priority semantics, triggering thresholds, read-only safety, and routing to the alternative tool for raw data. It stops just short of a 5 because it omits any mention of whether the audit covers all asset types (headlines, descriptions, but what about pins, or callouts?) and doesn't state a typical runtime. These are minor against the depth of what is disclosed.

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 100%, so per the rubric the baseline is 3 — the schema already documents period, campaign_id, and customer_id thoroughly. The description adds a bit beyond the schema (the full return shape and thresholds), but none of the parameters need extra explanation. The schema itself compensates well with the detailed period semantics, so the description's lack of param detail is not a gap.

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?

The description opens with a specific verb-resource pair ('Audit Responsive Search Ad assets against Google's quantity and quality guidance') and states its output purpose precisely. It goes beyond a bare definition by documenting the recommendation types and thresholds, and it names the sibling tool (google_ads_rsa_assets_analyze) to draw the boundary. An agent can distinguish this audit tool from the per-asset analyzer without opening either schema.

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?

The description explicitly tells the agent when to use this tool versus the alternative: 'For the raw per-asset performance breakdown use google_ads_rsa_assets_analyze.' It also encodes the trigger conditions as decision rules (HIGH priorities fire when headlines < 8 or descriptions < 3; LOW 'wait_for_data' fires when LEARNING+UNKNOWN > 50%), which lets the agent reason about when the tool's output is actionable.

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

Install Server

Other Tools