run_gaql
Arbitrary GAQL queries for anything else
How to use it
run_gaql is exposed by the Adloop MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), and the run_gaql tool becomes available to the model automatically. See the full listing for setup details and every tool this server provides.
Install Adloop
claude mcp add --transport stdio adloop -- /absolute/path/to/adloop/.venv/bin/python -m adloopOther tools in Adloop (39)
Maps Ads clicks → GA4 sessions → conversions per campaign. Detects GDPR consent gaps, computes real CPA, compares paid vs organic channels.
Compares Ads-reported conversions vs GA4 events. Diagnoses whether discrepancies are from GDPR consent, attribution windows, or broken tracking.
The flagship. Three-way join: codebase events ↔ GTM tags ↔ GA4 actual fires. For each event name in expectedevents, returns one of 10 statuses (ok, notagnofire, tagpaused, tagactivebutnotfiring, gtmonlyfiring, ga4only, etc.) plus auto-generated insights for the gaps.
Generate ready-to-paste GA4 gtag JavaScript for any event, with recommended parameters for well-known events (signup, purchase, etc.) and optional trigger wrappers.
List GA4 accounts and properties
Ad copy analysis — headlines, descriptions, CTR
Per-asset details for PMax — field type, serving status, content
Audience segment performance — remarketing, in-market, affinity, demographics
Campaign metrics — impressions, clicks, cost, conversions, CPA
List demographic criteria (age/gender/parental status/income) on an ad group or campaign
Top-performing asset combinations — which headline+description+image combos Google selects most
Full raw config for a single tag — every parameter, firing/blocking triggers with filter conditions, priority, pause status, sampling
Full trigger config + reverse lookup of every tag that uses it. Includes parsed elementvisibility block (selector, on-screen ratio, firing frequency) for elementVisibility triggers and groupmembertriggerids for triggerGroup types
Full metadata + tag/trigger names for a single historical container version
Drafted-but-not-published changes — common cause of "I edited a tag but nothing happened". Returns isclean: true when nothing is pending.
Keywords — quality scores, competitive metrics
List which campaigns a shared negative keyword list is attached to
List the keywords inside a specific shared negative keyword list
List all shared negative keyword lists (SharedSets) — names, IDs, status, keyword count
List direct campaign-level negative keywords
Performance Max campaign metrics with network breakdown + asset group ad strength
Google's auto-generated recommendations with type, estimated impact, and campaign context
What users actually searched before clicking
All configured events and their volume
Test OAuth, GA4, and Ads connectivity in one call — actionable error messages if anything is broken. Also reports the pinned Google Ads API version and warns if a newer version is available.
Joins ad final URLs with GA4 page data. Shows conversion rate, bounce rate, and engagement per landing page. Flags pages with paid traffic but zero conversions.
Discover accessible Ads accounts
List Search Console properties the connected account can access
Discover accessible GTM accounts
List containers under an account — returns numeric containerid (needed by other tools), public GTM-XXXXXXX ID, and usage context (web/iOS/Android/server)
Every tag in the live container with parsed event names and resolved firing/blocking trigger names
Every trigger with filter conditions parsed to readable text (e.g. {{Page Path}} contains service-promotions, {{Form ID}} NOT contains wf-form-...). Renders the negate flag explicitly.
Custom variables (data layer, constants, JS) plus enabled built-in variables
Publish history with version IDs and entity counts. Use to correlate a metric drop with a recent publish.
List drafts (workspaces) under a container — workspace IDs are needed by getgtmworkspacediff
Custom reports — sessions, users, conversions, page performance
Organic search analytics — clicks, impressions, CTR, position by query/page/country/device/date
Live data — verify tracking fires after deploys
Compare event names found in your codebase against what GA4 actually records. Returns matched, missing, and unexpected events with diagnostics.