Ainative Gtm MCP server
Full Google Ads, Analytics & Tag Manager lifecycle MCP for AI agents — 57 tools.
0 stars42 downloads/wk
Reviews
Write oneNobody has reviewed Ainative Gtm yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Ainative Gtm tools (57, 26 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
gads_add_audience_to_ad_groupAttach an audience segment (user_list resource) to an ad group. mode=OBSERVATION measures the audience without restricting reach; mode=TARGETING restricts serving to it. Refs #5764.
gads_add_call_extensionwrite actionCreate a call asset (phone number) and attach it to a campaign so ads can show a call button. Refs #5764.
gads_add_calloutwrite actionCreate a callout asset (short promotional phrase, e.g. "Free 7-Day Trial") and attach it to a campaign. Refs #5764.
gads_add_geo_targetAdd a geographic target (or exclusion) to a campaign, using PRESENCE-only targeting by
gads_add_language_targetAdd a language target to a campaign so ads serve to users with that language setting. Common language constant ids: 1000=English, 1003=Spanish, 1001=German, 1002=French. Refs #5764.
gads_add_negative_keywordAdd a negative keyword at the CAMPAIGN level (blocks the term across the campaign). Refs #5743.
gads_add_negative_placementAdd a negative PLACEMENT (website URL or mobile app) exclusion to a campaign so ads never serve there.
gads_add_sitelinkwrite actionCreate a sitelink asset (link text + final URL, optional 2 description lines) and attach it to a campaign. Refs #5764.
gads_add_structured_snippetwrite actionCreate a structured snippet asset (a header like "Services" or "Types" + up to 10 values) and attach it to a campaign. Refs #5764.
gads_audit_conversion_goalsAudit all Google Ads conversion goals — find misconfigured counting types, inactive conversions, and conversions with no recent activity. Returns a prioritized fix list.
gads_create_ad_groupwrite actionCreate an ad group inside a campaign. Refs #5740.
gads_create_campaignwrite actionCreate a NEW Google Ads campaign with its own dedicated budget. Handles the full
gads_create_conversion_actionwrite actionCreate an offline conversion action (type UPLOAD_CLICKS) for importing real outcomes — e.g.
gads_create_html5_adwrite actionCreate an HTML5 display upload ad (DisplayUploadAd, HTML5_UPLOAD_AD) in a DISPLAY ad group
gads_create_keywordwrite actionAdd a keyword to an ad group. Use this to move high-performing keywords between campaigns.
gads_create_pmax_campaignwrite actionONE-CALL Performance Max "campaign builder": creates a PERFORMANCE_MAX campaign + dedicated
gads_create_responsive_display_adwrite actionCreate a Responsive Display Ad in a DISPLAY ad group from uploaded image assets + text.
gads_create_responsive_search_adwrite actionCreate a Responsive Search Ad in an ad group. 3–15 headlines (≤30 chars), 2–4 descriptions
gads_get_account_performanceGet top-level Google Ads account performance — impressions, clicks, cost, conversions for a date range. Quick health check for ad spend efficiency.
gads_list_conversion_actionsList all Google Ads conversion actions for the account — name, ID, counting type, status, and category. Use this to audit which conversions are set up and how they are counted.
gads_list_recommendation_subscriptionsList Google Ads auto-apply recommendation subscriptions (type + status). ENABLED means that recommendation
gads_pause_campaignPause a Google Ads campaign. Stops all ad serving immediately.
gads_remove_campaign_criterionwrite actionRemove a campaign-level criterion (targeted location/geo, placement, or keyword) by its criterion ID.
gads_remove_keywordwrite actionRemove (pause) a keyword from an ad group.
gads_request_ad_reviewRequest re-review (appeal) of a disapproved or approved-limited ad via the API. Uses the
gads_searchwrite actionRun a read-only GAQL query and return rows — for looking up campaign/budget/ad_group/criterion
gads_set_ad_group_bidSet the default max CPC bid (USD) on an existing ad group. Use to raise/lower delivery on a specific ad group under Manual CPC / Maximize Clicks. Refs #5764.
gads_set_ad_statusSet an individual ad's status to ENABLED, PAUSED, or REMOVED (ad_group_ad). Use to pause a throttled/underperforming ad or remove a rejected one without touching the ad group. Refs #5764.
gads_set_bidding_strategyChange an existing campaign's bidding strategy (MAXIMIZE_CLICKS, MAXIMIZE_CONVERSIONS,
gads_set_campaign_statusSet a Google Ads campaign status to ENABLED or PAUSED. Use ENABLED to (re)enable a paused
gads_set_conversion_goal_inclusionControl whether a conversion action counts toward the primary "Conversions" metric (and thus Smart Bidding).
gads_set_keyword_bidSet the max CPC bid (USD) on a specific keyword (ad group criterion). Refs #5764.
gads_set_presence_onlySet a campaign to PRESENCE-only geo targeting (target users physically IN the targeted
gads_set_recommendation_subscriptionTurn Google Ads auto-apply recommendations ON or OFF. Set enabled=false to PAUSE (stop auto-applying —
gads_update_campaign_budgetwrite actionUpdate the daily budget of a Google Ads campaign. Provide the campaign budget ID (from the campaign) and the new daily amount in dollars. Use to scale spend up or down.
gads_update_conversion_countingwrite actionUpdate the counting type of a Google Ads conversion action. Common fix: change counting_type from MANY_PER_CLICK to ONE_PER_CLICK for purchase conversions to avoid inflated counts.
gads_upload_click_conversionwrite actionUpload an OFFLINE click conversion keyed by gclid — the attribution backbone that ties a real
gads_upload_image_assetwrite actionUpload an image file from local disk as a Google Ads image Asset (for Display banners /
gads_upload_media_bundlewrite actionUpload an HTML5 ad ZIP file from disk as a Google Ads MEDIA_BUNDLE asset (for HTML5 display
gtm_audit_containerComprehensive container audit — finds broken tags, duplicate tags, misfiring conversion tags, tags missing triggers, and tags firing too broadly. Returns a health score 0–100.
gtm_create_triggerwrite actionCreate a new trigger in a GTM workspace
gtm_create_versionwrite actionCreate a container version from current workspace changes
gtm_delete_tagwrite actionDelete a GTM tag from a workspace
gtm_find_misfiring_conversion_tagsFind conversion/purchase tags that are firing too broadly (e.g. on All Pages instead of a specific event). This is the most common GTM billing/analytics issue.
gtm_fix_conversion_tag_triggerFix a misfiring conversion tag by replacing its broad trigger (e.g. All Pages) with a specific Custom Event trigger. Creates the new trigger if needed.
gtm_get_containerGet details of a specific GTM container
gtm_get_tagGet full configuration of a specific GTM tag
gtm_get_triggerGet full configuration of a specific GTM trigger
gtm_get_workspace_statusGet pending (unsaved) changes in a workspace before publishing
gtm_list_accountsList all GTM accounts accessible to the service account
gtm_list_containersList all containers in a GTM account
gtm_list_tagsList all tags in a GTM workspace
gtm_list_triggersList all triggers in a GTM workspace
gtm_list_workspacesList workspaces in a GTM container
gtm_publishwrite actionPublish the current workspace — makes all changes live immediately
gtm_update_tagwrite actionUpdate an existing GTM tag (e.g. fix its trigger, rename it, update parameters)
gtm_update_triggerwrite actionUpdate an existing GTM trigger
Public scan report
scanner v0.1.9 · 2026-09-24 · same rubric, same numbers if you re-run it
- Code scan23 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 54 days ago12/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year9/10
What the publisher says
From the Ainative Gtm repository's README, as published. We do not edit it. Read it on GitHub
@ainative/gtm-mcp
Google Tag Manager and Google Ads MCP server — audit, fix, and manage GTM containers and Google Ads campaigns, budgets, conversions, placements, geo targeting, and auto-apply recommendations from AI agents (Claude, Cursor, and any MCP client).
Part of the AINative open-source tools.
57 tools across 7 categories: accounts, tags, triggers, audit, versions/publishing, and a complete Google Ads lifecycle (39 tools) — build, publish, track, and adjust campaigns end-to-end: create campaigns/ad groups/RSAs/RDAs/HTML5 ads, Performance Max, bidding strategy & bid control, ad extensions (sitelinks/callouts/snippets/call), audiences, offline gclid conversion import, geo/language targeting, budgets, placements, and auto-apply recommendations — fully programmatic, no UI required.
Keywords: google tag manager mcp, google ads mcp, gtm mcp server, google ads api mcp, conversion tracking mcp, campaign budget management, negative placement / click-fraud exclusion, geo targeting, auto-apply recommendations, recommendation subscriptions, conversion goals, Smart Bidding, PPC automation, ad spend control, Claude MCP, model context protocol, AI agent advertising tools.
Quick Start
1. Install
# Claude Code (recommended)
claude mcp add ainative-gtm-mcp npx -- -y @ainative/gtm-mcp \
-e GTM_SERVICE_ACCOUNT_KEY_PATH=/path/to/service-account.json
# Or run directly
npx @ainative/gtm-mcp2. Set up Google Cloud authentication
The server authenticates via a Google Cloud service account with Tag Manager API access. There is no browser OAuth flow — it's designed for headless/agent use.
Step 1 — Enable the Tag Manager API
- Go to Google Cloud Console
- Select or create a project
- Navigate to APIs & Services → Library
- Search for Tag Manager API (tagmanager.googleapis.com) and click Enable
Step 2 — Create a service account
- Go to IAM & Admin → Service Accounts
- Click Create Service Account
- Give it a name (e.g. gtm-mcp-agent)
- Skip role assignment at GCP level — GTM has its own permission system
- Click Done, then open the service account
- Go to Keys → Add Key → Create new key → JSON
- Download the JSON key file — keep it safe
Step 3 — Grant the service account access in GTM
This is the step most people miss. The GCP service account needs to be added as a user inside Google Tag Manager separately:
- Go to tagmanager.google.com
- Click Admin (top nav)
- Under Account, click User Management
- Click + → Add users
- Enter the service account email (e.g. gtm-mcp-agent@your-project.iam.gserviceaccount.com)
- Set permission to Publish (required for tag editing and publishing)
- Save
Note: If you only need read access (auditing), Read permission is sufficient.
Step 4 — Configure the env var
export GTM_SERVICE_ACCOUNT_KEY_PATH="/path/to/service-account.json"
# Or use inline JSON (useful for CI/CD)
export GTM_SERVICE_ACCOUNT_KEY_JSON='{"type":"service_account","project_id":"...","private_key":"..."}'
# Or use Application Default Credentials
gcloud auth application-default login3. Connect to Claude Code
claude mcp add ainative-gtm-mcp npx -- -y @ainative/gtm-mcp \
-e GTM_SERVICE_ACCOUNT_KEY_PATH=/path/to/service-account.jsonOr add a .mcp.json to your project root:
{
"mcpServers": {
"ainative-gtm-mcp": {
"command": "npx",
"args": ["-y", "@ainative/gtm-mcp"],
"env": {
"GTM_SERVICE_ACCOUNT_KEY_PATH": "/path/to/service-account.json"
}
}
}
}Security: Add .mcp.json to .gitignore if it contains key paths. Use .mcp.example.json as a template for teammates.
4. Verify it works
Ask Claude:
List my GTM accountsShortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
Runs npx -y @ainative/gtm-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add ainative-gtm-mcp -- npx -y @ainative/gtm-mcp
Ainative Gtm: common questions
- Is Ainative Gtm MCP server safe?
- Mostly: it is graded B (80/100). Read the Ainative Gtm safety report
- How do I install Ainative Gtm?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Ainative Gtm need an API key?
- Yes. The registry entry asks for
GOOGLE_ADS_DEVELOPER_TOKEN,GTM_SERVICE_ACCOUNT_KEY_PATH. - Is Ainative Gtm maintained?
- The last commit was 55 days ago (2026-08-01). The latest release is v0.4.2.