Skip to main content
Glama
kLOsk

AdLoop: Google Ads, Reddit Ads & GA4

Tracking coverage audit

audit_event_coverage
Read-only

Audit analytics event coverage by comparing codebase events, live GTM tags, and GA4 firings to flag missing, paused, or untagged events.

Instructions

Three-way audit: codebase events ↔ GTM tags ↔ GA4 actual fires.

Fetches the LIVE GTM container, joins it against GA4 event counts for the date range, and returns a per-event matrix with one of these statuses: ok — tag active and event firing ok_auto_collected — GA4 Enhanced Measurement event, no tag needed no_tag_no_fire — codebase event, no GTM tag, never fires tag_paused — GTM tag exists but is paused tag_active_but_not_firing — tag is active but no GA4 hits gtm_only_firing — GA4 event from a tag, not in codebase gtm_paused_but_firing — only paused tag(s), not in codebase, yet GA4 still fires (event comes from elsewhere) gtm_only_not_firing — tag exists, not in codebase, no fires ga4_only — fires in GA4, no tag, no codebase ref ga4_fires_no_tag — codebase event firing without a GTM tag auto_event_only — Enhanced Measurement event with no codebase ref

The result also lists dynamic-event tags ({{Event}} variables) and Custom HTML tags that the audit cannot interpret automatically.

Tag Manager API: https://developers.google.com/tag-platform/tag-manager/api/v2

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
property_idNoGA4 property as "properties/123456789". Empty uses the default from config.
date_range_endNoEnd date "YYYY-MM-DD". Empty (or an empty date_range_start) means the last 30 days.
gtm_account_idNoNumeric GTM account ID (Tag Manager UI → Admin → Container Settings, or list_gtm_accounts). Empty uses gtm.account_id from the config.
expected_eventsYesDistinct event names found in the codebase's gtag('event', ...) and dataLayer.push({event: ...}) calls.
date_range_startNoStart date "YYYY-MM-DD". Empty (or an empty date_range_end) means the last 30 days.
gtm_container_idNoNumeric GTM container ID (not the GTM-XXXXXXX public ID; see list_gtm_containers). Empty uses gtm.container_id from the config.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.27.1
    • addedInput schema / properties / date_range_end / description
      Added value: +"End date \"YYYY-MM-DD\". Empty (or an empty\ndate_range_start) means the last 30 days."
    • addedInput schema / properties / date_range_start / description
      Added value: +"Start date \"YYYY-MM-DD\". Empty (or an empty\ndate_range_end) means the last 30 days."
    • addedInput schema / properties / expected_events / description
      Added value: +"Distinct event names found in the codebase's\ngtag('event', ...) and dataLayer.push({event: ...}) calls."
    • addedInput schema / properties / gtm_account_id / description
      Added value: +"Numeric GTM account ID (Tag Manager UI → Admin →\nContainer Settings, or list_gtm_accounts). Empty uses\ngtm.account_id from the config."
    • addedInput schema / properties / gtm_container_id / description
      Added value: +"Numeric GTM container ID (not the GTM-XXXXXXX public\nID; see list_gtm_containers). Empty uses gtm.container_id from the\nconfig."
    • addedInput schema / properties / property_id / description
      Added value: +"GA4 property as \"properties/123456789\". Empty uses the\ndefault from config."
  2. Addedv0.13.2
  3. Removedv0.13.0
  4. Addedv0.12.0

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds meaningful behavioral context beyond that: it fetches the LIVE container, joins against GA4 counts, returns a per-event status matrix, and notes that dynamic-event and Custom HTML tags cannot be interpreted automatically. It does not cover authentication, rate limits, or error behavior.

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 a one-line summary and then structured status definitions. The long status enumeration is informative, though some of it may overlap with the output schema and could be trimmed if the schema is similarly complete.

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?

Given the tool's complexity and the presence of an output schema, the description is largely complete: it explains the audit logic, the status meanings, and its interpretability limits. It could still mention prerequisites such as required GTM/GA4 access, but the core behavioral picture is present.

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 the schema already documents all six parameters including defaults and required expected_events. The description adds no additional parameter meaning beyond what the schema provides, making the baseline 3 appropriate.

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 states a specific verb and resource: a three-way audit joining codebase events, GTM tags, and GA4 fires. It is clear what the tool does, but it does not explicitly distinguish itself from nearby siblings like list_gtm_tags or get_tracking_events.

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 explicit when-to-use statement or identification of alternatives. An agent can infer the tool is for coverage auditing, but the description provides no guidance about when this audit should be selected over other tracking or GTM tools.

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