{"_id":"@ainative/gtm-mcp","_rev":"9-d61711df521b7257e56597332e720564","name":"@ainative/gtm-mcp","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@ainative/gtm-mcp","version":"0.1.0","keywords":["gtm","google-tag-manager","mcp","model-context-protocol","analytics","tag-management","ainative"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/gtm-mcp@0.1.0","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"bin":{"ainative-gtm-mcp":"build/index.js"},"dist":{"shasum":"4f664e6feb62f1af1c345891d4839ad7cd797f51","tarball":"https://registry.npmjs.org/@ainative/gtm-mcp/-/gtm-mcp-0.1.0.tgz","fileCount":34,"integrity":"sha512-xZ2c9+Bt7x2dqfsLjsoap1zWMnwRD+t4a47CeY1PGf7Ms9Jg7Ph6AG0K7zeiVQGxp6LMt2qb5mjRgTC/a6k6hQ==","signatures":[{"sig":"MEYCIQCtMx+WU6FouAnMM2hNFahJjs9O5APTROsho96AUoV67gIhANH4EzsE6Pf4QHO1Ggm59c/aOLQayUTdsduAPsoy1HOI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72731},"type":"module","gitHead":"a857bd3d0d7c517ef671d87a6f24f36e61a608b9","scripts":{"dev":"tsx src/index.ts","test":"node --test tests/*.test.js","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Google Tag Manager MCP server — audit, fix, and manage GTM containers from AI agents","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^3.23.0","googleapis":"^144.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gtm-mcp_0.1.0_1778352694271_0.8957207597700143","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ainative/gtm-mcp","version":"0.2.0","keywords":["gtm","google-tag-manager","mcp","model-context-protocol","analytics","tag-management","ainative"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/gtm-mcp@0.2.0","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"bin":{"ainative-gtm-mcp":"build/index.js"},"dist":{"shasum":"f0468f86f4797d9b326f9729ded2d2ab36dbaba3","tarball":"https://registry.npmjs.org/@ainative/gtm-mcp/-/gtm-mcp-0.2.0.tgz","fileCount":42,"integrity":"sha512-d90fa6sKglHEt4NXpF9lld0tvaYWP9y8/mrVxjzRoaDE4ao+yDmw21W2IpVpnosJaKGc8tzEv7rGVEnyJiGnzQ==","signatures":[{"sig":"MEUCIQDsXoNLmfcyIFxcG8GK9QfN+ESjvZJBGNaJJsOVOG7PjAIgFDhzprJMxs2JxuCTxx5g3bQzUyNEfrj83d932qj+5nQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105801},"type":"module","gitHead":"a26d0f1f07df380a5ca28261a53c2427b2c6159a","scripts":{"dev":"tsx src/index.ts","test":"node --test tests/*.test.js","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Google Tag Manager MCP server — audit, fix, and manage GTM containers from AI agents","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^3.23.0","googleapis":"^144.0.0","google-ads-api":"^23.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gtm-mcp_0.2.0_1778379575946_0.37166687769721873","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ainative/gtm-mcp","version":"0.2.1","keywords":["gtm","google-tag-manager","mcp","model-context-protocol","analytics","tag-management","ainative"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/gtm-mcp@0.2.1","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"bin":{"ainative-gtm-mcp":"build/index.js"},"dist":{"shasum":"a14ab8223c491443eefb034ca6d5d79e214237d0","tarball":"https://registry.npmjs.org/@ainative/gtm-mcp/-/gtm-mcp-0.2.1.tgz","fileCount":42,"integrity":"sha512-+0h/hEKHM7pbmvbeNLMBnsdMK3CYC2uzaTDV6wogVqZTP83qE/ypTzalNkF3V3q6CfT9gGe94aziRc7HVSYALA==","signatures":[{"sig":"MEQCIDfKkAUP7DzEzZijCOtzRy2Gtc0r3YdSakueGnzvIyIsAiAm642UVzGSQTUG7YFxm6IWY4pmqO82CkzC/+/e33vhig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134404},"type":"module","gitHead":"9b41454d329dd649865f3e3ef3b6d137d51d76cd","scripts":{"dev":"tsx src/index.ts","test":"node --test tests/*.test.js","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Google Tag Manager MCP server — audit, fix, and manage GTM containers from AI agents","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^3.23.0","googleapis":"^144.0.0","google-ads-api":"^23.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gtm-mcp_0.2.1_1784272008735_0.08644752229434038","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ainative/gtm-mcp","version":"0.3.0","keywords":["gtm","google-tag-manager","google-ads","google-ads-mcp","google-ads-api","mcp","model-context-protocol","claude","cursor","analytics","tag-management","conversion-tracking","conversion-goals","campaign-budget","negative-placement","click-fraud","geo-targeting","auto-apply-recommendations","recommendation-subscriptions","smart-bidding","ppc","ad-spend","advertising-automation","ainative"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/gtm-mcp@0.3.0","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"bin":{"ainative-gtm-mcp":"build/index.js"},"dist":{"shasum":"bb8b0e119c60e91fb067450b9d4b544f71829db3","tarball":"https://registry.npmjs.org/@ainative/gtm-mcp/-/gtm-mcp-0.3.0.tgz","fileCount":42,"integrity":"sha512-DsMUUlv3DjGliViP5Oo1EU0QimNoPQiQBK/PC1u9fUh2K9wKwjdhohfrxubXoC0ZpDlUYxjMAh9IAjstDinPqA==","signatures":[{"sig":"MEYCIQDz/hzMUuQ8hdzVYQKqNSibO8KALgFPTIzOUnNhfCidIAIhALnnQ2d1OR9RPB1L1REZ8bOOM+xoHGAJ94rQZ8md8z9x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146815},"type":"module","gitHead":"f10384eb2ca79023e7d6409d9f4e2698d810ce02","scripts":{"dev":"tsx src/index.ts","test":"node --test tests/*.test.js","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Google Tag Manager and Google Ads MCP server — manage GTM containers, Google Ads campaigns, budgets, conversions, negative placements, geo targeting, and auto-apply recommendations from AI agents","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^3.23.0","googleapis":"^144.0.0","google-ads-api":"^23.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gtm-mcp_0.3.0_1784274954626_0.723981035394992","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@ainative/gtm-mcp","version":"0.3.1","keywords":["gtm","google-tag-manager","google-ads","google-ads-mcp","google-ads-api","mcp","model-context-protocol","claude","cursor","analytics","tag-management","conversion-tracking","conversion-goals","campaign-budget","negative-placement","click-fraud","geo-targeting","auto-apply-recommendations","recommendation-subscriptions","smart-bidding","ppc","ad-spend","advertising-automation","ainative"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/gtm-mcp@0.3.1","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"bin":{"ainative-gtm-mcp":"build/index.js"},"dist":{"shasum":"322c626ddbac9c490aa42b2d05e792720e9b4693","tarball":"https://registry.npmjs.org/@ainative/gtm-mcp/-/gtm-mcp-0.3.1.tgz","fileCount":42,"integrity":"sha512-hqc5XavXK9ytkpKhzXjbiE95H6Pog/Wpj+0rlEs4fdUO7eX6+9jozUAMmYP3LMX09d2gBP3pIWmb8U06XRvIzA==","signatures":[{"sig":"MEUCIAcuTh5m1g1J7EK9KzjUVqQ6YJIZ5dBRi6vD2sgCshWuAiEA1VXgIAIAVuhm9fmVWiKK7V3E3gGIx1+XWHl/gV2g770=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157671},"type":"module","gitHead":"2840ae5586eba10e71a6761afa71e9e463c69251","scripts":{"dev":"tsx src/index.ts","test":"node --test tests/*.test.js","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Google Tag Manager and Google Ads MCP server — manage GTM containers, Google Ads campaigns, budgets, conversions, negative placements, geo targeting, and auto-apply recommendations from AI agents","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^3.23.0","googleapis":"^144.0.0","google-ads-api":"^23.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gtm-mcp_0.3.1_1785017987388_0.15718619229483055","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ainative/gtm-mcp","version":"0.4.0","keywords":["gtm","google-tag-manager","google-ads","google-ads-mcp","google-ads-api","mcp","model-context-protocol","claude","cursor","analytics","tag-management","conversion-tracking","conversion-goals","campaign-budget","negative-placement","click-fraud","geo-targeting","auto-apply-recommendations","recommendation-subscriptions","smart-bidding","ppc","ad-spend","advertising-automation","ainative"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/gtm-mcp@0.4.0","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"bin":{"ainative-gtm-mcp":"build/index.js"},"dist":{"shasum":"c34d4faad1b5ef19f0630e801ad5fdbcfd4d62d6","tarball":"https://registry.npmjs.org/@ainative/gtm-mcp/-/gtm-mcp-0.4.0.tgz","fileCount":46,"integrity":"sha512-u7qhMsd+cuqOqcHYZow5dBuIejKMj0Ruwdu5Gq89JpwPG31bnOPufdLz1S+V9Fhao+LnFXf6ouEEOm59bgHH7g==","signatures":[{"sig":"MEQCIE+haS/2uHKLZJZXVT8rQS+ywjTfpia2ub/W5U+CnkmOAiBjJDFoVRSqrJgK8Hcyv/GzjsTU9XnEA6EdzWxnoh765w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308495},"type":"module","gitHead":"dfdd7b4876ae422dfa6db5fc05f0c1f82302ffa4","scripts":{"dev":"tsx src/index.ts","test":"node --test tests/*.test.js","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Google Tag Manager and Google Ads MCP server — manage GTM containers, Google Ads campaigns, budgets, conversions, negative placements, geo targeting, and auto-apply recommendations from AI agents","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^3.23.0","googleapis":"^144.0.0","google-ads-api":"^23.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gtm-mcp_0.4.0_1785532438131_0.34831732078453936","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@ainative/gtm-mcp","version":"0.4.1","keywords":["gtm","google-tag-manager","google-ads","google-ads-mcp","google-ads-api","mcp","model-context-protocol","claude","cursor","analytics","tag-management","conversion-tracking","conversion-goals","campaign-budget","negative-placement","click-fraud","geo-targeting","auto-apply-recommendations","recommendation-subscriptions","smart-bidding","ppc","ad-spend","advertising-automation","ainative","google-analytics-mcp","ga4-mcp","gtm-mcp","performance-max","ppc-automation"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/gtm-mcp@0.4.1","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"bin":{"ainative-gtm-mcp":"build/index.js"},"dist":{"shasum":"3e77125d1a0404be46372dc6386b79c5549d6b1c","tarball":"https://registry.npmjs.org/@ainative/gtm-mcp/-/gtm-mcp-0.4.1.tgz","fileCount":47,"integrity":"sha512-dQWZJyAqbA9WW6YuYKOlbJ6LCGrgeZrdao2kvcnys1jxFCHOJ2ND2xubmE3WgVEPd+3zqAqYNnSkvgPloBR2cw==","signatures":[{"sig":"MEYCIQCEFU0TSQeTg0AOZXoHu6dXQMa6Qy0tul5GrP0ZVz4ewQIhAMZ460BN44MXKQUzZOXr5MpbKT0E8/9k+fBpwud1/+8S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":309934},"type":"module","gitHead":"8a6976642e1e51354dfe0f01d6ce871e1b00aa82","mcpName":"io.github.ainative-studio/ainative-gtm-mcp","scripts":{"dev":"tsx src/index.ts","test":"node --test tests/*.test.js","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Google Tag Manager and Google Ads MCP server — manage GTM containers, Google Ads campaigns, budgets, conversions, negative placements, geo targeting, and auto-apply recommendations from AI agents","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^3.23.0","googleapis":"^144.0.0","google-ads-api":"^23.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gtm-mcp_0.4.1_1785550593832_0.3175071928302924","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@ainative/gtm-mcp","version":"0.4.2","keywords":["gtm","google-tag-manager","google-ads","google-ads-mcp","google-ads-api","mcp","model-context-protocol","claude","cursor","analytics","tag-management","conversion-tracking","conversion-goals","campaign-budget","negative-placement","click-fraud","geo-targeting","auto-apply-recommendations","recommendation-subscriptions","smart-bidding","ppc","ad-spend","advertising-automation","ainative","google-analytics-mcp","ga4-mcp","gtm-mcp","performance-max","ppc-automation"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/gtm-mcp@0.4.2","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"bin":{"ainative-gtm-mcp":"build/index.js"},"dist":{"shasum":"09df30adab3df6922d818e4225d7261071b03af0","tarball":"https://registry.npmjs.org/@ainative/gtm-mcp/-/gtm-mcp-0.4.2.tgz","fileCount":47,"integrity":"sha512-Y2nRyvzp9xClPOCrfeV/TJILac/Rj4fpmH9meEv4mwYBBdXGk2av+HL8YwPF8Z64s0x5ARlvB6QX03BKrEBklQ==","signatures":[{"sig":"MEYCIQCD5NCSvm1dddiyMnXtYjdNUgrSg1S0hQynpuoRa0TmOwIhAOme3gjtpJUF8Y/pzC4eb1q+OkhUnPFxAMv81zKokGpb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":309934},"type":"module","gitHead":"dc6dcc9886e23198cedf87f2c2a9ce5833a38bc2","mcpName":"io.github.AINative-Studio/ainative-gtm-mcp","scripts":{"dev":"tsx src/index.ts","test":"node --test tests/*.test.js","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Google Tag Manager and Google Ads MCP server — manage GTM containers, Google Ads campaigns, budgets, conversions, negative placements, geo targeting, and auto-apply recommendations from AI agents","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^3.23.0","googleapis":"^144.0.0","google-ads-api":"^23.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gtm-mcp_0.4.2_1785550719880_0.5329362447900088","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ainative/gtm-mcp","version":"0.5.0","description":"Google Tag Manager and Google Ads MCP server — manage GTM containers, Google Ads campaigns, budgets, conversions, negative placements, geo targeting, and auto-apply recommendations from AI agents","type":"module","bin":{"ainative-gtm-mcp":"build/index.js"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","start":"node build/index.js","prepublishOnly":"npm run build","test":"node --test tests/*.test.js","pretest":"npm run build"},"keywords":["gtm","google-tag-manager","google-ads","google-ads-mcp","google-ads-api","mcp","model-context-protocol","claude","cursor","analytics","tag-management","conversion-tracking","conversion-goals","campaign-budget","negative-placement","click-fraud","geo-targeting","auto-apply-recommendations","recommendation-subscriptions","smart-bidding","ppc","ad-spend","advertising-automation","ainative"],"author":{"name":"AINative Studio"},"repository":{"type":"git","url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0","google-ads-api":"^24.1.0","googleapis":"^144.0.0","zod":"^3.23.0"},"devDependencies":{"@types/node":"^20.0.0","tsx":"^4.0.0","typescript":"^5.0.0"},"_id":"@ainative/gtm-mcp@0.5.0","gitHead":"8aa0807b93b86bb4058cab6c84a42f2b484e7e6b","bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-UZeraVR87W4jfJZz3I1KyCvmZvI0aERGSIQ2b4vKR3hWlx2rRJ4nBXC7fgzn8ODTN5Dp/FU1KQkjc+0TRalOVQ==","shasum":"87452cfb484f353449e82404f7a2d30a5b4289f7","tarball":"https://registry.npmjs.org/@ainative/gtm-mcp/-/gtm-mcp-0.5.0.tgz","fileCount":58,"unpackedSize":371541,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDzsb/7oL4PtVDBUFZW8/tNoh8GVhqQQesTXT1oX+ijrQIgX/fiSq90M8Zi7A7KRUjbrH/qPCmA1AsfzxuYq7us7J8="}]},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"directories":{},"maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gtm-mcp_0.5.0_1786418565828_0.5028137240803228"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-09T18:51:34.154Z","modified":"2026-08-11T03:22:46.165Z","0.1.0":"2026-05-09T18:51:34.429Z","0.2.0":"2026-05-10T02:19:36.075Z","0.2.1":"2026-07-17T07:06:48.874Z","0.3.0":"2026-07-17T07:55:54.760Z","0.3.1":"2026-07-25T22:19:47.566Z","0.4.0":"2026-07-31T21:13:58.272Z","0.4.1":"2026-08-01T02:16:33.978Z","0.4.2":"2026-08-01T02:18:40.028Z","0.5.0":"2026-08-11T03:22:45.976Z"},"bugs":{"url":"https://github.com/AINative-Studio/ainative-gtm-mcp/issues"},"author":{"name":"AINative Studio"},"license":"MIT","homepage":"https://github.com/AINative-Studio/ainative-gtm-mcp#readme","keywords":["gtm","google-tag-manager","google-ads","google-ads-mcp","google-ads-api","mcp","model-context-protocol","claude","cursor","analytics","tag-management","conversion-tracking","conversion-goals","campaign-budget","negative-placement","click-fraud","geo-targeting","auto-apply-recommendations","recommendation-subscriptions","smart-bidding","ppc","ad-spend","advertising-automation","ainative"],"repository":{"type":"git","url":"git+https://github.com/AINative-Studio/ainative-gtm-mcp.git"},"description":"Google Tag Manager and Google Ads MCP server — manage GTM containers, Google Ads campaigns, budgets, conversions, negative placements, geo targeting, and auto-apply recommendations from AI agents","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"readme":"# @ainative/gtm-mcp\n\nGoogle 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).\n\nPart of the [AINative open-source tools](https://ainative.studio).\n\n**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.\n\n**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.\n\n## Quick Start\n\n### 1. Install\n\n```bash\n# Claude Code (recommended)\nclaude mcp add ainative-gtm-mcp npx -- -y @ainative/gtm-mcp \\\n  -e GTM_SERVICE_ACCOUNT_KEY_PATH=/path/to/service-account.json\n\n# Or run directly\nnpx @ainative/gtm-mcp\n```\n\n### 2. Set up Google Cloud authentication\n\nThe 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.\n\n#### Step 1 — Enable the Tag Manager API\n\n1. Go to [Google Cloud Console](https://console.cloud.google.com/)\n2. Select or create a project\n3. Navigate to **APIs & Services → Library**\n4. Search for **Tag Manager API** (`tagmanager.googleapis.com`) and click **Enable**\n\n#### Step 2 — Create a service account\n\n1. Go to **IAM & Admin → Service Accounts**\n2. Click **Create Service Account**\n3. Give it a name (e.g. `gtm-mcp-agent`)\n4. Skip role assignment at GCP level — GTM has its own permission system\n5. Click **Done**, then open the service account\n6. Go to **Keys → Add Key → Create new key → JSON**\n7. Download the JSON key file — keep it safe\n\n#### Step 3 — Grant the service account access in GTM\n\nThis is the step most people miss. The GCP service account needs to be added as a user **inside Google Tag Manager** separately:\n\n1. Go to [tagmanager.google.com](https://tagmanager.google.com)\n2. Click **Admin** (top nav)\n3. Under **Account**, click **User Management**\n4. Click **+** → **Add users**\n5. Enter the service account email (e.g. `gtm-mcp-agent@your-project.iam.gserviceaccount.com`)\n6. Set permission to **Publish** (required for tag editing and publishing)\n7. Save\n\n> **Note:** If you only need read access (auditing), **Read** permission is sufficient.\n\n#### Step 4 — Configure the env var\n\n```bash\nexport GTM_SERVICE_ACCOUNT_KEY_PATH=\"/path/to/service-account.json\"\n\n# Or use inline JSON (useful for CI/CD)\nexport GTM_SERVICE_ACCOUNT_KEY_JSON='{\"type\":\"service_account\",\"project_id\":\"...\",\"private_key\":\"...\"}'\n\n# Or use Application Default Credentials\ngcloud auth application-default login\n```\n\n### 3. Connect to Claude Code\n\n```bash\nclaude mcp add ainative-gtm-mcp npx -- -y @ainative/gtm-mcp \\\n  -e GTM_SERVICE_ACCOUNT_KEY_PATH=/path/to/service-account.json\n```\n\nOr add a `.mcp.json` to your project root:\n\n```json\n{\n  \"mcpServers\": {\n    \"ainative-gtm-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ainative/gtm-mcp\"],\n      \"env\": {\n        \"GTM_SERVICE_ACCOUNT_KEY_PATH\": \"/path/to/service-account.json\"\n      }\n    }\n  }\n}\n```\n\n> **Security:** Add `.mcp.json` to `.gitignore` if it contains key paths. Use `.mcp.example.json` as a template for teammates.\n\n### 4. Verify it works\n\nAsk Claude:\n```\nList my GTM accounts\n```\n\nExpected: your GTM account name and ID. If you get an empty array `[]`, the service account hasn't been added to GTM yet (Step 3 above).\n\n---\n\n## Important: GTM vs Google Ads conversions\n\nThis MCP server manages **Google Tag Manager containers** — tags, triggers, variables, and publishing. \n\nIf you see events like `ads_conversion_PURCHASE_1` in GA4, those may be coming from **Google Ads auto-imported conversions** (via GA4 ↔ Google Ads account linking), not GTM tags. In that case:\n\n- If the event fires via a GTM tag → use `gtm_find_misfiring_conversion_tags` to fix it\n- If the event is a GA4-imported Google Ads conversion → fix it in **Google Ads → Tools → Conversions**, not in GTM\n\nTo tell the difference: if your GTM container has no tags (`gtm_list_tags` returns `[]`), the conversion event is coming from outside GTM.\n\n---\n\n## Example: Fix a misfiring conversion tag\n\nThe most common GTM billing issue — a Google Ads conversion tag fires on every page view instead of only on purchase confirmation.\n\n```\n1. List your accounts:\n   \"List my GTM accounts\"\n   → accountId: 123456789\n\n2. List containers:\n   \"List containers for account 123456789\"\n   → containerId: 987654321, publicId: GTM-XXXXXXX\n\n3. Audit the container:\n   \"Audit container 987654321 in account 123456789\"\n   → health score, list of issues including misfiring tags\n\n4. Find misfiring conversion tags:\n   \"Find misfiring conversion tags in container 987654321\"\n   → shows which tags fire on All Pages instead of specific events\n\n5. Fix the tag:\n   \"Fix tag 42 to only fire on the purchase_confirmed event\"\n   → gtm_fix_conversion_tag_trigger creates a scoped Custom Event trigger\n     and rewires the tag automatically\n\n6. Review and publish:\n   \"Show pending workspace changes, then publish\"\n   → gtm_get_workspace_status + gtm_publish\n```\n\n---\n\n## Tool Reference\n\n### Account & Container (3 tools)\n\n| Tool | Description |\n|------|-------------|\n| `gtm_list_accounts` | List all accessible GTM accounts |\n| `gtm_list_containers` | List containers in an account |\n| `gtm_get_container` | Get container details |\n\n### Tags (4 tools)\n\n| Tool | Description |\n|------|-------------|\n| `gtm_list_tags` | List all tags in a workspace |\n| `gtm_get_tag` | Get full tag configuration |\n| `gtm_update_tag` | Update a tag (trigger, params, name) |\n| `gtm_delete_tag` | Delete a tag |\n\n### Triggers (4 tools)\n\n| Tool | Description |\n|------|-------------|\n| `gtm_list_triggers` | List all triggers |\n| `gtm_get_trigger` | Get trigger configuration |\n| `gtm_create_trigger` | Create a new trigger |\n| `gtm_update_trigger` | Update an existing trigger |\n\n### Audit & Fix (3 tools)\n\n| Tool | Description |\n|------|-------------|\n| `gtm_audit_container` | Full container audit — health score 0–100, issues list |\n| `gtm_find_misfiring_conversion_tags` | Find conversion tags firing on All Pages instead of specific events |\n| `gtm_fix_conversion_tag_trigger` | Fix a misfiring tag — creates scoped Custom Event trigger, rewires tag |\n\n### Versions & Publishing (4 tools)\n\n| Tool | Description |\n|------|-------------|\n| `gtm_list_workspaces` | List workspaces |\n| `gtm_get_workspace_status` | View pending changes before publishing |\n| `gtm_create_version` | Create a named version from workspace changes |\n| `gtm_publish` | Publish workspace to live |\n\n### Google Ads (39 tools)\n\nFull programmatic campaign lifecycle — an agent can build, launch, measure, and optimize a campaign end-to-end with no UI.\n\n**Build (campaigns, ad groups, ads, assets)**\n\n| Tool | Description |\n|------|-------------|\n| `gads_create_campaign` | Create a Search/Display campaign with a dedicated budget + correct network settings |\n| `gads_create_pmax_campaign` | **One-call Performance Max builder** — campaign + budget + asset group (headlines, descriptions, images, logo) in a single call; Google's AI optimizes across Search/Display/YouTube/Gmail |\n| `gads_create_ad_group` | Create an ad group inside a campaign |\n| `gads_create_responsive_search_ad` | Create an RSA (3–15 headlines, 2–4 descriptions, length-validated) |\n| `gads_create_responsive_display_ad` | Create a responsive display ad |\n| `gads_create_html5_ad` | Create an HTML5 upload (animated) display ad from a media bundle |\n| `gads_upload_image_asset` | Upload an image asset by URL |\n| `gads_upload_media_bundle` | Upload an HTML5 media-bundle (zip) asset |\n\n**Bidding & bids**\n\n| Tool | Description |\n|------|-------------|\n| `gads_set_bidding_strategy` | Swap bidding strategy (Maximize Clicks / Maximize Conversions / Target CPA / Target ROAS / Manual CPC) — **reads back the change to confirm it landed** (empty-payload swaps silently no-op) |\n| `gads_set_ad_group_bid` | Set an ad group's default max CPC bid |\n| `gads_set_keyword_bid` | Set a specific keyword's max CPC bid |\n\n**Ad control**\n\n| Tool | Description |\n|------|-------------|\n| `gads_set_ad_status` | Pause / enable / remove an individual ad |\n| `gads_request_ad_review` | Request re-review (appeal) of a disapproved/limited ad where API-appealable; honest result for UI-only policy topics |\n\n**Ad extensions (assets)**\n\n| Tool | Description |\n|------|-------------|\n| `gads_add_sitelink` | Create + attach a sitelink |\n| `gads_add_callout` | Create + attach a callout (e.g. \"7-Day Free Trial\") |\n| `gads_add_structured_snippet` | Create + attach a structured snippet |\n| `gads_add_call_extension` | Create + attach a call (phone) extension |\n\n**Audiences & conversions (attribution)**\n\n| Tool | Description |\n|------|-------------|\n| `gads_add_audience_to_ad_group` | Attach a user-list audience (observation or targeting) |\n| `gads_create_conversion_action` | Create an offline (UPLOAD_CLICKS) conversion action for gclid import |\n| `gads_upload_click_conversion` | Upload an offline conversion keyed by gclid — ties a real signup back to the ad click that drove it |\n\n**Conversions & reporting**\n\n| Tool | Description |\n|------|-------------|\n| `gads_list_conversion_actions` | List all conversion actions — name, ID, counting type, status, category |\n| `gads_update_conversion_counting` | Fix counting type (ONE_PER_CLICK vs MANY_PER_CLICK) for a conversion action |\n| `gads_audit_conversion_goals` | Audit all conversion goals — find misconfigured counting, inactive conversions |\n| `gads_set_conversion_goal_inclusion` | Include/exclude a conversion action from the primary Conversions metric & Smart Bidding (e.g. stop a PAGE_VIEW action inflating conversions) |\n| `gads_get_account_performance` | Account-level performance — impressions, clicks, cost, conversions by date range |\n\n**Campaigns & budgets**\n\n| Tool | Description |\n|------|-------------|\n| `gads_update_campaign_budget` | Set a campaign's daily budget (scale spend up or down) |\n| `gads_pause_campaign` | Pause a campaign — stop ad serving immediately |\n| `gads_create_keyword` | Add a keyword to an ad group |\n| `gads_remove_keyword` | Remove (pause) a keyword from an ad group |\n\n**Targeting & fraud protection**\n\n| Tool | Description |\n|------|-------------|\n| `gads_remove_campaign_criterion` | Remove a campaign criterion (targeted geo/placement/keyword) by ID — e.g. stop targeting a country sending invalid traffic |\n| `gads_add_negative_placement` | Exclude a website/app placement (block click-fraud sites like quiz farms and junk apps) |\n| `gads_add_geo_target` | Add a geo target (presence-only by default — the India-fraud-safe setting) |\n| `gads_set_presence_only` | Force presence-only geo targeting on a campaign |\n| `gads_add_negative_keyword` | Add a campaign-level negative keyword |\n| `gads_add_language_target` | Add a language target to a campaign |\n\n**Auto-apply recommendations**\n\n| Tool | Description |\n|------|-------------|\n| `gads_list_recommendation_subscriptions` | List auto-apply recommendation subscriptions and their status (audit what auto-applies) |\n| `gads_set_recommendation_subscription` | Turn auto-apply recommendations ON/OFF (pause budget/bid recommendations that can silently raise spend) |\n\n#### Google Ads Authentication\n\nThe Google Ads tools use OAuth2 credentials. Provide them via environment variables or your ADC file:\n\n```bash\n# Option A: Explicit env vars\nexport GADS_CLIENT_ID=\"your-client-id\"\nexport GADS_CLIENT_SECRET=\"your-client-secret\"\nexport GADS_REFRESH_TOKEN=\"your-refresh-token\"\nexport GOOGLE_ADS_DEVELOPER_TOKEN=\"your-developer-token\"\nexport GOOGLE_ADS_CUSTOMER_ID=\"1234567890\"\n\n# Option B: Use Application Default Credentials (gcloud OAuth)\n# Run: gcloud auth application-default login\n# The server reads ~/.config/gcloud/application_default_credentials.json automatically\nexport GOOGLE_ADS_DEVELOPER_TOKEN=\"your-developer-token\"\nexport GOOGLE_ADS_CUSTOMER_ID=\"1234567890\"\n```\n\n> **Developer token:** Get yours at [Google Ads API Center](https://developers.google.com/google-ads/api/docs/first-call/dev-token). A test token works for sandbox accounts; a standard token is required for production.\n\n> **Note on GA4-imported conversions:** If you see events like `ads_conversion_PURCHASE_1` in GA4 but `gads_list_conversion_actions` returns an empty list, those conversions are **GA4-imported** into Google Ads (configured under Google Ads → Tools → Conversions). They are not standalone conversion actions and must be managed through the Google Ads UI.\n\n### GA4 Analytics — read tools (3 tools)\n\nRead the **outcomes** of the traffic your campaigns drive so an agent can close the observe→decide half of the growth loop without leaving the MCP. These wrap the GA4 Data API (`google.analyticsdata` from `googleapis` — no extra dependency) and flatten responses into plain, readable JSON rows.\n\n| Tool | Description |\n|------|-------------|\n| `ga4_run_report` | Sessions, conversions, engagement and users by dimension (`sessionSource`, `sessionMedium`, `sessionCampaignName`, `landingPage`, `country`, `date`, …) over a date range. Defaults: 28 days, source/medium/campaign × sessions/conversions/engagedSessions/totalUsers. |\n| `ga4_realtime` | Active users right now (default metric `activeUsers`), optionally broken down by dimension. |\n| `ga4_conversions_by_campaign` | Convenience wrapper — conversions, sessions and revenue grouped by campaign/source/medium, sorted by conversions desc. Ties GA4 conversions back to the Google Ads campaign for ROAS. |\n\n#### GA4 Authentication\n\nThe GA4 tools reuse the **same OAuth2 credentials as the Google Ads tools** (`GADS_CLIENT_ID` / `GADS_CLIENT_SECRET` / `GADS_REFRESH_TOKEN`, or your ADC file) — no separate config for the client. Two extra requirements:\n\n```bash\n# The GA4 property to report on (default: properties/461092869).\n# A bare numeric id is normalized to properties/<id>.\nexport GA4_PROPERTY_ID=\"properties/461092869\"\n```\n\n> **Scope + access:** GA4 reads require the `https://www.googleapis.com/auth/analytics.readonly` scope AND Viewer access on the property. Credentials minted only for the `adwords` scope will 200 on Google Ads but **403 on GA4** — that is a grant/scope issue, not a dead token. Re-mint ADC with `gcloud auth application-default login --scopes=https://www.googleapis.com/auth/analytics.readonly` (or grant a GA4 service account Viewer on the property). The tools return an honest, actionable error in this case rather than blaming the token.\n\n---\n\n## Troubleshooting\n\n| Symptom | Cause | Fix |\n|---------|-------|-----|\n| `gtm_list_accounts` returns `[]` | Service account not added to GTM | Add service account email in GTM → Admin → User Management |\n| `Tag Manager API has not been used` error | API not enabled | Enable at console.cloud.google.com → APIs & Services → Tag Manager API |\n| `Permission denied` on tag update | Service account has Read-only | Upgrade to Publish permission in GTM User Management |\n| `gtm_list_tags` returns `[]` | Workspace is empty (no tags published) | Check a different workspaceId, or confirm tags exist in GTM dashboard |\n| Conversion event in GA4 but no matching GTM tag | Event comes from Google Ads auto-import | Fix in Google Ads → Tools → Conversions, not in GTM |\n\n---\n\n## Development\n\n```bash\ngit clone https://github.com/AINative-Studio/core\ncd packages/mcp-servers/ainative-gtm-mcp\nnpm install\nnpm run build\nnpm run dev\n```\n\n## License\n\nMIT — [AINative Studio](https://ainative.studio)\n","readmeFilename":"README.md"}