
AdLoop
Google Ads MCP server with Reddit Ads, GA4 and Tag Manager. Every change is previewed first.
- GitHub stars
- 300
- tools
- 50
- transport
- STDIO, HTTP
- last updated
- Nov 12, 2026
Tools
50 toolsPublic tool metadata for what this MCP can expose to an agent.
health_checkTest OAuth, GA4, and Ads connectivity in one call — actionable error messages if anything is broken.
Test OAuth, GA4, and Ads connectivity in one call — actionable error messages if anything is broken.
No parameter schema in public metadata yet.
get_account_summariesList GA4 accounts and properties
List GA4 accounts and properties
No parameter schema in public metadata yet.
run_ga4_reportCustom reports: sessions, users, key events, page performance. Optional dimension and metric filters, ordering, paging, and a comparison period
Custom reports: sessions, users, key events, page performance. Optional dimension and metric filters, ordering, paging, and a comparison period
No parameter schema in public metadata yet.
run_realtime_reportLive data — verify tracking fires after deploys
Live data — verify tracking fires after deploys
No parameter schema in public metadata yet.
get_tracking_eventsAll configured events and their volume
All configured events and their volume
No parameter schema in public metadata yet.
list_key_eventsThe property's key events (conversions) with counting method, create time and whether they can be deleted
The property's key events (conversions) with counting method, create time and whether they can be deleted
No parameter schema in public metadata yet.
list_ga4_dimensions_and_metricsEvery dimension and metric the property can report on, including custom ones, with search
Every dimension and metric the property can report on, including custom ones, with search
No parameter schema in public metadata yet.
list_accountsDiscover accessible Ads accounts
Discover accessible Ads accounts
No parameter schema in public metadata yet.
get_campaign_performanceCampaign metrics: impressions, clicks, cost, conversions, CPA, Search impression share and share lost to budget/rank
Campaign metrics: impressions, clicks, cost, conversions, CPA, Search impression share and share lost to budget/rank
No parameter schema in public metadata yet.
get_ad_performanceAd copy analysis: headlines, descriptions, CTR, policy approval status and topics
Ad copy analysis: headlines, descriptions, CTR, policy approval status and topics
No parameter schema in public metadata yet.
get_keyword_performanceKeywords — quality scores, competitive metrics
Keywords — quality scores, competitive metrics
No parameter schema in public metadata yet.
get_search_termsWhat users actually searched before clicking
What users actually searched before clicking
No parameter schema in public metadata yet.
get_negative_keywordsList direct campaign-level negative keywords
List direct campaign-level negative keywords
No parameter schema in public metadata yet.
get_negative_keyword_listsList all shared negative keyword lists (SharedSets) — names, IDs, status, keyword count
List all shared negative keyword lists (SharedSets) — names, IDs, status, keyword count
No parameter schema in public metadata yet.
get_negative_keyword_list_keywordsList the keywords inside a specific shared negative keyword list
List the keywords inside a specific shared negative keyword list
No parameter schema in public metadata yet.
get_negative_keyword_list_campaignsList which campaigns a shared negative keyword list is attached to
List which campaigns a shared negative keyword list is attached to
No parameter schema in public metadata yet.
get_recommendationsGoogle's auto-generated recommendations with type, estimated impact, and campaign context
Google's auto-generated recommendations with type, estimated impact, and campaign context
No parameter schema in public metadata yet.
get_recommendation_subscriptionsWhich recommendation types Google applies automatically (auto-apply), with status and last change; flags any that are on
Which recommendation types Google applies automatically (auto-apply), with status and last change; flags any that are on
No parameter schema in public metadata yet.
get_pmax_performancePerformance Max campaign metrics with network breakdown + asset group ad strength
Performance Max campaign metrics with network breakdown + asset group ad strength
No parameter schema in public metadata yet.
get_pmax_assetsPer-asset details for PMax — field type, serving status, content
Per-asset details for PMax — field type, serving status, content
No parameter schema in public metadata yet.
get_asset_group_signalsA PMax asset group's search themes and audience signal, plus the audiences available for it
A PMax asset group's search themes and audience signal, plus the audiences available for it
No parameter schema in public metadata yet.
get_detailed_asset_performanceTop-performing asset combinations — which headline+description+image combos Google selects most
Top-performing asset combinations — which headline+description+image combos Google selects most
No parameter schema in public metadata yet.
get_audience_performanceAudience segment performance — remarketing, in-market, affinity, demographics
Audience segment performance — remarketing, in-market, affinity, demographics
No parameter schema in public metadata yet.
get_shopping_product_performanceSpend, conversions, CPA and ROAS per product across Shopping and Performance Max, plus products that spent without converting
Spend, conversions, CPA and ROAS per product across Shopping and Performance Max, plus products that spent without converting
No parameter schema in public metadata yet.
get_change_historyWhat changed before the drop: who changed what and when, through which client (UI, API, scripts, auto-applied recommendations), last 30 days
What changed before the drop: who changed what and when, through which client (UI, API, scripts, auto-applied recommendations), last 30 days
No parameter schema in public metadata yet.
get_demographic_targetingList demographic criteria (age/gender/parental status/income) on an ad group or campaign
List demographic criteria (age/gender/parental status/income) on an ad group or campaign
No parameter schema in public metadata yet.
get_audience_listsThe account's remarketing and customer lists (size, eligibility, open/closed), custom and combined segments
The account's remarketing and customer lists (size, eligibility, open/closed), custom and combined segments
No parameter schema in public metadata yet.
search_audience_segmentsFind Google's in-market and affinity segments by name
Find Google's in-market and affinity segments by name
No parameter schema in public metadata yet.
get_audience_targetingAudiences and audience exclusions on a campaign or ad group, plus the audience mode (observation or targeting)
Audiences and audience exclusions on a campaign or ad group, plus the audience mode (observation or targeting)
No parameter schema in public metadata yet.
suggest_brandsResolve a brand name to the brands Google recognizes — brand ID, name, state, URLs
Resolve a brand name to the brands Google recognizes — brand ID, name, state, URLs
No parameter schema in public metadata yet.
check_brand_namesCheck a shortlist of brand names against Google's brand knowledge graph (max 25 per call)
Check a shortlist of brand names against Google's brand knowledge graph (max 25 per call)
No parameter schema in public metadata yet.
get_brand_listsList brand lists (SharedSets of type BRANDS) — ID, name, status, member count
List brand lists (SharedSets of type BRANDS) — ID, name, status, member count
No parameter schema in public metadata yet.
get_brand_list_brandsList the brands inside a list, with the Commercial KG MID and the criterion ID for removals
List the brands inside a list, with the Commercial KG MID and the criterion ID for removals
No parameter schema in public metadata yet.
get_brand_list_campaignsWhich campaigns a brand list is attached to, and whether each attachment excludes or targets
Which campaigns a brand list is attached to, and whether each attachment excludes or targets
No parameter schema in public metadata yet.
get_ai_max_settingsAI Max knobs per campaign and ad group — enable_ai_max, bundling_required, the full asset_automation_settings list and each ad group's disable_search_term_matching
AI Max knobs per campaign and ad group — enable_ai_max, bundling_required, the full asset_automation_settings list and each ad group's disable_search_term_matching
No parameter schema in public metadata yet.
get_campaign_settingsOne flat record per Search campaign — networks, location option, campaign-level broad match, bidding, budget, URL options and AI Max — with the settings that widen reach flagged
One flat record per Search campaign — networks, location option, campaign-level broad match, bidding, budget, URL options and AI Max — with the settings that widen reach flagged
No parameter schema in public metadata yet.
get_custom_conversion_goalsCustom conversion goals with their actions, plus one campaign's goal config
Custom conversion goals with their actions, plus one campaign's goal config
No parameter schema in public metadata yet.
run_gaqlArbitrary GAQL queries for anything else
Arbitrary GAQL queries for anything else
No parameter schema in public metadata yet.
analyze_campaign_conversionsMaps Ads clicks → GA4 sessions → conversions per campaign. Detects GDPR consent gaps, computes real CPA, compares paid vs organic channels.
Maps Ads clicks → GA4 sessions → conversions per campaign. Detects GDPR consent gaps, computes real CPA, compares paid vs organic channels.
No parameter schema in public metadata yet.
landing_page_analysisJoins 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.
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.
No parameter schema in public metadata yet.
attribution_checkCompares Ads-reported conversions vs GA4 events. Diagnoses whether discrepancies are from GDPR consent, attribution windows, or broken tracking.
Compares Ads-reported conversions vs GA4 events. Diagnoses whether discrepancies are from GDPR consent, attribution windows, or broken tracking.
No parameter schema in public metadata yet.
validate_trackingCompare event names found in your codebase against what GA4 actually records. Returns matched, missing, and unexpected events with diagnostics.
Compare event names found in your codebase against what GA4 actually records. Returns matched, missing, and unexpected events with diagnostics.
No parameter schema in public metadata yet.
generate_tracking_codeGenerate ready-to-paste GA4 gtag JavaScript for any event, with recommended parameters for well-known events (sign_up, purchase, etc.) and optional trigger wrappers.
Generate ready-to-paste GA4 gtag JavaScript for any event, with recommended parameters for well-known events (sign_up, purchase, etc.) and optional trigger wrappers.
No parameter schema in public metadata yet.
audit_event_coverageThree-way join: codebase events ↔ GTM tags ↔ GA4 actual fires. For each event name in expected_events, returns one of 10 statuses plus auto-generated insights for the gaps.
Three-way join: codebase events ↔ GTM tags ↔ GA4 actual fires. For each event name in expected_events, returns one of 10 statuses plus auto-generated insights for the gaps.
No parameter schema in public metadata yet.
list_gtm_accountsDiscover accessible GTM accounts
Discover accessible GTM accounts
No parameter schema in public metadata yet.
list_gtm_containersList containers under an account — returns numeric container_id, public GTM-XXXXXXX ID, and usage context (web/iOS/Android/server)
List containers under an account — returns numeric container_id, public GTM-XXXXXXX ID, and usage context (web/iOS/Android/server)
No parameter schema in public metadata yet.
list_gtm_tagsEvery tag in the live container with parsed event names and resolved firing/blocking trigger names. Pass workspace_id to read a workspace's unpublished state instead
Every tag in the live container with parsed event names and resolved firing/blocking trigger names. Pass workspace_id to read a workspace's unpublished state instead
No parameter schema in public metadata yet.
get_gtm_tagFull raw config for a single tag — every parameter, firing/blocking triggers with filter conditions, priority, pause status, sampling
Full raw config for a single tag — every parameter, firing/blocking triggers with filter conditions, priority, pause status, sampling
No parameter schema in public metadata yet.
list_gtm_triggersEvery trigger with filter conditions parsed to readable text. Renders the negate flag explicitly.
Every trigger with filter conditions parsed to readable text. Renders the negate flag explicitly.
No parameter schema in public metadata yet.
get_gtm_triggerFull trigger config + reverse lookup of every tag that uses it, including parsed element_visibility block for elementVisibility triggers
Full trigger config + reverse lookup of every tag that uses it, including parsed element_visibility block for elementVisibility triggers
No parameter schema in public metadata yet.
Sponsors
Readme
AdLoop
The Google Ads MCP server for Claude, ChatGPT and Cursor.
Plus Reddit Ads, GA4 and your tracking code, with a preview before every change.
Details
- Repository
- github.com/klosk/adloop
- Website
- getadloop.com
- Category
- Finance & Commerce
- Package
adloop- Transport
- STDIO, HTTP
- Registry
- MCP registry, active