Skip to main content
Glama

google_ads_negative_keywords_suggest

Analyse campaign search terms and suggest negative keywords whose spend wastes budget above your target CPA. Returns candidates with match type, spend, conversions, and rationale for review.

Instructions

Analyses recent search-term performance and returns suggested negative keywords that waste spend relative to a target CPA. Returns candidates with text, suggested match_type, spend, conversions, and rationale (e.g. 'spend > 3x target CPA, 0 conversions'). Read-only — suggestions are not applied. Use google_ads_negative_keywords_add / add_to_ad_group to materialize the ones you want after operator review.

Input Schema

NameRequiredDescriptionDefault
periodNoAnalysis window for the search-term sample. Default 'LAST_30_DAYS'. This tool also reads the equal-length window immediately before the one you request, so only fixed-length windows are accepted — calendar constants such as THIS_MONTH are rejected rather than silently replaced. Also accepts an explicit range — "YYYY-MM-DD..YYYY-MM-DD" (the spelling Meta Ads takes too) or, 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.
target_cpaNoTarget CPA in the account's currency. Search terms whose effective CPA exceeds this are flagged. If omitted, the campaign's configured target_cpa is used when available.
ad_group_idNoRestrict analysis to a single ad group. Omit to analyse the whole campaign.
campaign_idYesCampaign whose search terms are analysed.
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. Changed2 schema fields changedv0.33.0
    • changedInput schema / properties / period / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "LAST_7_DAYS",
      -      "LAST_14_DAYS",
      -      "LAST_30_DAYS",
      -      "LAST_90_DAYS"
      -    ],
      -    "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"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "LAST_7_DAYS",
      +      "LAST_14_DAYS",
      +      "LAST_30_DAYS",
      +      "LAST_90_DAYS"
      +    ],
      +    "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"
      +  },
      +  {
      +    "pattern": "\\A([0-9]{4}-[0-9]{2}-[0-9]{2})\\.\\.([0-9]{4}-[0-9]{2}-[0-9]{2})\\Z",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / period / description
      Previous value: -"Analysis window for the search-term sample. Default 'LAST_30_DAYS'. This tool also reads the equal-length window immediately before the one you request, so only fixed-length windows are accepted — calendar constants such as THIS_MONTH are rejected rather than silently replaced. 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."New value: +"Analysis window for the search-term sample. Default 'LAST_30_DAYS'. This tool also reads the equal-length window immediately before the one you request, so only fixed-length windows are accepted — calendar constants such as THIS_MONTH are rejected rather than silently replaced. Also accepts an explicit range — \"YYYY-MM-DD..YYYY-MM-DD\" (the spelling Meta Ads takes too) or, 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."
  2. Changed2 schema fields changedv0.17.1
    • addedInput schema / properties / period / anyOf
      Added value: +[
      +  {
      +    "enum": [
      +      "LAST_7_DAYS",
      +      "LAST_14_DAYS",
      +      "LAST_30_DAYS",
      +      "LAST_90_DAYS"
      +    ],
      +    "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: -"Analysis window. Accepts Google Ads predefined ranges ('LAST_7_DAYS', 'LAST_14_DAYS', 'LAST_30_DAYS' — default 'LAST_30_DAYS') or explicit 'YYYY-MM-DD..YYYY-MM-DD'."New value: +"Analysis window for the search-term sample. Default 'LAST_30_DAYS'. This tool also reads the equal-length window immediately before the one you request, so only fixed-length windows are accepted — calendar constants such as THIS_MONTH are rejected rather than silently replaced. 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."
  3. Changed1 schema field changedv0.10.37
    • addedInput schema / additionalProperties
      Added value: +false
  4. Addedv0.10.11
  5. Removedv0.10.9
  6. Addedv0.9.12
  7. Removedv0.9.6
  8. Addedv0.9.2
  9. Removedv0.9.1
  10. Addedv1.0.5

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so the description must carry the safety profile — and it does, stating 'Read-only — suggestions are not applied', which is the critical fact. It also discloses the shape of the response (text, match_type, spend, conversions, rationale) and gives a concrete example rationale. Missing are rate limits/latency or how large the candidate list may get.

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?

Three sentences: what it does, what it returns, and what to do next with the safety caveat. The read-only guarantee and the handoff to the add tools are both front-loaded where an agent will act on them.

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?

No output schema, but the description enumerates the returned fields and gives an example rationale string, so an agent knows what to expect. Combined with a fully documented five-parameter schema, nothing material is missing for correct invocation.

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% and the parameter descriptions are unusually detailed (including the timezone asymmetry on `period`), so the schema does the heavy lifting. The tool description itself adds no parameter-level meaning beyond the target-CPA concept already implied by the purpose sentence, so baseline 3 applies.

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 ('Analyses recent search-term performance and returns suggested negative keywords'), names the criterion (waste relative to target CPA), and enumerates the returned fields. An agent can distinguish this from google_ads_search_terms_report or search_terms_analyze without opening any schema.

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?

Explicitly frames this as a recommendation-only step and names the two follow-up tools (google_ads_negative_keywords_add / add_to_ad_group) that materialize the results, with the condition 'after operator review'. It does not, however, say when to prefer this over the other search-term siblings, so the alternative map is only half-drawn.

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

Deploy Server

Other Tools