Skip to main content
Glama

AdsAgent — Google Ads MCP

google_ads_asset_diagnostics

Read-only

Read policy and observed asset coverage evidence with campaign metrics. Missing policy is not approval; no invented per-asset attribution.

Input Schema

NameRequiredDescriptionDefault
bodyYes
customer_idYes10-digit Google Ads customer id.
connection_contextNo

Output Schema

NameRequiredDescriptionDefault
okNo
codeNo
errorNo
needsNo
reasonNo
sourceNo
channelNo
date_toNo
evidenceNo
date_fromNo
retryableNo
truncatedNo
error_codeNo
request_idNo
campaign_idNo
customer_idNo
limitationsNo
next_actionNo
observed_atNo
request_idsNo
support_refNo
availabilityNo
evidence_levelNo
invalid_fieldsNo
rejected_pathsNo
campaign_metricsNo
coverage_completeNo
origin_support_refNo
missing_policy_countNo
policy_status_countsNo
asset_metrics_availableNo
observed_asset_field_typesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "asset_metrics_available": {
      +      "type": "boolean"
      +    },
      +    "availability": {
      +      "type": "string"
      +    },
      +    "campaign_id": {
      +      "type": "string"
      +    },
      +    "campaign_metrics": {
      +      "additionalProperties": true,
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "channel": {
      +      "type": "string"
      +    },
      +    "code": {
      +      "type": "string"
      +    },
      +    "coverage_complete": {
      +      "type": "boolean"
      +    },
      +    "customer_id": {
      +      "type": "string"
      +    },
      +    "date_from": {
      +      "type": "string"
      +    },
      +    "date_to": {
      +      "type": "string"
      +    },
      +    "error": {
      +      "anyOf": [
      +        {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "additionalProperties": true,
      +              "properties": {
      +                "code": {
      +                  "type": "string"
      +                },
      +                "details": {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                "message": {
      +                  "type": "string"
      +                },
      +                "retryable": {
      +                  "type": "boolean"
      +                },
      +                "support_ref": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            }
      +          ]
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "error_code": {
      +      "type": "string"
      +    },
      +    "evidence": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "evidence_level": {
      +      "type": "string"
      +    },
      +    "invalid_fields": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "limitations": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "missing_policy_count": {
      +      "type": "integer"
      +    },
      +    "needs": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "next_action": {
      +      "anyOf": [
      +        {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "additionalProperties": true,
      +              "properties": {},
      +              "type": "object"
      +            }
      +          ]
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "observed_asset_field_types": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "observed_at": {
      +      "type": "string"
      +    },
      +    "ok": {
      +      "type": "boolean"
      +    },
      +    "origin_support_ref": {
      +      "type": "string"
      +    },
      +    "policy_status_counts": {
      +      "additionalProperties": true,
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "reason": {
      +      "type": "string"
      +    },
      +    "rejected_paths": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "request_id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "request_ids": {
      +      "items": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    },
      +    "retryable": {
      +      "type": "boolean"
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "support_ref": {
      +      "type": "string"
      +    },
      +    "truncated": {
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / connection_context
      Added value: +{
      +  "pattern": "^mctx_v1_[0-9a-f]{64}$",
      +  "type": "string"
      +}
  3. Added

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds a genuinely useful behavioral caveat — that absent policy data must not be read as approval and that per-asset attribution is not fabricated — which is beyond structured fields. It still says nothing about data freshness, pagination, or how the evidence and campaign metrics relate.

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?

Two short sentences, no filler, and the key constraint is front-loaded. It is compact to the point of being cryptic, but nothing is wasted.

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?

An output schema exists, so return values need not be explained. However, for a diagnostic tool with an undocumented nested request body and many closely-named siblings, the description leaves too much unresolved — the agent knows the tool is a cautious read but not exactly what evidence it returns or when to prefer it.

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 description coverage is only 33%: only customer_id is documented, while the nested body's campaign_id, date_from, and date_to are undocumented. The description does not compensate at all — it never mentions the campaign scoping or the date range, so the agent gets no guidance on how to construct the required nested body.

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

Purpose3/5

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

The description names a read of 'policy and observed asset coverage evidence with campaign metrics,' which gives a rough resource and verb. But 'diagnostics' is never unpacked, and the phrasing is jargon-heavy enough that an agent cannot confidently distinguish it from siblings like google_ads_asset_inventory_list, google_ads_asset_requirements_get, or google_ads_assets_list.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the many sibling asset tools; the caveats 'Missing policy is not approval' and 'no invented per-asset attribution' are epistemic warnings, not usage routing. An agent has to infer the scenario from the name alone.

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